【计组】Cache 全相连 组相联 直联

基础知识

在这里插入图片描述

按照字节编址:1B对应一个地址,16B对应4个地址,(16B/1B=2^4)2的20次方是1MB对应20个地址
在这里插入图片描述CPU访问一个地址 把地址所属的本块一起放到Cache中起到一个预测的作用,会加快计算机的运行速度。
主存 大但是慢 Cache 小但是快…(小声bb:真费劲…)
cache有的主存里一定有 主存的副本存在了cache里面。
通俗来说:
手机里有很多程序,经常用的是B站和微信就把小破站和微信放在cache里面,这样信息交换的速度快,体验好。

空间局部性原理,某次访问的数据,在未来某一刻可能再次访问它及他周边的数据。

  • 块:主存里的一大块地址打包放在cache里
    映射:主存的大块放在cache的哪去
    在这里插入图片描述

全相联映射

全部随便放,爱放哪放哪。
在这里插入图片描述


组相联映射

以组为单位放 ,组间随便,第一块放在第一个,第二块放在第二个…几个为一组看题里规定或者看自个想什么样,以下是2个一组的
在这里插入图片描述


直接映射

按顺序依次排放,放满了cache 接着从头开始放 ,循环往复。
在这里插入图片描述


我们来看几种不同的说法:
在这里插入图片描述
在这里插入图片描述

这个表做题很重要…

同样都是主存物理地址,代表着一串二进制数。只不过就是从不同的位置分了个段。
俗话说:你是个人,从脖子开始分开,就是脑袋和下身;从腰子开始分开就是上身和下身。
从哪里分就有不同的意义。


主存与Cache的地址映射

信息从主存→Cache中,如何定位?
Cache的容量小于主存,需要采用某种算法确定主存和Cache中块的对应关系;
地址映射
主存中数据块调入Cache中时,主存数据块与Cache行之间的映射关系;
地址变换
CPU访存时,将主存地址按映射函数关系变换成Cache地址的过程;

例:某机主存容量为1MB,划分为2048块,每块512B;cache容量为8KB,划分为16块;每块512B。
主存地址共20位,块内地址9位,主存块号11位。
在这里插入图片描述由于cache的块数远小于主存的块数,因此一个cache不能唯一地、永久地只对应一个存储块,在cache中,每一块外加有一个标记,指明它是主存的哪一块的副本(拷贝)。

例题

【例】设主存容量1MB, cache容量16KB,块的大小是512B,采用全相联映射方式。

(1)cache的地址格式:
cache的容量是16KB,所以按字编码的话,cache的总线长度是14位。
块的大小是512B,也就是说块内地址是9位。
因此块标记 14-9=5位 ,也就是说cache一共有32行。
在这里插入图片描述
(2)主存的地址格式
主存容量1MB,一共是20位。
块的大小是9位,所以块标记公用11位。 一共2048块。
在这里插入图片描述
(3)块表的容量
根据行的数量和块标记的位数,可以得到块表的容量是 32*11位
这个块表不包含地址部分,只有标记部分。块表中块的数量由cache行的数量决定。
在这里插入图片描述
(4)画出直接地址映射的示意图
(某位学长说2048/32=64可以整除,so 内存最后一块B2047->L31)
在这里插入图片描述

【例】有一个cache的容量为2K字,每块为16字问:
(1)该cache可容纳多少个块?
(2)如果主存的容量是256K字,则有多少个块?
(3)主存的地址有多少位?cache的地址有多少位?
(4)在直接映射方式下,主存中的第i块映射到cache中哪一个块?
(5)进行地址映射时,存储器地址分成哪几段?各段分别多少位?

(1)2k/16=211/24=27
(2)256k/16=218/24=214
在这里插入图片描述


拓:
在这里插入图片描述
在这里插入图片描述选A
在这里插入图片描述在这里插入图片描述

此处鸣谢👉👉👉这位讲的嘎嘎好!!!!

  • 8
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值