PCIe Chapter 30:Root Complex 連結宣告、身分與裝置資料

Vendor/Device ID 協助辨識裝置類型;序號與 VPD(Vital Product Data,重要產品資料)描述個別產品;Root Complex 的連結宣告則描述系統內部關係。先確定要查什麼,再選能力結構,才能避免把型號、個體與拓樸混在一起。

本章角色與事件不同能力描述拓樸、身分或產品資料;先選查詢目的。設定空間:找能力與版本辨識資料代表的對象按相應介面完成查詢保留身分、來源與有效條件
作者依 Base 6.0 繪製的教學示意;省略與本章無關的交換。

想確認是同型號的哪一張卡,下一步查什麼?

先沿 Chapter 3 的 Vendor/Device ID 確認類型,再依裝置實作查看 Device Serial Number(裝置序號)或產品資料。Table 7-222 定義 64-bit 裝置序號及其 byte 對應;VPD 則可包含 part number、serial number 等維護資訊。兩種資料應保留其來源,不能把型號ID直接當成個別卡的唯一身分。

VPD
Vital Product Data,產品識別與描述資料

【模擬資料】假設 Serial Number Register 的低 DWORD 為 44332211h、高 DWORD 為 88776655h。依 Table 7-222 將 register bytes 對回 EUI-64,可得到 11-22-33-44-55-66-77-88。這些是作者假設的 bytes,不代表已配發的識別碼;與其他表示方式比較前,先依表格確認 byte 對應。

PCIe Base 6.0 §7.9.3.2,Figure 7-243/Table 7-222,印刷/PDF pp.1206–1207。

一段產品名稱,如何從 VPD 介面讀到?

VPD(Vital Product Data,重要產品資料)提供產品名稱和維護資訊。先走一般 Capability List 找到 VPD Capability,再用 Figure 7-328 定位 Address Register(結構起點加 02h)和 Data Register(加 04h)。這裡的 VPD Address 是儲存區內的 byte 位址,不是 Configuration Space offset。

【模擬資料】以下資料為教學用途建立,不代表特定硬體或平台。假設本 Function 的 VPD 儲存區至少可讀到 07h,前八個 bytes 依序為 82 05 00 43 41 52 44 31。以下只示範讀取產品名稱,並未提供完整 VPD 或其校驗資料。

順序Address Register 的單次寫入等待硬體讀取 Data
第一筆Address=0000h,F=0F 變為 143000582h:bytes 82 05 00 43
第二筆Address=0004h,F=0F 變為 131445241h:bytes 41 52 44 31

Table 7-289 要求位址為 DWORD 對齊,最低兩 bits 為零。Table 7-290 指出 Data 的最低 byte 對應所選 VPD Address;Data Register 的存取 Byte Enable 必須是 1111b。等第一筆 F=1 後讀出四個 bytes,再寫入第二個地址。尚未完成前寫 Address 或 Data,讀取流程的行為為 undefined;超出儲存區範圍也為 undefined。

把八個 bytes 接起來後,查 Table 6-20:82h 的 bit7=1,表示 Large Resource;其 item name=02h 是 Identifier String。接下來 05 00 是 little-endian 長度 5,剩餘五個 ASCII bytes 43 41 52 44 31 組成 CARD1。這是作者設計的名稱。之後還須繼續讀取才能找到 VPD-R、VPD-W、End Tag,並檢查適用的 VPD-R checksum;這八個 bytes 不足以判斷完整 VPD 是否有效。

寫入 VPD 的流程不同:先寫四個 bytes 至 Data,再以單次 Address 寫入設定目標位址及 F=1,等待硬體把 F 清為 0。等待期間若寫入 Address 或 Data,儲存操作結果為 unpredictable。可寫範圍、裝置維護流程與權限要依實際文件確認;VPD 本身是儲存資料,並不直接控制裝置操作。

PCIe Base 6.0 §7.9.18–7.9.18.2,Figures 7-328–7-330、Tables 7-289–7-290,印刷/PDF pp.1274–1276;§6.27,Tables 6-19–6-21,pp.830–832。

廠商定義資料,應該先確認誰的定義?

先確認結構所在的 Capability List,再核對定義者、結構識別、版本和長度。三種機制的位置和標頭不同:

