Cortex‐M3-指令集
生活随笔
收集整理的這篇文章主要介紹了
Cortex‐M3-指令集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Cortex‐M3-指令集:
- Cortex‐M3 只使用 Thumb‐2 指令集。這是個了不起的突破,因為它允許 32 位指令和 16 位指令水乳交融,代碼密度與處理性能兩手抓,兩手都硬。而且雖然它很強大,卻依然易于使用。
- 在過去,做 ARM 開發必須處理好兩個狀態。這兩個狀態是井水不犯河水的,它們是:32 位的ARM 狀態和 16 位的 Thumb 狀態。當處理器在 ARM 狀態下時,所有的指令均是 32 位的(哪怕只是個”NOP”指令),此時性能相當高。而在 Thumb 狀態下,所有的指令均是 16 位的,代碼密度提高了一倍。不過,thumb 狀態下的指令功能只是 ARM 下的一個子集,結果可能需要更多條的指令去完成相同的工作,導致處理性能下降。
- 為了取長補短,很多應用程序都混合使用 ARM 和 Thumb 代碼段。然而,這種混合使用是有額外開銷(overhead)的,時間上的和空間上的都有,主要發生在狀態切換之時。另一方面,ARM 代碼和 Thumb 代碼需要以不同的方式編譯,這也增加了軟件開發管理的復雜度。
- 伴隨著 Thumb‐2 指令集的橫空出世,終于可以在單一的操作模式下搞定所有處理了,再也沒有來回切換的事來煩你了。事實上,Cortex‐M3 內核干脆都不支持 ARM 指令,中斷也在 Thumb 態下處理(以前的 ARM 總是在 ARM 狀態下處理所有的中斷和異常)。這可不是小便宜,它使 CM3 在好幾個方面都比傳統的 ARM 處理器更先進:
- 消滅了狀態切換的額外開銷,節省了 both?執行時間和指令空間。
- 不再需要把源代碼文件分成按 ARM 編譯的和按 Thumb 編譯的,軟件開發的管理大大減負。
- 無需再反復地求證和測試:究竟該在何時何地切換到何種狀態下,我的程序才最有效率。開發軟件容易多了
- CM3 并不支持所有的 Thumb‐2 指令,ARMv7‐M 的規格書只要求實現 Thumb‐2 的一個子集。舉例來說,協處理器指令就被裁掉了(可以使用外部的數據處理引擎來替代)。CM3 也沒有實現 SIMD 指令集。舊世代的一些 Thumb 指令不再需要,因此也被排除。
總結
以上是生活随笔為你收集整理的Cortex‐M3-指令集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex‐M3-存储器保护单元(MP
- 下一篇: Cortex-M3-栏目-文章来源