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