【问题标题】:Direct Mapped Cache of Blocks Example块的直接映射缓存示例
【发布时间】:2015-07-07 21:54:47
【问题描述】:

所以我在我的家庭作业中有这个问题,我有点挣扎。我查看了我的讲座内容/笔记,并能够利用它们来回答问题,但是,我不能 100% 确定我做的一切都是正确的。问题中有两部分(C 部分和 D 部分),即使在查阅了我的笔记和在线资源之后,我也无法弄清楚。我不会以任何方式为这两个部分寻找解决方案,但如果我能至少在正确的方向上推动我如何解决它,我将不胜感激。

我知道这是一个相当大的问题,但是,我希望有人可以检查我的答案,并告诉我我所有的工作和研究这个问题的方法是否正确。一如既往,感谢您的帮助:)

好的,现在我们已经完成了手续,

--------------这是问题:------------- -------------

假设构建了一个包含 32 个块的小型直接映射块缓存。每个缓存块存储 八个 32 位字。主存储器(可按字节寻址 1)大小为 16,384 字节。存储 32 位字 字在内存中对齐,即在可被 4 整除的地址处。

(a) 内存可以存储多少个 32 位字(十进制)?

(b) 寻址每个内存字节需要多少地址位?

(c) 十六进制的内存地址范围是多少?即第一个字节和最后一个字节的地址是什么 记忆?我给你个提示:内存地址从0开始编号。

(d) 内存中最后一个字的地址是什么?

(e) 使用第 5 章讲义中讨论的缓存映射方案,有多少位和哪些地址位 将用于形成块偏移?

(f) 将使用多少和哪些内存地址位来形成缓存索引?

(g) 将使用多少位和哪些地址位来形成每个缓存块的标记字段?

(h) 内存地址 0x2A5C 映射到哪个缓存块(十进制)?

(i) 0x2A5C 的块偏移量(十进制)是多少?

(j) 有多少其他主存储器字会映射到与 0x2A5C 相同的块?

(k) 当 0x2A5C 处的字被移动到缓存块中时,另一个的内存地址(十六进制)是多少 哪些单词也会被移到这个块中?将您的答案表达为一个范围,例如 [0x0000, 0x0200]。

(l) 映射到缓存块的主内存块的第一个字将始终位于 能被__整除(十进制)?

(m) 包括每个缓存块的 V 和标记位,缓存的总大小是多少(以字节为单位)

(n) 分配给数据位的大小是多少(以字节为单位)?

----------我的答案和工作------ -----------------

a) 内存 = 16384 字节。 16384 字节成位 = 131072 位。 131072/32 = 4096 个 32 位字

b) 2^14(主存储器)* 2^2(4 位/字)= 2^16。取 log(base2)(2^16) = 16 位

c) 无法弄清楚这部分(希望能提供一些意见(不是解决方案)关于我如何着手解决这个问题

d)这部分也想不通:(

e)每个高速缓存行中有 8 个字。 8 * 4(2^2 位/字) = 每个高速缓存行中的 32 位。 log(base2)(2^5) = 5 位用于块偏移

f) 块数 = 2^5 = 32 个块。 log(base2)(2^5) = 5 位缓存索引

g) 标签 = 16 - 5 - 5 - 2(字对齐) = 4 位

h) 0x2A5C

   0010    10100      10111          00 

   tag     index      offset  word aligned bits

映射到缓存块索引 = 10100 = 0x14

i) 映射到块偏移 = 10111 = 0x17

j) 4 个标记位,5 个块偏移 = 2^9 个其他主存储器字

k) 它是块偏移的排列。所以它映射内存地址与0x00 0x01 0x02 0x04 0x08 0x10 0x11 0x12 0x14 0x18 0x1C 0x1E 0x1F

相同的标签和缓存索引位和块偏移

l)能被 4

整除

m) 2(V+tag+data) = 2(1+4+2^3*2^5) = 522 bits = 65.25 bytes

n) 数据位 = 2^5 块 * 每块 2^3 字 = 256 位 = 32 字节

【问题讨论】:

    标签: memory cpu-cache


    【解决方案1】:

    C 部分: 如果内存有 M 个字节,并且内存是字节可寻址的,则内存地址范围为 0M - 1

    对于您的问题,这意味着内存地址范围从 0 到 16383,或十六进制 0x0 到 0x3FFF。

    D 部分: 字长 4 个字节。因此,鉴于您对 C 的回答,最后一句话是:

    (0x3FFFF - 3) -> 0x3FFC.
    

    您可以看到这是正确的,因为地址的最低 2 位为 0,这对于任何 4 字节对齐的地址都必须为真。

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2012-04-11
      • 2018-06-24
      • 1970-01-01
      • 2018-05-24
      • 2014-06-04
      • 2012-07-09
      • 2013-11-24
      相关资源
      最近更新 更多