PCI-Express總線簡析
PCI Express的體系結(jié)構(gòu)
圖-5
1、物理層(Physical Layer)
物理層是最低層,它負責(zé)接口或者設(shè)備之間的鏈接,是物理接口之間的連接,可對應(yīng)于網(wǎng)絡(luò)中OSI七層模式中的物理層來理解。
物理層決定了PCI Express總線接口的物理特性,如點對點串行連接、微差分信號驅(qū)動、熱撥插、可配置帶寬等。初始的單一串行PCI Express鏈接包含兩個低電壓微分驅(qū)動信號對(4線的接收和發(fā)送對)的雙向連接,即“發(fā)送”和“接受”信號。數(shù)據(jù)時鐘使用8/10b解碼方式來達到相當(dāng)高的數(shù)據(jù)速率(這一技術(shù)同時也在其它串行總線技術(shù)中,如InfiniBand和RapidIO),時鐘信息直接被編碼成數(shù)據(jù)流,比起分離信號時鐘更好。微分信號受兩個不同方向的電壓驅(qū)動,初始PCI Express的鏈接信號發(fā)送速率為單線每個方向2.5GB/s,預(yù)計到2004年可達到5GB/s的信號傳輸速率,使用先進的硅技術(shù)把數(shù)據(jù)傳輸速率提高到10GHz(達到銅線傳輸?shù)睦碚撋献畲笾担?。雙向連接允許數(shù)據(jù)在兩個方向上同時傳輸,類似于全雙工連接,如電話系統(tǒng),但是在雙向傳輸中,各自都有自己的地線,而不像雙工傳輸那樣采用公共地線,在雙向連接中可得到高速、更好質(zhì)量的傳輸信號。單線雙向信號線及傳輸流程如圖6所示。
圖6
在圖中的兩個紅色箭頭代表兩個不同的方向(發(fā)送和接收)的數(shù)據(jù)包,從圖中可以看出,單線數(shù)據(jù)傳輸每個方向只需2要芯線,即一根數(shù)據(jù)傳輸線,一根為地線。
PCI Express鏈接可以配置為x1、x2、x4、x8、x12、x16和x32信道帶寬,x1帶寬的鏈接包含4條線,x16帶寬信道每個方向就有16個不同的信號對,或者64根信號芯線用于雙向數(shù)據(jù)傳輸;終極的x32帶寬信道每個方向可以提供10GB/s的數(shù)據(jù)傳輸速率,但是在采用8位/10位編碼方式的情況下,實際速率只可達8GB/s,留有20%富余。PCI Express體系結(jié)構(gòu)可以通過速度的提高和先進的編碼技術(shù)來升級,但這些速度的提高、編碼的改進和媒介的改變均只影響物理層,所以對于整個PCI Express架構(gòu)來說升級是非常方便的。
如圖7所示的是PCI Express總線數(shù)據(jù)流傳輸示意圖。圖的左邊顯示的是單信道情況下數(shù)據(jù)流的傳輸方式,因為PCI Express屬于點對點串行連接,所以在單信道情況下,數(shù)據(jù)流是一個字節(jié)一個字節(jié)地傳輸。在圖的右邊顯示的是多信道情況下PCI Express總線數(shù)據(jù)流的傳輸情況。因為有多外信道,所以數(shù)據(jù)可以依次傳輸?shù)礁鱾€信道,加快了整個數(shù)據(jù)傳輸?shù)乃俣?,提高了?shù)據(jù)傳輸效率,這有點類似于網(wǎng)絡(luò)中的磁盤陣列。
在物理層的另一處重要方面就是中斷。PCI Express支持兩個類型的中斷,現(xiàn)行的PCI INTx (x= A, B, C, or D) 中斷被保留下來了,仍可在PCI Express總線中應(yīng)用。還有一個新的中斷類型,那就是MSI (Message Signaled Interrupt,信息信號中斷),MSI中斷可以進一步優(yōu)化PCI .2/2.3設(shè)備。INTx中斷方式可以用信號方式中斷主機芯片請求,它可以與現(xiàn)行的PCI總線的驅(qū)動程序和操作系統(tǒng)兼容。PCI Express設(shè)備必須支持INTx和MS兩種中斷模式,原有設(shè)備將壓縮INTx中斷信息在PCI Express處理信息中。MSI中斷是通過內(nèi)存寫處理操作邊沿觸發(fā)和發(fā)送的。重新編寫驅(qū)動程序?qū)τ贛SI邊沿觸發(fā)中斷是非常有利的,MSI方案在使用數(shù)據(jù)包協(xié)議通過串行鏈接中是一種行之有效的本地中斷方式。MSI在多處理器系統(tǒng)中任何設(shè)備都可以發(fā)送中斷,比起主機直接發(fā)送中斷更加有效,所以現(xiàn)在許多多處理器系統(tǒng)和I/O架構(gòu)都對MSI中斷技術(shù)提供支持。
2、數(shù)據(jù)鏈路層(Link Layer)
數(shù)據(jù)鏈路層的主要職責(zé)就是確保數(shù)據(jù)包可靠、正確傳輸。它的任務(wù)是確保數(shù)據(jù)包的完整性,并在數(shù)據(jù)包中添加序列號和發(fā)送冗余校驗碼到處理層。大多數(shù)數(shù)據(jù)包是由處理層發(fā)起的,基于信任,數(shù)據(jù)流控制協(xié)議確保數(shù)據(jù)包只在終端緩存空閑時傳輸。排隊了所有數(shù)據(jù)的重試,使得信道帶寬浪費現(xiàn)象得到有效地約束。但數(shù)據(jù)鏈路層在信號中斷時自動重新傳輸數(shù)據(jù)包。傳輸過程如圖8所示。
處理層的作用主要是接受從軟件層送來的讀、寫請求,并且建立一個請求包傳輸?shù)芥溄訉印K姓埱蠖际欠蛛x執(zhí)行,有些請示包將需要一個響應(yīng)包。處理層同時接受從鏈路層傳來的響應(yīng)包,并與原始的軟件請求關(guān)聯(lián)。處理層還整合或者拆分處理級數(shù)據(jù)包來發(fā)送請求,如數(shù)據(jù)讀、寫請求,并且操縱鏈接配置和信號控制。以確保端到端連接通信正確,沒有無效數(shù)據(jù)通過整個組織(包括源設(shè)備和目標設(shè)備,甚至包括可能通過的多個橋接器和交換器)。
在PCI Express總線技術(shù)中,數(shù)據(jù)包類型主要有兩種,那就是由處理層發(fā)起的“處理層數(shù)據(jù)包”(Transaction Layer Packet,TLP)和“數(shù)據(jù)鏈路層數(shù)據(jù)包”(Data Link Layer Packet,DLLP)。每個數(shù)據(jù)包都有一個可以使響應(yīng)包定向于正確發(fā)起者的唯一標識符,包的格式支持32位內(nèi)存地址和擴展64位內(nèi)存地址。包同時還有如“非窺探”、“無嚴格排序”和“優(yōu)先權(quán)”等屬性,這些屬性將應(yīng)用于優(yōu)化路由I/O子系統(tǒng)的數(shù)據(jù)包。
處理層包括4個地址空間,其中3個是PCI接口原有的,如內(nèi)存、I/O和配置地址空間,另一外新PCI-Express接口新加的,它就是“信息空間”。PCI2.2標準中介紹不斷變化的系統(tǒng)中斷宣傳的方法稱之為“信息信號中斷”(Message Signaled Interrupt,MSI)。這里特殊規(guī)格格式的內(nèi)存寫事物代替無邊信號硬寫,如中斷、電源管理請求、復(fù)位等等有關(guān)信息方面。另一個PCI2.2標準的特殊循環(huán),如中斷響應(yīng)也屬于信息執(zhí)行范疇。你可以把PCI-Express信息稱之為“虛擬線”,因為它們的影響將消除現(xiàn)有執(zhí)行平臺中的廣闊無限頻帶信號的排列。這幾個地址空間類型的用途如下表所示。
不同地址空間的傳輸類型 | ||
地址空間 | 處理類型 | 基本用途 |
內(nèi)存 | 讀/寫 | 處理來自或發(fā)送到內(nèi)存中的數(shù)據(jù) |
I/O | 讀/寫 | 處理來自或發(fā)送到I/O節(jié)點中的數(shù)據(jù) |
配置 | 讀/寫 | 設(shè)備配置或者設(shè)置 |
信息 | 基線/供應(yīng)商定義/先進交換 | 處理從事件信號機制到通用目信息的所有信息 |
PCI Express使用數(shù)據(jù)包和層協(xié)議結(jié)構(gòu),而不需任何邊帶及旁路主流串行連接信號。層協(xié)議已經(jīng)在數(shù)據(jù)通信中使用多年,它們允許在不同協(xié)議的功能區(qū)域中保持分離,而且可以不用做任何改動更新或者濃縮在其它不同層中。如新的處理類型可以包括在新的協(xié)議版本中,而不會影響下面的層,或者物理媒介可以被更換,而不會對更高層有大的影響。
下圖9說明了PCI Express的3個協(xié)議層(處理層、數(shù)據(jù)鏈路層和物理層)在數(shù)據(jù)傳輸中的作用,數(shù)據(jù)流從一個設(shè)備的處理層發(fā)起,經(jīng)過數(shù)據(jù)鏈路層,到物理的總線接口設(shè)備,然后通過相應(yīng)的PCI Express數(shù)據(jù)電纜傳輸?shù)搅硪辉O(shè)備的物理層設(shè)備,經(jīng)過另一設(shè)備的數(shù)據(jù)鏈路層再傳到處理層進行處理,第一層都代表一個協(xié)議棧。
圖10顯示了數(shù)據(jù)包在兩個設(shè)備中傳輸?shù)膶嶋H流程,高層數(shù)據(jù)包信息被壓縮在低層封裝包中,應(yīng)用級數(shù)據(jù)最終在數(shù)據(jù)包的核心位置。處理層在端到端的數(shù)據(jù)傳輸中使用32位冗余校驗碼,在數(shù)據(jù)鏈路層是使用16位校驗碼的。處理層數(shù)據(jù)包頭包括許多控制信息和端到端傳輸數(shù)據(jù)。
PCI Express處理層使用基于信任的流控制機制來確保接收設(shè)備有足夠的緩存資源用于接受從發(fā)送端設(shè)備所傳輸?shù)臄?shù)據(jù)大小和類型。
圖10
講到數(shù)據(jù)處理,再來講一下PCI Express總線接口中新的結(jié)構(gòu),那就是虛擬通道(Virtual lan)。類似于InfiniBand,PCI Express總線技術(shù)在每一個物理信道中也支持多點虛擬通道,理論上來講每一個單物理信道中可以允許有8條虛擬通道信道進行獨立通信控制。每個通信的數(shù)據(jù)包都定義不同的QoS,如圖11所示。當(dāng)數(shù)據(jù)包通過PCI Express組織傳輸時,在每個交換器或者鏈接終端,數(shù)據(jù)包的基本傳輸信息和傳策略可以得到應(yīng)用。傳輸信息在數(shù)據(jù)包包頭,它包括3位代碼,可以描述8個不同的傳輸信道。
圖11
4. 軟件層(Software Layer)
軟件層被稱為最重要的部分,因為它是保持與PCI總線兼容的關(guān)鍵。其目的在于使系統(tǒng)在使用PCI Express啟動時,像在PCI下的初始化和運行那樣,無論是在系統(tǒng)中發(fā)現(xiàn)的硬件設(shè)備,還是在系統(tǒng)中的資源,如內(nèi)存、I/O空間和中斷等,它可以創(chuàng)建非常優(yōu)化的系統(tǒng)環(huán)境,而不需要進行任何改動。在PCI-Express體系結(jié)構(gòu)中保持這些配置空間和I/O設(shè)備連接的規(guī)范穩(wěn)定是非常關(guān)鍵的。事實上,在PCI-Express平臺中所有操作系統(tǒng)在引導(dǎo)時都不需要進行任何編輯,也就是說在軟件方面完全可以實現(xiàn)從PCI總線平穩(wěn)過渡。
在軟件響應(yīng)時間模式方面,PCI-Express體系結(jié)構(gòu)支持PCI的本地存儲、共享內(nèi)存模式,這樣所有PCI軟件在PCI-Express體系中運行都不需任何改變。當(dāng)然新的軟件可能包括新的特性。
評論