PCI Express

外圍元件快速互連（Peripheral Component Interconnect Express），簡稱 PCI-E，官方簡稱 PCIe，是計算機匯流排的一個重要分支，它沿用既有的 PCI 程式設計概念及訊號標準，並且構建了更加高速的序列通訊系統標準。目前這一標準由 PCI-SIG 組織制定和維護。PCIe 僅應用於內部互連。由於 PCIe 是基於既有的 PCI 系統，所以只需修改物理層而無須修改軟體就可將現有 PCI 系統轉換為 PCIe。

PCIe 擁有更快的速率，所以幾乎取代了以往所有的內部匯流排（包括 AGP 和 PCI）。現在英特爾和 AMD 已採用單晶片組技術，取代原有的南橋和北橋方案。

除此之外，PCIe 裝置能夠支援熱拔插特性，目前支援的三種電壓分別為 + 3.3V、3.3Vaux 以及 + 12V。

考慮到現在顯示卡功耗的日益增加，PCIe 而後在規範中改善了直接從插槽中取電的功率限制，×16 的最大提供功率一度達到了 75W，相對於 AGP 8X 介面有了很大的提升。

PCIe 保證了相容性，支援 PCI 的作業系統無需進行任何更改即可支援 PCIe 匯流排。這也給使用者的升級帶來方便。由此可見，PCIe 最大的意義在於它的通用性，不僅可以讓它用於南橋和其他裝置的連線，也可以延伸到晶片組間的連線，甚至也可以用於連線圖形處理器，這樣，整個 I/O 系統重新統一起來，將更進一步簡化計算機系統，增加計算機的可移植性和模組化。

歷史

在 2001 年的春季英特爾開發者論壇（IDF）上 Intel 公佈取代 PCI 匯流排的第三代 I/O 技術，被稱為 “3GIO”。該匯流排的規範由 Intel 支援的 AWG（Arapahoe Work Group）負責制定。2002 年 4 月 17 日，AWG 正式宣佈 3GIO 1.0 規範草稿制定完畢，移交 PCI 特殊興趣組織（PCI-SIG）進行稽核，2002 年 7 月 23 日經過稽核後正式公佈，改名為 “PCI Express”，並根據開發藍圖在 2006 年正式推出 Spec 2.0（2.0 規範）。2019 年 5 月 28 日，PCI-SIG 官方釋出了 PCIe 5.0 的 1.0 版基礎規範，規範主要定義了 PCIe5.0 的架構（architecture）、互聯屬性規範（interconnect attributes）、網路結構管理（fabric management）以及程式設計介面（programming interface）等內容。

以 PCIe 2.0 為例，每秒 5GT（Gigatransfer）原始資料傳輸率，編碼方式為 8b/10b（每 10 個位元只有 8 個有效資料），即有效頻寬為 4Gb/s = 500MByte/s。

PCI Express 的硬體協議

PCIe 的連線是建立在一個單向的序列的（1-bit）點對點連線基礎之上，這稱之為通道（lane）。這一點上 PCIe 連線與早期 PCI 連線形成鮮明對比，PCI 連線基於匯流排控制，所有裝置共享雙向 32 位並行匯流排。PCIe 是一個多層協議，由事務層，資料交換層和物理層構成。物理層又可進一步分為邏輯子層和電氣子層。邏輯子層又可分為物理程式碼子層（PCS）和介質接入控制子層（MAC）。這些術語借用自 IEEE 802 網路協議模型。PCIe 透過協定進行電源管理。

3.1 物理層

