新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM存储器之:高速缓冲存储器Cache

ARM存储器之:高速缓冲存储器Cache

作者:时间:2013-09-30来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257011.htm

15.3.6Cache的替换策略

在Cache访问过程中,发现查找的Cache行已经失效,则需要从主存中调入新的行到Cache中。在采用组相联的Cache中,一个来自主存的行可以放入多个Cache组中。当所有组中的对应行都已经装满时,就要使用Cache替换算法,从这些组中找出一个Cache,把它调回到主存中原来存放它的地方,腾出新行来存放新调入的行。被选中替换的Cache行被称为丢弃者(victim)。如果丢弃者中包含有效的脏数据,那么在该行被写入新数据之前,控制器必须把该行中的数据写到主存。选择和替换丢弃Cache行的过程被称为淘汰(eviction)。

Cache控制器选择下一个丢弃Cache行的策略被称为替换策略。在常用的替换算法有两种:轮转算法和随机替换算法。

轮转算法又叫循环法,这种算法维护一个逻辑计数器,每进行一次替换,计算器加1,当计算器达到最大值时,就被复位成预先定义好的一个基值。这种算法容易预测最坏情况下的Cache性能。但它一个明显缺点就是,在程序发生很小变化时,可能造成Cache性能急剧下降。

随机算法从特定的位置上随机地选出一行替换出去。它通过一个随机发生器来完成上述操作。当每次需要替换Cache行时,随机发生器将产生一个随机数,用新行将编号为该随机数的行替换出去。这种算法与轮转算法最大的区别在于它在每次产生替换行时,增加的是一个非连续值,这个值是由控制器随机产生的。同样,当丢弃计算器达到最大值时,会被复位成预先定义好的一个基值。

相比之下,随机算法没有考虑到程序的局部性特点,因而效果有时不尽人意,同时这种算法不易预测最坏情况下Cache性能。而轮转法就有更好的可预测性,容易预测最坏情况下Cache性能,在一些实时系统中,十分重视这一点。但是,轮转法替换策略在存储器访问发生很小变化时,可能造成Cache性能有较大变化。

表15.13显示了目前比较流行的核所使用的策略。

表15.13 常见核使用的替换策略

内核

写策略

替换策略

ARM720T

直写法

随机

ARM740T

直写法

随机

ARM920T

直写法、回写法

随机、轮转

ARM940T

直写法、回写法

随机

ARM926EJ-S

直写法、回写法

随机、轮转

ARM946E

直写法、回写法

随机、轮转

ARM1020E

直写法、回写法

随机、轮转

ARM1026EJS

直写法、回写法

随机、轮转

IntelStrongARM

回写法

轮转

IntelXscale

直写法

轮转

15.3.7与Cache相关的编程接口

与Cache编程相关的CP15的寄存器共有3个,它们分别为c1、c7及c9。

(1)寄存器c1中与Cache相关的位

c1寄存器在前面CP15寄存器一节中已经介绍过,下面对Cache的控制位进行详细介绍。

表15.14显示了c1中与Cache有关位的作用。

表15.14 c1中与Cache相关的位

相关位

作用

C(bit[2])

当数据Cache和指令Cache分开时,本控制位禁止/使能数据Cache

当数据Cache和指令Cache统一时,本控制位禁止/使能整个Cache

0:禁止Cache

1:使能Cache

如果系统中不含Cache,读取时该位返回0,写入时忽略该位

当系统中Cache不能禁止时,读取返回1,写入时忽略该位

续表

相关位

作用

I(bit[12])

当数据Cache和指令Cache是分开的,本控制位禁止/使能指令Cache

0:禁止指令Cache

1:使能指令Cache

如果系统中使用统一的指令Cache和数据Cache或者系统中不含Cache,读取该位时返回0,写入时忽略该位

当系统中的指令Cache不能禁止时,读取该位返回1,写入时忽略该位

RR(bit[14])

如果系统中Cache的淘汰算法可以选择的话,本控制位选择淘汰算法

0:选择常规的淘汰算法,如随机淘汰算法

1:选择预测性的淘汰算法,如轮转(round-robin)淘汰算法

如果系统中淘汰算法不可选择,写入该位时被忽略,读取该位时,根据其淘汰算法可以简单地预测最坏情况,并返回1或者0

存储器相关文章:存储器原理




评论


相关推荐

技术专区

关闭