【电路笔记 STM32】Cortex-M3 Cortex-M4 Cortex-M7 ARM架构区别+关键不同+图示对比+代码兼容性
文章目录内核特性Cortex-M3架构特性Cortex-M4架构特性Cortex-M7架构特性Cortex-M3 和 Cortex-M4关键不同点图示对比代码兼容性Cortex-M4 和 Cortex-M7关键不同点图示对比代码兼容性CG内核特性Cortex-M3架构特性特性 (Feature)描述 (Description)架构 (Architecture)Armv7-M总线接口 (Bus Interface)3x AMBA AHB-Lite 接口 (哈佛总线架构)AMBA ATB 接口用于 CoreSight 调试组件指令集支持 (ISA Support)Thumb / Thumb-2 子集流水线 (Pipeline)三级流水线 (Three-stage)内存保护 (Memory Protection)可选 8 区域 MPU包含子区域和背景区域位操作 (Bit Manipulation)集成位域处理指令 (Bit-field Processing Instructions)总线级位带操作 (Bus Level Bit Banding)中断 (Interrupts)不可屏蔽中断 (NMI) 1 到 240 个物理中断中断优先级级别 (Interrupt Priority Levels)8 到 256 个优先级级别唤醒中断控制器 (Wake-up Interrupt Controller)可选增强指令 (Enhanced Instructions)硬件除法 (2-12 个周期)单周期 (32x32) 乘法饱和调整支持 (Saturated Adjustment Support)睡眠模式 (Sleep Modes)集成 WFI 和 WFE 指令及退出即睡眠 (Sleep On Exit) 功能Sleep 和 Deep Sleep 信号可选保留模式 (Retention Mode)配合 Arm 电源管理套件调试 (Debug)可选 JTAG 和串行线调试 (Serial Wire Debug) 端口最多 8 个断点和 4 个观察点追踪 (Trace)可选指令追踪 (ETM)、数据追踪 (DWT) 和仪器追踪 (ITM)Cortex-M4架构特性特性 (Feature)描述 (Description)架构 (Architecture)Armv7E-M总线接口 (Bus Interface)3x AMBA AHB-Lite 接口 (哈佛总线架构)AMBA ATB 接口用于 CoreSight 调试组件指令集支持 (ISA Support)Thumb / Thumb-2流水线 (Pipeline)3 级 分支预测 (branch speculation)DSP 扩展 (DSP Extension)单周期 16/32 位 MAC单周期双 16 位 MAC8/16 位 SIMD 算术运算硬件除法 (2-12 个周期)浮点单元 (Floating-Point Unit)可选单精度浮点单元 (FPU)符合 IEEE 754 标准内存保护 (Memory Protection)可选 8 区域 MPU包含子区域和背景区域位操作 (Bit Manipulation)集成位域处理指令 (Bit Field Processing Instructions)总线级位带操作 (Bus Level Bit Banding)中断 (Interrupts)不可屏蔽中断 (NMI) 1 到 240 个物理中断中断优先级级别 (Interrupt Priority Levels)8 到 256 个优先级级别唤醒中断控制器 (Wake-up Interrupt Controller)可选睡眠模式 (Sleep Modes)集成 WFI 和 WFE 指令及退出即睡眠 (Sleep On Exit) 功能Sleep 和 Deep Sleep 信号可选保留模式 (Retention Mode)配合 Arm 电源管理套件调试 (Debug)可选 JTAG 和串行线调试 (Serial Wire Debug) 端口最多 8 个断点和 4 个观察点追踪 (Trace)可选指令追踪 (ETM)、数据追踪 (DWT) 和仪器追踪 (ITM)Cortex-M7架构特性特性 (Feature)描述 (Description)架构 (Architecture)Armv7E-M指令集支持 (ISA Support)Thumb / Thumb-2流水线 (Pipeline)6 级超标量 (Superscalar) 及分支预测DSP 扩展 (DSP Extension)单周期 16/32 位 MAC单周期双 16 位 MAC8/16 位 SIMD 算术运算硬件除法浮点单元 (FPU)可选单精度和双精度 FPU配置选项无、仅单精度、单精度双精度符合 IEEE 754 标准互连架构 (Interconnect)64-bit AMBA4 AXI32-bit AHB 外设端口 (AHBP)32-bit AHB 从机端口 (AHBS)用于外部主设备如 DMA 控制器访问紧耦合存储器 (TCM)APB 接口用于 CoreSight 调试组件指令缓存 (Instruction Cache)0 到 64 KB2 路组相联可选纠错码 (ECC)数据缓存 (Data Cache)0 到 64 KB4 路组相联可选 ECC指令 TCM (Instruction TCM)0 到 16 MB可选 ECC 接口数据 TCM (Data TCM)0 到 16 MB可选 ECC 接口内存保护 (Memory Protection)可选内存保护单元 (MPU)支持 8 或 16 个区域包含子区域和背景区域位操作 (Bit Manipulation)集成位域处理指令 (Integrated Bit-Field Processing Instructions)中断 (Interrupts)不可屏蔽中断 (NMI) 1 到 240 个物理中断中断优先级级别 (Interrupt Priority Levels)8 到 256 个优先级级别唤醒中断控制器 (Wake-up Interrupt Controller)可选睡眠模式 (Sleep Modes)集成 WFI 和 WFE 指令及退出即睡眠 (Sleep-On Exit) 功能Sleep 和 Deep Sleep 信号可选保留模式 (Retention Mode)配合 Arm 电源管理套件调试 (Debug)可选 JTAG 和串行线调试 (Serial Wire Debug) 端口最多 8 个断点和 4 个观察点追踪 (Trace)可选嵌入式追踪宏单元 (ETM)、微追踪缓冲区 (MTB)、数据观察点和追踪 (DWT) 以及仪器追踪 (ITM)可选配合 ETM 的完整数据追踪双核锁步支持 (Dual Core Lock-Step Support)是支持 DCLS 配置Cortex-M3 和 Cortex-M4M3 和 M4 架构基本一样M4 多了 FPU 和 DSP/SIMD 指令集适合更复杂的数学运算场景。软件层面M3 和 M4 的二进制代码如果不使用 DSP/FPU 指令是可以互相运行的。特性 (Feature)Armv7-M (如 Cortex-M3)Armv7E-M (如 Cortex-M4)架构 (Architecture)Armv7-MArmv7E-M总线接口 (Bus Interface)3x AMBA AHB-Lite (哈佛架构)AMBA ATB (CoreSight)3x AMBA AHB-Lite (哈佛架构)AMBA ATB (CoreSight)指令集支持 (ISA Support)Thumb / Thumb-2子集Thumb / Thumb-2 (完整支持 DSP 指令)流水线 (Pipeline)三级流水线 (Three-stage)3 级 分支预测 (Branch Speculation)DSP 扩展 (DSP Extension)无专用 DSP 扩展*(仅含基础增强指令)*支持:- 单周期 16/32 位 MAC- 单周期双 16 位 MAC- 8/16 位 SIMD 算术浮点单元 (FPU)不支持可选单精度 FPU (IEEE 754 兼容)乘除法指令 (Multiply/Divide)硬件除法 (2-12 周期) 单周期 (32x32) 乘法 饱和调整支持硬件除法 (2-12 周期)-包含在 DSP 扩展中的高效 MAC 运算内存保护 (Memory Protection)可选 8 区域 MPU (含子区域/背景区域)可选 8 区域 MPU (含子区域/背景区域)位操作 (Bit Manipulation)集成位域处理指令 总线级位带操作集成位域处理指令 总线级位带操作中断系统 (Interrupts)NMI 1~240 物理中断8~256 优先级级别NMI 1~240 物理中断8~256 优先级级别唤醒中断控制器可选可选睡眠模式 (Sleep Modes)WFI/WFE 指令, Sleep On ExitSleep/Deep Sleep 信号可选保留模式 (Retention)WFI/WFE 指令, Sleep On ExitSleep/Deep Sleep 信号可选保留模式 (Retention)调试 (Debug)可选 JTAG/SWD最多 8 断点 / 4 观察点可选 JTAG/SWD最多 8 断点 / 4 观察点追踪 (Trace)可选 ETM, DWT, ITM可选 ETM, DWT, ITM关键不同点FPU浮点单元M4有Optional Single Precision Floating Point Unit可选单精度浮点单元M3没有 FPUDSP/SIMD 指令支持M4Central Core with DSP/SIMDSingle Cycle MACM4 支持SMULWB,SMLAD,SSAT,PKHBT等 DSP 指令用于音频、电机控制、滤波等M3Hardware Divide, Single cycle Multiply——没有 MAC乘加或 SIMD图示对比代码兼容性如果你的代码只用标准 C 语言 ARMv6-M/v7-M 基础指令→ 可在 M3/M4 上无缝移植。如果你用了__fp16,float运算 启用 FPU → 只能在 M4F 上高效运行__DSPintrinsics如__SSAT,__SMUAD→ 只能在 M4 上运行编译器配置# Cortex-M3-mcpucortex-m3-mthumb# Cortex-M4 (无 FPU)-mcpucortex-m4-mthumb# Cortex-M4F (带 FPU)-mcpucortex-m4-mfpufpv4-sp-d16 -mfloat-abihard-mthumbCortex-M4 和 Cortex-M7Cortex-M7 是 Cortex-M4 的“超频豪华版”性能飞跃但代价是引入了 Cache 管理和更复杂的内存子系统合理使用 TCM 可规避大部分陷阱发挥其极致性能。Cortex-M7 Cortex-M4 Cache TCM 更高带宽总线 双发射超标量流水线 可选双精度 FPUCortex-M7 采用6级超标量流水线和分支预测而 M4 是简单的 3 级流水线。这使得 M7 在高频下具有更高的指令吞吐量。M7 在相同频率下执行效率远高于 M4。但更深的流水线意味着分支预测失败惩罚更大需优化代码结构如减少 if/switch。Cortex-M7 集成了AXI 总线接口以及指令/数据缓存 (Cache)这是 M4 通常不具备的M4 主要依赖 TCM。Cortex-M7 可选配双精度 (Double-precision)FPU而 M4 仅支持单精度。双精度浮点运算适合科学计算、高精度控制算法。但双精度指令在某些 M7 实现中可能较慢非单周期需注意性能权衡。Cortex-M7 的 内存保护MPU 可扩展至16 个区域M4 通常为 8 个。Cortex-M7 支持双核锁步 (Lock-Step)配置专为高功能安全需求如汽车 ISO 26262 ASIL-D设计。Cortex-M7 增加了MTB (Micro Trace Buffer)和更高级的数据追踪选项。M7 提供更强大的实时调试能力适合复杂系统故障定位。可记录完整指令流和数据访问用于性能剖析和安全审计。两者在中断响应机制上完全兼容。M7 的 WIC 可独立供电在深度睡眠时仍能响应特定中断更适合电池设备。Cortex-M7可连接大容量外部存储器如 128MB SDRAM适合 GUI、图像缓冲、大数据处理。AXI 总线支持乱序、突发传输大幅提升大数据搬运效率如 LCD 刷新、音频流。特性 (Feature)Cortex-M4 (Armv7E-M)Cortex-M7 (Armv7E-M)架构 (Architecture)Armv7E-MArmv7E-M总线/互连接口(Bus/Interconnect)3x AMBA AHB-Lite(哈佛架构)AMBA ATB (CoreSight)64-bit AMBA4 AXI32-bit AHB 外设端口 (AHBP)32-bit AHB 从机端口 (AHBS, 用于DMA访问TCM)APB (CoreSight)指令集支持(ISA Support)Thumb / Thumb-2Thumb / Thumb-2流水线(Pipeline)3 级 分支预测 (Branch Speculation)6 级超标量 (Superscalar) 分支预测缓存 (Cache)通常无集成缓存 (依赖紧耦合存储器 TCM)指令缓存: 0-64 KB (2路, 可选ECC)数据缓存: 0-64 KB (4路, 可选ECC)紧耦合存储器(TCM)支持 (具体大小取决于实现)指令 TCM: 0-16 MB (可选ECC)数据 TCM: 0-16 MB (可选ECC)DSP 扩展(DSP Extension)• 单周期 16/32-bit MAC• 单周期双 16-bit MAC• 8/16-bit SIMD• 硬件除法 (2-12 周期)• 单周期 16/32-bit MAC• 单周期双 16-bit MAC• 8/16-bit SIMD• 硬件除法浮点单元(FPU)可选单精度(Single-precision)符合 IEEE 754可选单精度 或 双精度(配置选项无 / 仅单精度 / 单双精度)符合 IEEE 754内存保护(Memory Protection)可选 8 区域 MPU (含子区域和背景区域)可选8 或 16 区域MPU (含子区域和背景区域)位操作(Bit Manipulation)• 集成位域处理指令• 总线级位带操作 (Bit Banding)• 集成位域处理指令*(注M7通常也支持位带但表中主要强调指令)*中断系统(Interrupts)NMI 1 至 240 个物理中断NMI 1 至 240 个物理中断中断优先级(Priority Levels)8 至 256 级8 至 256 级唤醒中断控制器可选可选睡眠模式(Sleep Modes)• WFI / WFE 指令• Sleep On Exit• Sleep / Deep Sleep 信号• 可选保留模式 (Retention)• WFI / WFE 指令• Sleep On Exit• Sleep / Deep Sleep 信号• 可选保留模式 (Retention)调试(Debug)• 可选 JTAG / SWD• 最多 8 断点 / 4 观察点• 可选 JTAG / SWD• 最多 8 断点 / 4 观察点追踪(Trace)• 可选 ETM (指令), DWT, ITM• 可选ETM,MTB(微追踪缓冲), DWT, ITM• 可选完整数据追踪 (Full Data Trace)高可靠性特性双核锁步支持 (Dual Core Lock-Step, DCLS)关键不同点缓存系统M4CPU 直接访问 SRAM/Flash延迟确定无需关心一致性。M7若使用普通 SRAM Cache →必须手动维护 Cache 一致性如 DMA 后调用SCB_InvalidateDCache。若使用DTCM→ 绕过 Cache行为类似 M4适合实时数据ADC buffer, 通信缓冲区。若使用ITCM→ 存放关键中断服务程序或高频函数零等待执行。特性Cortex-M4Cortex-M7I-Cache / D-Cache无可选 16KB~64KB WT/WB CacheTCM (紧耦合内存)无可选 ITCM DTCM各 up to 16MBCPU 核心与流水线特性Cortex-M4Cortex-M7流水线3 级6 级超标量双发射指令吞吐每周期最多 1 条指令每周期最多 2 条指令若指令无关CoreMark/MHz3.40~8.0实际芯片如 STM32H7 可达 8.5浮点单元FPU特性Cortex-M4Cortex-M7FPU 类型单精度 FPv4-SP-D16单精度 双精度 FPv5-D16-M指令支持VADD.F32,VMUL.F32等同上 VADD.F64,VDIV.F64等双精度指令总线接口与带宽特性Cortex-M4Cortex-M7主总线AHB-LiteAXI Master64-bit AMBA4从总线AHB-Lite x2AHB Slave AXI Master外部内存支持有限通过 AHB支持 DDR/SDRAM/QSPI Flash通过 AXI调试与跟踪Trace特性Cortex-M4Cortex-M7ETM嵌入式跟踪宏单元可选ETMv4全指令数据跟踪ITM/DWT有有增强版TPIU跟踪端口有有支持更高带宽中断与低功耗特性Cortex-M4Cortex-M7NVIC1~240 中断8~256 优先级同左WIC唤醒中断控制器有有独立电源域低功耗模式Sleep, Stop, Standby同左 更细粒度功耗控制图示对比代码兼容性软件移植注意事项:基础代码兼容M3/M4 代码可在 M7 上运行只要不用 DSP/FPU 特有指令。如果你正在从 M4 迁移到 M7学习 Cache 一致性机制规划 TCM 区域用途使用 MPU 或链接脚本明确划分内存属性测试DMA传输DMA Cache 冲突所有通过 DMA 传输的数据缓冲区要么放在DTCM要么在访问前调用SCB_CleanDCache/InvalidateDCache。// 方法1将 ADC 缓冲区放入 DTCM链接脚本配置uint32_tadc_buffer[1024]__attribute__((section(.dtcm)));// 方法2手动维护 CacheSCB_InvalidateDCache_by_Addr(adc_buffer,sizeof(adc_buffer));性能优化策略将热点函数放入ITCM零等待执行将实时数据放入DTCM避免 Cache 不一致对大数组使用Cacheable SRAM 预取指令PLD使用AXI 总线连接高速外设如 LCD、Camera编译器配置示例# Cortex-M4 (no FPU)-mcpucortex-m4-mthumb# Cortex-M4F (with FPU)-mcpucortex-m4-mfpufpv4-sp-d16 -mfloat-abihard-mthumb# Cortex-M7 (with FPU DP)-mcpucortex-m7-mfpufpv5-d16 -mfloat-abihard-mthumb# Cortex-M7 TCM 优化-mcpucortex-m7-mtcm-mthumbCGCortex-M7 处理器数据表 Arm Cortex-M7 Processor DatasheetArm Cortex-M4 Processor DatasheetArm Cortex-M3 Processor DatasheetARMv7-M Architecture Reference Manual 但是全文好像没有整体架构图Tightly Coupled MemoryChapter 5. Tightly-Coupled Memory InterfaceCaches When the ARM architecture was first developed, the clock speed of the processor and the access speeds of memory were broadly similar. Processor cores today are much more complicated and can be clocked orders of magnitude faster.webassembly007 OPTIMIZING CACHE USAGE CPU Cache Optimization
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2431339.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!