2.2.7 內存、I/O和配置請求規則
以下規則適用于所有內存、I/O和配置請求。每種類型的請求還有特定的額外規則。
- 所有內存、I/O和配置請求除了常見的頭標字段外,還包括以下字段:
- requester ID[15:0]和Tag[9:0],形成事務ID。
- Last DW BE[3:0] and First DW BE[3:0]。對于設置了TH位的內存讀取請求和原子操作請求,頭標中Last DW BE[3:0] and First DW BE[3:0]的字節位置被重新用于攜帶ST[7.0]字段。對于設置了TH位的原子操作請求,DW字節使能位的值被認為是保留的。對于清除了TH位的原子操作請求,DW字節使能位是保留的。
對于內存請求,以下規則適用:
- 內存請求通過地址進行路由,使用64位或32位尋址(見圖2-17和圖2-18)。
-
對于內存讀取請求,長度不得超過Max_Read_Request_Size指定的值。
-
對于原子操作請求,表2-12中指定了架構操作數大小及其關聯的長度字段值。如果完成器支持原子操作,以下規則適用:完成器必須檢查長度字段值,如果該值與架構值不匹配,完成器必須將TLP視為畸形TLP。否則,如果該值與完成器支持的操作數大小不匹配,完成器必須將TLP視為不支持的請求(UR)。這是一個與接收端口相關聯的報告錯誤。
-
一個FetchAdd請求包含一個操作數,即"add"值。
-
一個Swap請求包含一個操作數,即"swap"值”。
-
一個CAS請求包含兩個操作數。數據區域中的第一個是“compare”值,第二個是“swap”值。
-
對于原子操作請求,地址必須與操作數大小自然對齊。完成器必須檢查此規則的違規情況,如果TLP違反此規則,則該TLP是一個畸形TLP。這是一個與接收端口相關聯的報告錯誤。
-
請求不能指定會導致內存空間訪問跨越4-KB邊界的地址/長度組合。
-
接收器可以可選地檢查此規則的違規情況。如果實現此檢查的接收器確定TLP違反此規則,則該TLP是一個畸形TLP。
- 如果進行了檢查,這是與接收端口相關聯的報告錯誤。
- 對于原子操作請求,完成器必須強制檢查地址的自然對齊(見上文),已經保證了訪問不會跨越4-KB邊界,因此不需要單獨的4-KB邊界檢查。
- 如果對原子操作CAS請求執行了4-KB邊界檢查,此檢查必須理解TLP長度值是基于兩個操作數的大小,而對內存空間的訪問是基于一個操作數的大小。
對于I/O(輸入/輸出)請求,適用以下規則:
- I/O請求通過地址路由,使用32位尋址(見圖2-19)。
- I/O請求有以下限制:
- TC[2:0] 必須是 000b(二進制)
- LN 對于I/O請求不適用,該位是保留的
- TH 對于I/O請求不適用,該位是保留的
- Attr[2] 是保留的
- Attr[1:0] 必須是 00b(二進制)
- AT[1:0] 必須是 00b(二進制)。接收方不要求或鼓勵檢查這一點。
- Length[9:0] 必須是 00 0000 0001b(二進制)
- Last DW BE[3.0] 必須是 0000b(二進制)
接收方可以選擇性檢查這些規則的違規情況(但不得檢查保留位)。這些檢查是獨立可選的。如果執行這些檢查的接收方確定事務層包(TLP)違反了這些規則,該TLP就是畸形TLP。
- 如果進行了檢查,這是一個與接收端口相關聯的報告錯誤。
對于配置請求,適用以下規則:
- 配置請求通過ID路由,并使用3個DW的頭標。
- 除了所有內存、I/O和配置請求中包含的頭標字段以及ID路由字段,配置請求還包含以下額外字段(見圖2-20):
- register number[5:0]
- extended register number[3:0]
- 配置請求有以下限制:
- TC[2:0] 必須是 000b(二進制)
- LN 對于配置請求不適用,該位是保留的
- TH 對于配置請求不適用,該位是保留的
- Attr[2] 是保留的
- Attr[1:0] 必須是 00b(二進制)
- AT[1:0] 必須是 00b(二進制)。接收方不需要或鼓勵檢查這一點。
- Length[9:0] 必須是 00 0000 0001b(二進制)
- Last DW BE[3:0] 必須是 0000b(二進制)
- 接收方可以選擇性檢查這些規則的違規情況(但不得檢查保留位)。這些檢查是獨立可選的。如果執行這些檢查的接收方確定事務層包(TLP)違反了這些規則,該TLP就是畸形TLP。
- 如果進行了檢查,這是一個與接收端口相關聯的報告錯誤。
?MSI/MSI-X 機制使用內存寫請求來表示中斷消息。用于 MSI/MSI-X 事務的請求格式與上面定義的內存寫請求格式相同,并且就排序、流量控制和數據完整性而言,MSI/MSIX 請求與內存寫入無法區分。
2.2.7.1 TPH 規則
為 TPH 指定了兩種格式。所有提供 TPH 的請求都必須使用基準?TPH 格式(見圖 2-22 和圖 2-23)。帶有可選 TPH TLP 前綴的格式擴展了 TPH 字段(見圖 2-21),以提供 Steering Tag (ST) 字段的額外位。
可選的 TPH TLP 前綴用于擴展 TPH 字段。 通過decode?byte0 來確定是否存在 TPH TLP 前綴。
對于目標為內存空間的請求,TH 位為?1b 表示 TLP 頭標和可選的 TPH TLP 前綴(如果存在)中存在 TPH。
- 對于提供 TPH 的請求,必須設置 TH 位。
- 針對具有 TPH TLP 前綴的請求,必須設置 TH 位。?
- 當 TH 位清零時,PH(處理提示)字段是保留的。
- 對于所有其他請求,TH 位和 PH 字段都不適用,并且是保留的。
- 處理提示(PH)字段的映射在圖 2-22、圖 2-23 和表 2-14 中顯示。
PH[1:0] 字段提供了有關數據訪問模式的信息,并如表 2-15 中所述所定義。?
轉向標簽(ST)字段映射到 TLP 頭標,如圖 2-24、圖 2-25 和表 2-16 所示。?
- ST[7:0] 字段攜帶轉向標簽值
- 所有位都是零的值表示沒有轉向標簽偏好
- 提供了總共255個唯一的轉向標簽值
對于不支持 TPH(Translation Process Hierarchy)完成或路由能力的功能,如果接收到設置了 TH 位的事務,則必須忽略 TH 位,并以與未設置 TH 位的相同事務類型的請求相同的方式處理該請求。
?
?
?