隨著現代電子技術、計算機技術的發展,各種總線應運而生。微型計算機的體系結構也發生了顯著變化,如CPU運行速度的提高,多處理器結構的出現,高速緩沖存儲器的廣泛應用等,都要求有高速的總線來傳輸數據,從而出現了多總線結構。在多總線結構中,PCI總線以其速度高、可靠性強、成本低及兼容性好等性能,在各種總線標準中占主導地位。
PCI總線的結構
PCI總線作為處理器系統的局部總線,是處理器系統的一個組成部件,講述PCI總線的組成結構不能離開處理器系統這個大環境。在一個處理器系統中,與PCI總線相關的模塊如圖1-1所示。
如圖1?1所示在一個處理器系統中,與PCI總線相關的模塊包括,HOST主橋、PCI總線、PCI橋和PCI設備。PCI總線由HOST主橋和PCI橋推出,HOST主橋與主存儲器控制器在同一級總線上,PCI設備可以方便地通過HOST主橋訪問主存儲器,即進行DMA操作。
值得注意的是,PCI設備的DMA操作需要與處理器系統的Cache進行一致性操作,當PCI設備通過HOST主橋訪問主存儲器時,Cache一致性模塊將進行地址監聽,并根據監聽的結果改變Cache的狀態。
在一些簡單的處理器系統中,可能不含有PCI橋,此時所有PCI設備都是連接在HOST主橋推出的PCI總線上,此外在一些處理器系統中可能含有多個HOST主橋,如在圖1?1所示的處理器系統中含有HOST主橋x和HOST主橋Y。
PCI總線是一種樹型結構,并且獨立于CPU總線,可以和CPU總線并行操作。PCI總線上可以掛接PCI設備和PCI橋片,PCI總線上只允許有一個PCI主設備,其他的均為PCI 從設備,而且讀寫操作只能在主從設備之間進行,從設備之間的數據交換需要通過主設備中轉。 PCI總線結構如下圖所示。
在處理器系統中,含有PCI總線和PCI總線樹這兩個概念。這兩個概念并不相同,在一顆PCI總線樹中可能具有多條PCI總線,而具有血緣關系的PCI總線組成一顆PCI總線樹。PCI總線由HOST主橋或者PCI橋管理,用來連接各類設備,如聲卡、網卡和IDE接口卡等。在一個處理器系統中,可以通過PCI橋擴展PCI總線,并形成具有血緣關系的多級PCI總線,從而形成PCI總線樹型結構。在處理器系統中有幾個HOST主橋,就有幾顆這樣的PCI總線樹,而每一顆PCI總線樹都與一個PCI總線域對應。
與HOST主橋直接連接的PCI總線通常被命名為PCI總線0。考慮到在一個處理器系統中可能有多個主橋。PCI總線取代了早先的ISA總線。當然與在PCI總線后面出現專門用于顯卡的AGP總線,與現在的PCI Express總線相比,功能沒有那么強大,但是PCI能從1992用到現在,說明他有許多優點,比如即插即用(Plug and Play)、中斷共享等。在這里我們對PCI總線做一個深入的介紹。
從數據寬度上看,PCI總線有32bit、64bit之分;從總線速度上分,有33MHz、66MHz兩種。目前流行的是32bit @ 33MHz,而64bit系統正在普及中。改良的PCI系統,PCI-X,最高可以達到64bit @ 133MHz,這樣就可以得到超過1GB/s的數據傳輸速率。如果沒有特殊說明,以下的討論以32bit @ 33MHz為例。
不同于ISA總線,PCI總線的地址總線與數據總線是分時復用的。這樣做的好處是,一方面可以節省接插件的管腳數,另一方面便于實現突發數據傳輸。在做數據傳輸時,由一個PCI設備做發起者(主控,Initiator或Master),而另一個PCI設備做目標(從設備,Target或Slave)。總線上的所有時序的產生與控制,都由Master來發起。PCI總線在同一時刻只能供一對設備完成傳輸,這就要求有一個仲裁機構(Arbiter),來決定在誰有權力拿到總線的主控權。
當PCI總線進行操作時,發起者(Master)先置REQ#,當得到仲裁器(Arbiter)的許可時(GNT#),會將FRAME#置低,并在AD總線上放置Slave地址,同時C/BE#放置命令信號,說明接下來的傳輸類型。所有PCI總線上設備都需對此地址譯碼,被選中的設備要置DEVSEL#以聲明自己被選中。然后當IRDY#與TRDY#都置低時,可以傳輸數據。當Master數據傳輸結束前,將FRAME#置高以標明只剩最后一組數據要傳輸,并在傳完數據后放開IRDY#以釋放總線控制權。
這里我們可以看出,PCI總線的傳輸是很高效的,發出一組地址后,理想狀態下可以連續發數據,峰值速率為132MB/s。實際上,目前流行的33M@32bit北橋芯片一般可以做到100MB/s的連續傳輸。
PCI總線分類
HOST主橋
HOST主橋是一個很特別的橋片,其主要功能是隔離處理器系統的存儲器域與處理器系統的PCI總線域,管理PCI總線域,并完成處理器與PCI設備間的數據交換。處理器與PCI設備間的數據交換主要由“處理器訪問PCI設備的地址空間”和“PCI設備使用DMA機制訪問主存儲器”這兩部分組成。
為簡便起見,下文將處理器系統的存儲器域簡稱為存儲器域,而將處理器系統的PCI總線域稱為PCI總線域,存儲器域和PCI總線域的詳細介紹見第2.1節。值得注意的是,在一個處理器系統中,有幾個HOST主橋,就有幾個PCI總線域。
HOST主橋在處理器系統中的位置并不相同,如PowerPC處理器將HOST主橋與處理器集成在一個芯片中。而有些處理器不進行這種集成,如x86處理器使用南北橋結構,處理器內核在一個芯片中,而HOST主橋在北橋中。但是從處理器體系結構的角度上看,這些集成方式并不重要。
PCI設備通過HOST主橋訪問主存儲器時,需要與處理器的Cache進行一致性操作,因此在設計HOST主橋時需要重點考慮Cache一致性操作。在HOST主橋中,還含有許多數據緩沖,以支持PCI總線的預讀機制。
HOST主橋是聯系處理器與PCI設備的橋梁。在一個處理器系統中,每一個HOST主橋都管理了一顆PCI總線樹,在同一顆PCI總線樹上的所有PCI設備屬于同一個PCI總線域。如圖1?1所示,HOST主橋x之下的PCI設備屬于PCI總線x域,而HOST主橋y之下的PCI設備屬于PCI總線y域。在這顆總線樹上的所有PCI設備的配置空間都由HOST主橋通過配置讀寫總線周期訪問。
如果HOST主橋支持PCI V3.0規范的Peer-to-Peer數據傳送方式,那么分屬不同PCI總線域的PCI設備可以直接進行數據交換。如圖1?1所示,如果HOST主橋y支持Peer-to-Peer數據傳送方式,PCI設備y01可以直接訪問PCI設備01或者PCI設備11,而不需要通過處理器的參與。但是這種跨越總線域的數據傳送方式在PC架構中并不常用,在PC架構中,重點考慮的是PCI設備與主存儲器之間的數據交換,而不是PCI設備之間的數據交換。此外在PC架構中,具有兩個HOST主橋的處理器系統也并不多見。
在PowerPC處理器中,HOST主橋可以通過設置Inbound寄存器,使得分屬于不同PCI總線域的設備可以直接通信。許多PowerPC處理器都具有多個HOST主橋,有關PowerPC處理器使用的HOST主橋
PCI總線
在處理器系統中,含有PCI總線和PCI總線樹這兩個概念。這兩個概念并不相同,在一顆PCI總線樹中可能具有多條PCI總線,而具有血緣關系的PCI總線組成一顆PCI總線樹。如在圖1?1所示的處理器系統中,PCI總線x樹具有兩條PCI總線,分別為PCI總線x0和PCI總線x1。而PCI總線y樹中僅有一條PCI總線。
PCI總線由HOST主橋或者PCI橋管理,用來連接各類設備,如聲卡、網卡和IDE接口卡等。在一個處理器系統中,可以通過PCI橋擴展PCI總線,并形成具有血緣關系的多級PCI總線,從而形成PCI總線樹型結構。在處理器系統中有幾個HOST主橋,就有幾顆這樣的PCI總線樹,而每一顆PCI總線樹都與一個PCI總線域對應。
與HOST主橋直接連接的PCI總線通常被命名為PCI總線0。考慮到在一個處理器系統中可能有多個主橋,圖1?1將HOST主橋x推出的PCI總線命名為x0總線,而將PCI橋x1擴展出的PCI總線稱之為x1總線;而將HOST主橋y推出的PCI總線稱為y0~yn。分屬不同PCI總線樹的設備,其使用的PCI總線地址空間分屬于不同的PCI總線域空間。
PCI設備
在PCI總線中有三類設備,PCI主設備、PCI從設備和橋設備。其中PCI從設備只能被動地接收來自HOST主橋,或者其他PCI設備的讀寫請求;而PCI主設備可以通過總線仲裁獲得PCI總線的使用權,主動地向其他PCI設備或者主存儲器發起存儲器讀寫請求。而橋設備的主要作用是管理下游的PCI總線,并轉發上下游總線之間的總線事務。
一個PCI設備可以即是主設備也是從設備,但是在同一個時刻,這個PCI設備或者為主設備或者為從設備。PCI總線規范將PCI主從設備統稱為PCI Agent設備。在處理器系統中常見的PCI網卡、顯卡、聲卡等設備都屬于PCI Agent設備。
在PCI總線中,HOST主橋是一個特殊的PCI設備,該設備可以獲取PCI總線的控制權訪問PCI設備,也可以被PCI設備訪問。但是HOST主橋并不是PCI設備。PCI規范也沒有規定如何設計HOST主橋。
在PCI總線中,還有一類特殊的設備,即橋設備。橋設備包括PCI橋、PCI-to-(E)ISA橋和PCI-to-Cardbus橋。本篇重點介紹PCI橋,而不關心其他橋設備的實現原理。PCI橋的存在使PCI總線極具擴展性,處理器系統可以使用PCI橋進一步擴展PCI總線。
PCI橋的出現使得采用PCI總線進行大規模系統互連成為可能。但是在目前已經實現的大規模處理器系統中,并沒有使用PCI總線進行處理器系統與處理器系統之間的大規模互連。因為PCI總線是一個以HOST主橋為根的樹型結構,使用主從架構,因而不易實現多處理器系統間的對等互連。
即便如此PCI橋仍然是PCI總線規范的精華所在,掌握PCI橋是深入理解PCI體系結構的基礎。PCI橋可以連接兩條PCI總線,上游PCI總線和下游PCI總線,這兩個PCI總線屬于同一個PCI總線域,使用PCI橋擴展的所有PCI總線都同屬于一個PCI總線域。
其中對PCI設備配置空間的訪問可以從上游總線轉發到下游總線,而數據傳送可以雙方向進行。在PCI總線中,還存在一種非透明PCI橋,該橋片不是PCI總線規范定義的標準橋片,但是適用于某些特殊應用,本篇將在第2.5節中詳細介紹這種橋片。在本書中,如不特別強調,PCI橋是指透明橋,透明橋也是PCI總線規范定義的標準橋片。
PCI-to-(E)ISA橋和PCI-to-Cardbus橋的主要作用是通過PCI總線擴展(E)ISA和Cardbus總線。在PCI總線推出之后,(E)ISA總線并沒有在處理器系統中立即消失,此時需要使用PCI-(E)ISA橋擴展(E)ISA總線,而使用PCI-to-Cardbus橋用來擴展Cardbus總線,本篇并不關心(E)ISA和Cardbus總線的設計與實現。
HOST處理器
PCI總線規定在同一時刻內,在一顆PCI總線樹上有且只有一個HOST處理器。這個HOST處理器可以通過HOST主橋,發起PCI總線的配置請求總線事務,并對PCI總線上的設備和橋片進行配置。
在PCI總線中,HOST處理器是一個較為模糊的概念。在SMP(symmetric multiprocessing)處理器系統中,所有CPU都可以通過HOST主橋訪問其下的PCI總線樹,這些CPU都可以作為HOST處理器。但是值得注意的是,HOST主橋才是PCI總線樹的實際管理者,而不是HOST處理器。
在HOST主橋中,設置了許多寄存器,HOST處理器通過操作這些寄存器管理這些PCI設備。如在x86處理器的HOST主橋中設置了0xCF8和0xCFC這兩個I/O端口訪問PCI設備的配置空間,而PowerPC處理器的HOST主橋設置了CFG_ADDR和CFG_DATA寄存器訪問PCI設備的配置空間。值得注意的是,在PowerPC處理器中并沒有I/O端口,因此使用存儲器映像尋址方式訪問外部設備的寄存器空間。
PCI總線的負載
PCI總線的所能掛接的負載與總線頻率相關,其中總線頻率越高,所能掛接的負載越少。下文以 PCI總線和PCI-X總線為例說明總線頻率、峰值帶寬和負載能力之間的關系,如表1?1所示。
由表1?1所示,PCI總線頻率越高,所能掛接的負載越少,但是整條總線所能提供的帶寬越大。值得注意的是,PCI-X總線與PCI總線的傳送協議略有不同,因此66MHz的PCI-X總線的負載數較大,PCI-X總線的詳細說明見第1.5節。當PCI-X總線頻率為266MHz和533MHz時,該總線只能掛接一個PCI-X插槽。在PCI總線中,一個插槽相當于兩個負載,接插件和插卡各算為一個負載,在表1?1中,33MHz的PCI總線可以掛接4~5個插槽,相當于直接掛接8~10個負載。.
PCI總線的特點
①突出的性能。 總線寬度 32 位, 可升級至 64 位, 支 持突發工作方式, 同步操作時最大頻率 33M H z, 數據 最大傳輸率 132 bp s ( 32 位 ) 或 264M bp s ( 64 位 ) 。 滿足 M 了當前對 PC 機傳輸速度的要求。
②良好的兼容性。 I 總線部件和插板接口是相 PC 互獨立的處理器, 所有目前和將來不同結構的處理器 都可以被很好地支持。
③即插即用。 I 設備都包含存有設備具體信息 PC 的寄存器, 這些信息可以使得系統 B I S 和操作系統 O 層的軟件可以自動配置 PC I 總線部件 和插板。
④低成本。 采用最優化的芯片, 多路 復用體系減少了管腳個數和 PC I 部件, 基于 ISA 、 ISA 、 CA 的擴展板也可以 E M 在 PC I 總線上工作, 減少了用戶開發費 用。
⑤多主能力。 支持任何 PC I 主設備 和從設備之間點對點的訪問。
⑥定義了313V 和5V 2種信號環境, 5 313V 的組件技術可以使電壓平滑過渡。
⑦高速緩存 (Cache) 支持。
PCI總線的主要功能
(1) 最大數據傳輸速率133MB/s
(2) 總線時鐘頻率33.3MHz/66MHz
(3) 支持10 臺外設
(4) 時鐘同步方式
(5) 與CPU 及時鐘頻率無關
(6) 總線寬度 32 位(5V)/64 位(3.3V)
(7) 能自動識別外設
評論