你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F7 MPU Cache 浅析

[复制链接]
STMCU小助手 发布时间:2022-8-3 00:19
前言
3 t- v1 F5 R. H7 H/ B本文会从结构,原理以及应用方面对 MPU 和 Cache 进行分析,主要目的是希望读者对 Cache 有基本的了解,在具体的实际应用中,使用带有一级 cache 的 MCU 时,避免常见的错误。
! D$ S0 [/ r% l9 G# ~9 g
9 W- S  B$ L5 |$ \9 S

% A2 }/ R) @; r5 h6 C2 MCache 介绍 1 D. I2 V, w6 ~. G
Cache 及其原理6 a" `' G/ S$ Y9 o
Cache,高速缓存,一般指的是 L1 cache,即和 Core 紧耦合的,从 STM32F7 系列开始,基于 ARM cortex-M7 内核,增加了对 L1 Cache 的支持。
' H: E7 J  {4 b3 k9 X5 a% ?* L$ c" {4 I
$ `# s8 b! z$ {9 C1 ?& v0 i- e
ET`B@IG6E9NE8YWQG)F5HC1.png
/ g# X$ s) M4 Z! O6 D; n$ f/ W; P# F
! V9 f( \$ z6 y$ p, p
从这张图片可以看出来,无论是指令 Cache(I-cache)还是数据 Cache(D-cache),一旦使能之后,就分别与 Core 的 prefetch unit(I-cache)和 load-store unit(D-cache)相连,以 D-cache 为例,因为直接与 LSU 相连,访问速度会比直接访问 SRAM 或外部 RAM 快很多,只要保证 cache 有足够高的命中率(由 cache 策略保证),尽量少的 cache miss,读/写的速度会有比较大的提高。
* t8 r7 Y6 ^7 `7 m& F" d+ T2 N/ R& J

4 N4 ?4 w* @1 h" q5 ?结构及策略
0 d/ Y& c  g4 E2 I0 g6 \1 L, [* m/ Z- p同样这里以 D-cache 为例,看一下 D-cache 的构成:
5 z, `* U4 _0 B3 q( u$ ~. z
% j' f! k/ }( h7 V

/ ]( J4 M( r; j0 p6 ^6 v# z$ A$ D OZ@XQYAU~K@D`D$Y2M67A%W.png 6 k8 Z  `- \' N

# z7 a) E+ _' P

+ A$ `* B, t( ~8 j- D+ `2 k包括 Address 和 cache-line,Address 表明其地址,对应一条包含 32bytes 的 cache-line: 9 }4 R) B# M9 _9 }
读数据时,当地址命中时即 cache-hit,便可以直接从 cache line 中取出相应的数据,反之,当遍历了address 都没有找到,就会产生 cache-miss,这时便会从实际的内存单元(如 SRAM)中取出相应的数据,* ]4 m1 I$ f  q) ^0 T
并更新到某一条 cache-line 中并修改相应的 cache-line 信息; % r) t' v) H! G: d7 a) m2 |' J
写数据时,就有点不同了,包括 write-through 策略和 write-back 策略,当使用 write-though 策略时,更新 cache-line 的同时,同样会更新其对应的实际物理地址的区域,当采用 write-back 策略时,更新cache-line 的同时,并不是马上去更新其对应的实际物理地址的内容,而是在其认为合适或者所有的cache-line 都 dirty 的时候才会去更新,当然,也可以通过软件让其强制更新,即 clean 的动作,这一块会在后面的 cache 一致性问题上也会有体现;同样,对于为什么将 cache 拆分为 2-way 或是 4-way,这和 cache 自身的策略如查找算法等相关,由于本文侧重讨论 cache 的应用相关问题,所以关于 cache 本身的策略这里不再详述。; g) b  E9 H: \  f: `5 E

/ N* u* M6 A' G

! y) r4 R5 C6 X" LCache 及 MPU 属性
, S! M, P7 c' N) |6 a这里需要注意的是,cache 一般是配合 MPU(memory protection unit)一起使用的,首先需要通过 MPU配置相应 memory 的属性(normal, strongly-ordered, device, XN etc.),如下表所示:+ ?( }" S: B: d) Q: p+ u2 ]

" |# p8 e( O+ Q  S$ c1 b

1 r+ i0 t1 {: B I[FVC%TWNJ7JQEG)[[Y2B2R.png - ^9 |$ f$ D& J$ L
. ~& e2 K% Z% L9 O1 N% f

% X' m) q- X; R8 U1 J选取几个有特点的作为示例:: Y/ r2 k+ q/ i1 [( Z& r
0~0x1FFF_FFFF: flash 空间,属性为 normal,cache 的属性为 Write-through,即更新 cache 的同时,将数据同时写入相应的物理地址空间0x2000_0000~0x3FFF_FFFF: SRAM 空间,属性为 normal,cache 的属性为 write-back,即仅更新cache,在合适的时候(由 cache 策略决定或者软件强制更新)将数据更新到相应的SRAM 空间0x4000_0000~0x5FFFF_FFFF: 芯片内部的外设空间,属性为 device,这一版是外设寄存器所处的位置,对其读写的过程中不会经过 cacheXN 的意思是 Execute-Never,其含义为如果相应的地址空间是 XN,是绝不允许执行代码的。
* m+ F; r( P% k# {
6 B. H  _' H: X6 u; k

; y! J) ?1 M2 E' U) Q. B3 Y+ ?完整版请查看:附件+ k' ?" [9 ?! m4 U

! C0 @6 G+ b  Y
( |. X/ i- {4 T  E6 C) ]  X# W; Y# r' x

STM32F7 MPU Cache浅析.pdf

下载

530.93 KB, 下载次数: 9

赞 收藏 评论0 发布时间:2022-8-3 00:19

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版