cache和write buffer

Cache是一种容量小、速度快的存储器阵列,它位于主存和处理器内核之间,保存着最近一段时间处理器涉及到的主存块内容,主要是为了缓解慢速存储器和处理器之间的速度不匹配造成的访问瓶颈问题。write buffer经常和Cache配合使用。用来缓解处理器和Cache等高速设备和慢速存储器之间的写速度匹配问题。除了处理器和write buffer之外,与cache相关的还有MMU、总线架构等。如如果总线是冯.诺依曼结构,因为数据和指令走同一个通道,则只有一个Cache,如果总线是哈佛结构,因为数据和指令走不同的通道,则采用2个cache。

      既然是为了缓解读写速度匹配问题,需要解决的或者需要提供的解决方案就包括:访问算法、写算法。
       1.访问算法
      访问算法涉及到处理器、Cache、慢速存储器等三个部件,具体就是在处理器和Cache中如何访问、Cache和慢速存储器之间如何访问。
     处理器和Cache间的访问算法:如果Cache中没有处理器请求的内容,则发生Cache失效,Cache控制器从主存中copy相应的内容到Cache存储器,称为Cache行填充。这个时候如果Cache是满的,则就需要进行替换,采用的不同的替换策略,就是Cache的替换算法,arm下的Cache的替换算法有轮转法和伪随机替换法。
      2.写算法
     当有计算结果需要存储时,就因为涉及到处理器、Cache、慢速存储器等三个部件,为了更好地提高写的速度,就另加了一个write buffer部件,处于与Cache并行的位置,尽可能的将慢速的串行传输数据化为并行传输数据,加快了写的节奏、拉长了写的时间。是空间和时间的平衡。
    总结算法的本质,主要是化串行为并行。评价读写算法的优劣的标准是命中率。
CACHE --
   CACHE可以分为DATA CACHE和INSTRUCTION CACHE(在有些处理器上,是统一的,数据和指令共用一小块CACHE). 和普通存储比较,CACHE的存储速度快很多.提供CACHE的目的是为了提高速度.如果CPU要取的指令和数据在CACHE里面,就不用到MEM里去取,速度会很有优势.当然,需要提供一定的机制来维护CACHE和 MEMORY的一致性.以保证数据和指令的正确性.CPU需要读某个地址的数据或者是指令的是,CPU会先看看CACHE里面有没有,如果有,直接从CACHE读.如果没有,那指定的数据指令从RAM里读取,同时,保存在CACHE里.如果下次还需要的时候,就有可能可以直接从CACHE里取.如果CACHE满了,会把一些最近没有访问的数据从CACHE里面清除出去,如果有必要,还需要回写到RAM里面去.

BUFFER -
   一般都只看到WRITE BUFFER吧,在ARM的处理器里,好像没有看到过READ BUFFER :-) . WRITE BUFFER的作用其实和CACHE一样,目的都是为了提高速度.试想,如果CPU需要把一些数据写到外设去,如果外设的速度比CPU的速度慢很多的话,那CPU会在这个写操作上消耗很多的时间,影响速度.如果能提供一个中间的BUFFER做缓冲,数据先放到BUFFER,CPU就可以去做别的事情了.然后就可以在从BUFFER写到目的地址去.

总而言之,CACHE和BUFFER的目的是一样的,为了提高性能.不过具体的应用场合不一样.
cache一般是为了加快交换速度,减少读写外部慢速存储器设计的,buffer主要是为了协调速度,如快速设备同慢速通讯。在一些情况下,他们指的是一个东西

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值