天天看點

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

總目錄在此哦~

https://blog.csdn.net/z123canghai/article/details/115644744

目錄

1.3 PCIE的拓撲結構

1.4 PCIE協定的實作方案

1.4.1 PCIE協定的分層結構

1.4.2 PCIE協定的事務類型

1.4.3 PCIE傳輸機制

1.4.4 PCIE的路由方案

1.3 PCIE的拓撲結構

         如下圖是計算機體系中的PCIE結構拓撲,我們知道電腦主機闆上有很多東西,例如硬碟、顯示卡、網卡、USB接口等等,我稱之為元件,就是組成電腦的一個又一個的功能裝置。如下圖就包括了些PCIE協定所支援的各種元件。該拓撲結構的最大特點就是點對點互聯,包括了RC(Root Complex)、Switch、Endpoint、PCIE to PCI/PCI-X Bridge這些裝置,它們在PCIE所規定的協定下扮演着各自的角色,承擔着各自的任務。下面我們就逐個概括性的介紹下這些元件。   

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

1、 Root Complex(RC)

         Root Complex在百度百科翻譯為“根複合體”,對于我這初學這來說,了解根複合體并不容易,是以還是願意稱之為RC,它的含義就是一個實作CPU與PCIE上元件通信的媒介,CPU要讀取某個元件資訊,告知RC,其它的均有RC代勞了。可以說是PCIE拓撲結構的中樞機構,是管家,是指揮者。其實協定對RC還有很多的規定且随着處理器不同而不同,本是一個模糊的概念,對于X86處理器RC除了管理PCIE裝置還有其它事情要幹,但在這裡還是應該把它了解為PCIE總線控制器。

2、Endpoints(端點)

         Endpoints稱之為端點或者說終點,RC的指令最終要去的地方就是這裡。它要對RC的請求進行響應,并接收RC的配置。例如計算機裡面的聲霸卡、網卡,還有應用到PCIE的些功能裝置,均是端點。

3、switch

         如下圖所示是一個Switch元件,它的内部可以視為多個虛拟的PCI到PCI的橋,實作擴充功能。該元件會根據事務類型将資料送到不同的通道。該元件對資料包沒有處理的功能隻有轉發功能。

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

4、PCIE到PCI / PCI-X橋接器

         這個主要是用來相容PCI元件的,如果有裝置是PCI接口,可以通過PCIE-PCI橋來接入系統中去。

1.4 PCIE協定的實作方案

PCIE的實作方案是非常複雜的,我們看協定規範有860頁的描述,而且字還那麼小,總的來說就是兩種傳輸機制、三層邏輯結構、四種事務類型。在這裡隻是概述性的說一下。

1、協定相關代碼采用分層的方式進行組織的,分為事務層、鍊路層和實體層,以此實作使用者資料的互動;

2、資料類型被分為記憶體、I/O、配置和消息四類,分别完成不同的功能。

3、資料交換是基于請求與完成(響應)的機制,也分為Non-Posted和Posted兩種模式,Posted意思發送資料不需要接收端響應Non-Posted是要求接收端對發送資料進行響應。

1.4.1 PCIE協定的分層結構

         對于複雜的協定,分層是必須要做的事情,無論平時寫的業務邏輯,還是像TCP/IP、SRIO等行業内的公用協定,都做了分層。對實作功能有着明确、合理的劃分,不僅增加代碼的可讀性,更有助于提高其可讀性,并利于擴充。PCIE或者說PCI協定,也是進行了層級劃分,如下圖所示,劃分為事務層、資料鍊路層和實體層三層。這些層中的每一層分為兩個部分,一部分是發送資料内容,一部分是接收資訊。

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

         我們把PCIE協定發送或接收的資訊稱之為資料包,資料包在事務層形成,并會在其它層添加資訊對其進行再次的封裝,這些擴充的封裝包含了保證資料包在鍊路中準确傳輸的必備資訊。當資料包到大接收端,會對該封裝進行逐層解析,最終到達事務層交由使用者應用,如下圖所示,是每層對資料封裝的示意圖。在下文會對每層的工作内容進行概述性的解釋。不過在這之前應該說下PCIE的傳輸機制。

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

1、事務層

事務層是PCIE協定的對外接口層,使用者對資料進行組幀和解析是在本層進行,本層産生的資料包稱之為事務層資料包,即(Transaction Layer Packets,TLP)。此外事務層還具有基于信用積分的流控功能,支援不同僚務類型的不同形式的資料傳輸。

