天天看點

PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

目錄

PCIe總線的拓撲結構

PCI Express協定分層

實體層(Physical Layer)

資料鍊路層(Link Layer)

處理層(Transaction Layer)

軟體層(Software Layer)

資料傳輸時候的流程

TLP和DLLP封包格式

PCIe總線的拓撲結構

PCIe采用的是樹形拓撲結構, 一般由根元件(Root Complex),交換裝置(Switch),終端裝置(Endpoint)等類型的PCIe裝置組成

Root Complex: 根橋裝置,是PCIe最重要的一個組成部件; Root Complex主要負責PCIe封包的解析和生成。RC接受來自CPU的IO指令,生成對應的PCIe封包,或者接受來自裝置的PCIe TLP封包,解析資料傳輸給CPU或者記憶體。

Switch: PCIe的轉接器裝置,目的是擴充PCIe總線。和PCI并行總線不同,PCIe的總線采用了高速差分總線,并采用端到端的連接配接方式, 是以在每一條PCIe鍊路中兩端隻能各連接配接一個裝置, 如果需要挂載更多的PCIe裝置,那就需要用到switch轉接器。switch在linux下不可見,軟體層面可以看到的是switch的上行口(upstream port, 靠近RC的那一側) 和下行口(downstream port)。

一般而言,一個switch 隻有一個upstream port, 可以有多個downstream port.

PCIe endponit: PCIe終端裝置,是PCIe樹形結構的葉子節點。比如網卡,NVME卡,顯示卡都是PCIe ep裝置。

PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

圖1:PCIe 體系結構拓撲圖

PCI Express協定分層

PCI Express體系結構采用分層設計,就像網絡通信中的七層OSI結構一樣,這樣利于跨平台的應用。PCI-Express體系結構如圖2所示。它共分為四層,從下到上分别為:

  • 實體層(Physical Layer)
  • 資料鍊路層(Link Layer)
  • 處理層(Transaction Layer)
  • 軟體層(Software Layer)

​​​​​​​

PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

圖2 PCIe 協定層結構

  • 實體層(Physical Layer)

實體層是最低層,它負責接口或者裝置之間的連結,是實體接口之間的連接配接,可對應于網絡中OSI七層模式中的實體層來了解。

實體層決定了PCI Express總線接口的實體特性,如點對點串行連接配接、微差分信号驅動、熱撥插、可配置帶寬等。初始的單一串行PCI Express連結包含兩個低電壓微分驅動信号對(4線的接收和發送對)的雙向連接配接,即“發送”和“接受”信号。

資料時鐘使用8/10b解碼方式來達到相 當高的資料速率(這一技術同時也在其它串行總線技術中,如InfiniBand和RapidIO);時鐘資訊直接被編碼成資料流,比起分離信号時鐘更 好。

  • 資料鍊路層(Link Layer)

資料鍊路層的主要職責就是確定資料包可靠、正确傳輸。它的任務是確定資料包的完整性,并在資料包中添加序列号和發送備援校驗碼到處理層。大多數資料包 是由處理層發起的,基于信任,資料流控制協定確定資料包隻在終端緩存空閑時傳輸。排隊了所有資料的重試,使得信道帶寬浪費現象得到有效地限制。

  • 處理層(Transaction Layer)

處理層的作用主要是接受從軟體層送來的讀、寫請求,并且建立一個請求包傳輸到連結層。所有請求都是分離執行,有些請示包将需要一個響應包。處理層同時 接受從鍊路層傳來的響應包,并與原始的軟體請求關聯。處理層還整合或者拆分處理級資料包來發送請求,如資料讀、寫請求,并且操縱連結配置和信号控制。以确 保端到端連接配接通信正确,沒有無效資料通過整個組織(包括源裝置和目标裝置,甚至包括可能通過的多個橋接器和交換器)。

