×
单片机 > 单片机程序设计 > 详情

快速学Arm(35)--存储器加速模块(1)

发布时间:2024-05-18 发布时间:
|

LPC2300系列ARM内部有128bit宽度的Flash存储器,为了对该存储器进行管理,在芯片内部集成了存储器加上模块(MAM).MAM为用户调整Flash操作的参数提供了接口.


LPC2300系列ARM只是有一组Flash存储器,它包含3个128位的缓冲区:

.预取指缓冲区

.分支跟踪缓冲区

.数据缓冲区.

CPU对内部Flash取指和读取数据的操作时受到MAM制约的.例如,若MAM打开了,那么在CPU取指之前,MAM会判断要取出的这条指令是否在缓冲区内,若不存在,MAM会从Flash存储器读取一个指令行到缓冲区中.


介绍一下术语:

"取值":指Arm发出的直接读取Flash的请求.

"预取指":指对当前处理器取指地址之后的地址执行Flash读操作.我理解就是读取了当前地址,那么同时将下一地址提前读出应该就是所所的预取指,"预先取指",呵呵.


下图描述了MAM关闭时取指令的情况:


当关闭了MAM,所有的读Flash存储器请求都导致Flash的读操作.

下面描述了MAM打开时指令操作情况:


当MAM开启时,CPU需要从Flash读取一批指令来执行.那么对前三条指令的读取,CPU不用再从Flash读取而是从MAM的缓冲区里读取.注意第四条指令,CPU仍然会访问Flash.

不过,有时程序可能出现跳转,这时就无法再连续从Flash中读取指令了,见下面的流程:


上面讲的是对指令的读取,MAM同时拥有专门的数据缓冲区,其工作原理与分支跟踪缓冲区类似.当CPU从Flash读取数据时,会先查看这些数据是否在数据缓冲区,如果不在,那么MAN会执行一次Flash读操作,然后把128bit的数据读入数据缓冲区中.如果存在,则直接从缓冲区读取.这样就加快了数据访问的速度.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析