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取指和取操作數是同一條總線

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM