2.2.8 消息請求規則
本文檔定義了以下幾組消息:
- INTx 中斷信號
- 電源管理
- 錯誤信號
- 鎖定事務支持
- 插槽電源限制支持
- 廠商定義消息
- 延遲容忍度報告(LTR)消息
- 優化緩沖區沖洗/填充(OBFF)消息
- 設備就緒狀態(DRS)消息
- 功能就緒狀態(FRS)消息
- 精確時間測量(PTM)消息
- requester ID[15:0] 和Tag[9:0],形成事務ID。
- message code[7:0] - 指定請求中體現的特定消息。
- 所有消息請求使用 Msg 或 MsgD 類型字段編碼。
- message code字段必須完全解碼(不允許消息別名)。
- Attr[2] 字段不是保留的,除非特別標明為保留。
- Attr[1:0] 字段是保留的, 除非另有注明。
- LN 不適用于消息請求,該位是保留的。
- TH 不適用于消息請求,該位是保留的,除非另有注明。
- AT[1:0] 必須是 00b,接收方不要求或鼓勵檢查這一點。
- byte8 到 15 是保留的,除非另有注明。
- 消息請求是轉發的,不需要完成返回。
- 消息請求遵循與內存寫請求相同的排序規則。
包括廠商定義消息在內的許多類型的消息,可能在非 D0狀態下使用,強烈建議當端口的橋接功能處于 D1、D2 和 D3Hot 狀態時,端口處理消息的方式與處于 D0 狀態時相同。強烈建議?type0功能支持在非 D0狀態下生成和接收消息。
除了地址和ID路由之外,消息還支持幾種其他的路由機制。這些機制被稱為“隱式”的,因為不需要指定地址或ID來確定目的地,而是通過路由類型隱含目的地。以下規則涵蓋了消息路由機制:
- 消息路由使用類型字段的 r[2:0] 子字段來確定
- 消息路由的 r[2:0] 值在表 2-17 中定義
- 每個消息的允許值在以下各節中定義
?
2.2.8.1 INTx 中斷信號規則
消息信號中斷(MSI 或 MSI-X)是 PCI Express 中首選的中斷信號機制(見第 6.1 節)。然而,在某些系統中,可能存在無法支持 MSI 或 MSI-X 機制的功能。INTx 虛擬線中斷信號機制用于支持傳統終端和 PCI Express/PCI(-X)橋接,在不能使用 MSI 或 MSI-X 機制的情況下使用。Switch必須支持此機制。以下規則適用于 INTx 中斷信號機制:
- INTx 機制使用八個不同的消息(見表 2-18)。
- Assert_INTx/Deassert_INTx 消息不包括數據有效載荷(TLP 類型為 Msg)。
- 長度字段是保留的。
- 使用 Assert_INTx/Deassert_INTx 消息時,requester?ID 中的function number字段必須是 0。請注意,對于非 ARI 和 ARI 請求者 ID,function number字段的大小是不同的。
- Assert_INTx/Deassert_INTx 消息只能由上游端口發出。接收方可以選擇性檢查此規則的違規情況,如果接收方實施此檢查并確定 Assert_INTx/Deassert_INTx 違反此規則,它必須將 TLP 作為畸形 TLP 處理。這是一個與接收端口相關聯的報告錯誤(見第 6.2 節)。
- Assert_INTx 和 Deassert_INTx 中斷消息必須使用默認的流量類別指定符(TC0)。接收方必須檢查此規則的違規情況,如果接收方確定 TLP 違反此規則,它必須將 TLP 作為畸形 TLP 處理。這是一個與接收端口相關聯的報告錯誤(見第 6.2 節)。
?Assert_INTx/Deassert_INTx 消息對構成了每個傳統 PCI 中斷(指定為 A、B、C 和 D)的四個“虛擬線”。 以下規則描述了這些虛擬線的操作:
- 每個鏈路兩端的組件必須使用 Assert/Deassert 消息來跟蹤四個虛擬線的狀態,以代表每個對應虛擬線的激活和非激活轉換(分別)。
- Assert_INTx 表示 INTx(x = A、B、C 或 D)虛擬線的激活轉換。
- Deassert_INTx 表示 INTx(x = A、B、C 或 D)虛擬線的非激活轉換。
- 當上游端口的 INTx 虛擬線的狀態的本地邏輯發生變化時,該端口必須使用適當的 Assert_INTx 或 Deassert_INTx 消息,將這種狀態變化通知給同一鏈路另一端的下游端口。 注意:重復的 Assert_INTx/Deassert_INTx 消息沒有效果,但不是錯誤。
- 當命令寄存器的中斷禁用位(見第 7.5.1.1.3 節)被設置時,INTx 中斷信號被禁用。
- 如果在設置中斷禁用位時任何 INTx 虛擬線處于激活狀態,則必須通過傳輸適當的 Deassert_INTx 消息來取消斷言。
- 虛擬和實際的 PCI-PCI 橋必須根據橋的次級側的設備號,映射在橋的次級側跟蹤的虛擬線,如表 2-19 所示。
- Switch必須獨立跟蹤每個下游端口的四個虛擬線的狀態,并在其上游端口呈現一組“合并”的虛擬線。
- 如果Switch的下游端口變為 DL_Down 狀態,則與該端口相關聯的 INTx 虛擬線必須被取消斷言,并且相應更新Switch上游端口的虛擬線狀態。
- 如果這導致任何上游 INTx 虛擬線被取消斷言,則上游端口必須發送適當的 Deassert_INTx 消息。
- 根復合體必須獨立跟蹤其每個下游端口的四個 INTx 虛擬線的狀態,并將這些虛擬信號映射到系統的中斷資源。 映射的詳細信息是特定于系統實現的。
- 如果根復合體的下游端口變為 DL_Down 狀態,則與該端口相關聯的 INTx 虛擬線必須被取消斷言,并且必須丟棄任何相關的系統中斷資源請求。
2.2.8.2 電源管理消息
這些消息用于支持 PCI Express 電源管理。以下規則定義了電源管理消息:
- 表 2-20 定義了電源管理消息。
- 電源管理消息不包括數據有效載荷(TLP 類型為 Msg)。
- 長度字段是保留的。
- 對于 PM_Active_State_Nak 消息,requester ID 中的function number字段必須包含發送該消息的下游端口的function number,或者為了與本規范的早期版本兼容,使用 00b。
- 對于 PME_TO_Ack 消息,請求者 ID 中的function number字段必須保留,或者為了與本規范的早期版本兼容,必須包含上游端口關聯的某個function的fnction number。請注意,對于非 ARI 和 ARI 請求者 ID,function number字段的大小是不同的。
- 電源管理消息必須使用默認的流量類別指定符(TC0),接收方必須檢查此規則的違規情況。如果接收方確定 TLP 違反此規則,它必須將 TLP 作為畸形?TLP 處理。這是一個與接收端口相關聯的報告錯誤(見第 6.2 節)。
2.2.8.3 錯誤信號消息
錯誤信號消息用于在特定事務上發生的錯誤以及不一定與特定事務相關聯的錯誤進行信號傳遞。這些消息由檢測到錯誤的agen發起。
- 表2-21定義了錯誤信號消息。
- 錯誤信號消息不包含數據有效載荷(TLP類型是消息)。
- 長度字段是保留的。
- 使用錯誤信號消息時,requester ID中的function number字段必須指明哪個功能正在發出錯誤信號。請注意,對于非ARI和ARI requester ID,function number字段的大小是不同的。
- 錯誤信號消息必須使用默認的流量類別設計符(TC0)。接收器必須檢查違反此規則的情況,如果接收器確定TLP違反了此規則,它必須將TLP作為畸形TLP處理。 這是一個與接收端口相關聯的報告錯誤(見第6.2節)。
消息的發起者通過消息頭標的requester ID進行識別。根復用體將這些錯誤消息轉換成平臺級事件。有關這些消息用途的詳細信息,請參考第6.2節。
ERR_COR消息在消息頭標中有一個ERR_COR Subclass(ECS)字段,該字段允許不同的子類相互區分。見圖2-27,ERR_NONFATAL和ERR_FATAL消息沒有ECS字段。
ERR_COR Subclass(ECS)字段按照表2-22所示進行編碼,以指示ERR_COR消息的子類。
2.2.8.4 鎖定事務支持
解鎖消息用于支持鎖定事務序列。有關鎖定事務序列的詳細信息,請參考第6.5節。以下是形成解鎖消息的規則:
- 表2-23定義了解鎖消息。
- 解鎖消息不包含數據有效載荷(TLP類型是消息)。
- 長度字段是保留的。
- 使用解鎖消息時,requester ID中function number字段是保留的。
- 解鎖消息必須使用默認的流量類別設計符(TC0)。接收器必須檢查違反此規則的情況。如果接收器確定TLP違反了此規則,它必須將TLP作為畸形TLP處理。這是一個與接收端口相關聯的報告錯誤(見第6.2節)。
?
?2.2.8.5 插槽電源限制支持
此消息用于從下游端口(RC或Switch的端口)向同一鏈路上的組件(具有EP、SW或PCI Express-PCI橋接功能)的上游端口傳遞插槽電源限制值。
- 表2-24定義了Set_Slot_Power_Limit消息。
- Set_Slot_Power_Limit消息包含1DW 的有效載荷(TLP類型是MsgD)
- Set_Slot_Power_Limit消息必須使用默認的流量類別設計符(TC0)。接收器必須檢查違反此規則的情況。如果接收器確定TLP違反了此規則,它必須將TLP作為畸形TLP處理。這是一個與接收端口相關聯的報告錯誤(見第6.2節)。
Set_Slot_Power_Limit消息包含一DW的有效載荷。該數據有效載荷從下游端口的插槽能力寄存器復制,并寫入鏈路另一端的上游端口的設備能力寄存器中。數據有效載荷的byte1的bit[1:0]映射到插槽電源限制范圍字段,byte0的bit[7:0]映射到插槽電源限制值字段。數據有效載荷的byte3的bit[7:0]、byte2的bit[7:0]以及byte1的bit[7:2]必須由發送器設置為零,并由接收器忽略。當以下事件發生時,下游端口(RC或SW的端口)必須自動發送此消息:
- 在對插槽能力寄存器進行配置寫入時,數據鏈路層報告DL_Up狀態。
- 在鏈路從非DL_Up狀態轉換為DL_Up狀態的任何時刻,并且插槽控制寄存器中的自動插槽電源限制禁用位為清除狀態。如果插槽能力寄存器尚未初始化,則此傳輸是可選的。
鏈路另一端的組件(具有端點、交換機或橋接功能),接收到Set_Slot_Power_Limit消息后,必須將數據有效載荷中的值復制到與組件的上游端口相關聯的設備能力寄存器中。專門針對系統層(例如,系統主板)集成的PCI Express組件,以及針對集成在適配器上的組件,如果整個適配器的功耗低于適配器外形規格中指定的最低電源限制(如相應外形規格中定義的),則允許將設備能力寄存器中的所有插槽電源限制范圍和插槽電源限制值字段的值硬連線為全零,并且不需要將Set_Slot_Power_Limit消息的有效載荷復制到該寄存器中。?
?
?
?
?