PCI總線的存儲(chǔ)器讀寫總線事務(wù)
PCI總線使用單端并行數(shù)據(jù)線,采用地址譯碼方式進(jìn)行數(shù)據(jù)傳遞,而采用ID譯碼方式進(jìn)行配置信息的傳遞。其中地址譯碼方式使用地址信號(hào),而ID譯碼方式使用PCI設(shè)備的ID號(hào),包括Bus Number、Device Number、Function Number和Register Number。下文將以圖1?1中的處理器系統(tǒng)為例,簡要介紹PCI總線支持的總線事務(wù)及其傳送方式。
本文引用地址:http://www.ex-cimer.com/article/201612/330476.htm如表1?2所示,PCI總線支持多種總線事務(wù)。而本節(jié)重點(diǎn)介紹存儲(chǔ)器讀寫總線事務(wù),I/O讀寫總線事務(wù),并在第2.4節(jié)詳細(xì)介紹配置讀寫總線事務(wù)。值得注意的是,PCI設(shè)備只有在系統(tǒng)軟件初始化配置空間之后,才能夠被其他主設(shè)備訪問。
當(dāng)PCI設(shè)備的配置空間被初始化之后,該設(shè)備在當(dāng)前的PCI總線樹上將擁有一個(gè)獨(dú)立的PCI總線地址空間,即BAR((Base Address Register)寄存器所描述的空間,有關(guān)BAR寄存器的詳細(xì)說明見第2.3.2節(jié)。
處理器與PCI設(shè)備進(jìn)行數(shù)據(jù)交換,或者PCI設(shè)備之間進(jìn)行存儲(chǔ)器數(shù)據(jù)交換時(shí),都將通過PCI總線地址完成。而PCI設(shè)備與主存儲(chǔ)器進(jìn)行DMA操作時(shí),使用的也是PCI總線域的地址,而不是存儲(chǔ)器域的地址,此時(shí)HOST主橋?qū)⑼瓿蒔CI總線地址到存儲(chǔ)器域地址的轉(zhuǎn)換,不同的HOST主橋進(jìn)行地址轉(zhuǎn)換時(shí)使用的方法并不相同。
PCI總線的配置讀寫總線事務(wù)與HOST主橋與PCI橋相關(guān),因此讀者需要了解HOST主橋和PCI橋的詳細(xì)實(shí)現(xiàn)機(jī)制之后,才能深入理解這部分內(nèi)容。本篇將在第2.4節(jié)詳細(xì)介紹這些內(nèi)容。在下文中,我們假定所使用的PCI設(shè)備的配置空間已經(jīng)被系統(tǒng)軟件初始化。
PCI總線支持以下幾類存儲(chǔ)器讀寫總線事務(wù)。
(1)
(2)
(3)
1.3.1PCI總線事務(wù)的時(shí)序
PCI總線使用第1.2節(jié)所述的信號(hào)進(jìn)行數(shù)據(jù)和配置信息的傳遞,一個(gè)PCI總線事務(wù)的基本訪問時(shí)序如圖1?3所示,與PCI總線事務(wù)相關(guān)的控制信號(hào)有FRAME#、IRDY#、TRDY#、DEVSEL#等其他信號(hào)。
當(dāng)一個(gè)PCI主設(shè)備需要使用PCI總線時(shí),需要首先發(fā)送REQ#信號(hào),通過總線仲裁獲得總線使用權(quán),即GNT#信號(hào)有效后,使用以下步驟完成一個(gè)完整PCI總線事務(wù),對(duì)目標(biāo)設(shè)備進(jìn)行存儲(chǔ)器或者I/O地址空間的讀寫訪問。
(1)
(2)
(3)
(4)
一個(gè)完整的PCI總線事務(wù)遠(yuǎn)比上述過程復(fù)雜的多,因?yàn)镻CI總線還支持許多傳送方式,如雙地址周期、fast back-to-back(快速背靠背)、插入等待狀態(tài)、重試和斷連、總線上的錯(cuò)誤處理等一系列總線事務(wù)。本篇不一一介紹這些傳送方式。
1.3.2Posted和Non-Posted傳送方式
PCI總線規(guī)定了兩類數(shù)據(jù)傳送方式,分別是Posted和Non-Posted數(shù)據(jù)傳送方式。其中使用Posted數(shù)據(jù)傳送方式的總線事務(wù)也被稱為Posted總線事務(wù);而使用Non-Posted數(shù)據(jù)傳送方式的總線事務(wù)也被稱為Non-Posted總線事務(wù)。
其中Posted總線事務(wù)指PCI主設(shè)備向PCI目標(biāo)設(shè)備進(jìn)行數(shù)據(jù)傳遞時(shí),當(dāng)數(shù)據(jù)到達(dá)PCI橋后,即由PCI橋接管來自上游總線的總線事務(wù),并將其轉(zhuǎn)發(fā)到下游總線。采用這種數(shù)據(jù)傳送方式,在數(shù)據(jù)還沒有到達(dá)最終的目的地之前,PCI總線就可以結(jié)束當(dāng)前總線事務(wù),從而在一定程度上解決了PCI總線的擁塞。
而Non-Posted總線事務(wù)是指PCI主設(shè)備向PCI目標(biāo)設(shè)備進(jìn)行數(shù)據(jù)傳遞時(shí),數(shù)據(jù)必須到達(dá)最終目的地之后,才能結(jié)束當(dāng)前總線事務(wù)的一種數(shù)據(jù)傳遞方式。
顯然采用Posted傳送方式,當(dāng)這個(gè)Posted總線事務(wù)通過某條PCI總線后,就可以釋放PCI總線的資源;而采用Non-Posted傳送方式,PCI總線在沒有結(jié)束當(dāng)前總線事務(wù)時(shí)必須等待。這種等待將嚴(yán)重阻塞當(dāng)前PCI總線上的其他數(shù)據(jù)傳送,因此PCI總線使用Delayed總線事務(wù)處理Non-Posted數(shù)據(jù)請(qǐng)求,使用Delayed總線事務(wù)可以相對(duì)緩解PCI總線的擁塞。Delayed總線事務(wù)的詳細(xì)介紹見第1.3.5節(jié)。
PCI總線規(guī)定只有存儲(chǔ)器寫請(qǐng)求(包括存儲(chǔ)器寫并無效請(qǐng)求)可以采用Posted總線事務(wù),下文將Posted存儲(chǔ)器寫請(qǐng)求簡稱為PMW(Posted Memory Write),而存儲(chǔ)器讀請(qǐng)求、I/O讀寫請(qǐng)求、配置讀寫請(qǐng)求只能采用Non-Posted總線事務(wù)。
評(píng)論