接前一篇文章:《PCI Express體系結(jié)構(gòu)導(dǎo)讀》隨記 —— 第I篇 第2章 PCI總線的橋與配置(19)
2.4 PCI總線的配置
PCI總線定義了兩類配置請求,一個是Type 00h配置請求,另一個是Type 01h配置請求。PCI總線使用這些配置請求訪問PCI總線樹上的設(shè)備配置空間,包括PCI橋和PCI Agent設(shè)備的配置空間。
其中,HOST主橋或者PCI橋使用Type 00h配置請求,來訪問與HOST主橋或者PCI橋直接相連的PCI Agent設(shè)備或者PCI橋(此時PCI橋作為一個PCI設(shè)備,接收訪問其配置空間的讀寫請求);而HOST主橋或者PCI橋使用Type 01h配置請求,需要至少穿越一個PCI橋,訪問沒有與其直接相連的PCI Agent設(shè)備或者PCI橋。如圖2-8所示,HOST主橋可以使用Type 00h配置請求訪問PCI設(shè)備01,而使用Type 01h配置請求通過PCI橋1、2或者3轉(zhuǎn)換為Type 00h配置請求之后,訪問PCI總線樹上的PCI設(shè)備11、21、22、31和32。也就是說,最終Type 01h配置請求(都)將會被轉(zhuǎn)換為Type 00h配置請求,然后再訪問PCI Agent設(shè)備。
2.4.1 Type 01h和Type 00h配置請求
(1)Type 01h配置請求
本節(jié)首先介紹Type 01h配置請求,并從PCI總線使用的信號線的角度上,講述HOST主橋如何生成Type 01配置請求。在PCI總線中,只有PCI橋能夠接收Type 01h配置請求。Type 01h配置請求不能直接發(fā)向最終的PCI Agent設(shè)備,而只能由PCI橋?qū)⑵滢D(zhuǎn)換為Type 01h繼續(xù)發(fā)向其它PCI橋,或者轉(zhuǎn)換為Type 00h配置請求發(fā)向PCI Agent設(shè)備。PCI橋還可以將Type 01h配置請求轉(zhuǎn)換為Special Cycle總線事務(wù)(HOST主橋也可以實現(xiàn)該功能),本節(jié)對這種情況不做介紹。
在地址周期中,HOST主橋使用配置讀寫總線事務(wù),將CONFIG_ADDRESS寄存器的內(nèi)容拷貝到PCI總線的AD[31:0]信號線中。CONFIG_ADDRESS寄存器與Type 01h配置請求的對應(yīng)關(guān)系如圖2-11所示:
從圖2-11中可以發(fā)現(xiàn),CONFIG_ADDRESS寄存器的內(nèi)容基本上是原封不動地拷貝到PCI總線的AD[31:0]信號線上的。其中CONFIG_ADDRESS的Enable位不被拷貝,而AD總線的第0位為必須為1,表示當(dāng)前配置請求是Type 01h。
為了便于理解和參照,將CONFIG_ADDRESS寄存器結(jié)構(gòu)圖再次貼出,如下圖所示:
當(dāng)PCI總線接收到Type 01h配置請求時,將尋找合適的PCI橋接收這個配置信息(Type 01h配置頭信息存在于PCI總線事務(wù)的地址周期中)。如果這個配置請求是直接發(fā)向PCI橋下的PCI設(shè)備時,PCI橋?qū)?strong>接收個Type 01配置請求,并將其轉(zhuǎn)換為Type 00h配置請求;否則PCI橋?qū)?dāng)前Type 01h配置請求原封不動的傳遞給下一級PCI總線。
(2)Type 00h配置請求
如果HOST主橋或者PCI橋發(fā)起的是Type 00h配置請求,CONFIG_ADDRESS寄存器與AD[31:0]的轉(zhuǎn)換如圖2-12所示:
從圖2-12中可以發(fā)現(xiàn),此時處理器對CONFIG_DATA寄存器進行讀寫時,處理器將CONFIG_ADDRESS寄存器中的Function Number和Register Number字段拷貝到PCI的AD總線的第10~2位;將AD總線的第1~0位賦值為0b00。PCI總線在配置請求總線事務(wù)的地址周期根據(jù)AD[1:0]判斷當(dāng)前配置請求是Type 00h還是Type 01h,如果AD[1:0]等于0b00,表示是Type 00h配置請求;如果AD[1:0]等于0b01,表示是Type 01h配置請求。
而AD[31:11]與CONFIG_ADDRESS的Device Number字段有關(guān)。在Type 00h配置請求的地址周期中,AD[31:11]位有且只有一位為1,其中AD[31:11]的每一位選通一個PCI設(shè)備的配置空間。PCI設(shè)備配置空間的片選信號是IDSEL,因此AD[31:11]將與PCI設(shè)備的IDSEL信號對應(yīng)相連。
當(dāng)以下兩種請求之一滿足時,HOST主橋或者PCI橋?qū)⑸蒚ype 00h配置頭,并將其發(fā)送到指定的PCI總線上:
1)CONFIG_ADDRESS寄存器的Bus Number字段為0時,處理器訪問CONFIG_DATA寄存器時,HOST主橋?qū)⒅苯酉騊CI總線0發(fā)出Type 00h配置請求。因為與HOST主橋直接相連的PCI總線號為0,此時表示HOST主橋需要訪問與其直接相連的PCI設(shè)備。
2)當(dāng)PCI橋收到Type 01h配置頭時,將檢查Type 01h配置頭的Bus Number字段,如果這個Bus Number與PCI橋的Secondary Bus Number相同,則將這個Type 01h配置頭轉(zhuǎn)換為Type 00h配置頭,并發(fā)送到該PCI橋的Secondary總線上。文章來源:http://www.zghlxwxcb.cn/news/detail-812752.html
更多內(nèi)容請看下回。文章來源地址http://www.zghlxwxcb.cn/news/detail-812752.html
到了這里,關(guān)于《PCI Express體系結(jié)構(gòu)導(dǎo)讀》隨記 —— 第I篇 第2章 PCI總線的橋與配置(20)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!