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

如何在汇编中制造指令Cache冲突?(基于2路组相联Cache)

Cache参数说明
  • 默认Cache大小:4 KB
  • 行大小:32字节
  • 地址位划分:
    • 组数:Cache大小/(2×行大小)(因采用2路组相联Cache,故乘以2)= 4096/(2×32) = 64组
    • 偏移位:行大小为32B,故需5位偏移位
    • 组索引:共64组,故需6位组索引
    • 标签位:剩余21位为标签位
需求说明

我希望访问多个映射到指令Cache同一组的不同地址,当访问第三个地址时,能触发其他Cache行的替换!

已尝试的汇编代码
#Loop to repeat accesses 
  li    x3, 0

  la    t0, jump_inst_set_0
  la    t1, jump_inst_set_1
  la    s1, jump_inst_set_0_1
  la    t2, wfi_label
  
  jalr  t0

  skip_wfi:
  addi s0, s0, 1
  jal wfi_label
  
  addi x3, x3, 1
  li x4, 5
  bne x3, x4, repeat

  exit_tst


.org 0x3000
.align 2
jump_inst_set_0:
  jr  t1

.org 0x4000
.align 2
jump_inst_set_1:
  jr  s1

.org 0x5000
.align 2
jump_inst_set_0_1:
  jr  t2

.org 0x6000
.align 2
wfi_label:
beq s0, x0, skip_wfi
  add x0, x0, x0
  ret
实现思路

通过设置符合地址映射规则的内存地址,访问这些地址以触发Cache冲突。

内容的提问来源于stack exchange,提问作者Muhammad Zahid iqbal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:22:36