主存与cache间的地址映射

参考:《计算机组成原理》(第五版) 白中英等著


准备工作:

①cache与主存之间的数据交换是以“块”为单位进行的。一个“块”中包含若干个“字”,字长由实际情况确定。

     习惯上,cache中的“块”称“行”,主存中称“块”。cache的“行”与主存的“块”存储容量相同。

②相联存储表(CAM)是一种按内容寻址的存储器。下面所提到的标记(tag)存于该存储器中。

③cache中的标记tag与cache的“行”一一对应的。如果某一块主存数据块拷贝到cache中的某一行,该cache行就会形成相应的标记tag。


三种地址映射方式:①全相联映射方式、②直接映射方式、③组相联映射方式


①全相联映射方式:

理念:主存中的一块可以拷贝到cache中的任意一行。

通俗理解:对于主存中的数据块可以拷贝到cache中的哪一行不做硬性规定。


主存地址格式:主存块号+块内偏移地址

cache地址格式: cache行号+行内偏移地址

cache标记tag:主存块号


映射过程(地址变换过程):

CPU提供一内存地址给cache,cache中的“控制逻辑”将“主存地址格式”中的“主存块号”与cache中所有行的标记tag进行同时比较。

如果存在相同的,即表示“命中”,根据“块内偏移地址”找到相应的字。

如果不存在相同的,即表示“未命中”,那么将会到主存中寻找。


优点:该映射方式下,块冲突的概率低,cache利用率高。

缺点:硬件控制复杂,尤其是用于比较“主存块号”与tag时的比较器电路难于设计与实现。

适用情况:小容量的cache





②直接映射方式:

理念:一个主存块只能拷贝到cache的一个特定行位置去。


通俗理解:相当于将主存空间按cache的大小(行数)进行分区(说“分组”也可以),主存分区(组)后,每区(组)中的数据块数目与cache的行数一致。

将每一区(组)的数据块在区(组)内重新进行编号。使区(组)内各块只能映射到与它区(组)内编号相同的cache行去。


举例:假设现有主存-cache体系。cache共4行,主存共16块。cache的4行编号分别为L0~L3,主存的16块编号分别为B0~B15。如下图所示:

a、首先将主存按照cache的大小进行分区(组):16/4=4(组),即将主存分为4组,编号分别为G0~G3,这样每组中拥有与cache行数相同的数据块。

b、对每组内的数据块进行“组内重新编号”,即B0变为G0的b0,B1变为G0的b1,B2变为G0的b2,B3变为G0的b3;B4变为G1中的b0,B5变为G1中的b1,B6变为G1中的b2,B7变为G1中的b3。依次类推。

c、这样,组内编号为b0的主存块如果需要拷贝至cache,只能放置到L0;b1只能拷贝到L1;b2只能拷贝到L2;b3只能拷贝到L3。如上图所示,相同颜色的说明可以进行拷贝。


主存地址格式:主存组号+组内块号+块内偏移地址

cache地址格式:cache行号+行内偏移地址

cache标记tag:映射到该行的主存块的主存地址的“组号”


映射过程(地址变换过程):

CPU提供一内存地址给cache,相关的逻辑根据内存地址中的“组内块号”确定该主存块如果发生拷贝会被拷贝到哪一行;

然后,将内存地址中的“主存组号”与上步确定的cache行的标记tag进行比较,如果存在相同的即“命中”,如果不存在相同的即“未命中”。


优点:硬件简单,容易实现,成本低。

缺点:发生块冲突的概率较大,导致cache的命中率、效率下降。

适用情况:大容量的cache,更多的行数可以减小冲突发生的机会。





③组相联映射方式:

理念:是直接映射方式与全相联映射方式的折衷方案,适度地兼顾了二者的优点又避免二者的缺点。

将cache的空间分为若干组,主存块与cache组之间直接映射,而组内各块之间全相联映射。


关键:cache的分组数=主存每一组的块数


相关概念:

v路组相联cache:说明该cache采用组相联映射方式且cache的每组有v行。v一般取值较小,典型的有2、4、8、16。


举例:假设有主存-cache体系,cache共4行,主存共16块。cache的4行编号为:L0~L3,主存的16块编号为B0~B15。采用2路组相联映射。如下图所示:

a、cache共4行,采用2路组相联映射,即将cache分为2组G0~G1,每组2行。

b、cache的分组数=主存每一组的块数,即将主存分为8组g0~g7,每组2块。

c、主存组内进行重新编号b0、b1,如上图所示

d、凡是组内编号为b0的主存块,可以拷贝至cache的G0组,至于是2行中的哪一行,是随机的无硬性规定的。依次类推,组内编号b1的主存块可以拷贝至G1组


主存地址格式:主存组号+组内块号+块内偏移地址

cache地址格式:cache组号+组内行号+行内偏移地址

cache标记tag:组号


映射过程(地址变换过程):

CPU提供一内存地址给cache,相关逻辑根据地址中的“组内块号”部分确定主存块如果发生拷贝将会被放置到cache的哪一组中;

然后,将地址中的“主存组号”与上步所确定的那一组中所有行的tag同时进行比较,如果存在相同的即“命中”,如果不存在相同的即为“未命中”。



该映射方式实现较为容易,块冲突概率比直接映射方式低,命中率介于直接映射方式与全相联映射方式之间。被普遍采用。









       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值