公司老闆在面試新同事時最喜歡問的問題除了 PC 的架構圖外還喜歡問 PCI Bus 資料頻寬是多少,所以寫了這一篇.
PCI
資料寬度 32 bits,工作頻率 33.3 MHz,換言之,其最大頻寬為 133.3 MB/sec。
32 bits *33.3 MHz/sec ÷8 = 133.3 MBytes/sec
AGP(Accelerated Graphics Port 加速圖形介面)
AGP的頻寬:32 bits * 66.6 MHz ÷8 = 266.6 MB/sec
AGP 2X 表示每個工作週期可送出兩次訊號,所以最大頻寬變成 533.3 MB/sec。
AGP顯示卡分有AGP 1X、AGP 2X、AGP 4X及最後的AGP 8X,頻寬分別為266MB/s、533MB/s、1066MB/s、以及2133 MB/s
PCI-X
- PCI-X 66 64位元 工作頻率 66.6 MHz,資料寬度 64 bits,換言之,其最大頻寬為 533.3 MB/sec。
64 bits *66.6 MHz/sec ÷8 = 533.3 MBytes/sec - PCI-X 133 64位元 133MHz Hot Plugging, 3.3 V 1.06GB/s
- PCI-X 266 64位元,另有16位元選項 133MHz Double Data Rate Hot Plugging, 3.3 & 1.5 V, ECC supported 2.13GB/s
- PCI-X 533 64位元,另有16位元選項 133MHz Quad Data Rate Hot Plugging, 3.3 & 1.5 V, ECC supported 4.26GB/
PCI Express 1.1
使用兩對低電壓的差位訊號排線(low-voltage differential signaling pairs),分別各跑 2.5GBit/s 速度,x1 有兩對(傳送與接收) 2.5 G x 2 = 5Gbps 的頻寬.不過在討論頻寬時還是以單方向來計算.下面的速度是以單對的速度而言.
- x1 2.5Gbps(20% overhead – PCI-e 在每八個位元的資料串上用十位元來加以編碼) 2Gbps (250 MB/sec)
- x4 10Gbps 8Gbps (1 GB/sec)
- x8 20Gbps 16Gbps (2GB/sec)
- x16 40Gbps 32Gbps (4GB/sec)
PCI Express 2.0
PCI-SIG 的 PCI Express 2.0規格,新版每條Lane的單向頻寬從2.5Gbps倍增到5Gbps.
- x1 5Gbps(20% overhead-PCIe並且在每八個位元的資料串上用十位元來加以編碼) 4Gbps (500 MB/sec)
(5G*0.8)Mb/8=500MB - x4 20Gbps 16Gbps (2 GB/sec)
- x8 40Gbps 32Gbps (4 GB/sec)
- x16 80Gbps 64Gbps (8 GB/sec)
PCI Express 3.0
PCI-SIG 的 PCI Express 3.0 規格,每條 Lane 的單向頻寬增到 8Gbps.
但因為編碼方式改變了,相較於 2.0 之前採用 8b/10b (每10個bit只有8個是有效資料)而 3.0 編碼方式為 128/130,所以資料傳輸頻寬以及原始傳輸率基本當都可以算成 8Gbps
- x1 8Gbps (1GB/sec)
- x4 32Gbps (4 GB/sec)
- x8 64Gbps (8 GB/sec)
- x16 128Gbps (16 GB/sec)
PCI Express 4.0
PCI-SIG 的 PCI Express 4.0 規格,每條 Lane 的單向頻寬增到 16Gbps.
編碼方式同 3.0 一樣為 128b/130b 每130個bit只有128個是有效資料,所以資料傳輸頻寬以及原始傳輸率基本當都可以算成 16Gbps.
- x1 16Gbps (2GB/sec)
- x4 64Gbps (8 GB/sec)
- x8 128Gbps (16 GB/sec)
- x16 256Gbps (32 GB/sec)
OCuLink – PCI Express Outside the Box
OCuLink 裡面的 “O” 所代表的是 “optical”, “Cu” 則代表的是 copper (銅的化學符號),那什麼是 OCuLink.全名應該是 PCI Express OCuLink,他是 PCI Express 使用外接纜線通道的版本 (extension for the cable version of PCI Express),有區分外部 (Internal)與內部機箱(external enclosure)使用.
- 外部 (Internal)
PCI-E attached Storage,如 Thunderbolt 也類似. - 內部機箱(external enclosure)
- PCI-E I/O expanstion
- External PCI-E attached Storage
OCuLink 速度的支援如下:
- OCuLink 1.0 最高支持到 PCIe Gen 3.0×4 通道(lanes)
PCIe Gen 3 (8 Gbps)x4 = 32Gbps = 4 GB/s (1Bytes=8bits) 但會看到有些寫 3.9 GB/s 是把編碼中的 128/130 (每130個bit只有128個是有效資料)也算進去.PCI-SIG 的 PCI Express 3.0 規格,新版每條 Lane 的單向頻寬增到 8Gbps.但因為編碼方式改變了,相較於 2.0 之前採用 8b/10b (每10個bit只有8個是有效資料)而 3.0 編碼方式為 128/130,所以資料傳輸頻寬以及原始傳輸率基本當都可以算成 8Gbps =1GB (1Bytes=8bits),但細算 128/130(每130個bit只有128個是有效資料) 為 8/8×128/130.
- OCuLink 2.0 最高可支援到 PCIe Gen 4.0×4 通道(lanes)
PCIe Gen 4 (16 Gbps)x4 = 64Gbps = 8 GB/s (1Bytes=8bits).PCI-SIG 的 PCI Express 4.0 規格,新版每條 Lane 的單向頻寬增到 16Gbps.但因為編碼方式改變了, 編碼方式同 3.0 一樣為 128b/130b 每130個bit只有128個是有效資料.
SATA
- Generation 1(1.5 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 1.2 Gbit/s = 150 MByte/s
- Generation 2(3 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 2.4 Gbit/s = 300 MByte/s
- Generation 3(6 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 4.8 Gbit/s = 600 MByte/s
- SATA revision 3.2 – SATA Express – 16,000 Mbit/s 編碼方式為 128/130,所以資料傳輸頻寬以及原始傳輸率基本當都可以算成 16000/8= 2,000 MB/s
SAS
- Generation 1(3 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 3*0.8=2.4 Gbit/s = 300 MByte/s
- Generation 2(6 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 4.8 Gbit/s = 600 MByte/s
- Generation 3(12 Gbit/s) – (20% overhead – 每八個位元的資料串上用十位元來加以編碼) 9.6 Gbit/s = 1200 MByte/s
mini-SAS (HD)
SAS 的特別之處 “wide port”,一個 SAS port(4 Phy) 可以提供 4 條 narrow links (彼此都是獨立的),所以一個 SAS port(4 Phy) 可以提供
- SAS1 – 3Gbps x4= 12Gbps =1.5GB/s x80% (8b/10b 編碼 20% 的 overhead) = 1.2GB/s
- SAS2 – 6Gbps x4= 24Gbps =3GB/s x80% (8b/10b 編碼 20% 的 overhead) = 2.4GB/s
- SAS3 – 12Gbps x4= 48Gbps =6GB/s x80% (8b/10b 編碼 20% 的 overhead) = 4.8GB/s
Fiber Channel
最主要是因為有 20% overhead – 每八個位元的資料串上用十位元來加以編碼. 1062.5Mb x 8/10 (八個位元的資料串上用十位元來加以編碼) x 1/8 (8bits = 1byte) x 2012/2048 (資料有效位元) = 104.38MB 所以 1G 效能大概以 100MBytes 來計算.
2G=200 MBytes , 4G=400 MBytes 8G=800 MBytes 以此類推.
規格是 16Gb 速限是 14.025 他採用了 64/66 編碼方式.所以在實際計算時
16G Speed – 14.025Gb x 64/66 (64個位元的資料串上用66位元來加以編碼) x 1/8 (8bits = 1byte) x 2012/2048 (資料有效位元) = 1.67GBM 所以此規格才可以號稱為 16G Fiber Channel
參考資料
http://en.wikipedia.org/wiki/PCI_Express
http://en.wikipedia.org/wiki/Serial_Attached_SCSI#SAS_vs_SATA
感謝你,寫得很詳細。
路過 感謝你的資料 很有用
Intel PC / Server 的架構圖已經改變了,有不少 Platform 將北橋功能整合進 CPU 內部
http://bp2.blogger.com/_RQy6cQPHSjc/R02hBZqyvlI/AAAAAAAAAmI/x2LmwJGXVMk/s1600-h/intel_havendale_auburndale_architecture.gif