【问题标题】:Calculate a miss rate for a direct mapped cache计算直接映射缓存的未命中率
【发布时间】:2014-06-26 14:53:43
【问题描述】:

假设这是一个 MIPS 处理器,字长为 32 位,地址是字对齐的。

问题如下:

计算大小(容量)为 16 个字且块大小为 4 个字的直接映射缓存的未命中率。假设缓存最初是空的。代码如下:

lw $s0, 0($0)
lw $s0, 0x10($0)
lw $s0, 0x20($0)
lw $s0, 0x30($0)
lw $s0, 0x40($0)

我确实有这个问题的答案,它是 2/5 = 40%,但我认为它是 100%。我不确定我错过了什么。谁能解释一下如何计算未命中率?

这是我的推理

这是一个 16 字直接映射缓存,每块 4 个字。这意味着有 4 组,16/4 = 4。由于地址是字对齐的,字大小是 4 个字节(32 位),地址的低两位无关紧要。由于每个块有 4 个字,这意味着需要接下来的 2 位来确定块偏移量,并且由于有 4 组,因此需要接下来的两位来确定组号。剩下的都用于标签。

                   -----------------------------------------------------
address           |    tag    | set number | block offset | byte offset |
                  |-----------|------------|--------------|-------------|
bit number        | 31      6 | 5        4 | 3          2 | 1         0 |
                   -----------------------------------------------------

地址 0x0 映射到设置 0。由于块大小为 4 个字,CPU 需要在地址 0x0、0x4、0x8、0xC 加载 4 个字。

地址0x10,映射到set 1。CPU需要加载4个字,地址为0x10、0x14、0x18、0x1C

地址 0x20、0x30 和 0x40 也是如此。我错过了什么?

感谢任何帮助。

【问题讨论】:

  • 没错,我假设是字寻址。你介意扩大答案吗?我不太清楚。

标签: caching memory memory-management computer-architecture cpu-cache


【解决方案1】:

据我所知,你的分析是正确的(还假设您没有从给定的问题中遗漏任何东西……比如添加到缓存控制器中的一些额外“智能”)

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2018-06-24
    • 2018-05-24
    相关资源
    最近更新 更多