cache存储器

3.6 Cache存储器

3.6.1 Cache基本原理

使用Cache的原因

CPU速度越来越快,主存储器与CPU的速度差距越来越大,影响CPU的工作效率。

Cache的作用

在CPU和主存之间加一块高速的SRAM(Cache);

主存中将要被访问的数据提前送到Cache中;

CPU访存时,先访问Cache,若没有再进行数据调度。

使用Cache的依据 程序访问的局部性原理

 

结构模块化

CPU访问Cache或主存时,以字为单位;

Cache和主存交换信息时,以块为单位,一次读入一块或多块内容;

Cache的每行都设置有标记,CPU访问程序或数据时,先访问标记 。

相邻层之间的数据传送单位

CPU  高速缓存:字 (假设1个字包含4个字节)

高速缓存  主存储器:块 (每块32个字节(8个字))

主存  磁盘:页面 (每页4K字节,包含128块)

 

存储体

基本单位为字,若干个字构成一个数据块;

地址映射变换机构

用于将主存地址变换为Cache地址,以利用CPU发送的主存地址访问Cache;

替换机构

若要更新Cache中数据时使用的机制;

相联存储器

Cache的块表,快速指示所要访问的信息是否在Cache中;

读写控制

609398c0c18941f38ccc276f37c726cd.png

命中率是指CPU要访问的信息在Cache中的比率;

 

失效率=1- 命中率

影响命中率的主要因素

Cache 容量:过小时,局部信息装不完,命中率低。 过大时,对提高效率不明显,且成本高。

Cache中块的大小:一般用一个主存周期所能调出的单元数(字或字节)作为一个块大小。

 

主存系统的平均访问时间

36d23dc96f81403c8218bc94fa218985.jpg

 

CPU执行一段程序时,Cache完成存取的次数为1900次,主存完成存取的次数为100次,已知Cache存取周期为50ns,主存存取周期为250ns,求Cache/主存系统的效率和平均访问时间。

 

命中率

h=Nc/(Nc+Nm)=1900/(1900+100)=0.95

主存与Cache的速度倍率

r=tm/tc=250ns/50ns=5

访问效率

e= 1 /(r+(1-r)h ) = =83.3%

 

平均访问时间

ta=tc/e=50ns/0.833=60ns

 

3.6.2 主存与Cache的地址映射

信息从主存→Cache中,如何定位?

Cache的容量小于主存,需要采用某种算法确定主存和Cache中块的对应关系;

地址映射

主存中数据块调入Cache中时,主存数据块与Cache行之间的映射关系;

地址变换

CPU访存时,将主存地址按映射函数关系变换成Cache地址的过程;

地址映射的方式

全相联映射、直接映射、组相联映射;

 

例:某机主存容量为1MB,划分为2048块,每块512B;cache容量为8KB,划分为16块;每块512B。

主存地址共20位,块内地址9位,主存块号11位。

32634eb3879f41808ec3b48aae546c8a.png

 

由于cache的块数远小于主存的块数,因此一个cache不能唯一地、永久地只对应一个存储块,在cache中,每一块外加有一个标记,指明它是主存的哪一块的副本(拷贝)。

 

全相联映射(Associative Mapping)

映射关系

主存中的任意字块可调进Cache的任一行中;

地址映射

主存中数据块调入Cache时,可以调入Cache的任一空行;

调入的同时,将主存标记和Cache的行号同时写入块表;

地址变换

CPU访存时,发出主存地址;

将主存标记作为关键字,送入块表中检索每一个单元;

命中时,读出对应单元中的Cache行号;

使用Cache行号和主存地址中的块内地址访问Cache;

全相联映射的主存地址格式

a4e32048925144168d91cabb90974e2f.jpg

7d5f58d8c4c54a0b998d64442e12f6e2.png 

全相联映射Cache的特点

优点

灵活性好(最理想)

Cache中只要有空行,就可以调入所需要的主存数据块;

缺点

成本高

块表单元字长为m+c位,需要较大容量的Cache块表;

速度太慢

访问Cache时,需将所有标记比较一遍,才能最后判出所需主存中的字块是否在Cache中;

一般较少使用。

 

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

 

写出Cache的地址格式。

写出主存的地址格式。

块表的容量多大?

画出地址映射及变换示意图。

主存地址为CDE8FH的单元,在Cache中的什么位置?

 

写出Cache的地址格式

Cache地址格式

Cache的容量16KB

块(行)的大小为512B

行地址为14-9=5位

写出主存的地址格式

主存的地址格式为

主存容量1MB

块表的容量多大?

块表的大小应为2c×(m + c) 位,即25×16位;

画出地址映射及变换示意图。

主存地址为CDE8FH的单元,在Cache中的什么位置?

主存地址为CDE8FH的单元可映射到Cache中的任何一个字块位置;

CDE8FH= 1100 1101 1110 1000 1111 B

其块/行内地址为:010001111。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值