2

我正在做作业,但我不确定如何计算总缓存未命中数。我一直试图理解它,但它对我来说没有意义。我得到了一些 Mips 代码,我需要计算缓存未命中的数量。这是问题所在:

直接映射缓存。我们得到一个包含 1024 个块的直接映射缓存。每个块是一个 MIPS 字(32 位)。每当发生写未命中时,缓存都会使用回写。主存储器由 2^30 个字组成。最初,缓存是空的。
确定以下指令序列的缓存未命中总数。

lw $s0, 4($sp) 
lw $s0, 8($sp) 
sw $s0, 8($sp) 
sw $s1, 4($sp) 
lw $s0, 4($sp)

我不是在寻找答案。我想学习如何做到这一点,因为我在家庭作业中遇到了更多这样的问题。我想对此进行演练。与此同时,我将研究这个话题,试图找出答案。

4

1 回答 1

2

如果不知道 $SP 的对齐方式,就不可能知道有多少缓存未命中。如果 SP 在 32 字节边界上对齐,那么在第一次访问时将只有一个缓存行未命中。如果 SP 包含地址 0x18,那么您将有两个缓存行未命中,因为 4($sp) 和 8($sp) 将访问不同的缓存行。

于 2011-12-01T00:46:28.637 回答