在PCI Express總線技術中,資料包類型主要有兩種,那就是由處理層發起的“處理層資料包”(Transaction Layer Packet,TLP)和“資料鍊路層資料包”(Data Link Layer Packet,DLLP)。每個資料包都有一個可以使響應包定向于正确發起者的唯一辨別符,包的格式支援32位記憶體位址和擴充64位記憶體位址。包同時還有 如“非窺探”、“無嚴格排序”和“優先權”等屬性,這些屬性将應用于優化路由I/O子系統的資料包。

處理層包括4個位址空間,其中3個是PCI接口原有的,如記憶體、I/O和配置位址空間,另一外新PCI-Express接口新加的,它就是“資訊空 間”。PCI2.2标準中介紹不斷變化的系統中斷宣傳的方法稱之為 “資訊信号中斷”(Message Signaled Interrupt,MSI)。這裡特殊規格格式的記憶體寫事物代替無邊信号硬寫,如中斷、電源管理請求、複位等等有關資訊方面。這幾個位址空間類型的用途如下表所示:

位址空間 處理類型 基本用途
記憶體 讀/寫 處理來自或發送到記憶體中的資料
I/O 讀/寫 處理來自或發送到I/O節點中的資料
配置 讀/寫 裝置配置或者設定
資訊 基線/供應商定義/先進交換 處理從事件信号機制到通用目資訊的所有資訊

表1:PCIe位址空間

  • 軟體層(Software Layer)

軟體層被稱為最重要的部分,因為它是保持與PCI總線相容的關鍵。其目的在于使系統在使用PCI Express啟動時,像在PCI下的初始化和運作那樣,無論是在系統中發現的硬體裝置,還是在系統中的資源,如記憶體、I/O空間和中斷等,它可以建立非 常優化的系統環境,而不需要進行任何改動。在PCI-Express體系結構中保持這些配置空間和I/O裝置連接配接的規範穩定是非常關鍵的。事實上,在 PCI-Express平台中所有作業系統在引導時都不需要進行任何編輯,也就是說在軟體方面完全可以實作從PCI總線平穩過渡。

資料傳輸時候的流程

PCIE協定傳輸資料是以資料包的形式傳輸, 如下圖所示從發送端說起。資料交到Device B 的Core層, 由Core層将資料格式轉換成處理層(Transaction Layer)可以接受的封包格式,處理層産生相應的資料包,并存儲再對應的Buffer中。資料繼續傳送到資料鍊路層(Data Link Layer),資料鍊路層将上一層傳來的資料包添加Seq Num和CRC校驗用來給接收端進行一些資料正确性的檢查。然後在實體層(Physical Layer) 将資料進行編碼,通過多條鍊路使用模拟信号進行傳輸。

在接收端,下圖左側示。實體層(Physical Layer)将接收到的資料包解碼後傳送到資料鍊路層(Data Link Layer),資料鍊層将接收的資料進行校驗檢查,沒有問題就把資料傳送給處理層(Transaction Layer)。處理層把資料壓入buffer之後,Device A core 層将資料包轉換成軟體課程處理的資料。

一般來說在使用FPGA 開發時,如果調用PCIE 硬核,實體層/資料鍊路層/處理層,這三個層都已經內建在IP核裡面了。

PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

圖3 PCIe 資料傳輸流程

TLP和DLLP封包格式

PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

圖4 TLP 包格式

TLP 包類型:

  • Memory Read-Unlocked
  • Memory Read-Locked
  • Memory Write
  • IO Read
  • IO Write
  • Configuration Read-Type 0
  • Configuration Write-Type 0
  • Completion -Unlocked
  • Completion-Locked
  • Completion w/data-Unlocked
  • Completion w/data-Locked
  • Message Request
  • Message Request w/data
PCIE學習筆記(二)PCIe總線的拓撲結構,協定層,資料傳輸流程PCIe總線的拓撲結構PCI Express協定分層資料傳輸時候的流程

圖5 DLLP 包格式

DLLP 包類型:

  • TLP Ack/Nak
  • Power Management
  • Link Flow Control
  • Vendor-Specific

繼續閱讀