PCIe掃盲 PCIe匯流排體系結構入門

2021-09-24 19:57:22 字數 1600 閱讀 4577

和很多的序列傳輸協議一樣,乙個完整的pcie體系結構包括應用層、事務層(transaction layer)、資料鏈路層(data link layer)和物理層(physical layer)。其中,應用層並不是pcie spec所規定的內容,完全由使用者根據自己的需求進行設計,另外三層都是pcie spec明確規範的,並要求設計者嚴格遵循的。

乙個簡化的pcie匯流排體系結構如上圖所示,其中device core and inte***ce to transaction layer就是我們常說的應用層或者軟體層。這一層決定了pcie裝置的型別和基礎功能,可以由硬體(如fpga)或者軟硬體協同實現。如果該裝置為endpoint,則其最多可擁有8項功能(function),且每項功能都有乙個對應的配置空間(configuration space)。如果該裝置為switch,則應用層需要實現包路由(packet routing)等相關邏輯。如果該裝置為root,則應用層需要實現虛擬的pcie匯流排0(virtual pcie bus 0),並代表整個pcie匯流排系統與cpu通訊。

事務層(transaction layer):接收端的事務層負責事務層包(transaction layer packet,tlp)的解碼與校檢,傳送端的事務層負責tlp的建立。此外,事務層還有qos(quality of service)和流量控制(flow control)以及transaction ordering等功能。

資料鏈路層(data link layer):資料鏈路層負責資料鏈路層包(data link layer packet,dllp)的建立,解碼和校檢。同時,本層還實現了ack/nak的應答機制。

物理層(physical layer):物理層負責ordered-set packet的建立於解碼。同時負責傳送與接收所有型別的包(tlps、dllps和ordered-sets)。當前在傳送之前,還需要對包進行一些列的處理,如byte striping、scramble(擾碼)和encoder(8b/10b for gen1&gen2, 128b/130b for gen3& gen4)。對應的,在接收端就需要進行相反的處理。此外,物理層還實現了鏈路訓練(link training)和鏈路初始化(link initialization)的功能,這一般是通過鏈路訓練狀態機(link training and status state machine,ltssm)來完成的。

需要注意的是,在pcie體系結構中,事務層,資料鏈路層和物理層存在於每乙個埠(port)中,也就是說switch中必然存在乙個以上的這樣的結構(包括事務層,資料鏈路層和物理層的)。乙個簡化的模型如下圖所示:

關於事務層,資料鏈路層和物理層的詳細的功能圖示如下圖所示:

PCIe掃盲 PCIe匯流排事務層入門(一)

在介紹事務層之前,首先簡單地了解一下pcie匯流排的通訊機制。假設某個裝置要對另乙個裝置進行讀取資料的操作,首先這個裝置 稱之為requester 需要向另乙個裝置傳送乙個request,然後另乙個裝置 稱之為completer 通過completion packet返回資料或者錯誤資訊。在pcie...

PCIe掃盲 PCIe匯流排事務層入門(二)

前面的文章介紹了tlp的幾種型別以及tlp的包結構。這篇文章來詳細地聊一聊non posted transaction 包括ordinary read locked read和io configuration writes 與posted writes 包括memory writes和message...

pcie匯流排與cpci匯流排 PCIE 學習筆記

最近看到了pcie知識點,這裡做了一些總結跟大家分享一下。pcie的由來 上世紀90年代,intel 提出了pci 的概念,並聯合ibm等其他公司成立的pci sig pci special interest group 以制定相應的規範。從pci到pci x,再pcie 1.0,pcie 2.0,...