高速缓存cache

总结来自于文章《arm嵌入式系统开发–软件设计与优化》

cache是一种容量小,速度快的存储阵列,它位于主存和处理器核之间,保存着最近一段时间处理器涉及到的主存内容。在某些场合需要进行数据读取操作时,为了改善系统性能,处理器尽可能从cache中读取数据,而不从主存中获取数据,这主要是为了减小慢速存储器给处理器造成的访问瓶颈问题。

write buffer是一个非常小的FIFO,也位于处理器和主存之间,为了将处理器和cache从较慢的主存写操作中解放出来,通常搭配cache一起使用。

处理器、cache、主存之间的关系

cache与主存的关系主要体现在高速cache和低速主存之间传输的小块数据上,这种小块数据被称为cache行。write buffer作为临时缓冲区帮助cache释放存储空间,从cache中搬出的数据暂存在write buffer中。cache控制器将cache行以比较高的速度存放到write buffer,之后write buffer以较低的速度将该cache行写入主存中。

哈佛架构的处理器核中,cache被分为I-cache和D-cache,指令被存储在I-cache中,数据被存储在D-cache中。

一个简单的cache存储器,每个cache行都由3个部分组成:directory store,status information,data section。

其中directory store用来标记每个cache行是从主存中的哪个地方拷贝来的,这个目录项被称为cache标签;

status information用来记录状态信息,常见的状态位是有效位和脏位,有效位用来标记当前的cache行是活动的,脏位则用来标记该cache行中所含的内容与主存中对应内容是否一致。

下面介绍cache控制器,cache控制器将主存中的数据或者代码自动拷贝到cache存储器中,自动完成搬移工作,不需要软件额外介入。读/写存储器的请求在被发送到存储器控制器时,会先被cache控制器截获,cache控制器将该请求的地址信息分成3个部分:标签域tag field,组索引域set index field,数据索引域data index field。

控制器通过组索引域在cache存储器中确定可能cache行的位置,接下来检查cache行中有效位,以确定该cache行当前是否处于活动状态,并且将请求地址的标签域和cache标签比较。如果该cache行当前是活动的,而且标签域和cache标签值一致,则cache命中;否则,则cache失效,在失效的情况下,控制器从主存中拷贝整个cache行到cache存储器,这种拷贝的操作称为cache行填充(cache line fill)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值