PCIe實踐之路: 發展與應用

介紹PCIe的基本概念,用途。

一、串行總線

PCIe作爲串行總線的一種,它的發展必然和另一種總線架構密不可分:並行總線。

早先,人們普遍認爲提高數據位寬就能提高數據傳輸速率,這是誰都會想到的問題,早期的總線確實是這樣設計的。但是隨着工作頻率的提升,並行數據線的串擾變得越來越嚴重,而串行總線採用差分對來傳輸信號,可以很好的抵消串擾。所以現在越來越多的設備,特別是高速設備(譬如usb),都基於差分串行總線設計。

二、PCIe規範與速度

PCIe規範是Intel提出來的總線接口標準,旨在統一I/O接口(當年也是Intel提出USB,旨在統一外設接口,現在最有可能做到這個的是typeC了)。當前接觸到版本是4.0,各個版本的頻率和速度如下:

2017-06-28 22-46-48屏幕截圖.png

圖片來源: https://zh.wikipedia.org/wiki/PCI_Express

三、PCIe常見設備

當下基於PCIe接口的設備有很多,上jd一搜看到主要有以下幾種:

存儲設備有 三星(SAMSUNG) 960 EVO 250G M.2 NVMe 固態硬盤、英特爾(Intel)600P系列 128G M.2 2280接口固態硬盤 .etc

還有PCIe接口的顯卡、聲卡、網卡。

像上述這些設備,都屬於功能設備,在PCIe規範中,我們統稱爲Endpoint(簡稱EP)。還有其他兩類設備,一個是Root Complex,簡稱RC,另一個是switch(或者PCI中稱爲bridge),RC是根設備,通過switch和下游設備(可以是EP也可以是switch)進行橋接,從而各個PCIe設備組成了一個PCIe設備網絡,信息就以數據包(TLP、DLLP)的形式在網絡中傳遞。

譬如,當我們買了一個PCIe接口的顯卡,插到主板上面的時候,其實是通過switch(或者bridge)和芯片內部的RC連到了一起,CPU能且只能通過RC來和各個PCIe設備進行交互。因爲每個PCIe設備都只能看到PCI總線域地址,CPU發出來的地址要經過RC轉換成PCI域地址才能真正起作用。至於爲什麼是這麼設計的,我覺得和確保PCIe設備的擴展性有關,只要一個RC就可以擴展最多256級總線,如果這256級總線都通過CPU地址訪問,這對地址空間是極大的浪費。也正因爲是這樣,PCIe設備的枚舉也好,tlp傳輸也好,dma也好,都有其特殊的地方,統統都要考慮地址轉換的問題。

關於PCIe設備的基本信息就寫到這裏吧。

下篇預告:PCIe總線拓撲結構和配置空間

發佈了146 篇原創文章 · 獲贊 81 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章