3.3 ARM处理器结构
ARM微处理器的种类繁多,这里以最新的Cortex-M3内核为基础,介绍ARM微处理器的结构。这里介绍内容适用于ST公司的STM32芯片,这是一款采用Cortex-M3内核的ARM微处理器。
3.3.1 ARM的系统构架
ARM Cortex-M3内核主系统由四个驱动单元:内核ICode总线(I-bus)、DCode总线(D-bus)、系统总线(S-bus)和GP-DMA(通用DMA)构成。
· ICode总线:该总线将Cortex-M3内核的指令总线与Flash指令接口相连接。指令预取在此总线上完成。
· DCode总线:该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。
· 系统总线:此总线连接Cortex-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。
· DMA总线:此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。
Cortex-M3通过总线矩阵来协调内核系统总线和DMA主控总线之间的访问仲裁。此仲裁利用轮换算法。此总线矩阵由三个驱动部件(CPU的DCode、系统总线和DMA总线)和三个被动部件(闪存存储器接口、SRAM和AHB2APB桥)构成。
除此之外,Cortex-M3还包括了如下三个被动单元:
· 内部SRAM。
· 内部闪存存储器。
· AHB到APB的桥(AHB2APBx),它连接所有的APB设备。
这些都是通过一个多级的AHB总线构架相互连接的,AHB外设通过总线矩阵与系统总线相连,允许DMA访问。两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。
3.3.2 ARM的流水线结构
ARM Cortex-M3与ARM7内核一样,采用适合于微控制器应用的三级流水线,但增加了分支预测功能。
现代处理器大多采用指令预取和流水线技术,以提高处理器的指令执行速度。流水线处理器在正常执行指令时,如果碰到分支(跳转)指令,由于指令执行的顺序可能会发生变化,指令预取队列和流水线中的部分指令就可能作废,而需要从新的地址重新取指、执行,这样就会使流水线“断流”,处理器性能因此而受到影响。特别是现代C语言程序,经编译器优化生成的目标代码中,分支指令所占的比例可达10%~20%,对流水线处理器的影响会更大。为此,现代高性能流水线处理器中一般都加入了分支预测部件,就是在处理器从存储器预取指令时,当遇到分支(跳转)指令时,能自动预测跳转是否会发生,再从预测的方向进行取指,从而提供给流水线连续的指令流,流水线就可以不断地执行有效指令,保证了其性能的发挥。
ARM Cortex-M3内核的预取部件具有分支预测功能,可以预取分支目标地址的指令,使分支延迟减少到一个时钟周期。
3.3.3 ARM的存储器结构
ARM7、ARM9等内核没有定义存储器映射,各芯片厂商自己定义了存储器映射,这使得各厂商的MCU存储器映射都不完全一致,给用户学习使用及程序移植带来了麻烦。
Cortex-M3内核定义了统一的存储器映射,各厂商生产的基于Cortex-M3内核的微控制器芯片都具有一致的存储器映射,对用户使用各种基于Cortex-M3的MCU及代码在不同MCU上的移植带来了很大的便利。
固定的Cortex-M3存储器映射,如图3-1所示。
图3-1 固定的Cortex-M3存储器映射