按照字节编址:1B对应一个地址,16B对应4个地址,(16B/1B=2^4)2的20次方是1MB对应20个地址
CPU访问一个地址 把地址所属的本块一起放到Cache中起到一个预测的作用,会加快计算机的运行速度。
主存 大但是慢 Cache 小但是快…(小声bb:真费劲…)
cache有的主存里一定有 主存的副本存在了cache里面。
通俗来说:
手机里有很多程序,经常用的是B站和微信就把小破站和微信放在cache里面,这样信息交换的速度快,体验好。
空间局部性原理,某次访问的数据,在未来某一刻可能再次访问它及他周边的数据。
以组为单位放 ,组间随便,第一块放在第一个,第二块放在第二个…几个为一组看题里规定或者看自个想什么样,以下是2个一组的
按顺序依次排放,放满了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块
此处鸣谢这位讲的嘎嘎好!!!!