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