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取指和取操作数是同一条总线

 

posted @ 2022-02-17 08:34  Ben002  阅读(3164)  评论(0编辑  收藏  举报