【计算机组成】Cache与CPU的直接映射、全相联映射与组相联映射

news/2024/11/23 7:28:45/

一.Cache与CPU需要映射的原因

        CPU准备访问内存时,会先问问cache存储器有没有已经提前准备好了数据,如果没有则再找内存要:

        如果Cache刚好命中,则直接从Cache中读取数据:

        如果Cache没有命中(Cache失效),则CPU再去找内存要:

        但通常来说,因为Cache(容量小,速度快)和内存的容量(容量大,速度较Cache略慢)不一样,导致Cache和内存记录数据存储方式不一样,而CPU一般只认识内存的记录方法:

        所以就有了Cache与内存的地址映射,方便CPU直接找数据:

二.什么是Cache与CPU的映射

         Cache的地址映射中,会以Cache的容量为标准将内存分成相同大小的块(页或者区),根据映射方法的不同,地址的表达方式也不同,常见的映射方式分为:直接映射、全相联映射和组相联映射。

三.直接映射

        先把映射方式写出来,再详细介绍:

        主存映射如下: 

        直接映射顾名思义,就是直接把内存的地址“直接”原封不动地放到Cache中,但问题来了,Cache可没有主存那么大的容量,怎么“直接”放呢?后来人们就想到一个办法,把内存分成好几区,每一区就刚刚好是Cache的容量大小,根据空间局部性原理时间局部性原理将不同的区放到Cache中去,如果CPU需求的块刚好存在了Cache里,就说这是“命中了”,如果没有,就说是“失效”了。

        如内存容量为1G,Cache容量为8M,采用直接映射方式就可以将内存分为(1G/8M=128)128块,至于128块中要把哪块分到Cache里面去,就是资源调度需要做的事情了。所以,地址映射中就有“区号”(也称之为块)这个部分,让Cache知道这个区块是从CPU哪个地方拿下来的:

       但这样做的一个缺点是,每个区块的页都是固定位置的,如主存中每个区的第 0 页,只能进入到 Cache 的第 0 页。若当前时刻 Cache 中 0 号页已被占据,而 1 到15 页空闲,现在要将 1 区第 0 页(即内存的 16 页)调入 Cache 是会发生冲突的。所以直接映像的区块冲突率非常高

        最后举个例子,如果你想找到一本书里面的某个句子,先找到第几章(区号)后,再找是第几页(页号)中的第几段(页内地址),就能找到你所要的句子,这就是直接映射的地址映射方式。

四.全相联映射

        全相联映像使用相联存储器(什么是相联存储可以参考我之前写的文章:【计算机组成】三分钟了解顺序存储、直接存储、随机存储和相联存储的区别)组成的 Cache 存储器。全相联映像方式很简单,就是主存的每一页可以映像到 Cache 的任一页。如果淘汰 Cache 中某一页的内容 ,则可调入任一主存页的内容:

        没有直接映射方式的分区,是一页一页地放进Cache里面去,所以地址映射比较简单:

        全相联映射最大的缺点是采用了相联存储的方式,也就是按内容访问(要是不懂的快去看看我上面发的那个连接!!)的方式进行搜索,在进行搜索时,主存地址不能直接提取 Cache 页号,而是需要将主存页标记与Cache 各页的标记逐个比较,直到找到标记符合的页(访问 Cache 命中),或者全部比较完后仍无符合的标记(访问 Cache 失败)。因此这种映像方式速度很慢,失掉了高速缓存的作用,这是全相联映像方式的最大缺点。如果让主存页标记与各 Cache 标记同时比较,则成本又太高

五.组相联映射

        组相联映射则是集以上两者映射方式之大成,即分区又分组,组内可以随意调换位置,很好了折中了直接映射和全相联映射的最大缺点,同时又拥有自己的新东西(分组),使得CPU读取变得更为灵活。怎么分组呢?就是在分完区之后,再在区块里面分组,分多少组就得看看Cache的容量有多大,分完组后,组内的页可以随意调换位置,没有特定的限制:

        组相联映像的规则是:主存中的组与Cache 的组形成直接映像关系,而每个组内的页是全相联映像关系。如主存 1区 0页,他在 0组中,所以只能进入 Cache的 0组中,至于进入到 Cache的 0组 0页,还是 0组 1页,并无强制要求,可任意放置。


http://www.ppmy.cn/news/226888.html

相关文章

抓手饼

跟家里人视频聊天 爷爷奶奶问孩子们吃了什么饭 语轩回答道: "抓手饼" 我们听了都哈哈大笑

煎饼的做法

煎饼做法: 1:把面粉倒入盆中【根据人数配】在面粉中加一点食盐、酵母最后倒入温水搅拌【根据个人口感加水量】,在盆上封一层保鲜膜任其发酵【夏天发酵时间为半小时至一小时、冬天为一晚】。 2:调陷,可根据个人喜好调制…

单饼的做法

面粉约三分之二倒入热水,搅拌均匀,剩余的再加冷水,搅拌成小面絮状。 案板上撒点干面粉,揉搓成面团,面稍软点,盖好饧发三十分钟以上。单饼的做法 步骤2 面团充分揉搓均匀,切成大小一样的面剂子。…

C语言:折半查找递归算法

代码 int BinSearch_Cur(SqList L, KeyType key, int low, int high) {if(low > high)return 0; //查找不到时返回 0&#xff1b;if(low < high){mid (lowhigh)/2;if(L.elem[mid] key)return mid;else if(key < L.elem[mid])return BinSearch_Cur(L, key, low, mid…

做烙饼的小技巧

烙饼小技巧&#xff1a; 1&#xff0c;想要做出来的烙饼&#xff0c;香软筋道又好吃&#xff0c;和面时必须要用热水和冷水混合来和面&#xff0c;面团含水量大&#xff0c;烙出的饼才会柔软。 2&#xff0c;烙饼的时候要等油热后再下锅&#xff0c;烙饼过程中勤翻面&#xf…

柔软劲道的单饼

食材 中筋面粉 适量 盐 2g 水 适量 玉米油 10g 碗面粉&#xff0c;加上2g食盐搅匀。把面粉分成两半&#xff0c;一半加开水搅成面絮状&#xff0c;一半用凉水搅成面絮状&#xff0c;再和在一起&#xff0c;合成的面团偏软&#xff0c;比平常包饺子的面还软。烙饼和面掌握100g面…

稻香村起子饼

稻香村起子饼媳妇不明白我为什么老是买稻香村几十样糕点中的一种&#xff1a;起子饼&#xff1b;我回答&#xff1a;就是喜欢这个。 今天突然感觉到真正喜欢的原因了&#xff0c;吃在嘴里&#xff0c;一下子回忆起二、三十年前老爸每周末从煤矿回家里一趟&#xff0c;就会把一…

悦轩饼家-首页

网页设计[1]&#xff08;web design&#xff0c;又称为Web UI design&#xff0c;WUI design&#xff0c;WUI&#xff09;&#xff0c;是根据企业希望向浏览者传递的信息&#xff08;包括产品、服务、理念、文化&#xff09;&#xff0c;进行网站功能策划&#xff0c;然后进行的…