2、資料鍊路層

         資料鍊路層充當事務層和實體層之間的中間階段,主要職責包括鍊路管理和資料完整性,包括錯誤檢測和糾正。

         資料鍊層在傳輸鍊路上接收事務層的TLP資料包添加序列号和校驗碼交給實體層,而且鍊路層非常盡責,會對事務層傳遞的資料包進行緩存,如果檢測到傳輸錯誤會進行重發,直到接收正确或确定鍊路通信失敗。

         鍊路層還具有鍊路管理功能,并有相應的資料包,稱之為“資料鍊路層資料包(DLLP)”該資料包是實作兩個元件間的資料交換,并沒有路由功能,換言之,如果一包資料要跨過大山大河到達接收端,中間經過無數站點,DLLP資料包隻在兩站之間進行資料交換,主要實作的功能有流量控制、電源管理、應答機制和虛拟通道。

3、實體層

       實體層分為兩個部分,一部分是邏輯子層,一部分是電氣子層。邏輯子層子產品負責與資料鍊路層的資料交換,會對接收鍊路層事務進行再次封裝,對接收電氣子層事務進行解析,并會進行8B/10B編碼或者128B/130B編碼,進行傳遞之間的轉換和極性反轉等工作,電氣子層則更多的負責時鐘資料恢複、均衡等電氣操作。實體層資料包稱之為PLP,Physical Layer Packet。

1.4.2 PCIE協定的事務類型

         PCIE協定總共規定了Memory、I/O、配置和消息四種事務類型,其中前三種是從PCI繼承過來的,消息是PCIE所擴充的。

1、記憶體事務

         其實記憶體事務并不一定是讀寫記憶體,而是代表一種大資料量的資料交換方式,PCIE支援記憶體事務類型的讀寫以及原子操作(AtomicOp)。

2、I/O事務

         I/O事務是被PCIE嫌棄的一類事務,會逐漸被棄用并被MMIO替代。……

3、配置

         主要是實作裝置功能的配置,

4、消息

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

1.4.3 PCIE傳輸機制

         正如前文所述,資料交換是基于請求與完成(響應)的機制,分為Non-Posted和Posted兩種模式,這種分類也是滿足不同的需求,例如記憶體模式進行大量的資料交換,如果每發送一包就要求響應,則會大大降低傳輸效率,但對于一些事務,為了保證可靠性是必須響應的故有兩種模式。對于Non-Posted模式并不是說資料包發送過去就不管不顧了,接收端會在鍊路層向發送端發送響應信号。

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

1.4.4 PCIE的路由方案

         何為路由,百度說就是按某條線路發送,有時候有些詞真的很阻礙我們對些知識的了解,例如路由,再例如學ram時候的中斷向量表,對于初學者來說,很讓人費解。在我看來路由強調的是發送端和接收端間的通信,與之相對應的是點對點通信。點對點通信不需要考慮擁塞等問題,就是兩點間的資料交換,而路由鍊路就可能很長,中間有很多的中轉站,我們要保證資料在中轉站不出錯,就需要更多的

         PCIE的路由方案有三種,分别是ID路由、位址路由和模糊路由。

1、ID路由

         ID路由即BDF路由方案,即采用Bus Number、Device Number和Function Number來确定目标裝置的位置。這是一種相容PCI的路由方案,主要用于裝置的配置、帶資料和不帶資料的傳回資料包。

2、位址路由

         位址路由包括對IO和Memory兩種事務類型的路由,在幀頭中包含了目的裝置的位址資訊,處理器會為每個裝置配置設定一段位址資訊,這也是資料包傳輸過程中的标志符。

3、模糊路由

         模糊路由(Implicit Routing,又譯為隐式路由)隻能用于Message的路由。用來實作電源管理、錯誤信号、熱插拔、虛拟通道等功能,具體也是在下文。

歡迎關注“滄小海的FPGA”微信公衆号,回複“PCIE”可擷取相關資料,其中包括

1、協定規範的中文翻譯

2、相關英文資料

3、PCIE的使用教程

滄小海筆記之PCIE協定解析——第一章 PCIE概述(下)總目錄在此哦~https://blog.csdn.net/z123canghai/article/details/1156447441.3 PCIE的拓撲結構1.4 PCIE協定的實作方案

繼續閱讀