一、全相联映像和变换
全相联映像的主存-Cache地址变换过程如图:
给出主存地址Nm访存时,将其主存块号Nmb与目录表(硬件)中所有各项的Mmb字段同时相联比较。若有相同的,就将对应行的Cache块号Ncb取出,拼接上块内地址Nmr形成Cache地址Nc,访Cache;若没有相同的,表示该主存块未装入Cache,发生Cache块失效,由硬件调块。
优点:块冲突概率最低,只有当Cache全部装满才可能出现块冲突,所以,Cache的空间利用率最高。缺点:构成容量为2^Ncb项的相联存储器,其代价太大,而且Cache容量很大时,其查表速度很难提高。
全相联地址变换:
二、直接映像及其变换
把主存空间按Cache大小等分成区,每区内的各块只能按位置一一对应到Cache的相应块位置上(主存第i块只能唯一映像到第imod2^Ncb块位置上)
直接映像的主存-Cache地址变换过程如下:
处理机给出主存地址Nm访主存时,截取与Nc对应的部分作为Cache地址访Cache,同时取Ncb部分作为地址访问区号标志表存储器,读出原来所存的区号标志与主存地址对应的区号部分比较。如果比较相等,表示Cache命中,让Cache的访问继续进行,并中止访主存;如果比较不等,表示Cache块失效,此时让Cache的访问中止,而让主存的访问继续进行,并由硬件自动将主存中该块调入Cache。
优点:节省硬件,只需容量较小的按地址访问的区号标志表存储器和少量外比较电路,成本很低。访问Cache与访问区号表、比较区号是否相符的操作是同时进行的,当Cache命中时意味着省去了地址变换的时间。缺点:Cache的块冲突概率很高。只要有两个或两个以上经常使用的块恰好被映像到Cache的同一块位置时,就会使Cache命中率急剧下降。Cache的空间利用率很低。
三、组相联映像及其变换
组相联映像指的是各组之间是直接映像,而组内各块之间是全相联映像。
Nd、q是1位,s是2位,主存的第0组只能进入Cache的0组,第1组只能进入Cache的1组。组内的各个快,如主存的0-3及8-11块可进入Cache的第0-3块中的任意一块,但不能进入Cache的4-7块。
当组相联映像的S值大到等于Cache的块数时,就成了全相联映像;当S值小到只有1块时,就变成了直接映像。
地址变换如下:
根据组号决定主存块号分到Cache哪组:Nm的q和Nc的q相等,主存块分为一组。
(1)如Cache4块分2组(主存8块):
4(100)、1(001)、3(011)、6(111)分组:4、1一组,3、6一组
(2)如Cache4块分2组(主存16块):
4(100)、1(001)、3(011)、6(111)分组:4、1一组,3、6一组
q(中间一位)用来index,Nd和s'用来match
为啥不用左边一位和右边以为index?
由上图可知(左边一位和右边一位冲突概率大)。
组内块号(路):主存的组内块号不参与计算
例1:Cache一主存存储层次中,主存有0-7共8块,Cache为4块,采用组相联映像,分2组。假设Cache已先后访问预取进了主存的第4、1、3、6块,现访存块地址流又为1、2、4、1、3、7、0、2、5、6时,请完成:
(1)画出LRU替换算法,Cache内各块的实际替换过程图,并标出命中时刻。
(2)求出在此期间的Cache命中率。
例2:有一个Cache存储器,主存有0-7共8块,Cache有4块,采用组相联映像,分2组。假设Cache已先后访问并预取进了主存的第5、1、3、7块,现访存块地址流又为1、2、4、1、3、7、0、1、2、5、4、6时:
(1)画出用LRU替换算法时,Cache内各块的实际替换过程图,并标出命中时刻。
(2)求出在此期间的Cache命中率。
例3:有一个由Cache和主存组成的两级存储系统,主存容量为100M,访问时间为200ns,主存每MB的价格为1元,Cache的容量为4MB,访问时间为10ns,Cache的每MB的价格为50元,该系统运行某程序,在一段时间内,访问Cache次数为1980次,访问主存的次数为20次
(1)计算该存储系统每MB的平均价格
(2)计算系统运行该程序时Cache命中率
(3)计算该存储系统的平均访问时间
(4)计算该存储系统的访问效率
例4:有一个采用组相联映像的Cache系统中,主存由0-15共16块组成,Cache分2组,每组2块,每块大小为16个存储字。在某个程序执行时,访存的主存块地址流为:6、2、4、1、4、6、6、3、0、4、5、7、3。
(1)写出主存块地址和Cache块地址的格式,并指出各字段的长度
(2)采用LRU替换算法时,画出Cache内各块实际替换过程图,并计算Cache命中率