电子产业一站式赋能平台

PCB联盟网

搜索
查看: 187|回复: 0
收起左侧

Cortex-M7内核的Cache是如何提升访问效率的?且看硬核实测

[复制链接]

355

主题

360

帖子

2831

积分

三级会员

Rank: 3Rank: 3

积分
2831
发表于 2021-5-8 22:48:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形% R" t% j' B! [# Q2 F
上一篇文章 《实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形(有预取)》 里痞子衡抓取了Cache关闭但Prefetch开启下的AHB读访问对应的Flash端时序波形图,我们知道了FlexSPI的Prefetch功能确实在一定程度上改善了Flash访问效率,但是AHB RX Buffer最大仅1KB(对i.MXRT1050而言),不可拆分成更小粒度Buffer去缓存不同Flash地址处的数据(对于同一AHB master而言),这样对于代码中多个不同小数据块重复的Flash空间访问,Prefetch机制并没有明显提升访问效率。
, |' O, k8 A" Z$ A6 l% n) m针对这种不连续Flash地址空间频繁访问低效情况,ARM Cortex-M7内核给出了解决方案,那就是L1 Cache技术,今天痞子衡就来继续测一测开启L1 Cache下的Flash AHB读访问情形(本文主要针对D-Cache):
) ?3 R/ j% U: {4 e( \0 ^一、Cortex-M7的Cache功能对于Cortex-M系列家族(M0+/M3/M4/M7/M23/M33/M35P/M55)来说,L1 Cache仅在Cortex-M7和Cortex-M55内核上存在,说白了,L1 Cache是专为高性能内核配置的,而目前的i.MXRT1xxx系列微控制器都是基于Cortex-M7内核。
; p. c* u+ A  U0 O下面是i.MXRT1050的内核系统框图,可以看到它集成了32KB D-Cache,Cache经由AXI64总线连到SIM_M7和SIM_EMS模块,最终转成AHB总线连接到FlexSPI模块,因此对于Flash的AHB读访问是可以受到D-Cache加速的。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表