PCI總線的組成結構
1.1.2PCI總線
在處理器系統(tǒng)中,含有PCI總線和PCI總線樹這兩個概念。這兩個概念并不相同,在一顆PCI總線樹中可能具有多條PCI總線,而具有血緣關系的PCI總線組成一顆PCI總線樹。如在圖1?1所示的處理器系統(tǒng)中,PCI總線x樹具有兩條PCI總線,分別為PCI總線x0和PCI總線x1。而PCI總線y樹中僅有一條PCI總線。
PCI總線由HOST主橋或者PCI橋管理,用來連接各類設備,如聲卡、網(wǎng)卡和IDE接口卡等。在一個處理器系統(tǒng)中,可以通過PCI橋擴展PCI總線,并形成具有血緣關系的多級PCI總線,從而形成PCI總線樹型結構。在處理器系統(tǒng)中有幾個HOST主橋,就有幾顆這樣的PCI總線樹,而每一顆PCI總線樹都與一個PCI總線域對應。
與HOST主橋直接連接的PCI總線通常被命名為PCI總線0??紤]到在一個處理器系統(tǒng)中可能有多個主橋,圖1?1將HOST主橋x推出的PCI總線命名為x0總線,而將PCI橋x1擴展出的PCI總線稱之為x1總線;而將HOST主橋y推出的PCI總線稱為y0~yn。分屬不同PCI總線樹的設備,其使用的PCI總線地址空間分屬于不同的PCI總線域空間。
1.1.3PCI設備
在PCI總線中有三類設備,PCI主設備、PCI從設備和橋設備。其中PCI從設備只能被動地接收來自HOST主橋,或者其他PCI設備的讀寫請求;而PCI主設備可以通過總線仲裁獲得PCI總線的使用權,主動地向其他PCI設備或者主存儲器發(fā)起存儲器讀寫請求。而橋設備的主要作用是管理下游的PCI總線,并轉發(fā)上下游總線之間的總線事務。
一個PCI設備可以即是主設備也是從設備,但是在同一個時刻,這個PCI設備或者為主設備或者為從設備。PCI總線規(guī)范將PCI主從設備統(tǒng)稱為PCI Agent設備。在處理器系統(tǒng)中常見的PCI網(wǎng)卡、顯卡、聲卡等設備都屬于PCI Agent設備。
在PCI總線中,HOST主橋是一個特殊的PCI設備,該設備可以獲取PCI總線的控制權訪問PCI設備,也可以被PCI設備訪問。但是HOST主橋并不是PCI設備。PCI規(guī)范也沒有規(guī)定如何設計HOST主橋。
在PCI總線中,還有一類特殊的設備,即橋設備。橋設備包括PCI橋、PCI-to-(E)ISA橋和PCI-to-Cardbus橋。本篇重點介紹PCI橋,而不關心其他橋設備的實現(xiàn)原理。PCI橋的存在使PCI總線極具擴展性,處理器系統(tǒng)可以使用PCI橋進一步擴展PCI總線。
PCI橋的出現(xiàn)使得采用PCI總線進行大規(guī)模系統(tǒng)互連成為可能。但是在目前已經(jīng)實現(xiàn)的大規(guī)模處理器系統(tǒng)中,并沒有使用PCI總線進行處理器系統(tǒng)與處理器系統(tǒng)之間的大規(guī)?;ミB。因為PCI總線是一個以HOST主橋為根的樹型結構,使用主從架構,因而不易實現(xiàn)多處理器系統(tǒng)間的對等互連。
即便如此PCI橋仍然是PCI總線規(guī)范的精華所在,掌握PCI橋是深入理解PCI體系結構的基礎。PCI橋可以連接兩條PCI總線,上游PCI總線和下游PCI總線,這兩個PCI總線屬于同一個PCI總線域,使用PCI橋擴展的所有PCI總線都同屬于一個PCI總線域。
其中對PCI設備配置空間的訪問可以從上游總線轉發(fā)到下游總線,而數(shù)據(jù)傳送可以雙方向進行。在PCI總線中,還存在一種非透明PCI橋,該橋片不是PCI總線規(guī)范定義的標準橋片,但是適用于某些特殊應用,本篇將在第2.5節(jié)中詳細介紹這種橋片。在本書中,如不特別強調,PCI橋是指透明橋,透明橋也是PCI總線規(guī)范定義的標準橋片。
PCI-to-(E)ISA橋和PCI-to-Cardbus橋的主要作用是通過PCI總線擴展(E)ISA和Cardbus總線。在PCI總線推出之后,(E)ISA總線并沒有在處理器系統(tǒng)中立即消失,此時需要使用PCI-(E)ISA橋擴展(E)ISA總線,而使用PCI-to-Cardbus橋用來擴展Cardbus總線,本篇并不關心(E)ISA和Cardbus總線的設計與實現(xiàn)。
1.1.4HOST處理器
PCI總線規(guī)定在同一時刻內,在一顆PCI總線樹上有且只有一個HOST處理器。這個HOST處理器可以通過HOST主橋,發(fā)起PCI總線的配置請求總線事務,并對PCI總線上的設備和橋片進行配置。
在PCI總線中,HOST處理器是一個較為模糊的概念。在SMP(symmetric multiprocessing)處理器系統(tǒng)中,所有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端口,因此使用存儲器映像尋址方式訪問外部設備的寄存器空間。
1.1.5PCI總線的負載
PCI總線的所能掛接的負載與總線頻率相關,其中總線頻率越高,所能掛接的負載越少。下文以PCI總線和PCI-X總線為例說明總線頻率、峰值帶寬和負載能力之間的關系,如表1?1所示。
總線類型 | 總線頻率 | 峰值帶寬 | 負載能力 |
PCI | 33MHz | 133MB/s | 4-5個插槽 |
66MHz | 266MB/s | 1-2個插槽 | |
PCI-X | 66MHz | 266MB/s | 4個插槽 |
133MHz | 533MB/s | 2個插槽 | |
266MHz | 1066MB/s | 1個插槽 | |
533MHz | 2131MB/s | 1個插槽 |
由表1?1所示,PCI總線頻率越高,所能掛接的負載越少,但是整條總線所能提供的帶寬越大。值得注意的是,PCI-X總線與PCI總線的傳送協(xié)議略有不同,因此66MHz的PCI-X總線的負載數(shù)較大,PCI-X總線的詳細說明見第1.5節(jié)。當PCI-X總線頻率為266MHz和533MHz時,該總線只能掛接一個PCI-X插槽。在PCI總線中,一個插槽相當于兩個負載,接插件和插卡各算為一個負載,在表1?1中,33MHz的PCI總線可以掛接4~5個插槽,相當于直接掛接8~10個負載。
評論