cache 是用来干什么的, 他和DDR有什么区别?

cache是高速缓冲, 解决高速cpu和相对低速sdram的速度瓶颈而设计的, 也知道cache是SRAM, 这个SRAM不同于我们挂在51外部总线的SRAM, 那个sram速度可不快, 几十ns, 可能是制造工艺不同, cache速度很快,和cpu相当,要比sdram快很多, sdram最快也就133M就是75ns. L1是指片内cache, L2指片外cache. Arm920t的16k的指令cache和16k的数据cache就是L1了, 没有L2. Arm920t存储系统的L1除了Icache和Dchche外,包括write buffer和PA TAG RAM, 后面会说到. 

Cache的原理其实也简单的, 打开cache后, cpu就不直接从主存(指sdram)读写了, 而是首先访问cache, 这样就不要插入很多等待周期来等sdram. Cpu为什么可以从cache中读写, 而不要访问sdram呢? 是根据一个叫做程序和数据的局限性, 即在一个较短时间内, 程序或者数据往往集中在很小的存储器地址范围内. cpu访问一个地址, cache自动将这个地址后面一块数据拷贝到cache中. 其实就是预测了, 这个预测可不是100%的.Cache中有cpu要的数据则命中, cache没有则访问主存,没有命中, cache越大, 命中率越高, cache大小等于sdram, 当然就100%了, 但是他们的关系不是线性的, cache大到一定程度后, 命中率改善就有限了, 有数据说, 当cache在256k的时候, 命中率有98%. 难怪一般pc机器的L2是这么大. 

上面说的是读的情况, 对数据cache, cpu计算完毕还要写回sdram, 但Dcache的存在, 现在cpu只是写到cache里面了, 所以cache还需要把数据写回sdram, 何时写怎么写就是cache的写回策略了, 一共2种:write-back和write-through. 其实就是异步写回和同步写回的差别. 立刻写就是write-through, 即cpu更新cache同时更新sdram, 迫不得已时在写就是write-back.cpu更新cache, 但cache不立刻写回sdram, 在合适时候写,所以这里引入一个write buffer.cache先把更新的数据缓存到write buffer.这个最多只能buffer 16个words和4个独立地址.什么是合适的时候write-back? 只是在cache数据被修改,并且cache满了, 再加上个条件, 替代算法后要求自己滚出cache, 这时候得写回sdram. 明显的, write-through设计比较容易, 但效率比较差, write-back设计复杂, 要是用了一个新的Soc,没有大量测试的, 这个可能有机会出错…得谨慎. 

Cache大小有限, 总会写满, 写满了怎么办? 所以引入替代算法, 新的记录替换旧的记录. Arm920t默认的是随机替代算法, 设置cp15的寄存器RR位为1可以选择round-robin算法.指令也可以锁定在cache不被替代, 那么就要进行锁操作.锁定操作的粒度是256个字节.就是说一次锁这么多字节. 

[cache的组织结构和寻址] 

已经知道arm920t的Cache是16k, 这16k是怎么组织的? 它分成了8个段(Segment), 每个段又分成64个行(lines), 每个行是32个字节, 或者说是8个word. 1个word等于4个字节.所以16k=8 Seg * 64 line * 32bytes. 从arm920技术手册截张图如下: 



所以, cache的寻址也比较简单. 

对于wince,高2G的地址空间里面, 0x80000000-0x9FFFFFFF和0xA0000000-0xBFFFFFFF都是映射到相同的地方:内存和soc的寄存器地址,(arm是这样的, i/o都被映射成为存储器操作了).区别是前一个是cache的, 后一个是uncache的.通过对cache的理解, 这就很容易明白为什么驱动里面设置soc寄存器总是使用uncache的地址了.再说细点啊, 究竟为啥子不能用cache的? Ok,cache有这些特性, 对同一目标单元连续读取操作将得到相同的结果. 比如你的按键io,要是使用cache地址, 我想, 无论你怎么按, cpu都是从cache读到相同的值了.呜呼~.还有个特性, 对同一地址连续写只是把后一次写操作的值写入, 第一次的没有意义. 再加上write buffer的存在, 只在必定条件下才写, 呜呼~ ,这个更惨~

猜你喜欢

转载自blog.csdn.net/lyw851230/article/details/88562449
今日推荐