Memory 块的直接映射缓存示例

Memory 块的直接映射缓存示例,memory,cpu-cache,Memory,Cpu Cache,所以我的家庭作业中有一个问题,我有点纠结。我查阅了我的授课内容/笔记,并能够利用这些内容/笔记回答问题,但是,我不能100%确定我做的每件事都是正确的。这个问题有两个部分(C部分和D部分),我甚至在查阅笔记和在线资料后都无法理解。我不想以任何方式为这两个部分寻找解决方案,但如果我能至少在正确的方向上推动我如何着手解决它,我将不胜感激 我知道这是一个相当大的问题,但是,我希望有人能检查我的答案,并告诉我,如果我所有的工作和方法来看待这个问题是正确的。一如既往,感谢您的帮助:) 好吧,既然我们已经办

所以我的家庭作业中有一个问题,我有点纠结。我查阅了我的授课内容/笔记,并能够利用这些内容/笔记回答问题,但是,我不能100%确定我做的每件事都是正确的。这个问题有两个部分(C部分和D部分),我甚至在查阅笔记和在线资料后都无法理解。我不想以任何方式为这两个部分寻找解决方案,但如果我能至少在正确的方向上推动我如何着手解决它,我将不胜感激

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

好吧,既然我们已经办好了手续

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

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

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

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

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

(d) 记忆中最后一个单词的地址是什么

(e) 使用第5章课堂讲稿中讨论的缓存映射方案,需要多少和哪些地址位 是否将用于形成块偏移

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

(g) 每个缓存块的标记字段将使用多少个地址位以及哪些地址位

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

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

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

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

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

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

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

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

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

b) 2^14(主存储器)*2^2(4位/字)=2^16。获取日志(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

映射到缓存块索引=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位=65.25字节

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

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

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

D部分: 字的长度为4字节。因此,给出C的答案,最后一个词是:

(0x3FFFF - 3) -> 0x3FFC.
您可以看到这是正确的,因为地址的最低2位是0,这对于任何4字节对齐的地址都必须是真的

(0x3FFFF - 3) -> 0x3FFC.