於使用電力方面，每組流水線使用兩個單向的低電壓差分訊號（LVDS）合計達到 2.5 Gbit/s。傳送及接收不同資料會使用不同的傳輸通道，每一通道可運作四項資料。兩個 PCIe 裝置之間的連線成為 “連結”，這形成 1 組或更多的傳輸通道。各個裝置最少支援 1 傳輸通道（x1）的連結。也可以有 2，4，8，16，32 個通道的連結。這可以更好的提供雙向相容性（x2 模式將用於內部介面而非插槽模式）。PCIe 卡能使用在至少與之傳輸通道相當的插槽上（例如 x1 介面的卡也能工作在 x4 或 x16 的插槽上）。一個支援較多傳輸通道的插槽可以建立較少的傳輸通道（例如 8 個通道的插槽能支援 1 個通道）。PCIe 裝置之間的連結將使用兩裝置中較少通道數的作為標準。一個支援較多通道的裝置不能在支援較少通道的插槽上正常工作，例如 x4 介面的卡不能在 x1 的插槽上正常工作（插不入），但它能在 x4 的插槽上只建立 1 個傳輸通道（x1）。PCIe 卡能在同一資料傳輸通道內傳輸包括中斷在內的全部控制資訊。這也方便與 PCI 的相容。多傳輸通道上的資料傳輸採取交叉存取，這意味著連續位元組交叉存取在不同的通道上。這一特性被稱之為 “資料條紋”，需要非常複雜的硬體支援連續資料的同步存取，也對連結的資料吞吐量要求極高。由於資料填充的需求，資料交叉存取不需要縮小資料包。與其它高速數傳輸協議一樣，時鐘資訊必須嵌入訊號中。在物理層上，PCIe 採用常見的 8B/10B 程式碼方式來確保連續的 1 和 0 字串長度符合標準，這樣保證接收端不會誤讀。編碼方案用 10 位編碼位元代替 8 個未編碼位元來傳輸資料，佔用 20% 的總頻寬。到了 PCIe 3.0，採用 128B/130B 程式碼方式，僅佔用 1.538% 的總頻寬。有些協議（如 SONET）使用另外的編碼結構如 “不規則” 在資料流中嵌入時鐘資訊。PCIe 的特性也定義一種 “不規則化” 的運算方法，但這種方法與 SONET 完全不同，它的方法主要用來避免資料傳輸過程中的資料重複而出現數據散射。第一代 PCIe 採用 2.5GT/s 單訊號傳輸率，PCI-SIG 計劃在未來版本中增強到 5~10GT/s。

3.2 資料鏈路層

資料鏈路層採用按序的交換層資訊包（Transaction Layer Packets,TLPs），是由交換層生成，按 32 位迴圈冗餘校驗碼（CRC，本文中用 LCRC）進行資料保護，採用著名的協議（Ack and Nak signaling）的資訊包。TLPs 能透過 LCRC 校驗和連續性校驗的稱為 Ack（命令正確應答）；沒有透過校驗的稱為 Nak（沒有應答）。沒有應答的 TLPs 或者等待逾時的 TLPs 會被重新傳輸。這些內容儲存在資料鏈路層的快取內。這樣可以確保 TLPs 的傳輸不受電子噪音干擾。PCIe 對於 ACK 有所規範，在收到 TLP 封包之後，在一定時間內必須回應 ACK，也就是 ACK 延遲（ACK Latency）的等待時間。因應 ACK/NAK 流程的需要，必須實作出重新播送緩衝器（Replay Buffer）。

TLPs 加上 Sequence number 以及 16 位元 CRC 後，被包裹成為資料鏈路層資訊包（Data Link Layer Packet,DLLP），除了資料傳遞外，交握訊號 ACK 和 NAK 訊號亦被包裹在資訊包中傳送，除此之外也用來傳送兩個互連裝置的交換層之間的流控制資訊和實現電源管理功能。

3.3 事務層

PCI Express 採用分離交換（資料提交和應答在時間上分離），可保證傳輸通道在目標端裝置等待發送回應資訊傳送其它資料資訊。

PCI Express 採用可信性流控制。這一模式下，一個裝置廣播它可接收快取的初始可信訊號量。連結另一方的裝置會在傳送資料時統計每一發送的 TLP 所佔用的可信訊號量，直至達到接收端初始可信訊號最高值。接收端在處理完畢快取中的 TLP 後，它會回送傳送端一個比初始值更大的可信訊號量。可信訊號統計是定製的標準計數器，相比於其他方法，如基於握手的傳輸協議，這一模式的優勢在於可信訊號的回傳反應時間不會影響系統性能，因為如果雙方裝置的快取足夠大，是不會出現達到可信訊號最高值的情況，這樣傳送資料不會停頓。

