最近排查stm32F7的疑难杂症,研究到汇编,所以涉及到指令集,忽然发现竟然对arm的isa各版本不是很清楚。为了搞明白isa与stm32系列芯片的对应关系,特地查了查相关资料,做记录如下,至于每个版本的体系结构或者某款芯片的详细使用情况,查阅对应资料即可:

arm微体系架构发展一共经历了armv1--armv8阶段,从armv7开始体系结构分为cortex-A/R/M系列。
A系列主要应用于复杂处理场景;
R系列主要应用于实时处理场景;
M系列主要应用于针对成本和功耗敏感的场景;

ARMv1 -- arm1
armv2 -- arm2/arm3
armv3 -- arm6/arm7
armv4 -- atrongARM/arm7/arm9
armv5 -- arm9e/arm10e/xscale
armv6 -- arm11/cortex-M0/1
armv7 -- arm cortex-A/R/M
A -- arm cortex-A32/17/15/9/8/7/5
R -- arm cortex-R4/5/7
M -- m3/m4
armv8-A -- arm cortex-A35/53/57/72/73

m0、m1属于armv6指令集 冯诺依曼 STM32F0xx 三级流水线
m3属于armv7指令集 哈佛     STM32Lxxx/F1xx/F2xx  三级流水线
m4属于armv7指令集 哈佛     STM32F4xx  三级流水线、分支预测
m7属于armv7指令集     哈佛     STM32F7xx/H7xx 6级超标量、分支预测
哈佛结构: 指令空间和数据空间分开存储,允许同时取指和取数,提高吞吐量,运算能力。以dsp/arm为代表。
冯诺依曼结构:指令空间和数据空间统一存储,总线简单,计算机发展初期都是这种结构,简单成本低。分时复用总线,取指和取数容易冲突。以intel x86为代表。
但是后来随着i-cache和d-cache空间的添加,使得冯诺依曼结构和哈佛结构界限不是那么明显了。也可以说cache的应用是2者的结合产物。
01-15 01:05