第1章 PCI總線(xiàn)的基本知識
PCI總線(xiàn)作為處理器系統的局部總線(xiàn),主要目的是為了連接外部設備,而不是作為處理器的系統總線(xiàn)連接Cache和主存儲器。但是PCI總線(xiàn)、系統總線(xiàn)和處理器體系結構之間依然存在著(zhù)緊密的聯(lián)系。
本文引用地址:http://dyxdggzs.com/article/201612/330506.htmPCI總線(xiàn)作為系統總線(xiàn)的延伸,其設計考慮了許多與處理器相關(guān)的內容,如處理器的Cache共享一致性和數據完整性,以及如何與處理器進(jìn)行數據交換等一系列內容。其中Cache共享一致性和數據完整性是現代處理器局部總線(xiàn)的設計的重點(diǎn)和難點(diǎn),也是本書(shū)將重點(diǎn)講述的主題之一。
獨立地研究PCI總線(xiàn)并不可取,因為PCI總線(xiàn)僅是處理器系統的一個(gè)組成部分。深入理解PCI總線(xiàn)需要了解一些與處理器體系結構相關(guān)的知識。這些知識是本書(shū)所側重描述的,同時(shí)也是PCI總線(xiàn)規范所忽略的內容。脫離實(shí)際的處理器系統,不容易也不可能深入理解PCI總線(xiàn)規范。
對于今天的讀者來(lái)說(shuō),PCI總線(xiàn)提出的許多概念略顯過(guò)時(shí),也有許多不足之處。但是在當年,PCI總線(xiàn)與之前的存在其他并行局部總線(xiàn)如ISA、EISA和MCA總線(xiàn)相比,具有許多突出的優(yōu)點(diǎn),是一個(gè)全新的設計。
(1)
PCI設備具有獨立的地址空間,即PCI總線(xiàn)地址空間,該空間與存儲器地址空間通過(guò)HOST主橋隔離。處理器需要通過(guò)HOST主橋才能訪(fǎng)問(wèn)PCI設備,而PCI設備需要通過(guò)HOST主橋才能主存儲器。在HOST主橋中含有許多緩沖,這些緩沖使得處理器總線(xiàn)與PCI總線(xiàn)工作在各自的時(shí)鐘頻率中,彼此互不干擾。HOST主橋的存在也使得PCI設備和處理器可以方便地共享主存儲器資源。
處理器訪(fǎng)問(wèn)PCI設備時(shí),必須通過(guò)HOST主橋進(jìn)行地址轉換;而PCI設備訪(fǎng)問(wèn)主存儲器時(shí),也需要通過(guò)HOST主橋進(jìn)行地址轉換。HOST主橋的一個(gè)重要作用就是將處理器訪(fǎng)問(wèn)的存儲器地址轉換為PCI總線(xiàn)地址。PCI設備使用的地址空間是屬于PCI總線(xiàn)域的,而與存儲器地址空間不同。
x86處理器對PCI總線(xiàn)域與存儲器域的劃分并不明晰,這也使得許多程序員并沒(méi)有準確地區分PCI總線(xiàn)域地址空間與存儲器域地址空間。而本書(shū)將反復強調存儲器地址和PCI總線(xiàn)地址的區別,因為這是理解PCI體系結構的重要內容。
PCI規范并沒(méi)有對HOST主橋的設計進(jìn)行約束。每一個(gè)處理器廠(chǎng)商使用的HOST主橋,其設計都不盡相同。HOST主橋是聯(lián)系PCI總線(xiàn)與處理器的核心部件,掌握HOST主橋的實(shí)現機制是深入理解PCI體系結構的前提。
本書(shū)將以Freescale的PowerPC處理器和Intel的x86處理器為例,說(shuō)明各自HOST主橋的實(shí)現方式,值得注意的是本書(shū)涉及的PowerPC處理器僅針對Freescale的PowerPC處理器,而不包含IBM和AMCC的Power和PowerPC處理器。而且如果沒(méi)有特別說(shuō)明,本書(shū)中涉及的x86處理器特指Intel的處理器,而不是其他廠(chǎng)商的x86處理器。
(2)
PCI總線(xiàn)具有很強的擴展性。在PCI總線(xiàn)中,HOST主橋可以直接推出一條PCI總線(xiàn),這條總線(xiàn)也是該HOST主橋的所管理的第一條PCI總線(xiàn),該總線(xiàn)還可以通過(guò)PCI橋擴展出一系列PCI總線(xiàn),并以HOST主橋為根節點(diǎn),形成1顆PCI總線(xiàn)樹(shù)。這些PCI總線(xiàn)都可以連接PCI設備,但是在1顆PCI總線(xiàn)樹(shù)上,最多只能掛接256個(gè)PCI設備(包括PCI橋)。
在同一條PCI總線(xiàn)上的設備間可以直接通信,并不會(huì )影響其他PCI總線(xiàn)上設備間的數據通信。隸屬于同一顆PCI總線(xiàn)樹(shù)上的PCI設備,也可以直接通信,但是需要通過(guò)PCI橋進(jìn)行數據轉發(fā)。
PCI橋是PCI總線(xiàn)的一個(gè)重要組成部件,該部件的存在使得PCI總線(xiàn)極具擴展性。PCI橋也是有別于其他局部總線(xiàn)的一個(gè)重要部件。在“以HOST主橋為根節點(diǎn)”的PCI總線(xiàn)樹(shù)中,每一個(gè)PCI橋下也可以連接一個(gè)PCI總線(xiàn)子樹(shù),PCI橋下的PCI總線(xiàn)仍然可以使用PCI橋繼續進(jìn)行總線(xiàn)擴展。
PCI橋可以管理這個(gè)PCI總線(xiàn)子樹(shù),PCI橋的配置空間含有一系列管理PCI總線(xiàn)子樹(shù)的配置寄存器。在PCI橋的兩端,分別連接了兩條總線(xiàn),分別是上游總線(xiàn)(Primary Bus)和下游總線(xiàn)(Secondary Bus)。其中與處理器距離較近的總線(xiàn)被稱(chēng)為上游總線(xiàn),另一條被稱(chēng)為下游總線(xiàn)。這兩條總線(xiàn)間的通信需要通過(guò)PCI橋進(jìn)行。PCI橋中的許多概念被PCIe總線(xiàn)采納,理解PCI橋也是理解PCIe體系結構的基礎。
(3)
PCI設備使用的地址可以根據需要由系統軟件動(dòng)態(tài)分配。PCI總線(xiàn)使用這種方式合理地解決了設備間的地址沖突,從而實(shí)現了“即插即用”功能。從而PCI總線(xiàn)不需要使用ISA或者EISA接口卡為解決地址沖突而使用的硬件跳線(xiàn)。
每一個(gè)PCI設備都有獨立的配置空間,在配置空間中含有該設備在PCI總線(xiàn)中使用的基地址,系統軟件可以動(dòng)態(tài)配置這個(gè)基地址,從而保證每一個(gè)PCI設備使用的物理地址并不相同。PCI橋的配置空間中含有其下PCI子樹(shù)所能使用的地址范圍。
(4)
PCI總線(xiàn)與之前的局部總線(xiàn)相比,極大提高了數據傳送帶寬,32位/33MHz的PCI總線(xiàn)可以提供132MB/s的峰值帶寬,而64位/66MHz的PCI總線(xiàn)可以提供的峰值帶寬為532MB/s。雖然PCI總線(xiàn)所能提供的峰值帶寬遠不能和PCIe總線(xiàn)相比,但是與之前的局部總線(xiàn)ISA、EISA和MCA總線(xiàn)相比,仍然具有較大的優(yōu)勢。
ISA總線(xiàn)的最高主頻為8MHz,位寬為16,其峰值帶寬為16MB/s;EISA總線(xiàn)的最高主頻為8.33MHz,位寬為32,其峰值帶寬為33MB/s;而MCA總線(xiàn)的最高主頻為10MHz,最高位寬為32,其峰值帶寬為40MB/s。PCI總線(xiàn)提供的峰值帶寬遠高于這些總線(xiàn)。
(5)
PCI設備通過(guò)仲裁獲得PCI總線(xiàn)的使用權后,才能進(jìn)行數據傳送,在PCI總線(xiàn)上進(jìn)行數據傳送,并不需要處理器進(jìn)行干預。
PCI總線(xiàn)仲裁器不在PCI總線(xiàn)規范定義的范圍內,也不一定是HOST主橋和PCI橋的一部分。雖然絕大多數HOST主橋和PCI橋都包含PCI總線(xiàn)仲裁器,但是在某些處理器系統的設計中也可以使用獨立的PCI總線(xiàn)仲裁器。如在PowerPC處理器的HOST主橋中含有PCI總線(xiàn)仲裁器,但是用戶(hù)可以關(guān)閉這個(gè)總線(xiàn)仲裁器,而使用獨立的PCI總線(xiàn)仲裁器。
PCI設備使用共享總線(xiàn)方式進(jìn)行數據傳遞,在同一條總線(xiàn)上,所有PCI設備共享同一總線(xiàn)帶寬,這將極大地影響PCI總線(xiàn)的利用率。這種機制顯然不如PCIe總線(xiàn)采用的交換結構,但是在PCI總線(xiàn)盛行的年代,半導體的工藝、設計能力和制作成本決定了采用共享總線(xiàn)方式是當時(shí)的最優(yōu)選擇。
(6)
PCI總線(xiàn)上的設備可以通過(guò)四根中斷請求信號INTA~D#向處理器提交中斷請求。與ISA總線(xiàn)上的設備不同,PCI總線(xiàn)上的設備可以共享這些中斷請求信號,不同的PCI設備可以將這些中斷請求信號“線(xiàn)與”后,與中斷控制器的中斷請求引腳連接。PCI設備的配置空間記錄了該設備使用這四根中斷請求信號的信息。
PCI總線(xiàn)進(jìn)一步提出了MSI(Message Signal Interrupt)機制,該機制使用存儲器寫(xiě)總線(xiàn)事務(wù)傳遞中斷請求,并可以使用x86處理器FSB(Front Side Bus)總線(xiàn)提供的Interrupt Message總線(xiàn)事務(wù),從而提高了PCI設備的中斷請求效率。
雖然從現代總線(xiàn)技術(shù)的角度上看,PCI總線(xiàn)仍有許多不足之處,但也不能否認PCI總線(xiàn)已經(jīng)獲得了巨大的成功,不僅x86處理器將PCI總線(xiàn)作為標準的局部總線(xiàn)連接各類(lèi)外部設備,PowerPC、MIPS和ARM[1]處理器也將PCI總線(xiàn)作為標準局部總線(xiàn)。除此之外,基于PCI總線(xiàn)的外部設備,如以太網(wǎng)控制器、聲卡、硬盤(pán)控制器等,也已經(jīng)成為主流。
[1] 在A(yíng)RM處理器中,使用SoC平臺總線(xiàn),即AMBA總線(xiàn),連接片內設備。但是某些ARM生產(chǎn)廠(chǎng)商,依然使用AMBA-to-PCI橋推出PCI總線(xiàn),以連接PCI設備。
評論