第3.2.3节

3.2.3 L1 Cache状态位与L1 Cache的一致性

E500内核使用MESI协议对数据L1 Cache进行管理,MESI协议可以处理单处理器内核的L1 CacheL2 Cache和主存储器间的一致性,也可以处理多处理器内核间的Cache共享一致性。目前基于使用总线监听法的MESI协议是处理Cache一致性处理最流行的协议。MESI协议规定每个数据Cache行中都包含MESI四个状态位。此外,E500内核在L1数据Cache中还支持一个Lock位。在单处理器的体系结构下MESI的定义如下所示:

(1)       MModified)。M位为1时表示当前Cache行中包含的数据不在主存中,此时Cache行中所含的数据与内存中的数据不一致。当处理器对此Cache行进行替换操作时,必然会引发系统总线的读写周期,将Cache行中数据与内存中的数据同步。

(2)       EExclusive)。E位为1时表示当前Cache行中包含的数据仅在本处理器内核的内存体系中。

(3)       SShared),在单处理器结构下,Cache行中的状态不可能为Shared。在多处理器系统中,Cache行的状态可能为Shared

(4)       IInvalid)。该位用来表示当前Cache行是否有效,在E500内核使用PLRU算法对Cache行进行替换时,将首先替换状态为InvalidCache行。

在指令L1 Cache中只有此位有效,在计算机体系结构中指令Cache的处理较为简单,指令Cache不存在一致性的问题,因为在现代计算机体系结构中,程序的正文段一般不被修改。如果用户由于某种特殊需要对程序的指令段进行修改时,需要书写Cache同步的指令维护程序地址空间与指令L1 Cache之间的同步。这种对程序正文段进行修改的程序,也被称为self-modifying程序。

(5)       Locked。该位表示当前Cache行是否被加锁。被加锁的Cache行不能被替换。有的程序将某些经常使用的程序或者数据在Cache中锁定以提高程序的效率。

但是将Cache锁定的这种做法并不一定能提高程序的整体效率。程序员可以根据具体情况对这些现象进行分析。除非万不得已,我不赞成程序员将常用的数据或者程序锁定到L1 Cache中,因为这种做法将极大地影响程序的可移植性。

单处理器系统在进行Cache共享一致时,只使用了MESI协议的子集MEI。此时Cache的共享一致协议比较容易实现。

1 基于单处理器Cache的存储器读

E500内核在进行存储器读操作时,首先检查当前访问的数据是否在L1 Cache中命中。

如果访问的数据在L1 Cache中命中,则进一步检查L1 Cache行的状态。如果Cache行中的数据有效,即Exclusive位或者Modified位为1,则从L1 Cache中获得相应的数据,并不改变Cache的状态位。

如果访问的数据没有在L1 Cache中命中,则使用PLRU算法计算出需要淘汰哪一个Cache行,然后根据Cache行的状态决定如何淘汰该Cache行。如果该Cache行状态的Exclusive位为1,则直接将淘汰此Cache行中的数据,不需要与存储器系统进行同步;如果该Cache行状态的Modified位为1,则需要将在Cache行中的数据与存储器同步。之后将启动存储器读周期,将数据从L2 Cache或者内存中读入到该Cache行中,同时将此Cache行状态的Exclusive位更改为1

2 基于单处理器Cache的存储器写

E500内核在进行存储器写操作时,可以使用两种策略,回写(Write-Back)或者通写(Write-Through),对L1 Cache进行更新。下文将分别介绍采用回写和通写两种情况进行存储器写操作时,L1 Cache行状态的转换。

(1)       使用回写策略。此时E500内核在进行存储器写操作时,首先检查当前访问的数据是否在L1 Cache中命中。如果数据在L1 Cache中命中,则将数据写入L1 Cache中,并将L1 Cache行的状态改变为Modified

如果数据没有在L1 Cache命中,则使用PLRU算法计算出需要淘汰哪一个Cache行,然后根据Cache行的状态决定如何淘汰该Cache行。淘汰Cache行的方法与3.2.3节的淘汰方法相同。将Cache行的数据淘汰后,将新的数据写入此Cache行。此时Cache行的状态为Modified

(2)       使用通写策略。

此时E500内核在进行存储器写操作时,首先检查当前访问的数据是否在L1 Cache中命中。如果数据在L1 Cache中命中,则将数据写入L1 Cache中,同时将此数据写入到内存体系中,并将该L1 Cache行状态的Exclusice位置为1

如果数据没有在L1 Cache中命中,则使用PLRU算法计算出需要淘汰哪一个Cache行,然后根据Cache行的状态决定如何淘汰该Cache行。淘汰Cache行的方法与3.2.3节的淘汰方法相同。将Cache行的数据淘汰后,将新的数据写入此Cache行,同时将数据写入内存体系中,并将该L1 Cache行状态的Exclusice位置为1

如果在一个处理器系统中,只使用通写策略进行L1 Cache的更新时,Cache行的状态不可能为Modified。如果在一个系统中同时采用了通写和回写两种策略,并将两个分别采用回写策略和通写策略的虚拟地址映射到同一个物理地址时,Cache行的状态就有可能为Modified

使用通写方式时,E500内核对系统总线的访问频率较高,从而会在一定程度上加大系统总线的负担。因此在多数应用中,使用回写策略管理L1 Cache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值