一、PCIE 的發展歷程與應用場景
CIe(Peripheral Component Interconnect Express)自2003年推出以來,經歷了多次重大升級。2003年,PCIe 1.0誕生,數據速率為每通道250MB/秒,總速率為2.5GT/秒。PCIe 2.0于2007年推出,傳輸速率提高了一倍,達到5GT/秒。2010年,PCIe 3.0采用更高效的128b/130b編碼方案,傳輸速度進一步提升至8GT/秒。2017年,PCIe 4.0將數據速率翻倍至16GT/s,2019年PCIe 5.0標準批準,性能達到32 GT/s。而具有64GT/s性能的PCIe 6.0也在不斷發展中,其最終標準雖尚未批準,但已受到廣泛關注。
PCIe在多個場景中有著廣泛應用。在圖形處理方面,高性能顯卡通過PCIe x16接口連接到主板,為游戲和圖形渲染提供強大動力,同時在深度學習與AI訓練中,GPU加速卡通過PCIe接口與主機相連,加速機器學習模型的訓練過程。在高速存儲領域,NVMe SSD利用PCIe通道直接與CPU通信,提供極高的讀寫速度,滿足大型數據庫、高性能計算集群等對存儲速度的高要求。網絡接口卡通過PCIe接口接入服務器或工作站,實現萬兆或更高速度的以太網連接,滿足數據中心內部或互聯網之間的高速數據傳輸需求。此外,加速卡與協處理器、專業音頻與視頻采集卡、科研儀器與工業控制等領域也廣泛應用PCIe技術,以實現高速、低延遲的數據交換。
二、PCIE 在主機通信中的具體作用
(一)數據傳輸通道
PCIE 在主機通信中扮演著至關重要的角色,它是主機內部數據信息交換和傳輸的關鍵通道。以顯卡與 CPU 之間的數據傳輸為例,顯卡作為數據的生成者,需要將大量的圖形數據傳輸給 CPU 進行處理和顯示。PCIE 就像是一條高速公路,連接著顯卡和 CPU,使得數據能夠快速、高效地在兩者之間流動。當顯卡需要將數據傳輸給 CPU 時,PCIE 通道會根據顯卡的規格和需求,以特定的速度和方式進行數據傳輸。例如,在 PCIE 3.0 x16 的配置下,顯卡可以以較高的速度將數據傳輸給 CPU,從而滿足游戲、圖形渲染等對數據傳輸速度要求較高的應用場景。
(二)影響性能的關鍵屬性
PCIE 寬度決定設備并行通信的通道數,可通過命令查詢驗證:PCIE 寬度標記為 xA,其中 A 是通道數。例如,x8 表示有 8 個通道。不同的設備支持的通道數取決于廠商和型號??梢允褂妹?lspci 來驗證 PCIE 寬度。例如,lspci -s 04:00.0 -vvv | grep Width 可以查看特定設備的 PCIE 寬度信息。如輸出結果中的 LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited 和 LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-,展示了設備的功能(在 LnkCap 下)和當前狀態(在 LnkSta 下),這就是實際的 PCIE 設備屬性。
PCIE 速度確定事務數,不同代速度有差異且編碼開銷不同:PCIE 速度以 GT/s 為單位,代表“每秒十億次交易”。它與 PCIE 寬度一起確定了最大 PCIE 帶寬。不同代的 PCIE 速度有差異,如 2.5GT/s 稱為“gen1”,5GT/s 稱為“gen2”,8GT/s 稱為“gen3”,16GT/s 稱為“gen4”。各代之間除了速度不同,主要區別還在于數據包的編碼開銷。對于第 1 代和第 2 代,在 PCIE 上發送的每個數據包都有 20% 的 PCIE 標頭開銷。而在第 3 代中,這個開銷減少到 1.5%(2/130)。
PCIE Max Payload Size 確定數據包最大大小,由系統設置:PCIE Max Payload Size 確定 PCIE 數據包或 PCIE MTU 的最大大小,類似于網絡協議。較大的 PCIE 事務會被分解為 PCIE MTU 大小的數據包。此參數僅由系統設置,取決于芯片組架構,如 x86_64、Power8、ARM 等??梢允褂妹?lspci(在 DevCtl 下指定)查看 PCIE Max Payload Size。例如,lspci -s 04:00.0 -vvv | grep DevCtl: -C 2DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimitedExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-MaxPayload 256 bytes, MaxReadReq 4096 bytes。
PCIE Max Read Request 確定允許的最大讀取請求,可在運行時更改:PCIE Max Read Request 確定允許的最大 PCIE 讀取請求。由于必須為傳入響應準備緩沖區,PCIe 設備通常會跟蹤待處理的讀取請求的數量??梢允褂妹?lspci 來查詢 Max Read Request 值,并且可以在運行時使用命令 setpci 更改該值。例如,首先查詢該值以避免覆蓋其他屬性:# setpci -s 04:00.068.w5936,第一個數字是 PCIE Max Read Request。設置選 Max Read Request:# setpci -s 04:00.0 68.w=2936,該值應使用命令 lspci 更新:# lspci -s 04:00.0 -vvv | grep MaxReadReqMaxPayload 256 bytes, MaxReadReq 512 bytes??山邮艿闹禐椋? -128B、1 - 256B、2 - 512B、3 - 1024B、4 - 2048B 和 5 - 4096B。
(三)帶寬計算與限制
PCIE 的帶寬可以通過公式計算得出。最大可能的 PCIE 帶寬是通過乘以 PCIE 寬度和速度來計算的,然后從這個數字中,減去大約 1Gb/s 的糾錯協議和 PCIE 標頭開銷。開銷由 PCIE 編碼(有關詳細信息,請參閱 PCIE 速度)和 PCIE MTU 確定。公式為:最大 PCIE 帶寬 = 速度 * 寬度 * (1 - 編碼) - 1Gb/s。例如,具有 x8 寬度的第 3 代 PCIE 設備將被限制為:最大 PCIE 帶寬 = 8G * 8 * (1 - 2/130) - 1G = 64G * 0.985 - 1G ≈ 62Gb/s。另一個示例 - 具有 x16 寬度的第 2 代 PCIE 設備將被限制為:最大 PCIE 帶寬 = 5G * 16 * (1 - 1/5) - 1G = 80G * 0.8 - 1G ≈ 63Gb/s。需要注意的是,PCIe 事務包括網絡數據包有效負載和標頭,因此在計算網絡流量的 PCIE 限制時需要考慮它們。PCIE Max Read Request 和 Max Payload Size 可能會由于 PCIE 整體增加和相同負載的待處理事務而導致事務速率限制。
三、基于 PCIE 的主機域間通信方法
無錫眾星微系統技術有限公司申請的“一種基于 PCIE 的主機域間通信方法和裝置”專利為我們展示了一種高效的主機域間通信方式。
當原始主機域從請求者接收到內存讀請求報文時,會對該報文進行地址翻譯和 ID 翻譯。這個過程就像是為報文貼上了特定的“標簽”,使其能夠在不同的主機域之間準確地找到目的地。經過翻譯后的內存讀請求報文被傳輸到目的主機域,開啟了跨域通信的第一步。
目的主機域在接收到翻譯后的內存讀請求報文后,會對報文進行拆分并重新進行 ID 翻譯。這一步驟確保了報文在目的主機域內能夠被正確地識別和處理。接著,接收完成者會基于拆分后的內存讀請求報文回復帶數據的完成報文。這些完成報文被寫入目的主機域的帶數據的完成報文緩存,然后根據預定義組包規則進行重組。
重組后的帶數據的完成報文會被發送到原始主機域進行拆分,對拆分后的報文進行還原后返回到請求者。整個通信過程形成了一個完整的閉環,確保了數據的準確傳輸和處理。
值得一提的是,該專利的技術方案利用硬件隨包適配,有效地解決了不同 HOST 域配置不一致的問題。在實際應用中,不同的主機域可能具有不同的配置和需求,這往往會給通信帶來挑戰。而通過硬件隨包適配,能夠根據報文的具體情況進行自動調整和適配,確保通信的順暢進行。
例如,在一個企業的網絡環境中,可能存在多個不同配置的主機域,如生產環境、測試環境和開發環境等。通過基于 PCIE 的主機域間通信方法,可以實現這些不同主機域之間的數據共享和交互,提高企業的工作效率和協同能力。
此外,無錫眾星微系統技術在 2024 年還申請了多項與通信相關的專利,如“基于 IB 協議的高性能混合路由方法和裝置”專利和“一種片上存儲器及其訪問方法”專利等。這些專利的出現,進一步展示了無錫眾星微系統技術在通信領域的創新能力和技術實力。
四、主機域地址翻譯方法
在基于 PCIE 的主機域間通信中,主機域地址翻譯起著關鍵作用。主要包括動態地址翻譯和地址偽裝兩種技術。
動態地址翻譯:所謂存根域是內部網絡的抽象,任何時候存根域內只有一部分主機要與外界通信,所以整個存根域只需共享少量的全局 IP 地址。存根域有一個邊界路由器,由它來處理域內與外部的通信。假定 m 為內部地址數,n 為全局地址數(NAT 地址)。當 m≥1 并且 m≥n 時,可以把大的地址空間映像到小的地址空間。所有 NAT 地址放在一個緩沖區中,并在存根域的邊界路由器中建立一個內部地址和全局地址的動態映像表,用以把內部地址翻譯成全局地址。這種動態地址翻譯的好處是節約了全局 IP 地址,而且不需要改變子網內部的配置。
地址偽裝:另外一種特殊的 NAT 應用是 m:1 翻譯,這種技術也叫做地址偽裝。因為用一個全局地址就可以把子網中所有主機的 IP 地址隱藏起來。如果子網中有多個主機要同時通信,那么還要對端口號進行翻譯,所以這種技術經常被稱為網絡地址和端口翻譯(NAPT)。在很多 NAPT 實現中專門保留一部分端口號給地址偽裝使用,叫做偽裝端口號。這種方法有如下特點:出口分組的源地址被路由器的外部 IP 地址代替,出口分組的源端口號被一個未使用的偽裝端口號代替。如果進來的分組的目標地址是本地路由器的 IP 地址,而目標端口號是路由器的偽裝端口號,則 NAT 路由器就檢查是否為偽裝會話,并試圖通過偽裝表對 IP 地址和端口號進行翻譯。
地址翻譯技術在子網內部使用局部地址,而在子網外部使用少量的全局地址,通過路由器進行內部和外部地址的轉換。局部地址是在子網內部獨立編址的,可以與外部地址重疊。這種想法的基礎是假定在任何時候子網中只有少數計算機需要與外部通信,可以讓這些計算機共享少量的全局 IP 地址。
在安全方面,偽裝技術可以作為一種安全手段使用,借以限制外部對內部主機的訪問。另外還可以用這種技術實現虛擬主機和虛擬路由,以便達到負載均衡和提高可靠性的目的。例如,在企業網絡中,可以通過地址偽裝技術,將內部服務器的真實 IP 地址隱藏起來,只對外暴露一個全局 IP 地址和特定的端口號,從而提高服務器的安全性。同時,通過動態地址翻譯和地址偽裝技術的結合,可以實現負載均衡,將外部請求分配到不同的內部主機上,提高系統的整體性能和可靠性。
五、PCIE 與主機通信的未來展望
隨著科技的不斷進步,PCIE 在主機通信中的重要性日益凸顯。在數據傳輸速度方面,從 PCIE 1.0 到如今的 PCIE 6.0 甚至正在研發中的 PCIE 7.0,每一次的升級都帶來了巨大的性能提升。例如,PCIE 7.0 能通過 x16 配置提供 128 GT/s 原始比特率和高達 512 GB/s 的雙向比特率,這是 PCIE 6.0 的兩倍,也是 PCIE 5.0 的四倍。這樣的速度提升將為數據密集型行業帶來新的增長潛力和應用可能性,如 800G 以太網、人工智能/機器學習、超大規模數據中心、HPC、量子計算和云的可擴展互連解決方案等領域。
然而,PCIE 在發展過程中也面臨著一些挑戰。一方面,隨著數據傳輸速度的不斷提高,信號干擾和能耗問題也日益突出。例如,高速并行總線可能受到串擾的影響,導致數據損壞并限制帶寬。為了解決這些問題,需要不斷改進技術,如采用差分配對信號來消除大部分串擾并提供更清晰的信號。另一方面,隨著應用場景的不斷擴展,對 PCIE 的兼容性和可擴展性提出了更高的要求。不同的主機域可能具有不同的配置和需求,如何實現不同配置之間的高效通信是一個亟待解決的問題。
盡管面臨挑戰,但隨著技術的不斷發展,PCIE 在主機通信中的未來仍然充滿巨大潛力。例如,PCI-SIG 已成立工作組,攻克光連接技術在 PCIE 中的應用。光纖 PCIe 的引入將帶來更高的帶寬密度和更低的延遲,能較好地解決應用于長距離內的數據傳輸。同時,光纖鏈路的出色能效和成本效益也將為數據中心帶來更多優勢。在數據中心密集部署的情況下,光纖的靈活性和小巧的占用空間使其成為提高數據中心密度的理想選擇。
此外,隨著人工智能和機器學習的迅猛發展,對計算資源和數據傳輸速度的需求將不斷增加。PCIE 將在連接不同的計算資源,如中央處理單元(CPU)和圖形處理單元(GPU)等方面發揮更加重要的作用,促進計算資源實現分散化,釋放對當前高度本地化且經常未使用的內存的訪問。
PCIE 在主機通信中的重要性不斷提升,雖然面臨著一些挑戰,但隨著技術的不斷發展,其在數據傳輸速度和功能上仍有巨大潛力。未來,我們有理由期待 PCIE 為我們帶來更快的數據傳輸速度、更高的性能和更廣泛的應用場景。