Arm 一致性網狀網路 PMU

CMN-600 是一個可配置的網狀互連,由一個矩形交叉點 (XP) 網格組成,每個交叉點最多支援兩個裝置埠,各種 AMBA CHI 代理連線到這些埠。

CMN 實現了一個分散式 PMU 設計,作為其除錯和跟蹤功能的一部分。 它由每個 XP 處的本地監視器 (DTM) 組成,該監視器對來自連線的裝置節點和/或 XP 本身的最多 4 個事件訊號進行計數。 這些本地計數器的溢位累積在主控制器 (DTC) 實現的最多 8 個全域性計數器中,該控制器提供全域性 PMU 控制和全域性計數器溢位的中斷。

PMU 事件

PMU 驅動程式為整個互連註冊單個 PMU 裝置,請參閱 /sys/bus/event_source/devices/arm_cmn_0。 多晶片系統可以透過外部 CCIX 連結將多個 CMN 連線在一起 - 在這種情況下,每個網狀網路完全獨立地計數其自己的事件,並且附加的 PMU 裝置將被命名為 arm_cmn_{1..n}。

大多數事件以直接基於 TRM 定義的格式指定 - “type” 選擇相應的節點型別,“eventid” 選擇事件編號。 某些事件需要額外的佔用 ID,該 ID 由 “occupid” 指定。

  • 由於 RN-D 節點與 RN-I 節點沒有任何不同的事件,因此它們被視為相同的型別 (0xa),並且通用事件模板被命名為“rnid_*”。

  • 週期計數器被視為屬於 DTC 節點的合成事件(“type” == 0x3,“eventid” 被忽略)。

  • XP 事件還在 “eventid” 欄位中編碼埠和通道,以匹配 pmu_event_sel 暫存器的底層 pmu_event0_id 編碼。 事件模板以字首命名,以覆蓋所有排列。

預設情況下,每個事件提供給定型別的所有節點的聚合計數。 要定位特定節點,“bynodeid” 必須設定為 1,並且 “nodeid” 設定為從 CMN 配置派生的適當值(如 TRM 的“節點 ID 對映”部分中所定義)。

觀察點

PMU 還可以計數觀察點事件以監視特定的微片流量。 觀察點被視為一種合成事件型別,並且與 PMU 事件一樣,可以是全域性的,也可以使用特定 XP 的 “nodeid” 值進行定位。 由於觀察點方向在底層暫存器選擇中是隱含的,因此為微片上傳和下載提供了單獨的事件。

微片匹配值和掩碼在 config1 和 config2 中傳遞(分別為“val”和“mask”)。 “wp_dev_sel”、“wp_chn_sel”、“wp_grp” 和 “wp_exclusive” 根據 dtm_wp_config0 的 TRM 定義指定。 如果觀察點需要匹配 REQ 或 SNP 通道上兩個匹配組的欄位,則可以將其指定為兩個事件 - 每個組一個 - 具有相同的非零 “combine” 值。 這種組合事件對的計數將歸因於主要匹配。 “combine” 值為 0 的觀察點事件被認為是獨立的,並將單獨計數。