結構如何定位定義者及內容
Vendor-Specific Capability一般 Capability ID=09h;Figure 7-244 的前三個 bytes 包含 ID、Next Pointer 和 Capability Length。
VSECExtended Capability ID=000Bh;先核對 Function 的 Vendor ID,再讀 Vendor-Specific Header 中的 VSEC ID、Rev、Length。
DVSECExtended Capability ID=0023h;Figure 7-250/7-251 分別定位 DVSEC Vendor ID、Revision、Length 和 DVSEC ID。廠商資料從結構 offset 0Ah 開始。
VSEC
Vendor-Specific Extended Capability,廠商專屬擴充能力
DVSEC
Designated Vendor-Specific Extended Capability,指定廠商專屬擴充能力

VSEC(Vendor-Specific Extended Capability,廠商特定延伸能力)的定義者由 Function 的 Vendor ID 指出;RCRB 的 VSEC 則要查其 RCRB Header 的 Vendor ID。DVSEC(Designated Vendor-Specific Extended Capability,指定廠商特定延伸能力)另有自己的 DVSEC Vendor ID。Base 定義如何辨識結構,資料區的語意仍要查對應定義文件;相同數字不能跨廠商直接套用。

PCIe Base 6.0 §§7.9.4–7.9.6.3,Figures 7-244–7-251、Tables 7-223–7-228,印刷/PDF pp.1207–1212。

RCEC 的關聯資訊如何指向整合端點?

Root Complex 可以把內部操作隱藏為 opaque model(不透明模型),也可以讓軟體看到邏輯元件與 RCRB(Root Complex Register Block,根複合體暫存器區塊)。Figure 6-11 說明可見的單一元件;內部連結宣告的用途是描述軟體可見關係,不能單憑它還原完整實體佈線。

RCEC(Root Complex Event Collector,根複合體事件收集器)另以 Endpoint Association Capability 描述相關 RCiEP(Root Complex Integrated Endpoint,根複合體整合端點)。先依 Figure 7-269 找 bitmap,再讀 Capability Version:Version 2 才包含 Associated Bus Numbers Register。

【模擬資料】假設 RCEC 位於 Bus 10h、Device 2,Association Bitmap=00000024h,即 bit2 與 bit5 設為一。bit2 是 RCEC 自身 Device Number 的必要位元;若同一 Bus 的 Device 5 確為 RCiEP,bit5 表示它與此 RCEC 關聯。bitmap 的索引是 Device Number,並非 Function Number。

再假設 Version=2,RCEC Next Bus=20h、RCEC Last Bus=22h:這個範圍可涵蓋額外 Bus 上的 RCiEP;範圍內的 Root Port 不因此成為關聯端點,這個 Bus 範圍也不表示對其中 VF 的關聯。若所有關聯裝置都在 RCEC 的同一 Bus,規格使用 Next Bus=FFh、Last Bus=00h。Association 描述事件收集的關聯,仍須另查各 Function 的身分與資源。

VF
Virtual Function,虛擬功能

PCIe Base 6.0 §6.10,Figure 6-11,印刷/PDF pp.748–749;§§7.9.10–7.9.10.3,Figures 7-269–7-271、Tables 7-241–7-242,pp.1227–1229。

版本與來源

本章以 PCI Express Base Specification Revision 6.0(6.0-1.0-PUB)為準,文件頁與 PDF 頁相同。案例的配置與讀值均為作者假設,並非實機測量。

完整來源定位
  • §6.10 Root Complex Topology Discovery; Figure 6-11 Root Complex Represented as a Single Component; pp.748–749
  • §6.27 Vital Product Data (VPD); pp.830–832; Tables 6-19, 6-20, 6-21
  • §7.9.18–7.9.18.2; pp.1274–1276; Figures 7-328–7-330; Tables 7-289–7-290
  • §7.9.3.2 Serial Number Register; §7.9.4 Vendor-Specific Capability; §7.9.5 Vendor-Specific Extended Capability; §7.9.6 Designated Vendor-Specific Extended Capability (DVSEC); pp.1206–1212; Figures 7-243–7-251; Tables 7-222–7-228
  • §7.9.10–7.9.10.3; pp.1227–1229; Figures 7-269–7-271; Tables 7-241–7-242
Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...