簡介
PCI-E(PCI-Express的所寫)是最新的匯流排和接口標準,它原來的名稱為“3GIO”,是由英特爾提出的,很明顯英特爾的意思是它代表著下一代I/O接口標準。交由PCI-SIG(PCI特殊興趣組織)認證發布後才改名為“PCI-Express”。這個新標準將全面取代現行的PCI和AGP,最終實現匯流排標準的統一。它的主要優勢就是數據傳輸速率高,目前最高可達到10GB/s以上,而且還有相當大的發展潛力。PCI Express也有多種規格,從PCI Express 1X到PCI Express 16X,能滿足現在和將來一定時間內出現的低速設備和高速設備的需求。能支持PCI Express的主要是英特爾的i915和i925系列晶片組。當然要實現全面取代PCI和AGP也需要一個相當長的過程,就象當初PCI取代ISA一樣,都會有個過渡的過程。
PCI-E採用了目前業內流行的點對點串列連線,比起PCI以及更早期的計算機匯流排的共享並行架構,每個設備都有自己的專用連線,不需要向整個匯流排請求頻寬,而且可以把數據傳輸率提高到一個很高的頻率,達到PCI所不能提供的高頻寬。相對於傳統PCI匯流排在單一時間周期內只能實現單向傳輸,PCI-E的雙單工連線能提供更高的傳輸速率和質量,它們之間的差異跟半雙工和全雙工類似。
歷史
習慣了做業界規範制定者的Intel,在2001年宣布了要用一種新的技術取代PCI匯流排和多種晶片的內部連線。並稱之為第三代I/O匯流排技術(很明顯Intel的意思是它代表著下一代I/O接口標準)。
該匯流排的規範由Intel支持的AWG(Arapahoe Working Group)負責制定。2002 年4月17日,AWG正式宣布3GIO 1.0規範草稿制定完畢,並移交PCI-SIG進行審核(主要以Intel、AMD、IBM、DELL、NVIDIA等20多家業界主導公司開始起草3GIO,2002年草案完成,2002年7月23日經過審核後正式公布。
開始的時候大家都以為它會被命名為Serial PCI(受到串列ATA的影響),但最後卻被正式命名為PCI Express(以下簡稱PCI-E)。2006年正式推出Spec2.0(2.0規範)。這個新標準將全面取代現行的PCI和AGP,最終實現匯流排標準的統一 。
2001年春季的IDF上Intel正式公布PCI Express,是取代PCI匯流排的第三代I/O技術,也稱為3GIO。該匯流排的規範由Intel支持的AWG(Arapahoe Working Group)負責制定。2002 年4月17日,AWG正式宣布3GIO 1.0規範草稿制定完畢,並移交PCI-SIG進行審核。開始的時候大家都以為它會被命名為Serial PCI(受到串列ATA的影響),但最後卻被正式命名為PCI Express。2006年正式推出Spec2.0(2.0規範)。
PCI Express匯流排技術的演進過程,實際上是計算系統I/O接口速率演進的過程。PCI匯流排是一種33MHz@32bit或者66MHz@64bit的並行匯流排,匯流排頻寬為133MB/s到最大533MB/s,連線在PCI匯流排上的所有設備共享133MB/s~533MB/s頻寬。這種匯流排用來應付音效卡、10/100M網卡以及USB 1.1等接口基本不成問題。隨著計算機和通信技術的進一步發展,新一代的I/O接口大量湧現,比如千兆(GE)、萬兆(10GE)的乙太網技術、4G/8G的FC技術,使得PCI匯流排的頻寬已經無力應付計算系統內部大量高頻寬並行讀寫的要求,PCI匯流排也成為系統性能提升的瓶頸,於是就出現了PCI Express匯流排。PCI Express匯流排技術在當今新一代的存儲系統已經普遍的套用。PCI Express匯流排能夠提供極高的頻寬,來滿足系統的需求。
目前,PCI-E 3.0規範也已經確定,其編碼數據速率,比同等情況下的PCI-E 2.0規範提高了一倍,X32連線埠的雙向速率高達320Gbps。
接口
PCI-E的接口根據匯流排位寬不同而有所差異,包括X1、X4、X8以及X16,而X2模式將用於內部接口而非插槽模式。PCI-E規格從1條通道連線到32條通道連線,有非常強的伸縮性,以滿足不同系統設備對數據傳輸頻寬不同的需求。此外,較短的PCI-E卡可以插入較長的PCI-E插槽中使用,PCI-E接口還能夠支持熱拔插,這也是個不小的飛躍。PCI-E X1的250MB/秒傳輸速度已經可以滿足主流聲效晶片、網卡晶片和存儲設備對數據傳輸頻寬的需求,但是遠遠無法滿足圖形晶片對數據傳輸頻寬的需求。 因此,用於取代AGP接口的PCI-E接口位寬為X16,能夠提供5GB/s的頻寬,即便有編碼上的損耗但仍能夠提供約為4GB/s左右的實際頻寬,遠遠超過AGP 8X的2.1GB/s的頻寬。
技術規格
儘管PCI-E技術規格允許實現X1(250MB/秒),X2,X4,X8,X12,X16和X32通道規格,但是依目前形式來看,PCI-E X1和PCI-E X16已成為PCI-E主流規格,同時很多晶片組廠商在南橋晶片當中添加對PCI-E X1的支持,在北橋晶片當中添加對PCI-E X16的支持。除去提供極高數據傳輸頻寬之外,PCI-E因為採用串列數據包方式傳遞數據,所以PCI-E接口每個針腳可以獲得比傳統I/O標準更多的頻寬,這樣就可以降低PCI-E設備生產成本和體積。另外,PCI-E也支持高階電源管理,支持熱插拔,支持數據同步傳輸,為優先傳輸數據進行頻寬最佳化。
PCI Express的引入是用來克服以前PCI匯流排的限制。PCI匯流排是Intel十年前開發和發布的,工作在33MHz和32位環境下,理論頻寬峰值是每秒132MB。它使用共享匯流排拓撲結構——匯流排頻寬在多個設備間共享——從而實現匯流排上不同設備間的通信。隨著設備的發展,新的占用大量頻寬的設備開始吞噬同一共享匯流排上的其他設備的頻寬。例如,1G網卡可獨占95%的PCI匯流排頻寬。為了提供這些新型設備所要求的頻寬,PC行業協會和外設廠商一起開發了PCI Express並且於2004年開始在標準的台式計算機上提供。大部分來自頂級供應商的台式機器已經至少包含了一個PCI Express插槽。相對於PCI,PCI Express最引人注目的進步是它點到點的拓撲結構。用於PCI的共享匯流排被一個共享開關所代替,這個開關使得每一個設備擁有對匯流排的直接訪問權。並且不同於PCI將頻寬分給匯流排上的所有設備的是,PCI Express提供給每一個設備它自己專用的數據流水線。數據通過被稱為信道的傳送和接受信號對來以包的形式串列傳輸,每個信道具有單方向250M位元組/秒的速度。多個信道可以組合在一起形成x1 (“單一的”)、 x2、 x4、x8、x12、x16、和x32的信道頻寬從而提高插槽的頻寬。
諸如數據採集和波形發生器之類的套用需要足夠的頻寬來保證數據能以足夠快的速度傳輸至記憶體而不丟失或重寫。相對於傳統的匯流排,PCI Express極大地提高了數據頻寬,減少了對板載記憶體的需求並且實現了更快的數據流傳輸。初始的信號頻率,即技術標準規定的2.5G位/秒,是32位、33MHz 的PCI可用頻寬的30倍(一個x16的插槽),並且這一信號頻率預期將隨著晶片技術的進步增加至10G位/秒——這是銅線信號的極限。並且由於PCI Express的可擴展信道拓撲結構,數據採集廠商可以實現具有符合設備所需要信道數的PCI Express插槽。
系統構架
PCI-E是一種雙向串列連線。其匯流排本身又分成數個通道,每個通道支持2.5Gbit/S的雙向數據傳輸速度。通過編碼和誤差校驗處理後,數據被轉換成適用於NIC、HCA和HBA傳輸的250MB/秒的有效頻寬,這足以滿足2Gb Fiber Channel的HBA卡。
這裡需要著重介紹的一個概念就是通道。舉個例子,如果你要使用4Gb的Fiber Channel,並在一個連線埠的HBA上全雙工運行的話,你就需要400MB/S的雙向頻寬。如果使用PCI-E技術,只需要兩個全速開放的子通道就能夠滿足需求。你也能使用單通道,不過你會被限制在250MB/S的速度上。這對於像數據索引搜尋這類套用的IOPS是足夠的了。
如果使用400MB/S的無其他開銷的傳輸速度來應付16KB請求的話,每秒可完成25000個(400MB/S 16000KB)請求,而250MB/S的一個單通道每秒則能夠處理16000個請求。但因為有附加的頭檔案,所以實際套用中永遠達不到這個速度。不過從另一方面說,一個或兩個通道已能夠滿足大部分的伺服器、HBA卡和RAID系統的傳輸需求了。
如果只以IOPS的角度來看,一個單通道就能夠和一塊4GB HBA協同工作了。如果使用雙連線埠的話,一個或兩個通道就滿足大多數RAID架構的需求。
如果假設一塊硬碟每秒的隨機I/O讀取次數最多在150次左右的話,那么非常多數量的磁碟驅動器和快取才能使其達到全速。由於大多數的RAID控制器沒有8K的命令序列, 因此你也將大大超越RAID控制器的命令序列。
我記不得有哪個時期I/O匯流排的性能超過了最快的主機接口速度,因此我認為我們到達了一個科技史上非常重要的時刻,匯流排已足以滿足各種外接卡的速度需求。而這就意味著有了一些新狀況已產生:
要有足夠的記憶體頻寬才能使匯流排全速運行:使用新的16通道PCI-E,全速雙向運行匯流排可達10 GB/S(2.5 Gb/S*2 *16/8)的頻寬。對於如今大部分x86和AMD系統的記憶體頻寬來說的這都是個不小的值。
系統中的瓶頸:許多來自各類廠商的PCI和PCI-X匯流排接口和記憶體系統之間總是存在性能瓶頸。在大多數情況下,這些性能設計缺陷限制了匯流排性能,即限制了匯流排從記憶體中讀取和寫入性能。偶爾匯流排本身也存在設計缺陷,但這種情況比匯流排和記憶體間出現問題的幾率要小。能明顯地看出,我們需要這個接口的性能達到PCI-X的1GB/秒或更高。這就需要廠商檢查接口的設計、進行早期的測試。
新I/O卡:隨著新一代匯流排的推出,相對應的I/O卡也必須得到發展。這其中包括Fibre Chnanel、InfiniBand和新一代乙太網(1G和10G)卡。測試這些卡的流量性能是非常困難的。雖然找到測試設備並非難事,不過找到了解硬體知識的人才和確定卡所部屬的軟體堆疊是比較困難的。如果這些卡有良好的速度和IOPS性能,那會非常最佳。但如果存在瓶頸,就非常難更正。其中的問題可能存在於非常多方面:套用程式、作業系統、I/O驅動、卡驅動、PCI-E匯流排、記憶體頻寬或其他數據通道的問題。在1990年,我參和了早期Fiber Channel的測試,當時就有廠商表示我們能通過解決數據通路上的一些問題來提高其接口速率。
兼容性
PCI Express保持與傳統PCI的軟體兼容性,但是將物理匯流排代替成為一個高速(2.5Gb/s)的串列匯流排。因為這種體系結構發生了改變,所以插槽本身並不兼容。但是,在PCI向PCI Express的過渡過程中,大部分計算機主機板將既提供PCI插槽又提供PCI Express插槽。具有較少信道插槽的設備可以“向上插入”至主機板上具有較多信道的插槽,從而提高硬體的兼容性和靈活性。但是,“向下插入”至較少信道的插槽是不支持的。
大部分來自頂級廠商的PC現在已經至少包含一個PCI Express插槽了。最常見的插槽大小是x1和x16。x1插槽是一個通用的插槽用來作為NI PCIe M系列數據採集和NI PCIe GPIB設備的主機設備。現在,伺服器級的機器需要x4和x8的插槽,以用於那些包含NI PCIe攝像機鏈路(Camera Link)圖像採集設備的裝置。然而“伺服器”並不簡單地意味著高價格,因為優良的伺服器也具有與台式機箱可比的價格。例如,2005年5月, Dell SC240伺服器除了3個PCI插槽之外,還有一個x1和一個x8的PCI Express插槽。
在選擇一個計算機時最重要的是確保PCI Express插槽被連線到的物理連線的大小。例如,一些廠商使用的主機板具有x8的插槽,卻是x4的連線大小。這些插槽上的設備將只會運行在x4的數據速率上。在您向上插入一個PCI Express設備的情況下,請保證您使用的計算機運行在您設備所支持的最大數據速率時支持向上插入。PCI Express技術標準僅僅要求“向上插入”來工作在x1數據速率下。這就會導致一個插入x8插槽的x4的設備工作在x1的數據速率下(250MB/s)。
技術優勢
PCI匯流排的最大優點是匯流排結構簡單、成本低、設計簡單,但是缺點也比較明顯:
1) 並行匯流排無法連線太多設備,匯流排擴展性比較差,線間干擾將導致系統無法正常工作;
2) 當連線多個設備時,匯流排有效頻寬將大幅降低,傳輸速率變慢;
3) 為了降低成本和儘可能減少相互間的干擾,需要減少匯流排頻寬,或者地址匯流排和數據匯流排採用復用方式設計,這樣降低了頻寬利用率。 PCI Express匯流排是為將來的計算機和通訊平台定義的一種高性能,通用I/O互連匯流排。
與PCI匯流排相比,PCI Express匯流排主要有下面的技術優勢:
1) 是串列匯流排,進行點對點傳輸,每個傳輸通道獨享頻寬。
2) PCI Express匯流排支持雙向傳輸模式和數據分通道傳輸模式。其中數據分通道傳輸模式即PCI Express匯流排的x1、x2、x4、x8、x12、x16和x32多通道連線,x1單向傳輸頻寬即可達到250MB/s,雙向傳輸頻寬更能夠達到500MB/s,這個已經不是普通PCI匯流排所能夠相比的了。
3) PCI Express匯流排充分利用先進的點到點互連、基於交換的技術、基於包的協定來實現新的匯流排性能和特徵。電源管理、服務質量(QoS)、熱插拔支持、數據完整性、錯誤處理機制等也是PCI Express匯流排所支持的高級特徵。
4) 與PCI匯流排良好的繼承性,可以保持軟體的繼承和可靠性。PCI Express匯流排關鍵的PCI特徵,比如套用模型、存儲結構、軟體接口等與傳統PCI匯流排保持一致,但是並行的PCI匯流排被一種具有高度擴展性的、完全串列的匯流排所替代。
5) PCI Express匯流排充分利用先進的點到點互連,降低了系統硬體平台設計的複雜性和難度,從而大大降低了系統的開發製造設計成本,極大地提高系統的性價比和健壯性。從下面表格可以看出,系統匯流排頻寬提高同時,減少了硬體PIN的數量,硬體的成本直接下降。
硬體協定
PCIe的連線是建立在一個雙向的序列的(1-bit)點對點連線基礎之上,這稱之為“傳輸通道”。與PCI 連線形成鮮明對比的是PCI是基於匯流排控制,所有設備共同分享的單向32位並行匯流排。PCIe是一個多層協定,由一個對話層,一個數據交換層和一個物理層構成。物理層又可進一步分為邏輯子層和電氣子層。邏輯子層又可分為物理代碼子層(PCS)和介質訪問控制子層(MAC)。
物理傳輸層
於使用電力方面,每組流水線使用兩個單向的低電壓微分信號(LVDS)合計達到2.5兆波特。傳送及接收不同數據會使用不同的傳輸通道,每一通道可運作四項資料。兩個PCIe設備之間的連線成為“連結”,這形成了1組或更多的傳輸通道。各個設備最少支持1傳輸通道(x1)的連結。也可以有2,4,8,16,32個通道的連結。這可以更好的提供雙向兼容性。(x2模式將用於內部接口而非插槽模式)PCIe卡能使用在至少與之傳輸通道相當的插槽上(例如x1接口的卡也能工作在x4或x16的插槽上)。一個支持較多傳輸通道的插槽可以建立較少的傳輸通道(例如8個通道的插槽能支持1個通道)。PCIe設備之間的連結將使用兩設備中較少通道數的作為標準。一個支持較多通道的設備不能在支持較少通道的插槽上正常工作,例如x4接口的卡不能在x1的插槽上正常工作,但它能在x4的插槽上只建立1個傳輸通道(x1)。PCI-Express卡能在同一數據傳輸通道內傳輸包括中斷在內的全部控制信息。這也方便了與PCI的兼容。多傳輸通道上的數據傳輸採取交叉存取,這意味著連續位元組交叉存取在不同的通道上。這一特性被稱之為“數據條紋”,需要非常複雜的硬體支持連續數據的同步存取,也對連結的數據吞吐量要求極高。由於數據填充的需求,數據交叉存取不需要縮小數據包。與其它高速數傳輸協定一樣,時鐘信息必須嵌入信號中。在物理層上,PCIe採用常見的8B/10B代碼方式來確保連續的1和0字元串長度符合標準,這樣保證接收端不會誤讀。編碼方案用10位編碼比特代替8個未編碼比特來傳輸數據,占用20%的總頻寬。有些協定(如SONET)使用另外的編碼結構如“不規則”在數據流中嵌入時鐘信息。PCIe的特性也定義了一種“不規則化”的運算方法,但這種方法與SONET完全不同,它的方法主要用來避免數據傳輸過程中的數據重複而出現數據散射。第一代PCIe採用2.5兆位單信號傳輸率,PCI-SIG計畫在未來版本中增強到5~10兆位。
數據連結層
數據連結層採用按序的交換層信息包(Transaction Layer Packets,TLPs),是由交換層生成,按32位循環冗餘校驗碼(CRC,本文中用LCRC)進行數據保護,採用著名的協定(Ack and Nak signaling)的信息包。TLPs能通過LCRC校驗和連續性校驗的稱為Ack(命令正確應答);沒有通過校驗的稱為Nak(沒有應答)。沒有應答的TLPs或者等待逾時的TLPs會被重新傳輸。這些內容存儲在數據連結層的快取內。這樣可以確保TLPs的傳輸不受電子噪音干擾。
Ack和Nak信號由低層的信息包傳送,這些包被稱為數據連結層信息包(Data Link Layer Packet,DLLP)。DLLP也用來傳送兩個互連設備的交換層之間的流控制信息和實現電源管理功能。
交換層
PCI Express採用分離交換(數據提交和應答在時間上分離),可保證傳輸通道在目標端設備等待傳送回應信息傳送其它數據信息。它採用了可信性流控制。這一模式下,一個設備廣播它可接收快取的初始可信信號量。連結另一方的設備會在傳送數據時統計每一傳送的TLP所占用的可信信號量,直至達到接收端初始可信信號最高值。接收端在處理完畢快取中的TLP後,它會回送傳送端一個比初始值更大的可信信號量。可信信號統計是定製的標準計數器,這一算法的優勢,相對於其他算法,如握手傳輸協定等,在於可信信號的回傳反應時間不會影響系統性能,因為如果雙方設備的快取足夠大的話,是不會出現達到可信信號最高值的情況,這樣傳送數據不會停頓。第一代PCIe標稱可支持每傳輸通道單向每秒250兆位元組的數據傳輸率。這一數字是根據物理信號率2500兆波特除以編碼率(10位/每位元組)計算而得。這意味著一個16通道(x16)的PCIe卡理論上可以達到單向250*16=4000兆位元組/秒(3.7G兆位元組/每秒)。實際的傳輸率要根據數據有效載荷率,即依賴於數據的本身特性,這是由更高層(軟體)應用程式和中間協定層決定。PCI Express與其它高速序列連線系統相似,它依賴於傳輸的魯棒性(CRC校驗和Ack算法)。長時間連續的單向數據傳輸(如高速存儲設備)會造成>95%的PCIe通道數據占用率。這樣的傳輸受益於增加的傳輸通道,但大多數應用程式如USB或乙太網絡控制器會把傳輸內容拆成小的數據包,同時還會強制加上確認信號。這類數據傳輸由於增加了數據包的解析和強制中斷,降低了傳輸通道的效率。這種效率的降低並非只出現在PCIe上。
制式標準
半高卡微型卡:代替Mini PCI卡 (支持x1 PCIe, USB 2.0和SMBus匯流排接口)
快速卡:類似PCMCIA接口標準(支持x1 PCIe,USB 2.0;支持熱插拔)
先進TCA卡:代替CompactPCI卡
競爭協定
基於高速序列構架產生了很多傳輸標準。包括HyperTransport,InfiniBand,RAPIDIO和StarFabric等等。這些均有業界的不同企業支持,背後也都有大量的資金投入標準的研究開發,所以每一標準都聲稱自己與眾不同,獨占優勢。主要的差異在於可擴展性、靈活性與反應時間、單位成本的取捨平衡各不相同。其中的一個例子是在傳輸包上增加一個複雜的頭信息以支持複雜路由傳輸(PCI Express不支持這種方式)。這樣的信息增加降低了接口的有效頻寬也使傳輸更複雜,但是相應創造了新的軟體支持此功能。這種架構下需要軟體追蹤網路拓撲結構的變化以實現系統支持熱插拔。InfiniBand 和 StarFabric 標準即能實現這以功能。另一個例子是縮小信息包以減少反應時間。較小的信息包意味著包頭占用了包的更大百分比,這樣又降低了有效頻寬。能實現此功能的標準是RapidIO 和HyperTransport。PCI Express取中庸之道,定位於設計成一種系統互連線口(匯流排)而非一種設備接口或路由網路協定。另外為了針對軟體透明,它的設計目標限制了它作為協定,也在某種程度上增加了它的反應時間。
電腦知識(二)
電腦已經成為人們工作學習生活中不可缺少的工具,相信越來越多的人會使用電腦。但是在使用的過程中您是不是經常遇到這樣或者那樣的問題,令您無法正常的使用?那么,讓我們一起來了解一些電腦的基本知識,讓您的工作學習生活變得更加的愜意! |