<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          PCI總線(xiàn)的配置

          作者: 時(shí)間:2016-12-14 來(lái)源:網(wǎng)絡(luò) 收藏

          2.4PCI總線(xiàn)的配置

          PCI總線(xiàn)定義了兩類(lèi)配置請(qǐng)求,一個(gè)是Type 00h配置請(qǐng)求,另一個(gè)是Type 01h配置請(qǐng)求。PCI總線(xiàn)使用這些配置請(qǐng)求訪(fǎng)問(wèn)PCI總線(xiàn)樹(shù)上的設(shè)備配置空間,包括PCI橋和PCI Agent設(shè)備的配置空間。
          其中HOST主橋或者PCI橋使用Type 00h配置請(qǐng)求,訪(fǎng)問(wèn)與HOST主橋或者PCI橋直接相連的PCI Agent設(shè)備或者PCI橋[1];而HOST主橋或者PCI橋使用Type 01h配置請(qǐng)求,需要至少穿越一個(gè)PCI橋,訪(fǎng)問(wèn)沒(méi)有與其直接相連的PCI Agent設(shè)備或者PCI橋。如圖2?8所示,HOST主橋可以使用Type 00h配置請(qǐng)求訪(fǎng)問(wèn)PCI設(shè)備01,而使用Type 01h配置請(qǐng)求通過(guò)PCI橋1、2或者3轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求之后,訪(fǎng)問(wèn)PCI總線(xiàn)樹(shù)上的PCI設(shè)備11、21、22、31和32[2]。
          當(dāng)x86處理器對(duì)CONFIG_DATA寄存器進(jìn)行讀寫(xiě)操作時(shí),HOST主橋?qū)Q定向PCI總線(xiàn)發(fā)送Type 00h配置請(qǐng)求還是Type 01h配置請(qǐng)求。在PCI總線(xiàn)事務(wù)的地址周期中,這兩種配置請(qǐng)求總線(xiàn)事務(wù)的不同反映在PCI總線(xiàn)的AD[31:0]信號(hào)線(xiàn)上。
          值得注意的是,PCIe總線(xiàn)還可以使用ECAM(Enhanced Configuration Access Mechanism)機(jī)制訪(fǎng)問(wèn)PCIe設(shè)備的擴(kuò)展配置空間,使用這種方式可以訪(fǎng)問(wèn)PCIe設(shè)備256B~4KB之間的擴(kuò)展配置空間。但是本節(jié)僅介紹如何使用CONFIG_ADDRESS和CONFIG_FATA寄存器產(chǎn)生Type 00h和Type 01h配置請(qǐng)求。有關(guān)ECAM機(jī)制的詳細(xì)說(shuō)明見(jiàn)第5.3.2節(jié)。
          處理器首先將目標(biāo)PCI設(shè)備的ID號(hào)保存在CONFIG_ADDRESS寄存器中,之后HOST主橋根據(jù)該寄存器的Bus Number字段,決定是產(chǎn)生Type 00h配置請(qǐng)求,還是Type 01h配置請(qǐng)求。當(dāng)Bus Number字段為0時(shí),將產(chǎn)生Type 00h配置請(qǐng)求,因?yàn)榕cHOST主橋直接相連的總線(xiàn)號(hào)為0;大于0時(shí),將產(chǎn)生Type 01h配置請(qǐng)求。

          2.4.1 Type 01h和Type 00h配置請(qǐng)求

          本節(jié)首先介紹Type 01h配置請(qǐng)求,并從PCI總線(xiàn)使用的信號(hào)線(xiàn)的角度上,講述HOST主橋如何生成Type 01配置請(qǐng)求。在PCI總線(xiàn)中,只有PCI橋能夠接收Type 01h配置請(qǐng)求。Type 01h配置請(qǐng)求不能直接發(fā)向最終的PCI Agent設(shè)備,而只能由PCI橋?qū)⑵滢D(zhuǎn)換為T(mén)ype 01h繼續(xù)發(fā)向其他PCI橋,或者轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求發(fā)向PCI Agent設(shè)備。PCI橋還可以將Type 01h配置請(qǐng)求轉(zhuǎn)換為Special Cycle總線(xiàn)事務(wù)(HOST主橋也可以實(shí)現(xiàn)該功能),本節(jié)對(duì)這種情況不做介紹。
          在地址周期中,HOST主橋使用配置讀寫(xiě)總線(xiàn)事務(wù),將CONFIG_ADDRESS寄存器的內(nèi)容拷貝到PCI總線(xiàn)的AD[31:0]信號(hào)線(xiàn)中。CONFIG_ADDRESS寄存器與Type 01h配置請(qǐng)求的對(duì)應(yīng)關(guān)系如圖2?11所示。


          從圖2?11中可以發(fā)現(xiàn),CONFIG_ADDRESS寄存器的內(nèi)容基本上是原封不動(dòng)的拷貝到PCI總線(xiàn)的AD[31:0]信號(hào)線(xiàn)上的[3]。其中CONFIG_ADDRESS的Enable位不被拷貝,而AD總線(xiàn)的第0位為必須為1,表示當(dāng)前配置請(qǐng)求是Type 01h。
          當(dāng)PCI總線(xiàn)接收到Type 01配置請(qǐng)求時(shí),將尋找合適的PCI橋[4]接收這個(gè)配置信息。如果這個(gè)配置請(qǐng)求是直接發(fā)向PCI橋下的PCI設(shè)備時(shí),PCI橋?qū)⒔邮諅€(gè)Type 01配置請(qǐng)求,并將其轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求;否則PCI橋?qū)?dāng)前Type 01h配置請(qǐng)求原封不動(dòng)的傳遞給下一級(jí)PCI總線(xiàn)。
          如果HOST主橋或者PCI橋發(fā)起的是Type 00h配置請(qǐng)求,CONFIG_ADDRESS寄存器與AD[31:0]的轉(zhuǎn)換如圖2?12所示。




          此時(shí)處理器對(duì)CONFIG_DATA寄存器進(jìn)行讀寫(xiě)時(shí),處理器將CONFIG_ADDRESS寄存器中的Function Number和Register Number字段拷貝到PCI的AD總線(xiàn)的第10~2位;將AD總線(xiàn)的第1~0位賦值為0b00。PCI總線(xiàn)在配置請(qǐng)求總線(xiàn)事務(wù)的地址周期根據(jù)AD[1:0]判斷當(dāng)前配置請(qǐng)求是Type 00h還是Type 01h,如果AD[1:0]等于0b00表示是Type 00h配置請(qǐng)求,如果AD[1:0]等于0b01表示是Type 01h配置請(qǐng)求。
          而AD[31:11]與CONFIG_ADDRESS的Device Number字段有關(guān),在Type 00h配置請(qǐng)求的地址周期中,AD[31:11]位有且只有一位為1,其中AD[31:11]的每一位選通一個(gè)PCI設(shè)備的配置空間。如第1.2.2節(jié)所述,PCI設(shè)備配置空間的片選信號(hào)是IDSEL,因此AD[31:11]將與PCI設(shè)備的IDSEL信號(hào)對(duì)應(yīng)相連。
          當(dāng)以下兩種請(qǐng)求之一滿(mǎn)足時(shí),HOST主橋或者PCI橋?qū)⑸蒚ype 00h配置頭,并將其發(fā)送到指定的PCI總線(xiàn)上。
          (1) CONFIG_ADDRESS寄存器的Bus Number字段為0時(shí),處理器訪(fǎng)問(wèn)CONFIG_DATA寄存器時(shí),HOST主橋?qū)⒅苯酉騊CI總線(xiàn)0發(fā)出Type 00h配置請(qǐng)求。因?yàn)榕cHOST主橋直接相連的PCI總線(xiàn)號(hào)為0,此時(shí)表示HOST主橋需要訪(fǎng)問(wèn)與其直接相連的PCI設(shè)備。
          (2) 當(dāng)PCI橋收到Type 01h配置頭時(shí),將檢查T(mén)ype 01配置頭的Bus Number字段,如果這個(gè)Bus Number與PCI橋的Secondary Bus Number相同,則將這個(gè)Type 01配置頭轉(zhuǎn)換為T(mén)ype 00h配置頭,并發(fā)送到該P(yáng)CI橋的Secondary總線(xiàn)上。

          2.4.2 置請(qǐng)求的轉(zhuǎn)換原則

          當(dāng)CONFIG_ADDRESS寄存器的Enable位為1,系統(tǒng)軟件訪(fǎng)問(wèn)CONFIG_DATA寄存器時(shí),HOST主橋可以產(chǎn)生兩類(lèi)置讀寫(xiě)總線(xiàn)事務(wù),分別為T(mén)ype 00h和Type 01h配置讀寫(xiě)總線(xiàn)事務(wù)。在配置讀寫(xiě)總線(xiàn)事務(wù)的地址周期和數(shù)據(jù)周期中,CONFIG_ADDRESS和CONFIG_DATA寄存器中的數(shù)據(jù)將被放置到PCI總線(xiàn)的AD總線(xiàn)上。其中Type 00h和Type 01h配置讀寫(xiě)總線(xiàn)事務(wù)映射到AD總線(xiàn)的數(shù)據(jù)并不相同。
          其中Type 00h配置請(qǐng)求可以直接讀取PCI Agent設(shè)備的配置空間,而Type 01h配置請(qǐng)求在通過(guò)PCI橋時(shí),最終將被轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求,并讀取PCI Agent設(shè)備的配置寄存器。本節(jié)重點(diǎn)講述PCI橋如何將Type 01h配置請(qǐng)求轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求。
          首先Type 00h配置請(qǐng)求不會(huì)被轉(zhuǎn)換成Type 01h配置請(qǐng)求,因?yàn)門(mén)ype 00h配置請(qǐng)求是發(fā)向最終PCI Agent設(shè)備,這些PCI Agent設(shè)備不會(huì)轉(zhuǎn)發(fā)這些配置請(qǐng)求。
          當(dāng)CONFIG_ADDRESS寄存器的Bus Number字段為0時(shí),處理器對(duì)CONFIG_DATA寄存器操作時(shí),HOST主橋?qū)⒅苯赢a(chǎn)生Type 00h配置請(qǐng)求,掛接在PCI總線(xiàn)0上的某個(gè)設(shè)備將通過(guò)ID譯碼接收這個(gè)Type 00h配置請(qǐng)求,并對(duì)配置寄存器進(jìn)行讀寫(xiě)操作。如果PCI總線(xiàn)上沒(méi)有設(shè)備接收這個(gè)Type 00h配置請(qǐng)求,將引發(fā)Master Abort,詳情見(jiàn)PCI總線(xiàn)規(guī)范,本節(jié)對(duì)此不做進(jìn)一步說(shuō)明。
          如果CONFIG_ADDRESS寄存器的Bus Number字段為n(n≠0),即訪(fǎng)問(wèn)的PCI設(shè)備不是直接掛接在PCI總線(xiàn)0上的,此時(shí)HOST主橋?qū)ONFIG_DATA寄存器操作時(shí),將產(chǎn)生Type 01h配置請(qǐng)求,PCI總線(xiàn)0將遍歷所有在這條總線(xiàn)上的PCI橋,確定由哪個(gè)PCI橋接收這個(gè)Type 01h配置請(qǐng)求。
          如果n大于等于某個(gè)PCI橋的Secondary Bus Number寄存器,而且小于等于Subordinate Bus number寄存器,那么這個(gè)PCI橋?qū)⒔邮赵诋?dāng)前PCI總線(xiàn)上的Type 01配置請(qǐng)求,并采用以下規(guī)則進(jìn)行遞歸處理。
          (1) 開(kāi)始。
          (2) 遍歷當(dāng)前PCI總線(xiàn)的所有PCI橋。
          (3) 如果n等于某個(gè)PCI橋的Secondary Bus Number寄存器,說(shuō)明這個(gè)Type 01配置請(qǐng)求的目標(biāo)設(shè)備直接連接在該P(yáng)CI橋的Secondary bus上。此時(shí)PCI橋?qū)ype 01配置請(qǐng)求轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求,并將這個(gè)配置請(qǐng)求發(fā)送到PCI橋的Secondary Bus上,Secondary Bus上的某個(gè)設(shè)備將響應(yīng)這個(gè)Type 00h配置請(qǐng)求,并與HOST主橋進(jìn)行配置信息的交換,轉(zhuǎn)(5)。
          (4) 如果n大于PCI橋的Secondary Bus Number寄存器,而且小于等于PCI橋的Subordinate Bus number寄存器,說(shuō)明這個(gè)Type 01配置請(qǐng)求的目標(biāo)設(shè)備不與該P(yáng)CI橋的Secondary Bus直接相連,但是由這個(gè)PCI橋下游總線(xiàn)上的某個(gè)PCI橋管理。此時(shí)PCI橋?qū)⑹紫日J(rèn)領(lǐng)這個(gè)Type 01配置請(qǐng)求,并將其轉(zhuǎn)發(fā)到Secondary Bus,轉(zhuǎn)(2)。
          (5) 結(jié)束。
          下文將舉例說(shuō)明置請(qǐng)求的轉(zhuǎn)換原則,并以圖2?8為例說(shuō)明處理器如何訪(fǎng)問(wèn)PCI設(shè)備01和PCI設(shè)備31的配置空間。PCI設(shè)備01直接與HOST主橋相連,因此HOST主橋可以使用Type 00h配置請(qǐng)求訪(fǎng)問(wèn)該設(shè)備。
          而HOST主橋需要經(jīng)過(guò)多級(jí)PCI橋才能訪(fǎng)問(wèn)PCI設(shè)備31,因此HOST主橋需要首先使用Type 01h配置請(qǐng)求,之后通過(guò)PCI橋1、2和3將Type 01h配置請(qǐng)求轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求,最終訪(fǎng)問(wèn)PCI設(shè)備31。

          1 PCI設(shè)備01

          這種情況較易處理,當(dāng)HOST處理器訪(fǎng)問(wèn)PCI設(shè)備01的配置空間時(shí),發(fā)現(xiàn)PCI設(shè)備01與HOST主橋直接相連,所以將直接使用Type 00h配置請(qǐng)求訪(fǎng)問(wèn)該設(shè)備的配置空間,具體步驟如下。
          首先HOST處理器將CONFIG_ADDRESS寄存器的Enable位置1,Bus Number號(hào)置為0,并對(duì)該寄存器的Device、Function和Register Number字段賦值。當(dāng)處理器對(duì)CONFIG_DATA寄存器訪(fǎng)問(wèn)時(shí),HOST主橋?qū)⒋娣旁贑ONFIG_ADDRESS寄存器中的數(shù)值,轉(zhuǎn)換為T(mén)ype 00h配置請(qǐng)求,并發(fā)送到PCI總線(xiàn)0上,PCI設(shè)備01將接收這個(gè)Type 00h配置請(qǐng)求,并與處理器進(jìn)行配置信息交換。
          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: PCI總線(xiàn)配

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();