Armv8.1-M架構(gòu)介紹
本白皮書針對(duì)包括Helium在內(nèi)的Arm8.1-M架構(gòu)許多強(qiáng)化處,提供綜述。
Armv8.1-M架構(gòu)是什么?
Armv8.1-M是Armv8-M 架構(gòu)的延伸,包括下列許多功能:
◆名稱為Helium的全新向量延伸指令集
◆針對(duì)回路與分支的額外指令集強(qiáng)化 (低負(fù)擔(dān)分支延伸) 半精度浮點(diǎn)支援的指令
◆針對(duì)浮點(diǎn)單元(FPU) TrustZone 管理的指令集強(qiáng)化記憶體保護(hù)裝置(MPU)內(nèi)全新的記憶屬性
◆除錯(cuò)的強(qiáng)化,包括效能監(jiān)視單元(PMU)、非特權(quán)除錯(cuò)延伸,以及專注在信號(hào)處理與應(yīng)用開發(fā)的額外除錯(cuò)支援
◆可靠性、可用性與可服務(wù)性(RAS)的延伸
最后,此架構(gòu)針對(duì)不可預(yù)測(cè)案例的規(guī)格,也已經(jīng)完成清理。
M-Profile Vector Extension (MVE)是一個(gè)可以帶來(lái)更高信號(hào)處理能力的任選的架構(gòu)延伸。供Arm Cortex-M處理器使用的MVE,則稱為Helium。
Helium:
MVE是一個(gè)可以帶來(lái)更高信號(hào)處理能力的任選的架構(gòu)延伸。供Arm Cortex-M處理器使用的MVE,則稱為Helium。
Neon是針對(duì)A系列處理器的架構(gòu)延伸,包括Arm Cortex-A與Neoverse,它可以賦予高效能的先進(jìn)SIMD技術(shù)。
Helium與Neon雖然有類似之處,但Helium是從最基礎(chǔ)重新展開的新設(shè)計(jì),可以為小型處理 器帶來(lái)高效的信號(hào)處理效能。它提供許多新的架構(gòu)功能,可以強(qiáng)化嵌入式使用案例的計(jì)算效能,原因是它針對(duì)區(qū)域與電力進(jìn)行優(yōu)化,可為M系列架構(gòu)帶來(lái)Neon的能力(針對(duì)Cortex-A的SIMD指令)。
◆128-位元向量大小
◆使用浮點(diǎn)單元中的暫存器,成為向量暫存器
◆Helium 與Neon都可以使用某些向量處理指令
◆Helium設(shè)計(jì)上用來(lái)將所有可用之硬體的使用極大化,且與Neon相比,使用較少的向量暫存器
◆某些Helium的運(yùn)作同時(shí)利用向量暫存器,以及純量暫存器庫(kù)中的暫存器
◆與Neon相比,Helium支援更多的資料類型
◆Helium 支援許多新功能,如回路預(yù)測(cè)、巷道預(yù)測(cè)、復(fù)雜數(shù)學(xué)與分散-集中記憶存取
◆省略Helium選項(xiàng) – 具備任選純量FPU (雙倍精度支援性也可任選)的Armv8.1-M整數(shù)核心
◆只支援向量整數(shù)的Helium,并具有任選的純量FPU (雙倍精度支援性也可任選)
◆具有向量整數(shù)+浮點(diǎn)(支援向量單倍精度與半精度)的Helium,并具備純量FPU(雙倍精度支援性也可任選)
有鑒于Helium涵蓋的指令數(shù)量極為龐大,這份檔案里不可能全部交代。以下是除了向量處理能力以外的一些精華部份:
◆交錯(cuò)與去交錯(cuò)載入與儲(chǔ)存指令(VLD2/VST2 的跨步為2;VLD4/VST4 的跨步則為4)
◆向量集中載入與向量分散儲(chǔ)存–向量暫存器中的元件記憶體存取,且向量中每個(gè)元件都 有定址位移,并使用另一個(gè)向量暫存器的元件加以定義。這可以讓軟體應(yīng)付任意的記憶體存取型樣,并可用來(lái)模仿常使用在信號(hào)處理、諸如循環(huán)定址等特別的定址模式。它也可以在各種資料處理任務(wù)中,協(xié)助加速陣列資料元件的非順序存取。
◆向量復(fù)合值處理支援整數(shù)(8位元、16位元與 32位元) 與浮點(diǎn)(32位元) – 例如 VCADD、VCMUL、VCMLA 指令。
◆巷道預(yù)測(cè)– 這部份將在后面談到
◆位元整數(shù)支援–這部份將在后面談到
為了降低處理器的面積與耗電,系統(tǒng)會(huì)再度使用FPU中的暫存庫(kù)來(lái)進(jìn)行向量處理:
Helium的整數(shù)支援,可以讓8位元、16位元與32位元的定點(diǎn)資料計(jì)算效率更高。 16與32位元 定點(diǎn)格式,在傳統(tǒng)信號(hào)處理應(yīng)用中使用相當(dāng)廣泛,譬如音效處理。 8位元的定點(diǎn)格式對(duì)于機(jī)器學(xué)習(xí)處理可能相當(dāng)重要,例如神經(jīng)網(wǎng)路計(jì)算,以及影像處理。
Armv8.1-M處理器結(jié)合Helium與新型的低負(fù)擔(dān)分支延伸后,信號(hào)處理的效能與使用Armv7-M 與Armv8.0-M內(nèi)的傳統(tǒng)SIMD指令集相比,好上好幾倍,同時(shí)可以讓處理器尺寸不致于過(guò)大,同時(shí)保有優(yōu)異的能源效率。
Helium 可以讓Arm Cortex-M 處理器解決下列(但不局限于)計(jì)算上的挑戰(zhàn):
◆音響設(shè)備
◆感測(cè)器集線器(感測(cè)器融合)、情境集線器(環(huán)境感測(cè))以及穿戴式裝置
◆關(guān)鍵字萃取及語(yǔ)音命令控制
◆電力電子學(xué)與控制 (信號(hào)處理)
◆通訊(如窄頻物聯(lián)網(wǎng))
◆靜止圖像處理(如相機(jī))
有了Helium許多之前使用帶有專屬DSP的Cortex-M處理器的應(yīng)用,就可以將兩套處理器系統(tǒng)整并成單一處理器。
有了Helium,許多之前使用帶有專屬DSP的Cortex-M 處理器的應(yīng)用,就可以將兩套處理器系統(tǒng)整并成單一處理器。這樣做有許多優(yōu)點(diǎn):
◆簡(jiǎn)化軟體開發(fā)--僅需要單一的工具鏈與單一架構(gòu),降低兩套處理器系統(tǒng)間溝通的軟體負(fù)擔(dān)。
◆降低晶片設(shè)計(jì)的復(fù)雜性-僅需單一記憶體系統(tǒng),因此可以帶來(lái)更快的單晶片系統(tǒng)設(shè)計(jì)周期,并降低成本。
也有可能取代嵌入式系統(tǒng)中,某些舊有的分立DSP產(chǎn)品:
◆Cortex-M處理器具有眾多各式各樣功能,與許多舊有DSP相比,可以用更高的效能執(zhí)行一般非DSP的工作負(fù)荷。
◆Cortex-M處理器的高程式碼密度,讓替換此類DSP時(shí),可以降低系統(tǒng)成本。
Helium 功能– 巷道預(yù)測(cè):
Helium包括MVE功能,可為向量中的每個(gè)巷道提供條件式執(zhí)行。此一優(yōu)化的機(jī)制,稱為巷道 預(yù)測(cè)。為了要開啟此一功能,必需加入稱為向量預(yù)測(cè)狀態(tài)與控制暫存器(VPR)的新型、特殊用途暫存器,以便為每個(gè)巷道保持原有條件。此一暫存器內(nèi)部的預(yù)測(cè)條件,會(huì)透過(guò)如向量比較(VCMP)等向量運(yùn)作,進(jìn)行更新。在設(shè)定完成條件旗標(biāo)后,向量預(yù)測(cè) (VPT)/向量預(yù)測(cè)集 (VPST) 指令可在次序列向量指令內(nèi),為每個(gè)巷道設(shè)定條件式執(zhí)行(向量預(yù)測(cè)塊最高達(dá)4個(gè)指令,類似IF-THEN指令塊)。
VPR的狀態(tài)會(huì)使用位于延伸異常堆疊框內(nèi)的一個(gè)保留字,以異常事件自動(dòng)進(jìn)行儲(chǔ)存與復(fù)原。
Helium 功能–大整數(shù)支援:
為了發(fā)揮128位元向量暫存器的最大功能,Helium同時(shí)也導(dǎo)入以MVE定義的大整數(shù)處理指令(VADC、VSBC 與VSHLC),它們可以與128位元、或更高的整數(shù)資料類型,一起鏈接運(yùn)作。
低負(fù)擔(dān)分支延伸:
為了讓信號(hào)處理效率更高,Armv8.1-M導(dǎo)入低負(fù)擔(dān)回路與額外的分支指令。簡(jiǎn)單的回路結(jié)構(gòu)從WLS(while-loop-start)指令開始,它會(huì)規(guī)定回路數(shù)與branch back位址,而此回路結(jié)構(gòu)在回路結(jié)束(LE)指令出現(xiàn)時(shí)結(jié)束。
回路第一次執(zhí)行時(shí),WLS與LE指令都會(huì)執(zhí)行,而回路位址則快取在處理器內(nèi),至于次順序回路疊代則不必再次執(zhí)行這兩個(gè)指令?;芈酚?jì)數(shù)由鏈接暫存器(LR/r14)與回路出口處理,同時(shí) 回路計(jì)數(shù)器則達(dá)到零。
倘若在低負(fù)擔(dān)回路期出現(xiàn)中斷,此回路的位址快取將會(huì)清除掉,而LE指令則在完成中斷服務(wù)常式(ISR)回來(lái)后,重新執(zhí)行。
把處理精度由單倍精度改為半精度后,處理器利用Helium技術(shù),在同樣期間內(nèi)可以處理兩倍的資料量。
除了while-loop-start(WLS),另外還有類似的do-loop-start(DLS)指令。 do-loop總會(huì)執(zhí)行回路本體的第一個(gè)疊代,但while-loop在條件沒(méi)有被滿足時(shí),會(huì)在第一個(gè)疊代前跳至回路的最后。
另外還有一個(gè)可以帶來(lái)回路尾預(yù)測(cè)的低負(fù)擔(dān)回路指令(WLSTP與DLSTP)-倘若資料處理任務(wù)需要在N要件上執(zhí)行,而N不是向量巷道寬度的倍數(shù)(例如,倘若要處理的元件是32位元,Helium每個(gè)向量指令可以處理四個(gè)巷道的元件),那么回路尾預(yù)測(cè)會(huì)讓最后的回路疊代, 用條件式執(zhí)行機(jī)制處理剩下的元件,而不會(huì)處理其它東西。使用WLSTP/DLSTP時(shí),具備尾預(yù)測(cè)的回路結(jié)束(LETP),必須用來(lái)標(biāo)示此回路的結(jié)束。WLSTP與DLSTP要標(biāo)示處理中向量元件的大小時(shí),必須要有尾置,且LR里的值包含要處理元件的數(shù)量,而不是回路的數(shù)量。
如果必要的話,一個(gè)稱為清除尾預(yù)測(cè)回路(LCTP)的額外指令,可以讓帶尾預(yù)測(cè)的低負(fù)擔(dān)回路提早終止。
不管Helium有無(wú)落實(shí),WLD、DLS與LE指令都可用?;芈肺差A(yù)測(cè)指令(WLSTP、DLSTP與 LETP) 都需要Helium這個(gè)選項(xiàng)。另外還有導(dǎo)入Armv8.1-M架構(gòu)的額外分支微量指令,它們可以利用低負(fù)擔(dān)回路導(dǎo)入的硬體,以便賦予更佳的分支效能。
其它Armv8.1-M 主線延伸強(qiáng)化:
Armv8.1-M 導(dǎo)入許多條件式的執(zhí)行指令:
◆CINC–條件式增量
◆CINV– 條件式反轉(zhuǎn)
◆CNEG–條件式否定
◆CSEL–條件式選擇
◆CSET–條件式地將暫存器設(shè)為1
◆CSETM–條件式地將暫存器中的所有位元數(shù)設(shè)為1
◆CSINC–條件式選擇/增量
◆CSINV–條件式選擇/按位元反轉(zhuǎn)
◆CSNEG –條件式選擇/否定
Armv8.1-M 也新增加:
◆64位元算數(shù)與邏輯移位指令 (ASRL、LSLL、LSRL + 飽合/ 帶舍入 變體),這些指令中某些的平分變體也可用
◆帶正負(fù)與無(wú)符號(hào)舍入/32位元與64位元資料的飽合移位指令
◆這些唯有當(dāng)Helium落實(shí)時(shí),才可用。
浮點(diǎn)處理強(qiáng)化:
正如同Armv8.0-M架構(gòu),Armv8.1-M支援任選純量單倍精度(32位元)與雙倍精度(64位元)浮 點(diǎn)計(jì)算(支援所有FPv5指令)。此外,Armv8.1-M也支援:
◆任選純量半精度(16位元) 浮點(diǎn)
◆任選向量半精度 (16位元) 浮點(diǎn) (Helium的一部份)
◆任選向量單倍精度 (32位元) 浮點(diǎn)(Helium的一部份)
半精度浮點(diǎn)支援,對(duì)于關(guān)鍵字萃取與語(yǔ)音命令控制應(yīng)用的音訊預(yù)處理,相當(dāng)有幫助。在這些應(yīng)用中,音訊不需要很高的解析度,但卻非常需要良好的動(dòng)態(tài)范圍支援。把處理精度由單倍精度改為半精度后,處理器利用Helium技術(shù),在同樣期間內(nèi)可以處理兩倍的資料量。使用半精度浮點(diǎn)格式,也可以幫助減少資料所需的記憶體大小需求(例如:過(guò)濾器系數(shù))。
安全相關(guān)的強(qiáng)化– FPU 上下文保存/復(fù)原:
Armv8.0-M導(dǎo)入TrustZone安全延伸,可以讓新世代的保全解決方案在低成本、低電力嵌入式系統(tǒng)上,利用Cortex-M處理器實(shí)施。 Armv8-M的TrustZone最關(guān)鍵的特性之一,就是它可以允許安全軟體(受保護(hù)的環(huán)境)與非安全軟體(一般環(huán)境)彼此間進(jìn)行高效、直接的函數(shù)呼叫,而Armv8.1-M則持續(xù)在此一領(lǐng)域增加更多的強(qiáng)化。為了支援Armv8-M使用的TrustZone,Arm C語(yǔ)言延伸(ACLE)為需要的各種C語(yǔ)言編譯器功能進(jìn)行定義,也就是Cortex-M安全延伸。需求之一,就是當(dāng)非安全軟體呼叫安全API時(shí),安全的函數(shù)結(jié)尾(安全API結(jié)尾插入C語(yǔ)言編譯器的編碼)需要清除浮點(diǎn)數(shù)控制與狀態(tài)暫存器(FPSCR) 里的內(nèi)容,以避免資料外泄至非安全方。這對(duì)安全固然很好,但對(duì)于非安全軟體也可能帶來(lái)問(wèn)題,特別是有關(guān)ABI相容性-FPU組態(tài)的可能改變(例如:舍入模式組態(tài))。
Armv8.1-M則增加了此一指令集的強(qiáng)化,以允許安全API導(dǎo)言的非安全FPSCR狀態(tài)(FPCXT_ NS)的上下文保存,以及結(jié)尾的上下文復(fù)原。強(qiáng)化的指令,包括FPU記憶體存取指令 (VLDR與VSTR)以及FPU暫存器存取指令(VMRS與VMSR)。要利用此一新功能,必須更新A與C語(yǔ)言的 編譯器。也因此,Armv8.1-M為了清除暫存庫(kù)(CLRM與VSCCLRM)里的上下文,也增加了新的 指令。
安全相關(guān)的強(qiáng)化– MPU的Privileged eXecute Never (PXN) 屬性:
另一個(gè)安全強(qiáng)化,則位于記憶體保護(hù)裝置(MPU)里面-一個(gè)名為特權(quán)永不執(zhí)行(PXN)的新MPU 區(qū)域?qū)傩?。倘若MPU區(qū)域擁有PXN屬性集,且處理器試圖執(zhí)行里面帶有特權(quán)層級(jí)的程式碼, 記憶體管理故障例外則會(huì)被觸發(fā),而MemManage Fault狀態(tài)暫存器里的IACCVIOL位元數(shù), 也會(huì)設(shè)成1。
PXN的屬性位元,在MPU_RLAR (區(qū)域限制位址暫存器)以及其別名暫存器的第四位元內(nèi)。保全與非保全MPU都可取用,且此一位元之前在Armv8.0-M環(huán)境中,被固定為0。 .
PXN的屬性位元,在MPU_RLAR(區(qū)域限制位址暫存器)以及其別名暫存器的第四位元內(nèi)。安 全的與非安全的MPU都可取用,且此一位元之前在Armv8.0-M環(huán)境中,被固定為0。
對(duì)于具有各軟體商提供之安全韌體元件、并擁有TrustZone功能的系統(tǒng),這個(gè)功能特別有用。在那些案例中,部份的安全韌體元件可能不能完全信任,且必須限制成只能非特權(quán)執(zhí)行。倘若如此系統(tǒng)實(shí)施Armv8.0-M,非特權(quán)軟體元件必須不能被允許擁有可以從非安全狀態(tài)呼叫出來(lái)的自己的安全入口點(diǎn),因?yàn)檫@些軟體元件如果從非安全處置器模式直接呼叫出來(lái),會(huì)在特權(quán)狀態(tài)下執(zhí)行。也因此,入口點(diǎn)必須進(jìn)行安全檢查且分開實(shí)施,但這也會(huì)增加軟體的負(fù)擔(dān)。有了在Armv8.1-M環(huán)境下可用的PXN屬性,這些非特權(quán)軟體元件都會(huì)有自己的安全API入口點(diǎn), 而且只有當(dāng)API被非安全處置器呼叫,MemManage訛誤例外處置器才會(huì)攔截,并將處理器切 換至非特權(quán)狀態(tài),以便讓保全的API可被執(zhí)行。
安全相關(guān)的強(qiáng)化 – 非特權(quán)除錯(cuò)延伸:
對(duì)于具有第三方提供的安全軟體庫(kù)的系統(tǒng),有些情況下軟體開發(fā)人員可能必須針對(duì)非特權(quán)軟體庫(kù)進(jìn)行除錯(cuò),但他可能并未取得其它安全韌體元件商的充份信任。在Armv8.0-M環(huán)境中,倘若安全除錯(cuò)功能開啟,軟體開發(fā)人員不管是特權(quán)或非特權(quán)軟體,都擁有完整的除錯(cuò)存取,但在這個(gè)案例中,這卻是我們不想要的。盡管限制除錯(cuò)存取是可能的(安全的特權(quán)軟體, 可以使用具有如CoreSight SDC-600等溝通管道除錯(cuò)監(jiān)視器,以便對(duì)安全的非特權(quán)人員提供有限的除錯(cuò)存取,而毋需透過(guò)除錯(cuò)存取埠來(lái)提供完整的安全除錯(cuò)存取),但這需要更多的軟體負(fù)擔(dān)。
Armv8.1-M透過(guò)非特權(quán)的除錯(cuò)延伸,提供全新的除錯(cuò)賦能機(jī)制模式。當(dāng)安全除錯(cuò)功能關(guān)閉后, 安全的特權(quán)軟體可透過(guò)除錯(cuò)鑒別控制暫存器(DAUTHCTRL),允許非特權(quán)的除錯(cuò)延伸。
在應(yīng)對(duì)數(shù)個(gè)安全韌體庫(kù)時(shí),對(duì)應(yīng)安全世界(例如:PSA中的安全的分區(qū)管理員)上下文交換的安全特權(quán)軟體,在不同的上下文切換時(shí),應(yīng)該針對(duì)DAUTHCTRL暫存器進(jìn)行程式撰寫。例如,在下列的圖表中,軟體開發(fā)人員針對(duì)所有的非安全軟體與X程式庫(kù)(兩者皆為安全但非特權(quán)),擁有除錯(cuò)存取權(quán)。處理器在運(yùn)行此軟體時(shí),停機(jī)要求是可以被接受的,但在運(yùn)行程式庫(kù)管理員或Y及Z程式庫(kù)時(shí)則不行。
當(dāng)處理器正在運(yùn)行并具有非特權(quán)的除錯(cuò)延伸,當(dāng)前的安全狀態(tài)(除了處理器內(nèi)部某些除錯(cuò)元件)的記憶體除錯(cuò)存取會(huì)被阻擋下來(lái);但當(dāng)非特權(quán)的除錯(cuò)功能開啟,且處理器于非特權(quán)狀態(tài)下 停機(jī)時(shí)(DAUTHCTRL的UIDEN位元設(shè)為1),存取則會(huì)被允許。當(dāng)非特權(quán)除錯(cuò)于當(dāng)下?tīng)顟B(tài)下使 用時(shí),除錯(cuò)存取也會(huì)與該狀態(tài)中的MPU許可進(jìn)行交互檢查。根據(jù)圖表中的范例:
◆軟體開發(fā)人員可以存取非安全的記憶體,并在處理器處于非安全狀態(tài)下,中止其運(yùn)行。
◆唯有當(dāng)處理器在運(yùn)行X程式庫(kù)(DAUTHCTRL由上下文交換的程式庫(kù)管理員設(shè)定組態(tài))時(shí),
◆軟體開發(fā)人員才可以中止處理器,并且可以存取可透過(guò)X程式庫(kù)存取的記憶空間 (許可則依據(jù)安全MPU)。
對(duì)于安全與非安全世界(DAUTHCTRL內(nèi)UIDEN與UIDAPEN的位元,則在兩個(gè)保全狀態(tài)間排成一行),非特權(quán)的除錯(cuò)延伸都可用。若要支援非特權(quán)除錯(cuò),除錯(cuò)工具與程式庫(kù)管理員必須進(jìn)行更新。不過(guò),非特權(quán)除錯(cuò)是除錯(cuò)架構(gòu)的延伸,且既有的除錯(cuò)功能(當(dāng)舊有的鑒別控制信號(hào)已打開),并不受影響。
除錯(cuò)強(qiáng)化 – 效能監(jiān)視單元 (PMU):
在Armv8.1-M環(huán)境下,資料監(jiān)視點(diǎn)與追蹤(DWT)獲得延伸,以便支援效能監(jiān)視單元(PMU)功 能,這跟在Cortex-A處理器上出現(xiàn)的情況一樣。這可以允許先進(jìn)的設(shè)定表示功能,包括分析快取命中/未中的能力。之前的設(shè)定表示功能仍然可用,但若要讓軟體開發(fā)人員可以發(fā)揮架構(gòu)的最大功能,除錯(cuò)器需要進(jìn)行更新。
請(qǐng)注意,PMU使用與DWT分離、且不同的位址空間,不過(guò)設(shè)定表示計(jì)數(shù)器雖然實(shí)體上相同(位 址別名),但除錯(cuò)工具不能同時(shí)使用PMU與舊有的DWT的設(shè)定表示。
除錯(cuò)強(qiáng)化 – 信號(hào)處理應(yīng)用功能:
Armv8.1-M同時(shí)也包括數(shù)個(gè)除錯(cuò)架構(gòu)的強(qiáng)化,更進(jìn)一步強(qiáng)化信號(hào)處理應(yīng)用的除錯(cuò)效率。這些包括:
◆帶有位元遮罩的資料監(jiān)視點(diǎn),以便進(jìn)行價(jià)值匹配。對(duì)于偵測(cè)信號(hào)范圍,特別有用。
◆帶有計(jì)數(shù)器的斷點(diǎn)–斷點(diǎn)只有在到達(dá)特定的某些計(jì)數(shù)值后才會(huì)觸發(fā)(停止)。當(dāng)數(shù)位濾波器穩(wěn)定后,這對(duì)于想要停止處理器,可能特別有用。
信賴度、可用性與可服務(wù)性(RAS)的延伸:
RAS延伸在Armv8-A架構(gòu)下的Cortex-A處理器上已經(jīng)推出。 RAS是一套系統(tǒng)可靠性的三個(gè)面向:
◆可靠性、正確服務(wù)的持續(xù)
◆可用性、正確服務(wù)的備妥狀態(tài)
◆可服務(wù)性、可進(jìn)行修改與維修的能力。 RAS的延伸需求,原本來(lái)自伺服器/企業(yè)應(yīng)用–RAS 技術(shù)降低非計(jì)劃中斷,原因是:
◎在造成應(yīng)用或系統(tǒng)失效前,暫態(tài)誤差可被檢測(cè)出來(lái),并進(jìn)行改正
◎可找出故障的元件,并進(jìn)行替換
◎故障可以事前預(yù)測(cè),以便在計(jì)劃性保養(yǎng)時(shí)進(jìn)行更換
Cortex-M處理器雖然大多部署于嵌入式與汽車等應(yīng)用,但汽車與工業(yè)使用的功能性安全需求,也讓RAS成為次世代Cortex-M處理器順理成章的選擇,而RAS的許多技術(shù)也在功能性安全層面上有所裨益。
對(duì)于與Armv8.1-M一起設(shè)計(jì)的處理器,RAS延伸則涵蓋:
◆增加了錯(cuò)誤同步屏障(ESB)指令
◆錯(cuò)誤報(bào)告暫存器 (例如:Error Corrected Code快取的錯(cuò)誤)
◆匯流排介面強(qiáng)化,例如匯流排轉(zhuǎn)移完整性檢查的同位或錯(cuò)誤校正碼(ECC)信號(hào),以及匯流排介面的毒化信號(hào)
Armv8.1-M同時(shí)也包括數(shù)個(gè)錯(cuò)架構(gòu)的強(qiáng)化,更進(jìn)一步強(qiáng)化信號(hào)處理應(yīng)用的除錯(cuò)效率。
毒化信號(hào)對(duì)于嵌入式處理器,是全新的功能。其中之一共用的使用案例,就是處理資料快取中的毀壞資料:
1.快取列毀損(例如:因?yàn)殡妷翰环€(wěn)定)。倘若錯(cuò)誤超過(guò)一個(gè)位元,當(dāng)位于毀損快取列的資料正在使用時(shí),ECC將無(wú)法修正錯(cuò)誤。
2.稍后,快取列出現(xiàn)移出,這會(huì)沖洗掉已毀損的資料。 ECC錯(cuò)誤在此階段會(huì)被偵測(cè)出,并觸發(fā)匯流排上的毒化側(cè)頻帶信號(hào)出現(xiàn)判斷提示。此毒化狀態(tài)將保存在記憶體系統(tǒng)中。在這個(gè)階段,故障例外不會(huì)發(fā)生。
3.當(dāng)資料(帶有毒化狀態(tài))被處理器讀取(可能是另一個(gè)處理器,或是系統(tǒng)上不同的匯流排主 控器),此毒化資訊會(huì)跟著傳送,并在處理器上觸發(fā)一個(gè)錯(cuò)誤例外。
此一方式,有好幾個(gè)優(yōu)點(diǎn):
◆倘若毀損的資料沒(méi)有被任何匯流排主控器使用(例如:隨后被其它資料覆寫),就沒(méi)有必要觸發(fā)錯(cuò)誤例外。
◆當(dāng)資料正在使用、且與遭受影響的應(yīng)用出現(xiàn)同步,錯(cuò)誤例外則會(huì)被觸發(fā),倘若毒化信號(hào)不可用,此例外必須在快取列移出時(shí)觸發(fā),且處理器可運(yùn)行完全不相關(guān)的應(yīng)用,這會(huì)讓判斷哪一個(gè)應(yīng)用受到影響,變得相當(dāng)困難。
RAS延伸的使用,同時(shí)也可以在Cortex-M與Cortex-A處理器之間,帶來(lái)更佳的一致性;這對(duì)于必須應(yīng)付具有Cortex-A 與Cortex-M等異質(zhì)多處理器系統(tǒng)的錯(cuò)誤情況的軟體,是一個(gè)優(yōu)點(diǎn)。
軟體遷移至Armv8.1-M:
Armv8.1-M 處理器保有Arm Cortex-M 處理器之前具有的關(guān)鍵特性,包括:
◆使用簡(jiǎn)單
◆快速且確定性的中斷回應(yīng)時(shí)間
◆針對(duì)低耗電嵌入式應(yīng)用完成優(yōu)化
既有的Armv8-M軟體也可以在Armv8.1-M上運(yùn)作,這讓軟體遷移相當(dāng)簡(jiǎn)便。就跟Armv8.0-M一樣,Armv8.1-M支援TrustZone安全延伸,可以解決已連接之產(chǎn)品如物聯(lián)網(wǎng)裝置的安全需求。
為了要利用這些新功能,需要各種相關(guān)的軟體更新:
◆C語(yǔ)言編譯器–編譯器(與binutils)需要進(jìn)行更新,以便支援新的指令。 Arm C語(yǔ)言延伸 (ACLE)需要為新的指令導(dǎo)入新的內(nèi)在函數(shù)。保全API的導(dǎo)言與結(jié)尾,也應(yīng)該加以強(qiáng)化,以便非保全FPCXT的保存與復(fù)原。編譯器販?zhǔn)凵桃部稍黾酉冗M(jìn)優(yōu)化,以便利用低負(fù)擔(dān)回路、新指令,并對(duì)可以運(yùn)行Helium的系統(tǒng)提供自動(dòng)向量化的潛在支援。
◆除錯(cuò)工具–除錯(cuò)器需要進(jìn)行更新,以支援新功能,以及新的架構(gòu)暫存器(例如VPR)。
◆RTOS–為了利用如新的MPU屬性等新的安全功能,作業(yè)系統(tǒng)需要進(jìn)行更新。倘若裝置需要非特權(quán)除錯(cuò),我們同時(shí)也必須進(jìn)行額外的更新,以便支援此一功能。
◆供Armv8-M使用的Arm信賴韌體–這需要進(jìn)行更新,以便支援新的PXN MPU屬性與非特權(quán)除錯(cuò)延伸。
◆應(yīng)用程式碼–新的CMSIS-CORE與CMSIS-DSP程式庫(kù)將可取用。強(qiáng)化的CMSIS-DSP程式 庫(kù)將利用Helium指令集,提供顯著的效能提升。
Helium生態(tài)系統(tǒng)具有廣泛的可用工具與軟體程式庫(kù),可以帶來(lái)快速且低風(fēng)險(xiǎn)的開發(fā)。
AArmv8.1-M包括許多新的強(qiáng)化與優(yōu)點(diǎn)。對(duì)于Armv8.1-M最重大的新增點(diǎn),是M系列向量延伸(MVE)。 Helium是供Arm Cortex-M系列使用的M系列向量延伸,它可以為小型、嵌入式應(yīng)用帶來(lái)高效的信號(hào)處理與機(jī)器學(xué)習(xí)。它可以讓原本需要兩個(gè)處理器的情況,整并成只需一個(gè)單一晶片系統(tǒng),并降低復(fù)雜性與成本。
Armv8.1-M包含其它對(duì)指令集、除錯(cuò)功能的強(qiáng)化,并提升嵌入式系統(tǒng)的可靠性。此外,此架構(gòu)具有內(nèi)建TrustZone安全,設(shè)計(jì)上符合平臺(tái)安全架構(gòu) (PSA)規(guī)格。
Helium生態(tài)系統(tǒng)具有廣泛的可用工具與軟體程式庫(kù),可以帶來(lái)快速且低風(fēng)險(xiǎn)的開發(fā)。