前言
本文会从结构,原理以及应用方面对MPU和Cache进行分析,主要目的是希望读者对Cache有基本的了解,在具体的实际应用中,使用带有一级cache的MCU时,避免常见的错误。
Cache介绍
Cache及其原理
Cache,高速缓存,一般指的是L1 cache,即和Core紧耦合的,从STM32F7系列开始,
基于ARM cortex-M7内核,增加了对L1 Cache的支持。
21.jpg (104.41 KB, 下载次数: 29)
2017-3-3 14:48 上传
从这张图片可以看出来,无论是指令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,读/写的速度会有比较大的提高。
结构及策略
同样这里以D-cache为例,看一下D-cache的构成:
22.jpg (167.46 KB, 下载次数: 24)
2017-3-3 14:48 上传
包括Address和cache-line,Address表明其地址,对应一条包含32bytes的cache-line:
读数据时,当地址命中时即cache-hit,便可以直接从cache line中取出相应的数据,反之,当遍历了address都没有找到,就会产生cache-miss,这时便会从实际的内存单元(如SRAM)中取出相应的数据,并更新到某一条cache-line中并修改相应的cache-line信息;
写数据时,就有点不同了,包括write-through策略和write-back策略,当使用write-though策略时&#x