ARM指令集发展概述
? ? ? ?指令集的設計是處理器結構中最重要的一個部分,用ARM的術語稱之為ISA(Instruction Set?Architecture)。所有的ARM Cortex-M 處理器均基于Thumb-2技術,在一種工作狀態中允許混合使用16位和32位指令。這一點與傳統的ARM處理器如ARM7TDMI不同。為了更好地理解ARM處理器中不同指令集的差異,接下來我們簡單回顧一下ARM指令集的發展歷史。
? ? ? ? 早期的ARM處理器(在ARM7TDMI處理器之前)僅支持32位ARM指令集。在接下來的數年間,ARM架構從版本1發展到版本4,ARM指令集也隨之不斷發展。ARM指令集功能強大,大多數指令支持條件執行,同時提供了很好的性能。但是與8位和16位架構的處理器相比,32位的ARM指令集需要更多的存儲器空間。隨著手機等設備對32位處理器需求的不斷增加,功耗和成本都變得十分關鍵。如何減少程序占用空間大小的問題亟待解決。
? ? ? ? 在1995年,ARM推出了ARM7TDMI處理器,開始支持一種新的工作狀態,可以運行一種新的16位指令集。這種16位指令集稱為Thumb指令集(Thumb即大拇指,一語雙關,表明它比ARM指令集占用空間更小)。ARM7TDMI可以工作在ARM狀態(默認情況下),也可以工作在Thumb狀態。正常工作時,處理器可以在軟件的控制下在ARM狀態和Thumb狀態間切換。程序的一部分利用ARM指令來編譯,從而獲得更高的性能,其余部分用Thumb指令編譯,從而獲得更高的代碼密度,減少程序占用的空間。利用這種實現機制,應用程序就可以在縮緊代碼大小的同時獲得較高的性能。在有些情況下,Thumb代碼可以比相同條件下的ARM代碼減少30%的程序空間。 ??
? ? ? ? 在ARM7TDMI處理器的設計中,利用一種映射功能可以將Thumb指令翻譯成ARM指令,之后進行解碼。這樣只需要一個指令譯碼器即可。ARM和Thumb兩種工作狀態在新的ARM處理器中仍然支持,例如Cortex-A處理器系列及Cortex-R處理器系列。雖然Thumb指令集能夠提供ARM指令集所能提供的大多數功能,但是它仍然存在一些限制。例如對可操作的寄存器,尋址模式都存在限制,用于數據或地址操作的立即數范圍也有所減少。 ? ? ? ? ? ??
? ? ? ? 2003年,ARM推出了Thumb-2技術,將16位指令集和32位指令集集成到一種工作狀態。Thumb-2指令集是Thumb指令集的超集。許多指令是32位的,因此可以像ARM指令集一樣實現相應操作,但是它與ARM指令集有不同的指令編碼方式。第一個支持Thumb-2技術的處理器是ARM1156T-2處理器。?
? ? ? ? ?在2006年,ARM發布了Cortex-M3處理器。Cortex-M3處理器集成Thumb-2技術,僅支持Thumb工作態。與早期的ARM處理器不同,Cortex-M3處理器不支持ARM指令集。之后更多的Cortex-M處理器發布,為面向不同市場分別采用了Thumb指令集的不同指令范圍。因為Cortex-M3處理器不支持ARM指令集,所以向后不能與傳統的ARM處理器如ARM7TDMI兼容。換句話說,ARM7TDMI上運行的二進制鏡像文件不能在Cortex-M3處理器上運行。Cortex-M3處理器(ARMv7-M)中的Thumb-2指令集是ARM7TDMI ( AR M v4T)處理器中的Thumb指令集的超集,許多ARM指令可以移植到等價的32位Thumb指令,從而使應用的移植更加方便。
? ? ? ? ?ARM指令集仍在不斷發展當中。2011年,ARM發布了ARMv8架構。它包含了一些新的指令集用于64位操作。當前ARMv8架構僅限于Cortex-A處理器,Cortex-M處理器暫不包含這種架構。
總結
以上是生活随笔為你收集整理的ARM指令集发展概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS手势开发的那点儿事
- 下一篇: 少写点if-else吧,它的效率有多低你