第一代 PCIe 標稱可支援每傳輸通道單向每秒 250 MB 的資料傳輸率。這一數字是根據物理訊號率 2500 Mbit/s 除以編位元速率（10 位／每位元組）計算而得。這意味著一個 16 通道（x16）的 PCIe 卡理論上可以達到單向 250*16=4000 MB/s（3.7 GB/s）。實際的傳輸率要根據資料有效載荷率，即依賴於資料的本身特性，這是由更高層（軟體）應用程式和中間協議層決定。

PCI Express 與其它高速序列連線系統相似，它依賴於傳輸的強健性（CRC 校驗和 ACK）。長時間連續的單向資料傳輸（如高速儲存裝置）可以達到 > 95% 的 PCIe 通道資料傳輸利用率。這樣的傳輸受益於增加的傳輸通道（x2, x4 等）。但大多數應用程式如 USB 或乙太網路控制器會把傳輸內容拆成小的資料包，同時還會強制加上確認訊號。這類資料傳輸由於增加資料包的解析和強制中斷，降低傳輸通道的效率。作為一個在同一個印刷電路板（PCB）裝置間的通訊協議，它不需要達到其他遠距離通訊協議要求的高資料傳輸錯誤容忍度，而且，這種效率的降低並非只出現在 PCIe 上。

3.4 引腳

下表列出在邊緣聯結器上的 PCI Express 卡兩側的導線。在印刷電路板（PCB）的焊接側為 A 側，並且元件側的 B 側。PRSNT1# 和 PRSNT2# 引腳必須比其餘稍短，以確保熱插入卡完全插入。該 WAKE# 引腳採用全電壓喚醒計算機，但必須拉高從備用電源，以表明該卡是能夠喚醒。

制式標準

半高卡
Mini PCIe：用以代替 Mini PCI 卡（支援 x1 PCIe、USB 2.0 和 SMBus 匯流排介面）。
ExpressCard：類似 PC 卡介面標準（支援 x1 PCIe、USB 2.0/3.0、熱插拔）。
PCI Express ExpressModule：支援熱插拔的介面標準，用於伺服器和工作站上。
XMC：類似 CMC／PMC 介面標準（支援 x4 PCIe 或序列 RapidI/O）。
AdvancedTCA：用以代替 Compact PCI 卡，支援序列背板拓撲結構基礎。
AMC：AdvancedTCA 規範的補充，支援處理器和 I/O 模組在 ATCA 板上（x1、x2、x4 或 x8 PCIe）。
PCI Express 外接接線。
Mobile PCI Express Module（MXM）英偉達所發明的圖形模組規範。
Advanced eXpress I/O Module（AXIOM）圖形模組，由 ATI 認可。
Thunderbolt
M.2
U.2

競爭協議

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

應用與前景

在 2005 年，PCIe 已近乎成為新的個人電腦主機板標準。關於此有不少評論，但最基本的原因是它對於軟體開發者完全透明 —— 為 PCI 所設計的作業系統可以不做任何程式碼修改來啟動 PCIe 裝置。其二，它能增強系統性能，還有強有力的品牌認知。各類網絡卡、音效卡、顯示卡，以及當下的 NVMe 固態硬碟都使用了 PCIe 標準。下面為主流的使用 PCIe 的外設產品。

6.1 顯示卡

大部分新型的 AMD 或 NVIDIA 顯示卡都使用 PCIe 標準。NVIDIA 在它新開發的 SLI 上採用 PCIe 的高速資料傳輸，這使得兩塊相同晶片組顯示卡可同時工作於一臺電腦之上。AMD 公司也基於 PCIe 開發一種兩個 GPU 一同運作的技術，稱為 CrossFire。

6.2 硬碟

當下主流的固態硬碟介面有 M.2、U.2、PCIe、SATA、SATA Express、SAS 等。M.2 和 U.2 可選 PCIe 介面。NVMe 協議是目前最高效的 PCIe SSD 協議標準。