Arm中Cache知识汇总

CAM:Content Addressable Memory.
1. 对于采用虚拟cache的cpu,如果没有采用速度特别慢的2级缓存(如磁盘驱动器等),建议cache采用直写策略,而非回写策略。
2. Cache按位置可分为逻辑(虚拟)Cache和物理Cache,在带有Cache和mmu的处理器系列中,从arm 7到arm10,包括Intel strongARM和Intel Xscale处理器,都使用逻辑Cache。Arm11处理器(ARMv6系列体系结构)采用物理Cache。Cache同时使用了时间和空间的局部性原理。
3. Cache有两种总线结构:冯诺依曼结构和哈佛结构(即混合Cache和分立Cache)。这两种结构的区别在于是否在内核和主存之间将指令和数据总线分离。
Cache的大小由Cache可以存储的主存中实际数据和代码的大小决定的。在计算Cache容量时,用来存储Cache标签和状态信息的状态位的那部分Cache存储器不计算在内。
4. 写缓冲器是一个容量非常小的FIFO存储缓冲器,Cache中替换出来的脏Cache行将被放入FIFO中,而不是直接写入内存中。
5. 主存写策略:写回策略(write-back)、直写策略(write-through)。Cache未命中时的分配策略:读操作分配策略、读/写策略分配策略。
a). 读操作分配策略,当Cache未命中时,只有进行存储器读操作时,才分配Cache行。如果被替换的Cache行包含有效数据,那么在该行被新的数据填充之前,要先把原理的内容写入到主存中去。采用读操作分配策略时,存储器写操作不会更新Cache行,除非相关的Cache行恰好是前一个主存读操作刚分配的。
b). 采用读/写分配策略,无论存储器读还是写操作,在Cache未命中时,都将分配Cache行。对于存储器写操作,如果Cache未命中,将分配一个Cache行。如果被替换的Cache行中包含有效数据,控制器会先将该行数据写入主存,再用从主存读取的数据将改行Cache覆盖,最后把内核数据写入该Cache行中。如果采用Cache直写策略,内核数据将会同时被写入到主存中。
6. Cache行替换策略:轮转法、伪随机替换法。伪随机替换法从特定的位置上随机地选出一行替换出去。该算法使用非连续增加的丢弃计数器,控制器随机产生一个增加值,并将该值加到丢弃计数器上。丢弃计数器采取的是模加。Ixscale只支持轮转法。
7. 针对Cache行,清除(Clear、Flush、Invalidate)和清理(Clean)操作的不同:清除(Clear、Flush、Invalidate)仅仅是把Cache行的tag置为无效(无论是否有脏位标志);在采用写回策略情况下,清理(Clean)则要把带脏位的Cache行写入主存。(注意:在非Arm的其他系统中,Flush往往代表着清理)。在IXP42X中的清除和清理操作都是针对整个Cache,没有针对某一行的操作。
8. Cache锁定操作
锁定在Cache中的数据和代码不会被替换。但是,如果Cache被清除,被锁定的信息也会丢失,但是被锁定的Cache行被清除后仍不能用于一般的代码和数据存储,必须重新运行Cache行锁定程序来锁定新的代码和数据。
执行Cache锁定的软件本身必须被存放在不可Cache的主存中。锁定在Cache中的代码和数据必须被存放在可Cache的主存中。被锁定的Cache和数据不能存在于Cache中的其他地方,因此在锁定之前必须先清理和清除Cache。
Cache锁定有3中不同的方法:1. 使用了路(way)寻址方式;2.使用了组锁定位;3. 使用了特殊分配命令和读取主存中特定块(Ixscale使用)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值