系统结构考点之cache-主存层次

本文深入探讨了Cache-主存层次中的关键概念,包括Cache存在的意义、地址存储映像的三种方式(全相联、直接映像、组相联映像)以及命中率和访存效率的计算。通过实例解析了解题步骤,强调了组相联映像的细节。此外,还介绍了存储体系、Cache地址编址、访存加速比及其计算方法,并讨论了LRU和FIFO替换算法。


基本的知识点,记录一下,加深印象。

如题:2021年10月

分析

对于组组相联映像还是有些模糊。另外就是cache一共是4块,分两组是什么意思?详见基本知识 - 组相联

解题步骤

做这样的题,一看是LRU,并且是Cache内的替换,所以不要被题的主存所干扰。

  1. cache有4块,那么表格的行就有4行,加上访存地址+1还有命中率+1,所以画6行

  2. 分别填上表头名称及地址流,最后一行表头填命中率

    列的话,根据访存地址流+1画就行了。

也就是cache两个为一组,一共两组。主存的地址流地址编号要对应到cache相应的分组号里。答案为:主存与cache内存映射,详见以下

命中率=命中的次数/总的输入块数=3/10=30%.

基本知识

cache存在的意义??

主要是为了弥补主存速度的不足,cpu是可以直接访问的,所以速度要比虚拟存储器快。容量比较小只有几十个字节。
也是属于辅助存储器的一种。

从cpu角度来看,速度接近于cache,容量接近于主存。

什么是cache的地址存储映像

就是将每个主存块装入物理cache中的哪些块位置的规则。衡量规则好坏的标准是,看块冲突概率是否比较低(所谓的块冲突就是当查找的块,cadhe里没有时,就需要调入物理cache,这时就需要把原来cache块调出,这时就会产生冲突,选择哪块来调出),cache空间利用率是否比较高。
有三种地址映像。

全相联映像

让主存中任何一个块均可以映像装入到cache中任何一个块的位置。这就要求cache容量得大,可以理解成内存块都装入了cache中或来一个装一个,冲突率最低。通常不采用。

直接映像

指主存中的每一个块只能被放置到cache中惟一的一个指定位置。
由于位置确定所以冲突概率是最高的,物理cache空间利用率是最低的。

组相联映像

将主存空间按cache大小等分成区后,再将cache空间和主存空间中每一区都等分成大小相同的组。组内采取全相联映像,组间采取直接映像。

命中率 课本P113

cpu产生的逻辑地址能在M1中访问到的概率。
若逻辑地址流的信息能在M1中访问到的次数为R1,当时在M2中还未调入到M1的次数为R2,则命中率为H=R1/(R1+R2).

访存效率

如题:2020年10月
分析

主要是了解下公式。

解题
(1)该存储系统每MB的平均价格?

题目告诉了主存及cache每MB的价格,但问的是存储系统的平均价格,所以肯定不是直接相加的。
在《自学辅导》P73,给出的存储层次每位的价格公式,这里只要将位换成M即可。
题目中给出了主存及cache容量,S_m=100M,S_c=4M.
每M的价格为G_m=1,G_c=50
根据公式:每位存储价格为: C = S m G m + S c G c S m + S c = 100 X 1 + 4 X 50 104 约等于 2.88 C=\frac{S_m G_m + S_c G_c}{S_m+S_c}=\frac{100X1 + 4X50}{104}约等于2.88 C=Sm+ScSmGm+ScGc=104100X1+4X50约等于2.88

(2)求cache命中率

根据前文命中率的描述,命中率等于,访问到的次数/总的访问次数,题目告诉了访问cache次数为1980,访问主存次数为20.题目没有告诉,访问cache到底有没有命中?访问主存到底有没有命中,但显然这样考虑这个题就没有答案了,所以按最简单思路来。
假定访问cache及主存次数就是都命中的次数。
所以命中率 H = H c H c + H m = 1980 2000 = 99 % H=\frac{H_c}{H_c+H_m}=\frac{1980}{2000}=99\% H=Hc+HmHc=20001980=99%

(3)计算存储系统的平均访问时间

在《自学辅导》P73,也给出了存储体系等效的访问时间公式。命中概率的访问时间+失效概率的访问时间,由题目可知,cache的访问时间为10ns,主存的访问时间为200ns,
T a = H T c + ( 1 − H ) T m = 0.99 X 10 + 0.01 X 200 = 11.9 n s Ta=H T_c+(1-H) T_m=0.99X10+0.01X200=11.9ns Ta=HTc+(1H)Tm=0.99X10+0.01X200=11.9ns

(4)存储系统的访问效率?

还是在《自学辅导》P73。不过书中给的公式难以理解,估计也是有问题。还是采有答案比较好理解,就是存储效率等于命中概率下的时间除以系统平均访问时间: e = T c / T a = 10 / 11.9 = 84 % e=T_c/Ta=10/11.9=84\% e=Tc/Ta=10/11.9=84%

扩展知识

存储体系概念

指的是构成存储填信息统的n种不同的存储器(M1 ~ Mn)之间,配上辅助软硬件或辅助硬件,使之从cpu的角度来看,它们在逻辑上是一个整体。
多级存储层次:

典型的存储系统:

Cache的地址编址(必考点)

如本题:先看一下主存的地址,如何逻辑编址?

