You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派5(Cortex-A76)单线程场景下,如何通过缓存缺失衡量DRAM流量?

树莓派5(Cortex-A76)缓存层级与perf测量问题解答

背景

在树莓派5(4核Cortex-A76)上运行单线程卷积基准测试,计划用perf stat的缓存缺失次数作为DRAM内存流量的代理指标,先明确缓存层级:

  • L1缓存:每个核心私有,包含64KB指令缓存(I-cache)+64KB数据缓存(D-cache)
  • L2缓存:每个核心私有,512KB统一缓存
  • L3缓存(SLC系统级缓存):4核共享,2MB统一缓存,是DRAM前的最后一级缓存(LLC)

问题解答

1. perf stat -e cache-misses对应L2还是L3缺失?

cache-misses是perf的通用事件,在Cortex-A76架构的树莓派5上,这个事件默认对应L2缓存缺失。ARM架构的perf通用事件映射规则中,cache-misses通常绑定到单核心私有最后一级缓存(即L2)的缺失事件,而非共享的L3/SLC。

2. 作为DRAM访问的代理指标,应测量L2还是L3/SLC缺失?

必须选择L3/SLC缺失。原因很简单:L2缺失后,请求会进入共享的L3/SLC,如果L3命中,就不会触发DRAM访问;只有当L3/SLC也缺失时,才会发起DRAM读写请求。因此,只有L3/SLC缺失次数才能准确代表实际的DRAM流量,是可靠的代理指标。

3. 树莓派5上能否通过perf观测SLC?

可以,但需要使用ARM架构的特定PMU事件,而非通用事件:

  • 先查看预定义事件:进入/sys/bus/event_source/devices/armv8_pmuv3/events/目录,查找包含slc或llc关键字的事件文件,比如slc_access、slc_miss(不同系统命名可能略有差异)
  • 如果没有预定义事件,可直接使用原始PMU事件编码。Cortex-A76的SLC缺失对应事件编码通常为0x16(对应L3_CACHE_REFILL事件,即SLC缺失需要从DRAM填充时触发)
  • 使用示例:
    perf stat -e r016 ./your_convolution_benchmark
    
    注意:SLC是共享缓存,但单线程绑定核心后,计数器只会统计该核心触发的SLC请求缺失,不会包含其他核心的流量,完全适配你的单线程测试场景。

内容的提问来源于stack exchange,提问作者Thuy Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:04:54