STM32F7 MPU Cache的原理和一致性问题

本文详细探讨了Cache的工作原理、不同类型,以及与MPU的交互,重点介绍了Cache一致性问题,特别是在写操作和DMA访问时可能出现的冲突,通过实例分析了配置和解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

1 Cache 及其原理

2 结构及策略

2.1 Cache类型

2.2 Cache实例

3 Cache 及 MPU 属性

4 Cache 一致性问题

4.1 未Clean写Cache情况

4.2 DMA 更新物理内存情况

4.3 一个实例

4.3.1 功能描述

4.3.2 代码实现

4.3.3 结论 


概述

本文主要从结构原理以及应用方面对 MPU 和 Cache 进行分析,通过对cache相关知识体系的学习,以Cache 有基本的了解。便于在具体的实际应用中, 使用带有一级 cache 的 MCU 时,避免出现一些不必要的错误。

1 Cache 及其原理

cache 是一种高速缓存,其位于CPU与memory之间的存储设备。

Cache是高速缓存,一般指的是 L1 cache,即和 Core 紧耦合的, 从 STM32F7 系列开始,基于 ARM cortex-M7 内核,增加了对 L1 Cache 的支持。

Cache分为两类:

1)指令 Cache(I-cache)

2)数据 Cache(D-cache)

从上图片可以看出来,无论是指令 Cache(I-cache)还是数据 Cache(D-cache), 一旦使能之后,
就分别与 Core 的 prefetch unit(I-cache)load-store unit(D-cache)相连。

 Cache的特点:

以 D-cache 为例, 因为直接与 LSU 相连,访问速度会比直接访问 SRAM 或外部 RAM 快很多, 只要保证 cache 有足够高的命中率(由 cache 策略保证), 尽量少的 cache miss, 读/写的速度会有比较大的提高。
 

2 结构及策略

2.1 Cache类型

1)指令Cache

2)数据Cache

2.2 Cache实例

同样这里以 D-cache 为例, 看一下 D-cache 的构成:包括 Address 和 cache-line, Address 表明其地址࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值