PCIe 是 SSD 一項重要和主流的接口技術,所以我們有必要對 PCIe 有深入的了解。
PCIe 從第一代到最近 2022 年第六代的規格問世,速度越來越快。相比於 SAS/SATA,PCIe 資料傳輸的「高速公路」更多,最多可以有 32 個 Lane,而 SAS/SATA 只能有一個 Lane。所以我們可以說,PCIe 的速度就是 Lane 的數量 x 單條 Lane 的速度。
PCIe 採用的是樹形拓樸結構,如下圖所示:
Root Complex 是樹的根,服務於 CPU。Root Complex 能存取 PCIe 設備,也能存取記憶體。
所以具體來說,Root Complex 的 spec 是什麼呢?其內部結構很複雜,PCIe Spec 並沒有規定 Root Complex 應該具備什麼功能或不應該具備什麼功能。我們可以把 Root Complex 想像成一台筆記型電腦,外部的 PCIe 設備就像 USB 插槽。如果插槽不夠用,我們需要擴充更多設備,就需要一個 Switch,這就像是一個 USB Hub。
PCIe 作為一個資料通訊接口,某種意義上與跨主機的網路接口類似,都需要分層處理各種複雜的問題。網路有 TCP/IP 五層協議,而 PCIe 則定義了三層:Physical Layer、Data Link Layer 和 Transaction Layer,如下圖所示:
和網路通信一樣,PCIe 也是以 Packet 的形式傳輸,每一層都有固定的格式。
Physical Layer
負責處理 Packet 的物理傳輸,包含如何分配到各個 Lane 傳輸以及匯總。
Data Link Layer
主要負責 Data 的檢錯和糾錯,以及電源管理等功能。
Transaction Layer
主要負責創建 Packet、流量控制、QOS 和事務排序等工作。
更多vSAN相關的文章,歡迎參考我的部落格: https://kaichiachen.github.io/2023/07/09/vsan/ssd_pcie_overview/