儲存、匯流排與輸入輸出

PCI Express

/ P-C-I express /

PCI Express,幾乎總是簡稱 PCIe(唸作「pea-see-eye express」),是把現代電腦處理器連到擴充裝置的標準高速互連——顯示卡、網路卡,還有 NVMe 固態硬碟。想像一組從 CPU 區塊通往各個周邊的免費快速車道,慢裝置租一條車道,像 GPU 那種貪吃的就並排租十六條。PCIe 是把匯流排與互連這些抽象概念落地的日常實例。

儘管沿用了「PCI 匯流排」這個舊名,PCIe 根本不是共用匯流排——它是交換式的點對點互連。每個連線是一條由一或多個通道(lane)組成的連結,每條通道是一對往外的電線加一對往回的電線(所以流量可同時雙向流動,稱為全雙工)。連結的寬度寫成 x1、x4、x8、x16——也就是通道數——而頻寬同時隨通道數與世代成長:每個新世代大約把每通道速度翻倍。一個交換器把一條連結扇出給多個裝置,而一個小協定把資料包進帶有位址與錯誤檢查的封包裡。

PCIe 之所以重要,是因為這裡正是儲存階層與機器其餘部分相接之處:NVMe 固態硬碟直接插進 PCIe 通道,繞過了緩慢的舊式磁碟介面,這正是快閃儲存變得如此快速的一大原因。兩個誠實的提醒。第一,廣告上的數字是尖峰頻寬;協定開銷(封包標頭與編碼)讓可用吞吐量略低一些。第二,x16 插槽不會讓慢裝置變快——頻寬只幫得了真能填滿它的裝置,而大多數裝置用的通道數遠少於 GPU。

GPU 插在 x16 插槽以取得全部十六條通道;Wi-Fi 卡用單一 x1 通道就滿足了。NVMe 固態硬碟通常用 x4。若某世代每通道約給 2 GB/s,x16 連結提供大約十六倍——但只有 GPU 真的用得了那麼多。

通道數按各裝置的胃口承租;總頻寬 = 每通道速度 times 通道數,而它只在裝置填得滿時才有意義。

名稱會騙人:PCIe 裡面沒有「PCI 匯流排」。它為了相容而保留舊品牌,骨子裡卻是交換式點對點互連,與共用匯流排恰恰相反。

又稱
PCIePCI-ePeripheral Component Interconnect Express