PCIe的事務傳輸層的處理(TLP)


主要從以下幾個方面解決:

1.TLP基本的概念:

2.尋址定位與路由導向

3.請求和響應機制

4.虛擬通道機制

5.數據完整性

6.i/o,memory,configuration,message request、completion

 

1.

上文提到,傳輸層transaction Layer specification是用來接受請求和發送響應的,有四種地址空間,三種處理類型:

  1. 一類是對IO和memary操作的讀寫包,其中memary讀請求包和響應包,寫請求包,寫不需要響應包,,IO的讀寫都需要請求和響應包。
  2. 一類是對配置寄存器操作的讀寫包,讀寫都請求和響應包,其中的請求包按屬性分為NP-non posted和posted(不需要響應和需要響應)
  3. 數據包,用於描述通信狀態並且把狀態作為事件信號告知用戶。

每個類型的包都有包頭(TLP header),有效數據負荷(Data Payload),以及開銷塊(Tlp Digest)。

有數據的TLP包的傳遞規則是:按照指定DW長度單位傳遞數據,發送端的數據承載量不得超過“Device Control Register”中的“Max_Payload_Size”數值,接收端中,所接收到的數據量也不能超過接收端“Device Control Register”中的“Max_Payload_Size”數值。TLp Digest域是32位的ECRC校驗

對於包頭,具體的 組成部分

 

2

尋址定位和路由導向:

三種尋址方式:地址路由(address)、ID識別路由、間接路由(implicit)

  1. 地址尋址主要用於IO和memary的請求包尋址,對於memary而言,讀寫請求包支持的地址位是64位(TLP header是4DW)也可以是32位(TLP header是3DW),而IO的只支持32位。
  2. ID尋址主要用於confignation請求包,部分message包,響應包,ID包括Bus number、Divce number、function number為TLP定位目標接收器。ID尋址的TLP包頭長度也有4DW和3DW兩種,ID在TLP中位置見下圖

處理層描述符(transaction Descriptor (TD),用於請求器件和應答器件間轉送處理層信息,包括三部分,Transaciton ID、Attributes、Traffic class(TC)。如下圖。

 

 

其中Transaction ID包括: Requester ID、Tag,如圖。

 

 

Tag[7:0]是由產生請求包的器件生成的,如果請求器件需要應答,則每個Tag[7:0]和Function Number是獨一無二的。Transaction ID是一個全局標識符用於響應包尋址請求器件。

TC的規定如下,描述服務的層次和用於映射虛擬通道:處理層描述符在請求包中第二個DW:中圖中看出,描述字符放在第二個DW的前三個字節中。

 

3.請求和應答機制

 該機制的作用就是:對從DLL接到的已經經過數據完整性的TPL進行處理。拋棄無效的包,並且將保留字忽略。

  • 對所有的包分request handling和completion handling,按不同的規范處理。
      •   Request Handling Rules
      • 請求是一個不支持的請求包,並且需要響應,則Completion Status=UR,即不支持的請求
      • 2請求包是一個Message 包則按Message包處理規則處理,否則對這個request進行處理
      • 如果請求違反器件編程定義則給出ca響應,即響應器件放棄該請求,否則做出正確應答
      • completion handling: 如果接收到一個completion包的Transaction ID和requester的Transaction ID不一致則這個應答包是非預期包。合法的應答包將按Compl.Status域處理並提取有效數據負荷。

4

虛擬通道機制:

  • 在總線中用TC域來區分的虛擬信息通路,即某一傳輸通路,有不同的流程控制機制(Flow Control)。當某流程控制出現擁塞時,其他通路依然暢通。VC有自己的獨立流控制,是實現Qos的秘訣。VC通道是解決擁塞的基礎。
  • 每個TLP包並不包含具體的VC信息,VC是由TC映射得到的。每個器件的TC/VC映射是不同的,TC0/VC0是固定的。一個或多個TC映射到一個VC,同一個TC不能映射到不同的VC上,連接雙方的映射機制一致。除了TC0外,其他的可以軟件設置。鏈路兩端的映射方案要一致,

每個虛擬通道有獨立的流程控制的緩沖空間。流程控制能分辨三種包:posted requests(p)、non-posted requests(Np)、completions(cpl)。還可以分辨三種包的包頭Header和數據Data,可以這樣說,每個虛擬通道(VC)對應的特定流程控制包含6種不同的流程控制信息:1、PH=posted Request Header;2、PD=posted request Data Payload;3、NPH=non-posted request Header;4、NPD=non-posted request Data Payload;5、CPLH=completion Header;6、CPLD=completion Data Payload。

 

5

數據完整性

保證數據完整性的方式有:Data Link Layer中的crc(LCRC)。為了確保數據端對端的可靠性在Transaction層的TLp Digest域還選擇性的做一ECRC校驗

ECRC的初值是FFFF FFFF

 


免責聲明!

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



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