1. 程式人生 > >PCIe匯流排協議概述

PCIe匯流排協議概述

正所謂,時勢造英雄、英雄造時勢。是時,PCI匯流排在PC界已然一統江湖多年,應用已然廣泛,PCI的匯流排已蔚然成風。然,科技日益發展,需求不斷膨脹,經過計算機技術10年的發展,包括摩爾定律的不斷驗證,PCI匯流排已漸漸感覺力不從心,成為PC系統發展的瓶頸了,在顯示卡和圖形處理方面尤為明顯。更高速度的技術的出現勢在必行。這種時候的到來是必然的,早在PCI取代ISA的時候就應該想得到的。對科技生產力的阻礙已經掩蓋了您的輝煌。

新一代的高速匯流排技術相繼出現了。大多數是基於高速序列構架產生的傳輸標準。包括HyperTransportInfiniBandRapidIO,ARM架構中的AMBA和StarFabric

等等。這些均有業界的不同企業支援,背後也都有大量的資金投入標準的研究開發,所以每一標準都聲稱自己與眾不同,獨佔優勢。主要的差異在於可擴充套件性、靈活性與反應時間、單位成本的取捨平衡各不相同。其中的一個例子是在傳輸包上增加一個複雜的頭資訊以支援複雜路由傳輸(PCI Express不支援這種方式)。這樣的資訊增加降低了介面的有效頻寬也使傳輸更復雜,但是相應創造了新的軟體支援此功能。這種架構下需要軟體追蹤網路拓撲結構的變化以實現系統支援熱插拔。InfiniBand和StarFabric標準即能實現這以功能。另一個例子是縮小資訊包以減少反應時間。較小的資訊包意味著包頭佔用了包的更大百分比,這樣又降低了有效頻寬。能實現此功能的標準是RapidIO和HyperTransport。PCI Express取中庸之道,定位於設計成一種系統互連線口
而非一種裝置介面或路由網路協議。另外為了針對軟體透明,它的設計目標限制了它作為協議,也在某種程度上增加了它的反應時間。

而PCIe的出現就是基於這種群雄割據的形勢誕生的。Intel在2001年的IDF上提出了這個第三代的IO匯流排技術---PCI Express。當時稱為“3GIO”當時PCIe一出現,各大廠商紛紛表示支援,就連Intel的競爭對手amd也表示要將PCIe加入到自己的晶片組中,其他晶片廠商(如ATI、Nvidia、VIA)也想將自己的技術加入到PCIe協議中去。可想而知,PCIe很明顯成為取代PCI匯流排的新一代匯流排技術。

那麼PCIe究竟是何方神聖,到底有多大能耐呢?這裡就PCIe的概念做一些瞭解。

PCIe匯流排標準比PCI匯流排有優勢

1、  PCIe匯流排使用兩對資料線實現傳輸,TxRx。所有匯流排簡化了很多,響應的設計成本會降低。

2、  兩個裝置之間點對點序列互聯,不同於PCI的共享一條匯流排資源,PCIe採用點對點技術,每個裝置獨享通道頻寬,可以提高資料傳輸率。

3、  採用雙通道傳輸,類似於全雙工模式。

4、  支援熱插拔,hotplug,這點讓使用者使用起來更方便。

5、  智慧電源管理,支援低功耗。支援ACPI。

6、  軟體對PCI架構的相容,使用PCI那套軟體方式即可配飾PCIe裝置。

7、  測試方式簡單化,通過簡單連線即可測試裝置。

PCIe匯流排的拓撲結構

PCIe匯流排的架構可以形象化為:多組點對點相互連線的元件。下圖可以看出,大概有這些組成:Root Complex(RC),多個Endpoint(PCIe裝置),Switch和PCIe-PCI bridge。各個成員之間匯流排即為PCI Express。

PCIe匯流排協議的層次結構

這個有點類似於網路的七層協議了,不過PCIe架構簡單一些:

1、  物理層(PhysicalLayer)。電力方面,使用兩個單向的低電壓差分訊號實現資料傳輸。也承擔8b/10b的資料解碼。

2、  資料鏈路層(DataLink Layer)。對該層傳輸的TLPs進行組裝和分拆。為上下兩層服務。

3、  傳輸層(TransactionLayer)。接受從軟體方面送來的請求,並生成請求包傳輸到資料鏈路層。同時接受從資料鏈路層來的資料包,傳遞給軟體。也就是對TLPs進行分裝和組裝。

PCIe匯流排的軟體層面

PCIe在軟體層上是和PCI相容的,也就是說,使用PCI的訪問方式可以去配置PCIe匯流排。PCIe device一般都有BusNO/DeviceNO/Function.通常DeviceNO為0.

同時,另外提供了一種memory對映來訪問PCIe device的方式---PCIe enhance configuration mechanism。一共會佔用256Mbyte的空間。這個後續再說。

隨著PCIe匯流排的應用和發展,已經陸續出來了幾代版本,最主要還是在速率上有提升。區別如下:

版本

資料頻寬

單向單通道頻寬

雙向16通道頻寬

原始傳輸率

解碼

發表日期

1.0

2Gb/s

250MB/s

8GB/s

2.5GT/s

8/10

2002年7月22日

1.0a

2Gb/s

250MB/s

8GB/s

2.5GT/s

8/10

2003年4月15日

1.1

2Gb/s

250MB/s

8GB/s

2.5GT/s

8/10

2005年3月28日

2.0

4Gb/s

500MB/s

16GB/s

5.0GT/s

8/10 ]

2006年12月20日

2.1

4Gb/s

500MB/s

16GB/s

5.0GT/s

8/10

2009年3月4日

3.0

8Gb/s

1GB/s

32GB/s

8.0GT/s

128/130

2010年11月10日

4.0

16Gb/s

2GB/s

64GB/s

16.0GT/s

128/130

2014年-2015年[3]