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