M0内核与M3内核⽐较Cortex-M3和Cortex-M4基本上只有FPU的区别,其实M4还多了⼀些DSP扩展指令
Cortex-M7性能爆表,DMIPS跑分已经超过了Cortex-A8。
虽然它们之间存在这么多差异,但是向上兼容性却做的很好。
Cortex-M0向上兼容M3,M3向上兼容M4,M4向上兼容M7。
这种兼容是⼆进制级别的兼容,也就是说⽤Cortex-M0编译出来的代码,可以直接在M3运⾏。
只不过由于指令集的原因,不能发挥M3全部的性能。
为什么这么说呢?
因为Cortex-M0只⽀持Thumb基础指令集,⼤量16位指令,和少数⼏条32位指令。
其中⼤部分16位指令只能访问R0 - R7寄存器,⽐如LDR/STR。
要访问R8-R12只能使⽤MOV指令。
⽽Cortex-M3则⽀持Thumb2扩展指令,包含了⼤量的32位指令,运⾏效率可以极⼤提升。
记住我
⽐如LDRD指令,可以⼀次性读取64位数据到2个寄存器。
此外由于架构的原因,Cortex-M0不⽀持⾮4字节对齐的32位整数访问,⽽Cortex-M3则可以。
M3⽐M0的对⽐
1、M0只有56条指令,其中50条是16位的,M3⼀条指令就能完成的功能M0需要多条指令。
2、M3数据总线和指令总线是分开的,可以同时取指和取操作数,⽽M0取指和取操作数是同⼀条总线