Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1680883
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: LINUX

2010-08-19 08:47:58

ARM cache架构由cache存储器和写缓冲器(write-buffer) 组成,其中写缓冲器是CACHE按照FIFO原则向主存写的缓冲处理器。下图是ARM V5核的CACHE位置

Cache 位于MMU前面靠近CPU称为逻辑CACHE又 叫虚拟CacheCPU可以直接访问CACHE的数据,而ARM 11ARMV6)的结构是CACHE   MMU后 面CPU访问CACHE要通过MMU地址转换

DM6446core用的是哈佛结构,即把CACHE分 为8KD-CACHE(数据CACHE)和16KI-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 设 为128M8KD-CACHE128×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行会被替换,在arm926ejsARM支 持两种策略:轮转策略和伪随机策略。轮转策略就是取当前cache行的下一行,伪随机策略是控制器随机产生一个值。

       cache失效时,ARM采取两种方式分配cache行, 一种是读操作(read-allocate)还有一种是读-写分配策略(read-write-allocate), 当cache未命中时对于读操作策略,在对cache存储器读操作时才会分配cache

阅读(901) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~