缓存命中还是错过?

时间:2014-01-31 13:00:12

标签: caching assembly computer-architecture

任何人都可以解决缓存中命中或遗漏这些指令的位置吗?

在Nios-II中组装(http://www.altera.com/literature/hb/nios2/n2cpu_nii5v1.pdf

大小:128字节。 长度:16字节。 双向设置关联。

1 movia r8, 0x357B40
2 ldw r10, 0 (r8 ) # 0x357B40
3 ldw r11, 16 (r8 ) # 0x357B50
4. ldw r12, 40 (r8 ) # 0x357B68
5. stw r13, 132 (r8) # 0x357BC4
6. ldw r14, 8 (r8) # 0x357B48
7. stw r15, 135(r8) # 0x357BC7
8. ldw r16, 64 (r8) # 0x357B80

2 个答案:

答案 0 :(得分:0)

您问题的唯一正确答案是“不,没有人可以确定哪些指令会导致缓存命中或缓存未命中”。

这有两个原因。第一;在执行此代码之前,我们任何人都无法确定缓存中的内容。第二;我们任何人都无法确定是否/何时会发生任何IRQ,或者排除IRQ执行将数据推出缓存或将某些内容提取到缓存中的可能性。

然而;如果我们假设根本没有IRQ,并且还假设缓存是空的;然后你的问题的答案是“是的,有人可以确定哪些指令会导致缓存命中或缓存未命中”。

答案 1 :(得分:0)

是假设没有其他事情发生(没有ISR等)你可以确定哪些指令会导致高速缓存未命中以及哪些高速缓存命中指令(其中一些可能需要像这样的假设)此代码启动时缓存中没有任何内容,其他代码不是。

不打算为你做功课。