ARM中的CACHE机制
来源:互联网 发布:js获取多个class 编辑:程序博客网 时间:2024/05/19 16:37
ARM cache架构由cache存储器和写缓冲器(write-buffer)组成,其中写缓冲器是CACHE按照FIFO原则向主存写的缓冲处理器。下图是ARM V5核的CACHE位置
Cache 位于MMU前面靠近CPU称为逻辑CACHE又叫虚拟Cache。CPU可以直接访问CACHE的数据,而ARM 11(ARMV6)的结构是CACHE 在MMU后面CPU访问CACHE要通过MMU地址转换
在DM6446的core用的是哈佛结构,即把CACHE分为8K的D-CACHE(数据CACHE)和16K的I-cache(指令CACHE)
一个完整的CACHE分为CACHE控制器和CACHE存储器
见下图:
Davinci DM6446 D-cache行应为512行 ,cache存储器主要分为三个部分:目录存储段(driectory-story),状态信息段(status information)和数据项段(data section)每一行cache都包括这三部分。Cache用目录存储段来存储主存的地址,数据项段存放的是主存的数据,在cache中用状态信息段来记录状态信息,其中v表示有效位,d表示脏位,有效位记录当前cache行是活动的,cache行的数据和主存中的数据是一致的,处理器可以读取。脏位则表示cache行的数据和主存中的数据不一致。
在读写请求到达存储器前会被CACHE捕获,cache存储器将该请求分成三部分标签,组索引和数据索引域,cache通过组索引域确定可能包含地址和数据cache的行,cache存储器检查匹配的CACHE 行的状态标签,如果是V表示(cache hit)命中,否则cache失效(cache miss)在cache失效时从主存吧cache行考到CACHE存储器
主存中的部分内容存放在cache中的最简单方式是直接映射,在一个直接映射中,主存的地址唯一对应cache行,因为主存容量很大所以主存的很多地址映射到同一个cache行
见下图:
在DM6446 中内存为128M (bootargs 设为128M)8K的D-CACHE则128×1024/8 = 16384映射一个cache行。由于cache的速度大大大于低速的主存速度,因此需要写缓冲器。
Cache的写策略分为直写策略和回写策略。同时向cache行和相应的主存位置写数据,同时更新这两个地方的数据的方法称为直写策略(writethrough),把数据写入cache行,不写入主存的或者只有当cache被替换时或清理cache行时才写入主存的策略称为回写策略(writeback)。采用回写策略时,当处理器cache命中,只向cache存储器写数据,不写入主存,主存里的数据就和cache里不一致,cache里的数据是最新的,主存里的数据是早前的。这就用cache存储器信息状态标志位了,当向cache存储器里某行写数据时,置相应行的信息标志脏位为1,那么主控制器下次访问cache存储器就知道cache里有主存没有的数据了,把数据写回到主存中去。
当一个cache访问失效时,cache控制器必须从当前有效行中取出一个cache行存储从主存中取到的信息,被选中替换的cache行称为丢弃者,如果这个cache行中脏位为1则应把该cache行中的数据回写到主存中,而替换策略决定了那个cache行会被替换,在arm926ejs中ARM支持两种策略:轮转策略和伪随机策略。轮转策略就是取当前cache行的下一行,伪随机策略是控制器随机产生一个值。
当cache失效时,ARM采取两种方式分配cache行,一种是读操作(read-allocate)还有一种是读-写分配策略(read-write-allocate),当cache未命中时对于读操作策略,在对cache存储器读操作时才会分配cache行
- ARM中的CACHE机制
- 浅析Kernel中的cache机制
- 操作系统中的page cache机制
- ARM cache
- ARM CACHE
- ARM中的异常机制介绍
- thinkphp 中的cache缓存机制更是强大
- HTTP请求中的缓存(cache)机制
- HTTP请求中的缓存(cache)机制
- HTTP请求中的缓存(cache)机制
- HTTP请求中的缓存(cache)机制
- cache机制
- cache机制
- Arm cache 研究
- Arm cache 研究
- Arm cache 研究
- ARM的CACHE原理
- arm的cache 介绍
- 系统单据编号的几种实现方法
- 从自定义XML获取字符型和整型变量
- 系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行
- 第五章 表达式(part3) 复合表达式的求值、new 和 delete 表达式、类型转换
- linux那些事儿之我是i2c -- Gsenser(一)
- ARM中的CACHE机制
- smart pointers - C++11, 15 of n
- Unity 资源搜集
- Struts2体系结构图以及详解
- 七夕从期待变成陌生
- attempt to write a readonly database 错误
- 批处理常用路径
- android:ScrollView can host only one direct child
- DNS服务(bind9)配置过程