计算缓存未命中率 - 设置关联

时间:2018-05-31 13:34:11

标签: caching assembly mips cpu-architecture

一块MIPS代码:

.data
first-node : .word 10,next-node
next-node: .......
.text
la $s0,first-node
move $s1,$zero
loop:
la $t0,0($s0)
add $s1,$s1,$t0
lw $s0,4($s0)
bne $s0,$zero,loop

我们得到了4096个节点的列表,

单向缓存

16集

块大小:128字节

页面大小为4KB的虚拟内存

1)找出缓存的未命中率

  • 未命中率第16次操作? **答案:** 4/4 + 2(4因为循环中有4个实例,循环前有2个) - 4/6 = 66%
  • 未命中率第17次迭代 答案:

1/6(1因为它加载了一棵新树(我认为),而6是总实时)= 17%

  • 未命中率第18次 - 第32次迭代? 答案:

0/6(如果我们必须加载下一棵树,我不明白为什么为0)= 0%

  • 总失误率?答案: 4 * 16 + 1 * 15/16 * 16 * 6 = 5%(这部分我没有理解)

2)执行了多少页错误? 答案: 9页错误

3) TLB中的未命中率是多少? 答案: 9/6 * 4096 0,03%

我们在课堂上回答了所有这些问题,但我不明白其中很多人可以解释一下吗?

单向和双向有什么区别?如果它更大应该是更少的失误率,是吗?问题是如何计算?

0 个答案:

没有答案