标题:
STM32F7有别于其它相同内核的MCU的几个特性
[打印本页]
作者:
taoran
时间:
2016-6-4 17:49
标题:
STM32F7有别于其它相同内核的MCU的几个特性
对于微处理界第一颗基于
ARM? Cortex?-M7
内核的高性能微控制器
STM32F7
系列,相信很多人对它不陌生了。比如
STM32F7
系列微控制器采用
90nm
工艺,工作频率高达
216MHz
,采用
6
级超标量流水线,带浮点单元,测试分数高达
1000CoreMarks
,性能提升的同时保持高能效,与
STM32F4
系列管脚高度兼容等等。
一般来讲,基于
ARM? Cortex?-M7
内核的微控制器大多具有类似的处理器配置选项。通常包括:
一个
64
位
AXI
系统总线接口
一个指令和数据高速缓存
64
位指令紧耦合存储器(
ITCM
)
双
32
位数据紧耦合存储器(
DTCM
)
不过,本文从应用开发的层面侧重介绍
STM32F7
系列有别于其它使用
Cortex-M7
内核的
MCU
的几个特性。
首先,第一个重要区别在于
STM32F7
器件同时具有
ITCM
接口和
AXI
接口连接到片内闪存,如图
1
所示。
图1:基于ARMCortex-M7内核的系统级芯片的框图
ITCM
和
AXI
双接口的存在使得
执行代码具备更大的灵活性。此外,
STM32F7
还有一个称为自适应实时加速器(
ART
Accelerator
?)的内置闪存加速器,从而实现闪存零等待执行。使用
TCM
接口和
ART
加速器能能实现与带缓存
AXI
接口相似的性能。同时用户代码也不会有高速缓存失效或高速缓存维护操作的麻烦。
利用
ARTAccelerator
加速引擎和高达
16kB
的
L1
缓存,
STM32F7 MCU
可实现
ARM Cortex-M7
的最佳性能。不管是从片内闪存还是外部存储器执行代码,在
216MHz
下均可达到
1082 CoreMark/462 DMIPS
。
第二个重大区别在于内部
SRAM
分布在几个模块中,以降低动态功耗,并允许从各个总线主机同时访问不同的
SRAM
模块,以优化带宽和延迟。
此架构的一个典型应用实例就是人机界面,在人机界面中,音频和图形数据与系统
RAM
之间的传输必须同时进行。
第三个就是它的高级浮点单元。
STM32F7
系列器件具有一个高性能的单或双精度浮点单元(
FPU
),支持所有
ARM
单或双数据处理指令和数据类型。
FPU
在需要浮点数学精度的许多应用中提供了优势,包括环路控制、音频处理、音频解码和数字滤波等。
当然它还有个额外优势,那就是将某些功能的执行或处理从
CPU
分流到
FPU
,使
CPU
用于其他任务。它支持双精度,因此更易于使用双精度浮点指令的基于
PC
的数学软件。
第四,STM32F7MCU最有特色的设计之一是它们的智能系统架构,它使用两个子系统,如图2所示:
图
2
:
STM32F7
微控制器的总线矩阵
AXI-to-multi-AHB
桥将
AXI4
协议转换成
AHB-
Lite
协议
multi-AHB
总线矩阵管理主机之间的访问仲
裁
该仲裁使用循环调度算法保障主机对从机的访问,即使多个高速外设同时工作,也能实现同时访问并高效运行。
最后,不得不提它的
L1
高速缓存。
STM32F7
嵌入了指令和数据高速缓存,当从片上或片外存储器读取代码和数据时可弥补插入等待的时间,从而提高性能。当然,如果出现高速缓存失效和高速缓存行填充,此时读取高速缓存将无法保证数据的确定性。
由于可缓存存储器不仅可以被
CPU
访问,也可以被其他主机访问(如
DM
),因此需要软件维护操作。比如,访问物理存储器时,主机可能会读出过期的数据,而更新的数据在
CPU
高速缓存中已经有效可用了。
为了避免这个问题,开发者编写用户代码时可以采取以下措施:
当
CPU
以外的主机要对可缓存存储器进行访问操作之前,建议先进行高速缓存清除操作。这是为了确保
CPU
的最新数据被写回到物理存储器。
当
CPU
以外的主机对可缓存的存储器更新数据后,在对该位置进行读操作之前,
CPU
应该使高速缓存失效。这是为了确保从物理存储器的直接读取。
有时可以考虑无高速缓存操作。当一个可被缓存的存储器被其它主机频繁访问时,可以配置该存储器的不可缓存属性从而防止数据的不一致问题发生。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1