文章目錄
- 0. 前言
- 1. PCIe簡介
- 1.1 PCIe外觀
- 1.2 PCIe的技術迭代
- 2. PCIe的通道(lane)配置
- 2.1 通道配置詳解
- 2.2 通道配置的影響
- 3. PCIe的架構
- 3.1 架構層次
- 3.2 核心組件
- 4. PCIe的特性
- 5. PCIe在自動駕駛中的應用
0. 前言
按照國際慣例,首先聲明:本文只是我自己學習的理解,雖然參考了他人的寶貴見解及成果,但是內容可能存在不準確的地方。如果發現文中錯誤,希望批評指正,共同進步。
PCI Express(簡稱PCIe)是一種高速的計算機擴展總線標準。PCIe 由 Intel 公司于 2001 年提出,它被設計用于取代舊的PCI,AGP和PCI-X標準,并在現代計算機中廣泛使用。然而,隨著自動駕駛汽車技術的發展,PCIe協議在汽車電子架構中的重要性日益凸顯。
這是因為自動駕駛系統需要處理大量的數據,包括來自各種傳感器(如雷達、激光雷達、攝像頭)的信息,以及高精度地圖和定位數據。為了實現這種復雜的數據處理,車輛內部需要配備高性能計算平臺,如GPU、FPGA或ASIC等加速器。這些計算資源通常通過PCIe總線連接,以提供必要的帶寬和低延遲。
本文將深入探討PCIe技術,尤其是在自動駕駛汽車中的應用。
1. PCIe簡介
1.1 PCIe外觀
如果有拆過舊電腦的同學,可能會見到過這個接口:
這便是PCI接口。而本文的主角PCIe是長下面的樣子:
PCIe接口插槽的形狀通常是矩形,邊緣帶有金屬加固以增加耐用性。插槽的長度和寬度根據所支持的通道配置(如x1、x4、x8、x16等)而變化。較長的插槽支持更多的lane,因此具有更高的帶寬。PCIe接口是主板上的插槽和相關的電氣(如圖形處理器(GPU)、網絡適配器、固態硬盤(SSD)控制器、聲卡等。)連接標準。
而PCIe通道是數據在設備與主板之間傳輸的具體路徑。每個通道包含兩對差分信號線(一對用于發送數據,另一對用于接收數據),允許全雙工通信。
- 全雙工通信(Full Duplex):通信的兩端都可以同時發送和接收信息。這種模式通常使用兩條獨立的信道或者通過先進的信號處理技術在單一信道上實現,以避免信號之間的干擾。全雙工通信在很多現代通信系統中都很常見,比如電話網絡、以太網和無線局域網(Wi-Fi)。
- 半雙工通信(Half Duplex):半雙工通信允許雙向通信,但是不能同時進行。在任一時刻,一個端點要么發送要么接收,而另一個端點則相反。典型的例子是步話機或對講機,用戶需要按下按鈕才能發送信息,在發送時無法接收對方的回應。
1.2 PCIe的技術迭代
根據PCI-SIG(PCI特別興趣小組)制定的PCIe標準:PCIe現在已經出到了6.0版本。
2. PCIe的通道(lane)配置
PCI Express(PCIe)的通道(lane)配置是決定PCIe設備性能的關鍵因素。通道配置通常用“x”后跟一個數字表示,如x1、x4、x8、x16等,這個數字代表了有多少個獨立的PCIe通道被使用,即有幾個lane。這些配置影響了設備的帶寬和數據傳輸速率,從而影響了整體的系統性能。
2.1 通道配置詳解
-
x1:這是最小的通道配置,只使用一個PCIe通道。盡管帶寬最低,但它足夠用于低帶寬需求的設備,如一些網絡適配器、聲卡或USB擴展卡。
-
x4:使用四個PCIe通道,提供了四倍于x1配置的帶寬。這樣的配置常用于需要更高帶寬但又不需要x8或x16帶寬的設備,如某些高速的存儲解決方案或中等帶寬需求的網絡卡。
-
x8:配置有八個PCIe通道,提供了八倍于x1配置的帶寬。x8通常用于高性能的存儲設備,如RAID控制器。
-
x16:這是最常見的高性能配置,使用16個PCIe通道,提供了16倍于x1配置的帶寬。x16配置主要用于圖形卡(GPU),因為這些設備需要非常高的帶寬來處理大量的圖形數據。
-
x32:雖然PCIe規范中定義了x32配置,但實際上很少見。理論上,x32配置將提供32倍于x1配置的帶寬,但由于成本、功耗和設計復雜性,大多數系統中并未采用這種配置。
從下表可以直觀看出通道數對帶寬的影響,另外在不同的PCIe版本中單個通道的帶寬也是不同的:
2.2 通道配置的影響
不同的通道配置對PCIe設備的性能有直接的影響。更高的通道數意味著更高的潛在帶寬,這對于需要大量數據吞吐量的設備(如高端圖形卡)至關重要。然而,更多的通道也會增加制造成本和功耗,因此對于不需要高帶寬的設備,較低的通道配置通常是更經濟的選擇。
此外,通道配置還可以通過一種稱為“通道拆分”或“bifurcation”的技術進行動態調整。這意味著一個物理上的x16插槽可以被配置為兩個x8或一個x8和三個x4的組合,以適應不同的設備需求,同時優化系統資源的使用。這種靈活性使得PCIe架構能夠更好地適應多樣化的硬件需求。
3. PCIe的架構
3.1 架構層次
PCIe架構可以分為以下幾層:
-
應用層:這不是PCIe規范正式定義的一部分,而是由具體實現者根據需求設計的部分,它決定了設備的功能和類型,例如存儲設備、網絡適配器或圖形卡。
-
事務層(Transaction Layer):負責處理事務的初始化和完成,例如讀取、寫入、配置和中斷等。事務層還管理事務的優先級和流量控制。
-
數據鏈路層(Data Link Layer):分為兩個子層:鏈路子層(Link Sublayer)和物理媒體附件子層(Physical Media Attachment Sublayer)。鏈路子層負責鏈路的建立、訓練、維護和錯誤檢測,而物理媒體附件子層則負責數據的編碼和解碼。
-
物理層(Physical Layer):包括電氣信號的生成、接收和處理,以及串行數據的編碼和解碼。物理層進一步細分為電氣子層(Electrical Sublayer)和介質訪問控制子層(Media Access Control Sublayer)。
3.2 核心組件
PCIe架構的核心組件包括:
-
Root Complex:通常位于系統主板上,與CPU緊密集成,作為PCIe架構的起點。Root Complex負責初始化和配置PCIe總線,管理事務,以及提供到CPU和內存的接口。
-
Switches:允許構建復雜的PCIe拓撲,通過連接多個端點設備或其它Switches,實現靈活的系統架構。Switches可以擴展PCIe總線,允許更多設備連接到系統中。
-
Endpoints:終端設備,如顯卡、硬盤控制器或網絡適配器,它們是PCIe總線的消費者,與Root Complex或Switches相連。
4. PCIe的特性
-
點對點連接:PCIe采用點對點連接,不同于共享總線架構,這減少了信號干擾,提高了帶寬利用率。
-
動態鏈接速度和寬度:PCIe鏈接可以動態調整速度和寬度,以適應設備能力和系統需求。
-
熱插拔:支持設備在系統運行時插入或移除,增強了系統的靈活性和可用性。
-
電源管理:包括設備的自動關閉和喚醒能力,有助于節省能源。
5. PCIe在自動駕駛中的應用
PCI Express (PCIe) 在自動駕駛汽車中扮演著關鍵角色,尤其是在那些依賴高性能計算和大量數據傳輸的場景中。自動駕駛汽車需要處理大量的傳感器數據,包括攝像頭、雷達、激光雷達(LiDAR)、超聲波傳感器等,這些數據需要被實時分析和處理,以做出準確的決策。PCIe 提供了必要的高速數據傳輸能力,使得這些數據能夠在各個組件之間高效地流動。
下圖表示了NVIDIA Orin產品的接口,可以看出PCIe占了很重要的一部分:
例如,一輛配備了 8 個高清攝像頭的自動駕駛汽車,每個攝像頭輸出的數據速率高達每秒數百兆字節。如果沒有足夠快的 PCIe 連接,數據處理可能會出現瓶頸,導致系統反應遲緩。因此,PCIe 在這個場景中是不可或缺的,它確保了數據的高速傳輸,使自動駕駛系統能夠實時做出準確的決策。
以下是一些PCIe在自動駕駛汽車中具體的應用方向:
-
傳感器數據聚合:
自動駕駛車輛裝備了大量的傳感器,每個傳感器產生的數據流都必須被迅速地傳輸到中央處理器或數據處理單元。PCIe 提供了高帶寬和低延遲的連接,使得傳感器數據可以被快速地集中并處理。 -
高性能計算傳輸:
自動駕駛系統依賴于深度學習和人工智能算法,這些算法需要在GPU或專門的加速器上運行。PCIe 3.0 或更高級別的 PCIe 4.0 和 PCIe 5.0 可以提供足夠的帶寬來支持這些高負載的計算任務,確保數據在 CPU 和 GPU 或 FPGA 之間的高速傳輸。 -
域控制器和ECU的連接:
現代自動駕駛車輛可能包含多個域控制器(Domain Control Units),每個控制器負責不同的功能區域,如感知、規劃和執行。這些控制器之間需要通過高速接口進行通信,PCIe 是一個理想的選項,因為它提供了可擴展性和靈活性。 -
冗余和安全性:
自動駕駛系統需要高度的可靠性和安全性。通過使用雙路或冗余的 PCIe 連接,系統可以設計成即使某個鏈路失敗也能保持運行,這對于保證車輛安全至關重要。 -
車載網絡:
車載網絡架構正從傳統的基于CAN和FlexRay的架構向基于以太網和 PCIe 的更高帶寬架構演進。PCIe 在這種架構中可以作為高速數據交換的核心,支持車輛內部的高速數據傳輸。