PCIe Chapter 37:效能推估與跨章觀察
Link容量只是效能分析的起點。封包開銷、要求大小、可同時在途的數量、往返等待與共同路徑,都會影響有效資料率。這章用作者假設的工作負載,把前面的格式、流量控制、排序與量測接在一起。
64 GT/s ×4,可以直接當成 32 GB/s 的應用速度嗎?
作者推演:按每方向每Lane計,64×4÷8=32 GB/s,是編碼位元對應的線路容量。若只扣256-byte Flit中236-byte TLP區域,得到32×236÷256=29.5 GB/s。這仍包含交易標頭等內容,還沒有扣填充、控制交換與等待。
- TLP
- Transaction Layer Packet,交易層封包
Base §8.1明確指出PAM4的兩個bits已計入GT/s,因此不能再把結果乘2。若看雙方向合計,必須另註明是全雙工總量,不能拿來宣稱單方向工作負載可以達到相同值。
- PAM4
- Pulse Amplitude Modulation with 4 levels,四階脈衝振幅調變
讀取要求太少,會留下多少空檔?
作者假設:目標有效資料率16 GB/s,每筆平均回傳512 bytes,從送出到收齊平均等2 µs。僅考慮在途資料覆蓋等待,需同時覆蓋16×109×2×10−6=32,000 bytes,約需向上取整的63筆要求。
如果只允許8筆在途,這個簡化模型最多覆蓋4,096 bytes,資料率約2.048 GB/s。增加併行只處理等待覆蓋,仍受Tag、credit、目的端服務及共享路徑限制。這個2 µs是作者假設,和Completion Timeout範圍無關;規格禁止用後者估計一般服務延遲。
速度沒變,如何分辨等待發生在哪裡?
教學情境:同一條 Link 持續以預期速度和寬度運作,應用讀取量卻低於預期。先固定量測期間、傳輸方向、Request 大小及在途數,再把不同觀察各自能回答的問題列出來。
手機閱讀時,可左右滑動表格查看完整內容。
| 觀察資料 | 可以接著追問 | 還不能單獨判定 |
|---|---|---|
| 在途 Memory Read 長期只有 8 筆,平均完成時間約 2 µs | 沿前面的假設,以每筆平均 512 bytes 估算,等待覆蓋約為 2.048 GB/s;再查 Tag 與發送端限制。 | 只憑在途數,不能決定限制來自驅動、Requester、Tag 或工作負載。 |
| 某方向所需的 Credit 一段時間不足 | 確認 TLP 類別、Virtual Channel、Credit 更新與兩端觀察時間。 | 不能由單一快照推定目的裝置故障,也不能忽略 Ordering 或仲裁。 |
| 觀察到 Replay 或 Recovery | 對照位置、時間、錯誤狀態與實際重新傳送量。 | 事件存在本身不能量化對整體吞吐量的影響。 |
| 各 Link 流量與服務時間不同 | 沿完整路徑找出共同使用的 Link 與目的端,再對照資料方向。 | 單一 Link 狀態不能代表整條路徑的負載。 |
第一列的 512 bytes、2 µs 與 8 筆是作者設定的數值;估算只覆蓋等待,不保證實際結果。先回 Chapter 17 確認 Credit,再視需要查 Chapter 18 的 Replay 或 Chapter 36 的排序依賴。
要查重送等待,應該怎麼設定量測?
先用Figure 7-205找到能力,再用Figure 7-207/Table 7-188讀可同時追蹤的狀態事件數。Figure 7-208/Table 7-189選擇Flit-to-Ack、Flit-to-Nak或Nak-to-Replay,以及要追蹤的Flit種類與數量。不得啟用超過能力數量的狀態事件。
測量進行中,指定控制欄位的變更行為未定義。讀結果時,先用Figure 7-209/Table 7-190確認Not started、Started、Completed或Error,不能把未完成計數當成穩定結果。
本版來源疑義:Table 7-189的測量啟用說明寫8 ns單位;Table 7-190卻把counter欄命名為LTSSM State Transition Tracking Counter並列64 µs。本文保留這個差異,不用該counter換算Flit延遲;須先取得相應勘誤或實作依據。
- LTSSM
- Link Training and Status State Machine,鏈結訓練與狀態機
只想追蹤一種 LTSSM 轉換,如何設定?
- LTSSM
- Link Training and Status State Machine,鏈結訓練與狀態機
教學假設:某 Downstream Port 處於 FLIT Mode,已找到 Flit Performance Measurement Extended Capability;Capability Register 的 LTSSM Tracking Register Count 回報 1。這代表可同時追蹤一個 LTSSM 狀態轉換事件,不代表所有相關量測都只能執行一次。
先看 Figure 7-205 找到相對位置,再查 Figure 7-208 和 Table 7-189。若要追蹤 L1.0 to L0,選擇 LTSSM State Transition Tracker 的 bit 16。由於範例的 Count 為 1,不能同時再啟用 bit 18 的 L1.2 to L0;要比較兩者,可在完成並停止一次量測後,另行設定第二次。
Flit Response Type 是另一組選擇:bit 1、2、3 分別對應 Flit-to-Ack、Flit-to-Nak、Nak-to-Replay。選擇哪一種,取決於想觀察哪個 Link 事件。量測期間不任意修改規格指出會造成未定義行為的控制欄位。
讀 Flit Latency Tracking Status 時,Table 7-190 將 00b、01b、10b、11b 分別定義為 Not started、Started、Completed、Error;Error 包含 counter overflow。Completed 表示該追蹤完成,仍需確認選定的事件與測量範圍,不能直接把它當成應用程式延遲。本版的計數器名稱與單位疑義見前面的說明。
把觀察接回原因,怎麼避免重複查同一件事?
先看Link是否達到預期速率/寬度,再確認資料大小與併行是否足以使用容量。若仍停頓,按缺少credit、重送、目的端服務或共同上游路徑逐一縮小範圍。延遲與吞吐量是不同觀察,應使用能對應其範圍的資料。
本章只回顧分析需要的關係;封包長度回Chapter 14,通道資源回Chapter 16–17,訓練與電氣回Chapter 19–21,排序與同步回Chapter 36。沿這些連結回到原理,讓每種機制保留一個主要解說位置。
版本與來源
本章以 PCI Express Base Specification Revision 6.0(6.0-1.0-PUB)為準,文件頁與 PDF 頁相同。案例的配置與讀值均為作者假設,並非實機測量。
完整來源定位
- Base 6.0 §8.1 Electrical Specification Introduction, p.1317; §4.2.3.3 Data Stream in Flit Mode, p.351
- Base 6.0 §2.8 Completion Timeout Mechanism, p.259
- Base 6.0 §7.8.12 Flit Performance Measurement Extended Capability, §7.8.12.2–§7.8.12.4; pp.1166–1170; Figures 7-205 Flit Performance Measurement Extended Capability Structure, 7-207 Flit Performance Measurement Capability Register, 7-208 Flit Performance Measurement Control Register, 7-209 Flit Performance Measurement Status Register; Tables 7-188 Flit Performance Measurement Capability Register, 7-189 Flit Performance Measurement Control Register, 7-190 Flit Performance Measurement Status Register


Comments