Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SpacemiT K3 / X100 PMU Raw Event 映射记录

状态:实验记录,2026-08-21
目标:整理 K3/X100 当前公开的 mhpmevent raw selector → Linux perf event 映射,并记录已知映射问题。
注意:本文优先依据 SpacemiT 公开 K3 Device Tree、Bianbu perf 文档和官方论坛问题帖。

资料来源

  1. K3 官方 EDK2 Device Tree:X100 PMU 映射

    • https://github.com/spacemit-com/edk2-platforms/blob/k3/Platform/Spacemit/K3/DeviceTree/K3.dts
    • 其中 pmu { compatible = "riscv,pmu"; ... } 节点定义:
      • riscv,event-to-mhpmevent
      • riscv,event-to-mhpmcounters
      • riscv,raw-event-to-mhpmcounters
  2. Bianbu 官方 Perf Usage Note

    • https://github.com/spacemit-com/docs-bianbu/blob/375fb8d5d8e97c30a555e0d3e499ed652d0a8b2c/en/development/perf.md
    • 说明 RISC-V Linux perf、SBI PMU、Device Tree riscv,pmu 节点与 raw hardware event 的关系。
    • 也说明 raw event 可通过 perf -e rNNN 或 PMU event=... 形式使用。
  3. K3 Datasheet

    • https://github.com/spacemit-com/docs-chip/blob/main/en/key_stone/k3/k3_docs/k3_ds.md
    • Datasheet 明确 X100 与 A100 均集成 RISC-V PMU;A100 支持 1024-bit RVV。

Perf Event映射链路

Linux perf event
    ↓
SBI PMU generic/cache event ID
    ↓
OpenSBI 解析 Device Tree: riscv,event-to-mhpmevent
    ↓
mhpmeventN 写入 raw selector
    ↓
X100 PMU 硬件计数

下面表格里的 Raw mhpmevent 是最终写入硬件 HPM event selector 的值

例如:

perf: stalled-cycles-frontend
        ↓
SBI/DT event ID: 0x00008
        ↓
mhpmevent raw selector: 0x03

X100:Raw mhpmevent → perf Event 映射

Raw mhpmeventSBI / DT Event IDLinux perf 语义建议的 perf 名称当前状态
0x010x00005Retired branch instructionsbranches / branch-instructions✅ 已公开映射
0x020x00006Branch mispredictionsbranch-misses✅ 已公开映射
0x030x00008Stalled cycles - frontendstalled-cycles-frontend✅ 已公开映射
0x040x00009Stalled cycles - backendstalled-cycles-backend✅ 已公开映射
0x050x10001L1D read missL1-dcache-load-misses✅ 已公开映射
0x060x10000L1D read accessL1-dcache-loads✅ 已公开映射
0x070x10005L1D prefetch missL1-dcache-prefetch-misses✅ 已公开映射
0x080x10004L1D prefetch accessL1-dcache-prefetches✅ 已公开映射
0x090x10003L1D write missL1-dcache-store-misses✅ 已公开映射
0x0a0x10002L1D write accessL1-dcache-stores✅ 已公开映射
0x0b0x10009L1I read missL1-icache-load-misses✅ 已公开映射
0x0c0x10008L1I read accessL1-icache-loads✅ 已公开映射
0x160x10018DTLB read accessdTLB-loads✅ 已公开映射
0x190x1001bDTLB write missdTLB-store-misses✅ 已公开映射
0x1a0x1001aDTLB write accessdTLB-stores✅ 已公开映射
0x1b0x10021ITLB read missiTLB-load-misses✅ 已公开映射
0x1c0x10020ITLB read accessiTLB-loads✅ 已公开映射
0x1e0x00001CPU cyclescycles✅ 已公开映射
0x1f0x00002Retired instructionsinstructions✅ 已公开映射

当前 DTS 允许使用、但公开资料尚未给出语义的 Raw Event

K3 官方 DTS 的 riscv,raw-event-to-mhpmcounters 还允许下列 raw selector 被配置到普通 HPM counter:

0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08
0x09 0x0a 0x0b 0x0c
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17
0x18 0x19 0x1a 0x1b 0x1c
0x1e 0x1f
0x20 0x21 0x22
0x24 0x25 0x26 0x27 0x28 0x29
0x2b 0x2d
0x32 0x33 0x34 0x35 0x36 0x37 0x38
0x3a 0x3b 0x3c 0x3d 0x3f

其中只有一部分已经通过 riscv,event-to-mhpmevent 给出公开语义。

官方论坛对“完整 PMU event 对照表”的公开答复是:

这个暂时不对外提供的

来源同上:

  • https://forum.spacemit.com/t/topic/1500