主要從以下幾個方面解決:
1.TLP基本的概念:
2.尋址定位與路由導向
3.請求和響應機制
4.虛擬通道機制
5.數據完整性
6.i/o,memory,configuration,message request、completion
1.
上文提到,傳輸層transaction Layer specification是用來接受請求和發送響應的,有四種地址空間,三種處理類型:
- 一類是對IO和memary操作的讀寫包,其中memary讀請求包和響應包,寫請求包,寫不需要響應包,,IO的讀寫都需要請求和響應包。
- 一類是對配置寄存器操作的讀寫包,讀寫都請求和響應包,其中的請求包按屬性分為NP-non posted和posted(不需要響應和需要響應)
- 數據包,用於描述通信狀態並且把狀態作為事件信號告知用戶。
每個類型的包都有包頭(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)
- 地址尋址主要用於IO和memary的請求包尋址,對於memary而言,讀寫請求包支持的地址位是64位(TLP header是4DW)也可以是32位(TLP header是3DW),而IO的只支持32位。
- 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