|
大家好,我是痞子衡,是正經(jīng)搞技術的痞子。今天痞子衡給大家介紹的是實抓Flash信號波形來看i.MXRT的FlexSPI外設下AHB讀訪問情形。4 X& z4 h: \1 J5 Z( ]
上一篇文章 《實抓Flash信號波形來看i.MXRT的FlexSPI外設下AHB讀訪問情形(有預取)》 里痞子衡抓取了Cache關閉但Prefetch開啟下的AHB讀訪問對應的Flash端時序波形圖,我們知道了FlexSPI的Prefetch功能確實在一定程度上改善了Flash訪問效率,但是AHB RX Buffer最大僅1KB(對i.MXRT1050而言),不可拆分成更小粒度Buffer去緩存不同F(xiàn)lash地址處的數(shù)據(jù)(對于同一AHB master而言),這樣對于代碼中多個不同小數(shù)據(jù)塊重復的Flash空間訪問,Prefetch機制并沒有明顯提升訪問效率。
. f: u1 y+ w' w/ f針對這種不連續(xù)Flash地址空間頻繁訪問低效情況,ARM Cortex-M7內(nèi)核給出了解決方案,那就是L1 Cache技術,今天痞子衡就來繼續(xù)測一測開啟L1 Cache下的Flash AHB讀訪問情形(本文主要針對D-Cache):
' Q6 \ u: R }4 Z一、Cortex-M7的Cache功能對于Cortex-M系列家族(M0+/M3/M4/M7/M23/M33/M35P/M55)來說,L1 Cache僅在Cortex-M7和Cortex-M55內(nèi)核上存在,說白了,L1 Cache是專為高性能內(nèi)核配置的,而目前的i.MXRT1xxx系列微控制器都是基于Cortex-M7內(nèi)核。
* l, g2 f* c/ t& _3 y0 R下面是i.MXRT1050的內(nèi)核系統(tǒng)框圖,可以看到它集成了32KB D-Cache,Cache經(jīng)由AXI64總線連到SIM_M7和SIM_EMS模塊,最終轉(zhuǎn)成AHB總線連接到FlexSPI模塊,因此對于Flash的AHB讀訪問是可以受到D-Cache加速的。 |
|