Cortex-M7 Cache 操作

本文详细介绍了Cortex-M7内核的L1 Cache,包括Cache的四种策略、读写操作,以及如何配合MPU使用。文章还讨论了cache一致性问题及其解决方案,解析了常见的Cache操作函数和相关指令,如DMB、DSB和ISB。
摘要由CSDN通过智能技术生成

目录

【Cortex-M7内核的L1 Cache】

二,Cache4种策略

三,Cache读操作和写操作

【cache配合MPU使用】

【什么是 cache 一致性问题】

一,第一种情况

二,第二种情况

【解决cache一致性问题,有两种可选方案】

一.所有的共享存储器都定义为共享属性

二.通过软件进行cache的维护

【常见Cache操作函数解释】

【其他指令解释】

DMB

DSB

ISB


Cortex-M7内核的L1 Cache】

         Cache又分数据缓存D-Cache和指令缓冲I-Cache,STM32H7 的数据缓存和指令缓存大小都是16KB。STM32H7主频是400MHz,除了TCM和Cache以400MHz工作,其它AXI SRAM,SRAM1,SRAM2等都是以200MHz工作。数据缓存D-Cache就是解决CPU加速访问SRAM。

        如果每次CPU要读写SRAM区的数据,都能够在Cache里面进行,自然是最好的,实现了200MHz到400MHz的飞跃,实际是做不到的,因为数据Cache只有16KB大小,总有用完的时候。

        有了cache后,core对内存中的数据访问流程如下图所示:

L1 Cache由多行内存区组成,每行有32字节,每行都配有一个地址标签。

        数据缓冲DCache:是每4行为一组,称为4-way set associative。

        指令缓冲区ICache:是2行为一组, 称为2-way set-associative

这样节省地址标签,不用每个行都标记一个地址。

        Cache hit: 要访问的数据/指令在cache里面.

        Cache miss: 要访问的数据/指令不在cache里面.

二,Cache4种策略

<回写:如果Cache中有,写数据只写到Cache,不写到RAM。>

<透写:如果Cache中有,写数据也要同时写到Cache和RAM。>

<write allocate:写数据时,如果Cache中没有,那么就要在Cache中开辟一个空间,把数据写入Cache,同时把RAM中的相邻数据加载进来填充Cache。>

<no write allocate:写数据时,如果Cache中没有,那么把数据直接写入RAM。>

<read allocate:读数据时,如果Cache中没有,那么就要在Cache中开辟一个空间,把数据从RAM中加载进来,后续的读操作,就可以直接从Cache中读取了。>

<no read allocate:读数据时,如果Cache中没有,那么直接从RAM中读。>

三,Cache读操作和写操作

1,Core 读cache时:

        若hit,则直接从cache读出数据即可。

        若miss,有两种处理方式:

                >read through , 直接从内存中读出

                >read allocate, 先把数据读到cache,再从cache读出。如果 CPU 要读取的 SRAM 区数据在 Cache 中已经加载好,就可以直接从 Cache 里面读取。如果没有,就用到配置 read allocate 了,意思就是在 Cache 里面开辟区域,将 SRAM 区数据加载进来,后续的操作,CPU 可以直接从 Cache 里面读取,从而时间加速。

2,Core 写cache时:

        若hit,两种处理方式:

                >write-through模式:  可以直接写到内存中同时放到Cache里面,优点是内存和cache同步更新,没有多总线访问造成的数据一致性问题,缺点是无法在写操作上面发挥性能。

                >Write back模式: Cache line会被标为dirty,等到此行被evicted(驱逐&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值