ARM基礎(chǔ)知識(shí)科普:實(shí)現(xiàn)規(guī)模、性能和低功耗是 ARM體系結(jié)構(gòu)的關(guān)鍵特性介紹!
ARM 體系結(jié)構(gòu)是構(gòu)建每個(gè) ARM 處理器的基礎(chǔ)。ARM 體系結(jié)構(gòu)隨著時(shí)間的推移不斷發(fā)展,其中包含的體系結(jié)構(gòu)功能可滿足不斷增長(zhǎng)的新功能、高性能需求以及新興市場(chǎng)的需要。ARM 體系結(jié)構(gòu)支持跨躍多個(gè)性能點(diǎn)的實(shí)現(xiàn),并已在許多細(xì)分市場(chǎng)中成為主導(dǎo)的體系結(jié)構(gòu)。ARM 體系結(jié)構(gòu)支持非常廣泛的性能點(diǎn),因而可以利用最新的微體系結(jié)構(gòu)技術(shù)獲得極小的 ARM 處理器實(shí)現(xiàn)和極有效的高級(jí)設(shè)計(jì)實(shí)現(xiàn)。實(shí)現(xiàn)規(guī)模、性能和低功耗是 ARM 體系結(jié)構(gòu)的關(guān)鍵特性。
已經(jīng)開發(fā)了體系結(jié)構(gòu)擴(kuò)展,從而為 Java 加速 (Jazelle)、安全性 (TrustZone)、SIMD 和高級(jí) SIMD (NEON) 技術(shù)提供支持。ARMv8-A 體系結(jié)構(gòu)增加了密碼擴(kuò)展作為可選功能。
ARM 體系結(jié)構(gòu)通常描述為精簡(jiǎn)指令集計(jì)算機(jī) (RISC) 體系結(jié)構(gòu),因?yàn)樗韵碌湫?RISC 體系結(jié)構(gòu)特征:
統(tǒng)一寄存器文件加載/存儲(chǔ)體系結(jié)構(gòu),其中的數(shù)據(jù)處理操作只針對(duì)寄存器內(nèi)容,并不直接針對(duì)內(nèi)存內(nèi)容。
簡(jiǎn)單尋址模式,所有加載/存儲(chǔ)地址只通過寄存器內(nèi)容和指令字段確定。
對(duì)基本 RISC 體系結(jié)構(gòu)的增強(qiáng)使 ARM 處理器可以實(shí)現(xiàn)較高性能、較小代碼大小、較低功耗和較小硅面積的良好平衡。
ARMv8 體系結(jié)構(gòu)
ARMv8-A 將 64 位體系結(jié)構(gòu)支持引入 ARM 體系結(jié)構(gòu)中,其中包括:
64 位通用寄存器、SP(堆棧指針)和 PC(程序計(jì)數(shù)器)
64 位數(shù)據(jù)處理和擴(kuò)展的虛擬尋址
兩種主要執(zhí)行狀態(tài):
AArch64 - 64 位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內(nèi)存模型、程序員模型和指令集支持
AArch32 - 32 位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內(nèi)存模型、程序員模型和指令集支持
這些執(zhí)行狀態(tài)支持三個(gè)主要指令集:
A32(或 ARM):32 位固定長(zhǎng)度指令集,通過不同體系結(jié)構(gòu)變體增強(qiáng)部分 32 位體系結(jié)構(gòu)執(zhí)行環(huán)境現(xiàn)在稱為 AArch32
T32 (Thumb),以 16 位固定長(zhǎng)度指令集的形式引入,隨后在引入 Thumb-2 技術(shù)時(shí)增強(qiáng)為 16 位和 32 位混合長(zhǎng)度指令集。部分 32 位體系結(jié)構(gòu)執(zhí)行環(huán)境現(xiàn)在稱為 AArch32
A64:提供與 ARM 和 Thumb 指令集類似功能的 32 位固定長(zhǎng)度指令集。隨 ARMv8-A 一起引入,它是一種 AArch64 指令集。
ARM ISA 不斷改進(jìn),以滿足前沿應(yīng)用程序開發(fā)人員日益增長(zhǎng)的要求,同時(shí)保留了必要的向后兼容性,以保護(hù)軟件開發(fā)投資。在 ARMv8-A 中,對(duì) A32 和 T32 進(jìn)行了一些增補(bǔ),以保持與 A64 指令集一致。
A32(ARM)
ARM(通常稱為 A32)是一種固定長(zhǎng)度(32 位)的指令集。它是 ARMv4T、ARMv5TEJ 和 ARMv6 體系結(jié)構(gòu)中使用的基礎(chǔ) 32 位 ISA。在這些體系結(jié)構(gòu)中,該指令集用于需要高性能的應(yīng)用領(lǐng)域,或用于處理硬件異常,如中斷和處理器啟動(dòng)。
對(duì)于性能關(guān)鍵應(yīng)用和舊代碼,Cortex 體系結(jié)構(gòu)的 Cortex-A 和 Cortex-R 配置文件也支持 ARM ISA。其多數(shù)功能都包括在與 Thumb-2 技術(shù)一起引入的 Thumb 指令集中。Thumb (T32) 從改進(jìn)的代碼密度中獲益。
ARM 指令的長(zhǎng)度為 32 位,需要 4 字節(jié)邊界對(duì)齊。
可以對(duì)大多數(shù) ARM 指令進(jìn)行“條件化”,使其僅在以前的指令設(shè)置了特定條件代碼時(shí)執(zhí)行。這意味著,如果應(yīng)用程序狀態(tài)寄存器中的 N、Z、C 和 V 標(biāo)志滿足指令中指定的條件,則指令僅對(duì)程序員的模型操作、內(nèi)存和協(xié)處理器發(fā)揮其正常作用。如果這些標(biāo)記不滿足此條件,則指令會(huì)用作 NOP,即執(zhí)行過程正常進(jìn)入下一指令(包括將對(duì)異常進(jìn)行任意相關(guān)檢查),但不發(fā)揮任何其他作用。此條件化指令允許對(duì) if 和 while 語句的一小部分進(jìn)行編碼,而無需使用跳轉(zhuǎn)指令。
條件代碼包括:
T32(Thumb)
成本敏感型嵌入式控制應(yīng)用領(lǐng)域(例如手機(jī)、磁盤驅(qū)動(dòng)器、調(diào)制解調(diào)器和尋呼機(jī))一直在尋求通過某些方式在兼顧內(nèi)存占用空間的前提下以最低成本實(shí)現(xiàn) 32 位性能和地址空間。
Thumb (T32) 指令集提供已壓縮至 16 位寬操作碼的、最常用的 32 位 ARM 指令的子集。在執(zhí)行時(shí),這些 16 位指令實(shí)時(shí)、透明地解壓縮為完整 32 位 ARM 指令,且無性能損失。
Thumb 可向設(shè)計(jì)人員提供:
卓越的代碼密度,可實(shí)現(xiàn)最小的系統(tǒng)內(nèi)存大小和最低的成本。
在 8 位或 16 位總線上的 8 位或 16 位內(nèi)存中實(shí)現(xiàn) 32 位性能,從而降低系統(tǒng)成本。
建立的 ARM 功能
行業(yè)領(lǐng)先的 MIPS/Watt,以盡可能延長(zhǎng)電池壽命和增加 RISC 性能
小的芯片面積,以進(jìn)行集成和盡可能降低芯片成本
全球多合作伙伴源,可提供安全保證。
設(shè)計(jì)人員可以同時(shí)使用 16 位 Thumb 和 32 位 ARM 指令集,這樣,他們就可以靈活地根據(jù)應(yīng)用需求在子例程級(jí)別上增強(qiáng)性能或調(diào)整代碼大小。
Thumb ISA 受 ARM 生態(tài)系統(tǒng)的廣泛支持,包括完善的 Windows 軟件開發(fā)環(huán)境以及開發(fā)和評(píng)估卡。
改進(jìn)了代碼密度,具有性能效率和功效
Thumb-2 技術(shù)使 Thumb 成為固定(32 位和 16 位)長(zhǎng)度指令集,是所有 ARMv7 兼容的 ARM Cortex 實(shí)現(xiàn)所通用的指令集。Thumb-2 提升了眾多嵌入式應(yīng)用程序的性能、能效和代碼密度。
該技術(shù)與現(xiàn)有 ARM 和 Thumb 解決方案向后兼容,同時(shí)顯著擴(kuò)展了 Thumb 指令集的可用功能,從而使更多應(yīng)用程序從 Thumb 的同類最佳代碼密度中獲益。為獲得性能優(yōu)化的代碼,Thumb-2 技術(shù)使用少于 31% 的內(nèi)存以降低系統(tǒng)成本,同時(shí),提供比現(xiàn)有高密度代碼高出 38% 的性能,因此可用于延長(zhǎng)電池壽命,或豐富產(chǎn)品功能集。