Cache每块映射的主存块数,那就编几个区号,所以主存有8块,有4个cache块所以 区号数 = 主存容量 c a c h e 容量 = 2 区号数=\frac{主存容量}{cache容量}=2 区号数=cache容量主存容量=2,编2个区,每个区对应4个主存块。

区内也和cache一样,分成2组,每组对应 每个区对应的主存块数 2 \frac{每个区对应的主存块数}{2} 2每个区对应的主存块数=2个主存块,组号编号为0组和1组。块号一样,再往下分成0号块和1号块。

Cache与主存的地址映像(必考点)

要解决的问题是Cache如何映射全部的主存?
Cache每块映射主存块数为= 主存总块数 C a c h e 的块数 \frac{主存总块数}{Cache的块数} Cache的块数主存总块数;发现没,这个和区号是一样的。

上面已经编址完成后,如何映射全部的主存呢?

将cache的0组号对应全部主存的0组号,1组号对应1组号,用虚线连起来。

也就是头对头,尾对尾,组号对组号连起来。

这个图,作为画lRC替换过程图的依据。也就是地址流中编号对应的cache中的哪个组。

访存加速比

题目没的提及加速比,但之前有考过,所以不再重新总结了,在这里加一问。

如题,近几年真题是没考的
分析

(1)是典型的cache地址编址问题,但总归是要有个分析的先后,所以主要看分析的次序。
(2)是一个新的知识点,之前一直也没遇到过。

解题
(1)cache编址求法

cache地址编址只是比主存地址编址少了个区号,其他都是完全一样的。
很明显,根据题意: 区号数 = 主存容量 c a c h e 容量 = 1024 K / 32 k = 32 , 区号 = l o g 2 32 = 5 区号数=\frac{主存容量}{cache容量}=1024K/32k=32,区号=log_2 32=5 区号数=cache容量主存容量=1024K/32k=32,区号=log232=5,也就是说区号占5位。
缓存分了8组, 组号 = l o g 2 8 = 3 组号=log_28=3 组号=log28=3,也就是说组号占了3位。
主存与缓存块大小为64,所以块内地址用多少位才能表示64呢? 块内地址 = l o g 2 64 = 6 块内地址=log_264=6 块内地址=log264=6,虽然有点绕,但仔细想想这三个部分都不难理解。
唯一剩下的组内块号,这个如何确定呢?cache分为了8组,一共是32K,所以一组就是4k,也就是4 X 1024=4096,一个块大小为64,所以一组内共有4096/64=64个块,所以 组内块号 = l o g 2 64 = 6 组内块号=log_264=6 组内块号=log264=6,占6位。
按照cache地址编址画出图,并标出字段名与位数,即可完成第一问,难点在于组号,组内块号,这些都抽象出来的,需要有一定的想像能力。

(2)访存加速比

加速比,这个概念是在系统结构考点之时空图及分析中提及的,指的是不用流水线的时间除以流水线时间。
在《自学辅导》P73,没有给出加速比的概念,但可以类比下,就是不使用cache访存时间,除以系统平均访问时间。所以
s = T m / T a = T m / ( 0.95 X 20 + ( 1 − 0.95 ) X T m ) = 10 s=T_m/Ta=T_m/(0.95X20 + (1-0.95)XT_m)=10 s=Tm/Ta=Tm/(0.95X20+(10.95)XTm)=10,解这个方程,求得T_m=380ns

关于LRU替换算法

实际上就是看,从当前列开始,往看前,看当前页里面哪个页离着当前列距离最远,就是要被替换的数。

FIFO替换算法

如题2019年4月
分析

一个题型,不再单列,无论是主存的替换算法还是cache的替换算法都是一样的,在系统结构考点之堆栈型替换算法中已经对原理做了大概的记录,不再赘述了也不再单列文章了;直接进入正题,这个题与上面直接给出页地址流的情形是不太一样的,这个题是需要算出页地址流的。

解题步骤
  1. 先看主存有几页,根据页面大小为200字,主存容量为400.所以,主存有 400 / 200 = 2 页 400/200=2页 400/200=2.

  2. 将虚存的地址流转成实页号。
    一页为200字,所以16/200 取整对应的就是0页。

虚地址流16219136156332480503868916999
实页0100122444

3.剩下的就是FIFO算法,只要是先进去的就先出来,不论中间是否又进入。

虚页地址流16219136156332480503868916999
实页0100122444
0页0000022222
1页1111114444
命中HHHHHH

命中率为:6/10=60%

堆栈模拟替换算法

如题:2017年10月
分析

难就难在,不知道如下手,题目告诉是B的命中率,而画的和求的是A的处理过程及命中率。如何思考呢?这其实是一个干扰项,告诉了地址流,又告诉了是堆栈模拟A中的替换算法,那就可以画出替换的表及命中率,完全不用管B的命中率。
系统结构考点之堆栈型替换算法可知LRU是属于堆栈型替换算法的,所以是可以用堆栈来模拟的。并且堆栈型替换算法特点为是命中率随页数增加而提高。

解题步骤

直接画表格就可以。堆栈与FIFO是不一样的,堆栈入栈时,如果原先的堆栈里面有要入栈的数,那么**要入栈的数是要放到栈顶位置的。**题目告诉了B分配4与5,那么A就是分配5与4个空间两种情形。

地址流232152453252145
A空间232152453252145
23215245325214
321524533521
33112444352
331111433
命中n=4HHHHHHH
命中n=5HHHHHHHHHH

(2)当a分配4页时,命中率为7/15
当a分配5页时,命中率为10/15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值