计算机组成原理——Cache与主存的地址映射

Cache–主存的地址映射

由主存地址映象到cache地址称为地址映射

cache的基本结构:

Cache的工作过程:
CPU发出一个地址,同时发给主存和cache的地址映射机构,CPU会从主存中取出字还是从cache中取出字,主存将块号送入主存cache地址变换机构,如果命中,就将主存地址转化为cache地址,从cache存储体中找到对应的字,然后通过数据总线送到CPU,完成一次读写过程;如果没有命中,这个字就不能从cache中取,而应该从主存中取出字送给CPU,与此同时,如果cache中有空间,可以装进,就将这个字所在的块拿到cache中。如果空间不够,不能装进cache,cache替换机构就将cache中不常用的块拿出,将该字的块替换进cache中。
在这里插入图片描述
主存与cache的映射过程:
当缓存接收到CPU送来的主存地址后,只需要根据cache字块地址字段(c位)找到cache字块,然后判断cache字块地址与主存地址的主存块标记是否相符,若符合且有效位为“1”,表示cache块已经和主存的某个块建立对应关系(cache命中);若不符合或有效位为“0”,就从主存中读入新的字块代替旧的字块,同时将信息送往CPU,并修改cache标记,将有效位置1。

在这里插入图片描述


1.全相联映射(灵活性大的映象关系)

主存中的任一块映象到缓存中的任一块,将主存中一个块的地址(块号)与块的内容(字)一起存与cache的行中,其中块地址存与cache行的标记部分。cache的数据块大小称为行,主存的数据块大小称为块。cache与主存之间的数据交换以块为单位,CPU与cache之间的数据交换以字为单位。

优点:灵活,命中率高
缺点:主存字块标记为全部块标记,访问cache时,主存的字块标记要和cache的全部标记位进行比较,所需的逻辑电路很多,成本较高,实际的cache还要采用各种措施来减少地址的比较次数。

在这里插入图片描述

例题:某内存64块,cache有4块,一个块为4个字节,按字节编址,采用全相联映射方式,写出cache和主存地址格式。

全相联映射方式中主存的主存块标记是全部块标记,,根据主存和cache的对应关系,一个块为4个字节,能得出主存和cache的块内地址的位数都是2位,根据cache的块数是4,得出cache块的位数是2。因为主存的块数为64块,得出主存块标记的位数是6位。

在这里插入图片描述

2.直接映射(固定的方式)

主存中的任意块映射到缓存中的唯一块,每个主存块只与一个缓存块相对应。

i为缓存块号,j为主存块号,C为缓存块数,映射关系式:i = j mod C
特点:不灵活,每个主存块只能与固定对应某个缓存块,即使还空着许多位置也不能使用。
主存地址的格式:
在这里插入图片描述

在这里插入图片描述

例题:某内存64块,cache有4块,一个块为4个字节,按字节编址,采用直接映射方式,写出cache和主存地址格式。

我们一个个的分析,先分析cache
cache:4块=16字节=2的4次方字节,cache的总位数是4。
主存:64块=64*4字节=2的8次方字节,主存的总位数是8

由题意得:一个块4个字节,就是2的2次方,可以得出cache的块内地址为2位,又因为cache的总位数是4,所以得出cache块有(4-2)位

主存块标记的位数就相当于主存的总位数减去cache的总位数,就是4位,最后就求出cache和主存的地址格式
在这里插入图片描述

3.组相联映射(上述两种映象的折中)

组间直接映射,组内全相联映射
主存块j按模Q(组数)映射到缓存的第i组中任一块,cache分为Q组,每组R块
对应关系有:i = j mod Q
i为缓存的组号,j为主存的块号

组内n块,组相联映射定义为n路组相联

在这里插入图片描述

在这里插入图片描述

例题:主存容量512K×16位,cache容量4096×16位,块长为4个16位的字,按字地址访存写出二路组相联映射下主存的地址格式。

cache地址的位数:4096=2的12次方,12位
主存地址的位数:512K=2的19次方,19位

由块长可得块内地址位:2位
二路组相联,cache的组数:2的10次方/2=2的9次方。所以主存的区内组号是9位
主存字块标记的位数:19-2-9=8

在这里插入图片描述

4.段相联映射

段相联映射是直接映射和全相联映射相结合的方式,将主存和cache都分成若干段,并且使他们每段所包含的块数都相等,段之间采用全相联映射,段内块之间采用直接映射。

当段数与cache块数相等时(即每段只包含一块),为全相联映射
当段数为1时,为直接映射

  • 107
    点赞
  • 564
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值