高速缓存与主存的三种映射方式

本文介绍了三种缓存映射方式:全相联映射、直接相联映射及组相联映射,并详细分析了各自的优缺点。全相联映射提供高命中率但成本高昂;直接相联映射实现简单,但冲突率较高;组相联映射结合两者优势,降低了冲突概率并提高了利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、全相联映射方式

全相联映射是指主存中任意一个块都可以映射到cache中任意一个块的方式,也就是说,当主存中的某一块需调入cache时,可根据当时cache的块占用或分配情况,选择一个块给主存块存储,所选的cache块可以是cache中的任意一个块。例如,设cache共有2^C块,主存共有2^M块,当主存的某一块j需调进cache中时,它可以存入cache的块0、块1、…、块i、…或块2^C - 1的任意一块上。如下图所示:


优点:命中率比较高,cache存储空间利用率高;

缺点:存储映射信息的相联存储器庞大,比较电路复杂,查询相联存储器时,每次都要与全部内容比较,速度低,成本高,因而只适合于小容量的cache之用,应用少。


2、直接相联映射方式

直接相联映射方式是指主存的某块j只能映射到满足如下特定关系的cachei中:

ij mod 2^C

上图中,主存的第02^C、2^(C1)、…块只能映射到cache的第0块,主存的第12^C+12^(C1)+1、…块只能映射到cache的第1块,……,主存的第2^C-12^(C1)-1、…2^M-1块只能映射到cache的第2^C-1块。即:对2^C求余后余数相同的主存块对应cache中同一个块。如下图所示:


优点:比较电路最简单,地址映射方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。

缺点:cache块冲突率较高,余数相同的主存块无法同时进入cache,从而降低了cache的利用率。由于主存的每一块只能映射到cache的一个特定块上,当主存的某块需调入cache时,如果对应的cache特定块已被占用,而cache中的其它块即使空闲,主存的块也只能通过替换的方式调入特定块的位置,不能放置到其它块的位置上,替换操作频繁,命中率比较低。


3、组相联映射方式

组相联映射方式下,将cache分成2^u组,每组包含2^v块。主存的块与cache的组之间采用直接相联映射,而与组内的各块则采用全相联映射。也就是说,主存的某块只能映射到cache的特定组中的任意一块。主存的某块jcache的组k之间满足如下关系:kj mod 2^u

设主存共有2^2^u块(即Ms+u),则它们的映射关系如下图所示:


图中,主存的块02^u、2^(u1)、…、[2^(s-1)]2^u可以映射到cache的第0组的任意一块,主存的块12^u+12^(u1)+1、…、[2^(s-1)]2^u+1可以映射到cache的第1组的任意一块,……,主存的块2^u-12^(u1)-1、…、2^M-1可以映射到cache的第2^u-1组的任意一块。

优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。

缺点:实现难度和造价要比直接映射方式高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值