PCIe初探(1/2)


寫在正文之前:

  疫情高發,2020的春節,希望大家都能平安度過,武漢加油,祖國加油!

正文:

  PCIe一直以來都是在我心頭揮之不去的一片荊棘,不管是主流的X86架構,ARM架構,還是新興的AI芯片,無一不把PCIe總線接口作為重要的互聯接口。而在過去的工作中,芯片架構,總線拓撲,帶寬計算,也都躲不開PCIe相關的研究。所以,最近抽出時間學習了PCIe總線架構和相關知識,在此總結(已經在公司內部做了分享),希望與各位交流共勉。

第一節:PCIe概述

  為了直觀的給大家一個認識,首先拋出了這張Intel服務器的架構圖,可以清晰的看到PCIe接口所處位置和主要連接對象。圖中有很多專業名詞,有興趣可以查一下,對於長期從事服務器芯片開發的技術人員,應該比較熟悉了。

 

 

   下面這張圖片是高通/華芯通公司ARM 48核服務器的芯片架構,雖然華芯通已經不復存在,但是仍然留下了寶貴的學習資料.

 

 

   

  通過上面兩張圖片,可以看到PCIe接口在芯片上的位置核結構,接下來會對PCIe做基本的介紹:

  Peripheral Component Interconnect Express:
    高性能高帶寬的串行互聯標准
    與PCI總線保持軟件兼容
    串行差分雙工信號線
    點到點互連
    lane的概念:一組RX(2條差分線)與一組TX(2條差分線)
    link的概念:若干lane組成的一條邏輯通道,有x1, x2, x4, x8, x16

 

那么什么是差分信號呢?

  一個差分信號由D+和D-兩根信號組成,信號接收端通過比較這兩個信號的差值,判斷發送端發送的是1還是0

  差分信號在布線時要求”等長”、”等寬”、”貼近”,而且在同層,所以外部干擾噪聲將被”同值”而且”同時”加載到D+和D-兩根信號上,其差值在理想情況下為0,對信號的邏輯值產生的影響較小,   所以差分信號可以使用更高的總線頻率

  差分信號可有效抑制電磁干擾(EMI, Electro Magnetic Interference)

 我們在討論芯片的架構時,經常會考量一個重要的PCIe指標,就是他的帶寬:

 

 

 計算方法:

  PCIe3 .0 協議支持 8.0 GT/s, 即每一條Lane 上支持每秒鍾內傳輸 8G個Bit。

  而PCIe 3.0 的物理層協議中使用的是 128b/130b 的編碼方案。 即每傳輸128個Bit,需要發送130個Bit。

  那么, PCIe 3.0協議的每一條Lane支持 8 * 128 / 130 = 7.877 Gbps = 984.6 MB/s 的速率。

 

 

 

 PCIe的基本拓撲結構:

如下圖,PCIe具有主要的一些組件,組成了整體的拓撲結構.

 

 

第二節:PCIe分層結構

PCIe是層次化的協議結構:

事務層:

  發送端TLP創建;接收端TLP解碼、校驗;QoS、Flow Control、Ordering

數據鏈路層: 

  DLLP的創建、解碼、校驗;Ack/nak應答機制

物理層:
  Ordered-Set packet創建/解碼
  發送/接收所有Packet
  128b/130b編碼,擾碼
  鏈路訓練和初始化

 

 

 

 接下來會介紹三個層次各自的功能:

1. 事務傳輸層:  

  事務傳輸層產生發出的和接收的事務傳輸層數據包(TLP)
  TLP包括一個報頭(Header)、一個可選數據配載(Payload)以及一個可選的端到端CRC(ECRC).
  TLP可以是請求(Request),也可以是對請求的響應(Response),永遠是4byte的倍數
  Header指定事務類型、優先級、地址,路由規則及其他數據包特征。
  發送事務傳輸層構建數據包Header、添加ECRC並門控Payload的傳輸
  接收事務傳輸層檢查TLP格式和Header,檢查ECRC

  

 

 

 

 

 

 這里給出一個memory Read/Memory Write傳輸的例子:

 

 

 

 

 

 對於事務層的傳輸包,具有一個包頭(Header):

  Fmt[2:0]: Format of TLP, bits 7:5 of byte 0
  Type[4:0]: Type of TLP – bits 4:0 of byte 0. Mrd/Mwr/IORd/IOWr/Msg/…
  TC[2:0]: Traffic Class – bits 6:4 of byte 1
  LN: Indicates a Memory Request is an LN Read/Write, or LN completion.
  TH: The presences of TLP Processing Hints
  Attr[2:0]: Attribute,ordering type of IDO/Relaxed
  TD: Presence of TLP digest in the form of a single DW

  EP – Indicates the TLP is Poisoned
  Length[9:0] – Length of data payload in DW
  TLP data must be 4-byte aligned
   for TLPs that do not contain or refer to data payloads, including Cpl, CplLk and Messages.

事務層的優先級控制:

  QoS: 傳輸類別和虛擬通道
  傳輸分類: TC(Traffic class)
    數據包被支配一個優先級
    靈活的仲裁機制(任意、循環、加權輪詢)
    如在PC中,給視頻流最高優先級保證足夠帶寬
  通道虛擬化: VC(Virtual Channel)
    允許多個獨立的數據流復用同一條線路。虛擬通道擁有自己的緩沖資源
    本質是一個緩沖Buffer

 

 

TLP的路由:

  三種路由方法:
    基於地址的路由. - Address Routing
    基於ID的路由 - ID-Based Routing
    隱式路由(Implicit). - Implicit Routing

 

 

 流量控制:

  從數據傳輸的角度看,網絡中具有兩類資源:
    數據通路
    數據緩沖

 

 

目的:
  用於報文發送方與接收方之間的流量控制
  發送方必須有足夠的信用,才能發送報文
  每次發送將消耗信用,接收方接收后,通過流控報文釋放信用
  每個虛通道要實現一套流控機制
    包含Posted、Non-Posted和Completion 3類,每類又分報文頭和負載

 

 

VC: 緩存到緩存之間的傳遞通路
  VC和VC之間的數據傳遞,都需要實際的物理鏈路,所以稱為“虛通路”
  相同類型的報文一般使用同一個VC進行數據傳輸
  PCIe中,一個TC只能對應一個VC

Credit-Based流量控制算法
  N123
  N123+
  N23

數據鏈路層的內容放在下一節.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM