2.2.3【知识点】Cache
1. 命中率与平均存取速度
平均存取速度=Cache存取速度×Cache命中率+主存存取速度×失效率
2. 地址映像
地址映像是把主存地址空间映像到Cache地址空间,即按某种规则把主存的块复制到Cache中。
全相连映像
主存中任何一个块均可以映像装入到Cache中的任何一个块的位置上。主存地址分为块号和块内地址两部分,Cache地址也分为块号和块内地址。Cache的块内地址部分直接取自主存地址的块内地址段。主存块号和Cache块号不相同,Cache块号根据主存块号从块表中查找。
直接映像
把主存分成若干区,每区与Cache大小相同。区内分块,主存每个区中块的大小和Cache中块的大小相等,主存中每个区包含的块的个数与Cache中块的个数相等。任意一个主存块只能映像到Cache中指定的块中,即相同块号的位置。主存地址分为三部分:区号、块号和块内地址,Cache地址分为:块号和块内地址。直接映像方式下,数据块只能映像到Cache中指定的位置,故不存在替换算法的问题。它不同于全相连Cache,地址仅需比较一次。Cache的块号I与主存的块号J有函数关系:I=J Mod M。其中,M为Cache的总块数。
组相连映像
组相连映像是前两种方式的折衷。主存按Cache容量分区,每个区分为若干组,每组包含若干块。Cache也进行同样的分组和分块。主存中一个组内的块数与Cache中一个组内的块数相等。组间采用直接方式,组内采用全相连方式。组的容量等于1时,即直接映像,组的容量等于整个Cache的容量时,即全相连映像。
例: 一个具有4KB直接相联Cache的32位微处理器,主存的容量为16MB,假定该cache的块为4个32位的字。
(1)指出主存地址中区号、块号和块内地址的位数;
(2)求主存地址为ABCDEF(16进制)的单元在Cache中的什么位置?
试题分析:
Cache容量:4KB 主存容量:16MB 映像方式:直接映像
把主存分成若干区,每区与Cache大小相同。区内分块,主存每个区中块的大小和Cache中块的大小相等,主存中每个区包含的块的个数与Cache中块的个数相等。任意一个主存块只能映像到Cache中指定的块中,即相同块号的位置。主存地址分为三部分:区号、块号和块内地址,Cache地址分为:块号和块内地址。
主存的区号:16M/4KB=212=12位;
主存块号 :4KB/(4×32bit)=28=8位;
块内地址 :4×32bit =16Byte=4个字(因为一个字为32bit)=22字=2位;
ABCDEF = 1010 1011 1100 1101 1110 1111
该存储单元在Cache的位置为:
区号 = 1010 1011 1100 块号 = 1101 1110 块内地址 = 1111
数据的存储一般以"字"为单位进行。但在计算机里我们保留对字节的寻址和编码,不管是16位,还是32位,还是64位处理器,像第二小题主存地址为ABCDEF(16进制)这是一个24位地址码,而主存字地址为22位。 计算机只会按字进行操作,以及它的传输运算,包括直接相连Cache映象。 所以我们只按字寻指与编码,而并不涉及到更低位(字节)。
ABCDEF=1010 1011 1100 1101 1110 1111
在Cache中的位置:块号:1101 1110 块内地址:11
注:后两位为字节寻址,这里不用了。(ABCDEC、ABCDED、ABCDEE、ABCDEF这四个字节地址为同一字地址)在同一个Cache块内地址。
Cache的写入策略
在一个常见的应用程序中,其50%的指令是与数据存取相关的,而其中又有近30%的指令与读取有关。也就是说,CPU在运行中进行的读取操作频率要远远大于写入操作。它的写入依赖于三种写入策略:
写回法:当CPU更新Cache时,并不同时更新内存中的相应数据。这种方法减少了访问内存的次数,缩短了时间。但在保持与内存内容的一致性上存在在隐患,并且使用写回法,必须为每个缓存块设置一个修改位,来反映此块是否被CPU修改过。
全写法:和写回法相反,当Cache数据更新时,也同时更新内存数据。Cache不用设置修改位或相应的判断器。这种方法的好处是,当Cache命中时,由于缓存和内存是同时写入的,所以可以很好的保持缓存和内存内容的一致性。
写一次法:这是一种基于上面两种方法的写策略,它的特点是,除了第一次更新Cache的时候要同时更新内存,其它时候都和写回法一样,只修改Cache。这就在内存一致性和延迟中找到了一个较好的平衡。
3. Cache的替换策略
所谓替换策略,是指Cache中数据的更新方法。目前常见的Cache替换策略有三种,分别是:
先进先出(First In First Out,FIFO),即替换最早进入Cache的数据。
最不经常使用(east Frequency Used,FU),即替换被CPU访问次数最少的块。
近期最少使用(east Recenty Used,RU),即替换在近段时间里,被CPU访问次数最少的块,也是比较理想的替换算法。
编辑推荐:
2013年软考网络工程师考前试题及答案汇总
2013年计算机软考网络工程师基础知识讲义