我最近用perf
它来对程序进行基准测试。它有一个事件
de_dis_uops_from_decoder.opcache_dispatched
显示“从 OpCache 调度的操作数”。(这里是相关源代码)。然后我想获取 L2 缓存在 op 缓存中使用的缓存行大小之类的信息。维基芯片显示 zen2(我使用 ryzen 7 4800h cpu)具有有关 op 缓存的“8 Op 行大小”和“每个条目包含最多 8 个连续指令”(wikichip 引用的 amd 专利文件也说明了 op 缓存的实现方式)。
我在网上搜索后知道如何获取 L1~L3 缓存信息。
我想获取更多与我的 CPU 相关的信息,而不是上述 wikichip 链接提供的信息。那么有没有一个 Linux 工具可以查看操作缓存如果可以的话,如何方便地获取?或者如果可以的话,如何使用代码获取?
以下是如何查看 L1~L3 缓存信息,其中包括“集合”,“COHERENCY-SIZE”(即缓存行大小)等:
$ lscpu --cache
NAME ONE-SIZE ALL-SIZE WAYS TYPE LEVEL SETS PHY-LINE COHERENCY-SIZE
L1d 32K 256K 8 Data 1 64 1 64
L1i 32K 256K 8 Instruction 1 64 1 64
L2 512K 4M 8 Unified 2 1024 1 64
L3 4M 8M 16 Unified 3 4096 1 64