一、基礎知識
1、pci-express是一種高速序列計算機擴充套件匯流排標準,是由英特爾在2023年提出的,旨在替代舊的pci,pci-x和agp匯流排標準。
與大多數匯流排一樣,pcie匯流排也包括電氣屬性和協議組成兩部分。
pcie 規範對於裝置的設計採用分層的結構,由傳輸層、資料鏈路層和物理層組成,各層有都分為傳送和接收兩功能塊。
在傳送端,應用程式(裝置核a)在傳輸層形成事務層包(tlp——transaction layer package),儲存在傳送緩衝器裡,等待推向下層。
在資料鏈路層,在tlp 包上再串接一些附加資訊,這些資訊是對方接收tlp 包時進行錯誤檢查要用到的,形成資料鏈路層包(dllp——data link layer package);
在物理層,對dllp 包進行編碼,占用鏈路中的可用通道,從傳送器傳送出去。
在接收端,實際上是傳送端的「逆」過程。如果說傳送端是在不斷組包,那麼接收端就是不斷的拆包,最後提取出有用的資料資訊供b裝置的應用程式使用。
整個過程實際上和乙太網的過程很相似,都是在不同層級上進行資料的擴充套件。在fpga的開發過程中,實際上從事務層到物理層都是封裝好了的,組成標準ip核。使用者通過ip核要求的匯流排協議(如axi4-stream)與之進行資料交換。
2、資料傳送方式
pcie匯流排規定了兩類資料傳送方式,分別是non-posted和posted資料傳送方式。
non-posted匯流排事務,「一問一答」的方式,首先是傳送端向接收端提交匯流排讀寫請求,之後接收端再向傳送端傳送完成(completion)報文。
pcie匯流排使用split傳送方式處理所有non-posted匯流排事務,儲存器讀、i/o讀寫和配置讀寫這。
而posted匯流排事務,「單向傳送」的方式,只向終端傳送報文,而終端無需反饋完成報文。
3、pcie在軟體層上是和pci相容的,也就是說,使用pci的訪問方式可以去配置pcie匯流排。pcie device一般都有busno/deviceno/function.通常deviceno為0.
另外提供了一種memory對映來訪問pcie device的方式—pcie enhance configuration mechanism。一共會占用256mbyte的空間。
二、配置讀寫
1、pci匯流排規定了三種型別的pci配置空間,分別是:
pci agent裝置使用的配置空間,
pci橋使用的配置空間
cardbus橋片使用的配置空間。
值得注意的是,在pci裝置配置空間**現的位址都是pci匯流排位址,屬於pci匯流排域位址空間。
三、資料讀寫(假定配置空間已經被系統軟體初始化)
pci匯流排支援以下幾類儲存器讀寫匯流排事務。
1、host處理器對pci裝置的bar空間進行資料讀寫,bar空間可以使用儲存器或者i/o解碼方式。host處理器使用pci匯流排的儲存器讀寫匯流排事務和i/o讀寫匯流排事務訪問pci裝置的bar(base address也就是資料基位址)空間。
2、pci裝置之間的資料傳遞。在pci匯流排上的兩個裝置可以直接通訊,如乙個pci裝置可以訪問另外乙個裝置的bar空間。不過這種資料傳遞在pc處理器系統中較少使用。
3、pci裝置對主儲存器進行讀寫,即dma讀寫操作。
dma讀寫操作在所有處理器系統中都較為常用,也是pci匯流排資料傳送的重點所在。
在多數情況下,dma讀寫操作結束後將伴隨著中斷的產生。pci裝置可以使用inta#、intb#、intc#和intd#訊號提交中斷請求,也可以使用msi機制提交中斷請求。
(pci裝置通過dma向主存中傳資料時,收到中斷請求時記憶體中資料未必立即可用,需要先讀)
(1)posted過程:pci裝置11向儲存器進行dma寫操作為例
1>當pci裝置11獲得pci匯流排x1的使用權之後,將傳送儲存器寫匯流排事務到pci匯流排x1
2>當pci橋1發現這個匯流排事務的位址不在它管理的位址範圍內將首先接收這個匯流排事務,並結束pci匯流排x1的匯流排事務
3>pci橋1獲得pci匯流排x0的使用權之後,將**這個儲存器寫匯流排事務到pci匯流排x0
4>之後host主橋x將接收這個儲存器寫匯流排事務,並最終將資料寫進儲存器。逐級釋放匯流排資源!
(2)pci裝置11進行dma寫操作:
1>pci裝置將處理器的儲存器寫請求傳送到pci匯流排x1.
2>pci匯流排所有裝置監聽這個請求,由於是向處理器的儲存器寫請求,所以pci匯流排上的pci agent都不會接收這個請求。
3>pci橋x1發現當前匯流排事務使用的pci匯流排位址不是其下游裝置的pci域位址,所以接收這個請求,此時pci橋x1結束來自pci裝置11的posted儲存器寫請求,並將這個請求推到pci匯流排0上。
4>所有pci裝置包括host主橋都監聽這個請求。host主橋x結束pci橋x1的posted儲存器寫請求。
5>host主橋x發現這個資料請求發向儲存器,將pci域位址轉化為儲存器位址,之後通過儲存器控制器將資料寫入儲存器。
pcie匯流排與cpci匯流排 PCIE 學習筆記
最近看到了pcie知識點,這裡做了一些總結跟大家分享一下。pcie的由來 上世紀90年代,intel 提出了pci 的概念,並聯合ibm等其他公司成立的pci sig pci special interest group 以制定相應的規範。從pci到pci x,再pcie 1.0,pcie 2.0,...
pcie匯流排與cpci匯流排 PCIE技術概述
ssd的協議標準除了sata,還有乙個更先進的協議標準,就是pcie。pcie匯流排使用了高速差分匯流排,並採用了端到端的連線方式。兩個裝置之間的的傳輸通道,稱為link,由1,2,4,8,16,32個lane組成。lane的數目代表link的傳輸寬度 x1,x2,x4,x8,x16,x32 lan...
PCIe匯流排初識
pcie匯流排 一 pcie匯流排與pci匯流排的區別 pcie匯流排與pci最大的區別在工作原理上,pcie是採用點到點的序列方式進行傳輸的,被稱為 序列pci 由於採用了序列方式傳輸使得其工作頻率可以達到2.5ghz,大大增加了傳輸速率,同時採用全雙工的通訊方式,使得其傳輸速度提高了一倍,每乙個...