(1)首先PCI設(shè)備11將存儲(chǔ)器讀請求發(fā)向PCI總線x1。
(2)PCI總線x1上的所有設(shè)備監(jiān)聽這個(gè)請求,因?yàn)镻CI設(shè)備11是從存儲(chǔ)器中讀取數(shù)據(jù),所以PCI總線x1上的設(shè)備,如PCI設(shè)備12,不會(huì)接收這個(gè)數(shù)據(jù)請求。PCI橋x1發(fā)現(xiàn)下游PCI總線沒有設(shè)備接收這個(gè)數(shù)據(jù)請求,則接收這個(gè)數(shù)據(jù)請求,并將這個(gè)數(shù)據(jù)請求推到上游PCI總線上,即PCI總線x0上。
(3)PCI總線x0上的設(shè)備將監(jiān)聽這個(gè)請求。PCI總線x0上的設(shè)備也不會(huì)接收這個(gè)數(shù)據(jù)請求,最后這個(gè)數(shù)據(jù)請求將由HOST主橋x接收。
(4)HOST主橋x發(fā)現(xiàn)這個(gè)數(shù)據(jù)請求是發(fā)向主存儲(chǔ)器,則將來自PCI總線x0的PCI總線地址轉(zhuǎn)換為存儲(chǔ)器地址,之后通過存儲(chǔ)器控制器將數(shù)據(jù)讀出,并轉(zhuǎn)發(fā)到HOST主橋x。
(5)HOST主橋x將數(shù)據(jù)經(jīng)由PCI橋x1傳遞到PCI設(shè)備11,PCI設(shè)備11接收到這個(gè)數(shù)據(jù)后結(jié)束DMA讀。
以上過程僅是PCI設(shè)備向存儲(chǔ)器讀寫數(shù)據(jù)的一個(gè)簡單流程。如果考慮處理器中的Cache,這些存儲(chǔ)器讀寫過程較為復(fù)雜。
PCI總線還允許PCI設(shè)備之間進(jìn)行數(shù)據(jù)傳遞,PCI設(shè)備間的數(shù)據(jù)交換較為簡單。在實(shí)際應(yīng)用中,PCI設(shè)備間的數(shù)據(jù)交換并不常見。下文以圖1?1為例,簡要介紹PCI設(shè)備11將數(shù)據(jù)寫入PCI設(shè)備01的過程;請讀者自行考慮PCI設(shè)備11從PCI設(shè)備01讀取數(shù)據(jù)的過程。
(1)首先PCI設(shè)備11將PCI寫總線事務(wù)發(fā)向PCI總線x1上。PCI橋x1和PCI設(shè)備12同時(shí)監(jiān)聽這個(gè)寫總線事務(wù)。
(2)PCI橋x1將接收這個(gè)PCI寫請求總線事務(wù),并將這個(gè)PCI寫總線事務(wù)上推到PCI總線x0。
(3)PCI總線x0上的所有設(shè)備將監(jiān)聽這個(gè)PCI寫總線事務(wù),最后由PCI設(shè)備01接收這個(gè)數(shù)據(jù)請求,并完成PCI寫事務(wù)。
1.3.5Delayed傳送方式
如上文所述,如果處理器使用Non-Posted總線周期對PCI設(shè)備進(jìn)行讀操作,或者PCI設(shè)備使用Non-Posted總線事務(wù)對存儲(chǔ)器進(jìn)行讀操作時(shí),如果數(shù)據(jù)沒有到達(dá)目的地,那么在這個(gè)讀操作路徑上的所有PCI總線都不能被釋放,這將嚴(yán)重影響PCI總線的使用效率。
為此PCI橋需要對Non-Posted總線事務(wù)進(jìn)行優(yōu)化處理,并使用Delayed總線事務(wù)處理這些Non-Posted總線事務(wù),PCI總線規(guī)定只有Non-Posted總線事務(wù)可以使用Delayed總線事務(wù)。PCI總線的Delay總線事務(wù)由Delay讀寫請求和Delay讀寫完成總線事務(wù)組成,當(dāng)Delay讀寫請求到達(dá)目的地后,將被轉(zhuǎn)換為Delay讀寫完成總線事務(wù)?;贒elay總線請求的數(shù)據(jù)交換如圖1?4所示。
假設(shè)處理器通過存儲(chǔ)器讀、I/O讀寫或者配置讀寫訪問PCI設(shè)備22時(shí),首先經(jīng)過HOST主橋進(jìn)行存儲(chǔ)器域與PCI總線域的地址轉(zhuǎn)換,并由HOST主橋發(fā)起PCI總線事務(wù),然后通過PCI橋1、2,最終到達(dá)PCI設(shè)備22。其詳細(xì)步驟如下。
(1)HOST主橋完成存儲(chǔ)器域到PCI總線域的轉(zhuǎn)換,然后啟動(dòng)PCI讀總線事務(wù)。
(2)PCI橋1接收這個(gè)讀總線事務(wù),并首先使用Retry周期,使HOST主橋擇時(shí)重新發(fā)起相同的總線周期。此時(shí)PCI橋1的上游PCI總線將被釋放。值得注意的是PCI橋并不會(huì)每一次都使用Retry周期,使上游設(shè)備擇時(shí)進(jìn)行重試操作。在PCI總線中,有一個(gè)“16 Clock”原則,即FRAME#信號(hào)有效后,必須在16個(gè)時(shí)鐘周期內(nèi)置為無效,如果PCI橋發(fā)現(xiàn)來自上游設(shè)備的讀總線事務(wù)不能在16個(gè)時(shí)鐘周期內(nèi)結(jié)束時(shí),則使用Retry周期終止該總線事務(wù)。
(3)PCI橋1使用Delayed總線請求繼續(xù)訪問PCI設(shè)備22。
(4)PCI橋2接收這個(gè)總線請求,并將這個(gè)Delayed總線請求繼續(xù)傳遞。此時(shí)PCI橋2也將首先使用Retry周期,使PCI橋1擇時(shí)重新發(fā)起相同的總線周期。此時(shí)PCI橋2的上游PCI總線被釋放。
(5)這個(gè)數(shù)據(jù)請求最終到達(dá)PCI設(shè)備22,如果PCI設(shè)備22沒有將數(shù)據(jù)準(zhǔn)備好時(shí),也可以使用Retry周期,使PCI橋2擇時(shí)重新發(fā)起相同的總線周期;如果數(shù)據(jù)已經(jīng)準(zhǔn)備好,PCI設(shè)備22將接收這個(gè)數(shù)據(jù)請求,并將這個(gè)Delayed總線請求轉(zhuǎn)換為Delayed總線完成事務(wù)。如果Delayed總線請求是讀請求,則Delayed總線完成事務(wù)中含有數(shù)據(jù),否則只有完成信息,而不包含數(shù)據(jù)。
(6)Delayed總線完成事務(wù)將“數(shù)據(jù)或者完成信息”傳遞給PCI橋2,當(dāng)PCI橋1重新發(fā)出Non-Posted總線請求時(shí),PCI橋2將這個(gè)“數(shù)據(jù)或者完成信息”傳遞給PCI橋1。
(7)HOST主橋重新發(fā)出存儲(chǔ)器讀總線事務(wù)時(shí),PCI橋1將“數(shù)據(jù)或者完成信息”傳遞給HOST主橋,最終完成整個(gè)PCI總線事務(wù)。
由以上分析可知,Delayed總線周期由Delayed總線請求和Delayed總線完成兩部分組成。下文將Delayed讀請求總線事務(wù)簡稱為DRR(Delayed Read Request),Delayed讀完成總線事務(wù)簡稱為DRC(Delayed Read Completion);而將Delayed寫請求總線事務(wù)簡稱為DWR(Delayed Write Request),Delayed寫完成總線事務(wù)簡稱為DWC(Delayed Write Completion)。
PCI總線使用Delayed總線事務(wù),在一定程度上可以提高PCI總線的利用率。因?yàn)樵谶M(jìn)行Non-Posted總線事務(wù)時(shí),Non-Posted請求在通過PCI橋之后,可以暫時(shí)釋放PCI總線,但是采用這種方式,HOST/PCI橋?qū)?huì)擇時(shí)進(jìn)行重試操作。在許多情況下,使用Delayed總線事務(wù),并不能取得理想的效果,因?yàn)檫^多的重試周期也將大量消耗PCI總線的帶寬。
為了進(jìn)一步提高Non-Posted總線事務(wù)的執(zhí)行效率,PCI-X總線將PCI總線使用的Delayed總線事務(wù),升級(jí)為Split總線事務(wù)。采用Split總線事務(wù)可以有效解決HOST/PCI橋的這些重試操作。Split總線事務(wù)的基本思想是發(fā)送端首先將Non-Posted總線請求發(fā)送給接收端,然后再由接收端主動(dòng)地將數(shù)據(jù)傳遞給發(fā)送端。
除了PCI-X總線可以使用Split總線事務(wù)進(jìn)行數(shù)據(jù)傳送之外,有些處理器,如x86和PowerPC處理器的FSB(Front Side Bus)總線也支持這種Split總線事務(wù),因此這些HOST主橋也可以發(fā)起這種Split總線事務(wù)。在PCIe總線中,Non-Posted數(shù)據(jù)傳送都使用Split總線事務(wù)完成,而不再使用Delayed總線事務(wù)。本章將在第1.5.1節(jié)簡要介紹Split總線事務(wù)和PCI-X總線對PCI總線的一些功能上的增強(qiáng)。
[1]如果是存儲(chǔ)器、I/O讀或者配置讀總線事務(wù),這個(gè)回應(yīng)包含數(shù)據(jù);如果是I/O寫或者配置寫,這個(gè)回應(yīng)不包含數(shù)據(jù)。
評(píng)論