曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析Armv8.1-M的一些特性

安芯教育科技 ? 來源:CSDN技術(shù)社區(qū) ? 2023-02-06 10:55 ? 次閱讀

簡單闡述下ARMv8.1-M的一些特性,更多的特性及其詳細(xì)信息,請(qǐng)查看Armv8-M Architecture Reference Manual-DDI0553B_m。

1. MVE(M-Profile Vector Extension) or Helium technology

MVE其實(shí)就是ARM-M系列的SIMD特性,使得M-profile processor在DSPAI等應(yīng)用領(lǐng)域具有更強(qiáng)的處理能力。

8ba091fe-a446-11ed-bfe3-dac502259ad0.jpg

8個(gè)128bit的vector size,可以拆成多個(gè)elements。

lane predication,適用code形式:if (a[i] != 0) then b[i]=a[i]*b[i],當(dāng)然還有其它變形形式,這時(shí)候需要結(jié)合VPTE指令來配合。

Vector gather load和vector scatter store,如VLDRB, VLDRH, VLDRW, VLDRD (vector)和VSTRB, VSTRH, VSTRW, VSTRD (vector)等。

MVE interleaving/de-interleaving loads and stores,如VLD2/VLD4和VST2/VST4等。

Beatwise operation,因?yàn)関ector可能的一條指令會(huì)執(zhí)行多個(gè)步驟,如果在執(zhí)行期間有中斷,可以用ECI寄存當(dāng)前instruction執(zhí)行到哪個(gè)步驟了。

Support Circular Buffer,combine an instruction that generates wrapping offsets(VIWDUP) with a scatter‐gather instruction to access data at these offsets。

2. LoB/Loop Tail Predication/BF

LoB/Loop Tail Predication/BF可以用于提高loops循環(huán)和branches分支的效率,減少不需要耗在control flow指令上的時(shí)間。

Loop iteration optimization: LoB,在LO_BRANCH_INFO寄存器里存入end_addr和jump_addr,然后next instruction的address匹配上end_addr就可以直接跳轉(zhuǎn)了,甚至都不需要去去LE跳轉(zhuǎn)指令了。減少在必須要的循環(huán)控制指令上的時(shí)間消耗。需要用到WLS和LE指令。

Loop Tail Predication,假如處理的elements個(gè)數(shù)不是vector length的整數(shù)倍內(nèi),例如vector length=4,但要處理7個(gè)elements?一種方法就是最后一個(gè)使用普通的非vector去處理,前面的仍然用vector處理。另一種更好的方法是MVE中引入了WLSTP/LETP指令對(duì),允許loop迭代中的最后一條vector instruction只處理remaining elements,在loop開始之前用WLSTP設(shè)置LR寄存器的值為多少個(gè)要處理的elements,每循環(huán)一次,LETP對(duì)LR減去vector的elements個(gè)數(shù)。

Branch feature:類似于提供“variable length delay slots” – to further eliminate bubbles caused by branch instructions (but only direct branches), since we already have the “LO_BRANCH_INFO” hardware available and can double use it to squeeze out a bit more performance.BFX指令執(zhí)行的時(shí)候,會(huì)設(shè)置LO_BRANCH_INFO去指示在哪一個(gè)address上會(huì)發(fā)生跳轉(zhuǎn),因此當(dāng)執(zhí)行執(zhí)行到該address時(shí),就可以執(zhí)行跳轉(zhuǎn)了,甚至都不需要取和譯碼BX LR指令了,因此減少因?yàn)閳?zhí)行分支而造成的branch penalty(通常那些已經(jīng)取的instruction會(huì)被處理為Bubbles)。如果在BFX和BX期間發(fā)生interrupt了,那么LO_BRANCH_INFO會(huì)被清除,這時(shí)候就需要BX LR了。如果在processor中不支持Branch Feature這個(gè)特性,那么將被實(shí)現(xiàn)為NOP。

3. Security 由于越來越多的MCU會(huì)運(yùn)行第三方軟件和連接到互聯(lián)網(wǎng)上,如何保證不被黑客攻擊也成了重要的問題。

Execution permission:例如在v8.1-M里有PXN/UXN,減少被利用堆棧溢出攻擊而導(dǎo)致的安全問題。PXN是Privileged Execute-Never(這個(gè)是因?yàn)橛行ヽode就是想讓它在non-priv模式下執(zhí)行,來限制訪問權(quán)限,防止資源受到破壞),UXN是non-Privileged Execute-Never。在MPU_RLAR寄存器中有PXN bit,如果某個(gè)region的該bit置為1,那么privilege去訪問該region的code會(huì)fault exception。

V8.2-M PAC(Pointer Authentication): 減少利用RoP(Return-oriented Programming)攻擊導(dǎo)致的安全問題 。將會(huì)對(duì)return address(pointer)進(jìn)行加擾,然后要返回時(shí)去除擾動(dòng),如果認(rèn)證通過,那么就正常返回,反之報(bào)出exception。

V8.2-M BTI(Branch Target Instructions): 減少利用JoP(Jump-oriented Programming)攻擊導(dǎo)致的安全問題。BIT的基本思想就是限制indirect branch只能跳轉(zhuǎn)到特定的address空間上(only branching to allowed “l(fā)anding pad instructions”)。

DIT(Data Independent Timing):同樣的instruction可能會(huì)花費(fèi)不同的執(zhí)行時(shí)間,例如處理11和9999999999的算術(shù)運(yùn)算占用時(shí)間不一樣的,這樣可能會(huì)暴露data信息給黑客。因此在AIRCR寄存器中增加了DIT bit,如果使能DIT功能,那么所有ALU instructions的執(zhí)行時(shí)間才會(huì)采用最長的cycle數(shù),也就是通過降低performance來換取安全。

UDE(Unprivileged Debug Extension):在v8.0-M中,如果secure debug打開,那么software開發(fā)人員對(duì)priv和un-priv的secure world有完全的debug訪問權(quán)限。但是,如果禁用了secure debug,那么debugger將不能訪問所有的secure world。在v8.1-M中新增了更細(xì)粒度的debug方式(UDE),當(dāng)secure debug被關(guān)閉了,secure priv software可以通過DAUTHCTRL寄存器的UIDEN和UIDAPEN來使能UDE。這樣也可以使用unpriv去debug一些library code的了,而不是局限于privilege模式才能debug。另外說下,ARMv8在handler mode下是privilege的,在thread mode下,可能是priv或un-priv,取決于CONTROL寄存器的值。

4. 附注

在ARM-M手冊(cè)中涉及到lanes、beats和elements的概念。

operation的lane寬度是由正在執(zhí)行的instruction決定的。允許的lane寬度和每一個(gè)beat進(jìn)行的lane operation如下:1個(gè)beat是32bit,lane width可以有8/16/32/64bit.

For a 64-bit lane size, a beat performs half of the lane peration.

For a 32-bit lane size, a beat performs a one lane operation.

For a16-bit lane size, a beat performs a two lane operations.

For an 8-bit lane size, a beat performs a four lane operations.

elements就是表示有多少個(gè)data會(huì)放在每個(gè)lane中。比如lane=16bit,那么element的size就為16bit(2Byte, size=2’b01)。其它類似。因?yàn)閘ane最大為64bit,也就是說elements最大也就是64bit(4Byte, size=2’b11)。

雖然vector instruction可以同時(shí)進(jìn)行多個(gè)elements的運(yùn)算,有時(shí)候element size(esize)可以為32bit,但要運(yùn)算的data實(shí)際為16bit,如VLDRH,這時(shí)候會(huì)對(duì)從memory里load過來的data進(jìn)行zero或sign-extended,然后才放到vector register。這個(gè)實(shí)際給每個(gè)element load的data大小就是msize,因此msize肯定不大于esize的。總得來說,msize永遠(yuǎn)不會(huì)大于esize,如果msize

當(dāng)然,在processor實(shí)現(xiàn)時(shí),不只是每一個(gè)beat只load一個(gè)msize大小的data,這樣效率太低,如果在data width允許的情況下,可以load多個(gè)msize大小的data,也就是一次搞定multiple elements。

我們假設(shè)一次實(shí)際load的data為dsize,對(duì)scalar來說,由于不會(huì)進(jìn)行vector操作,esize沒什么用,msize也永遠(yuǎn)等于dsize。對(duì)vector來說,vector register存在多個(gè)elements的操作,如果esize用于表示每個(gè)element的大小,msize是element中真正會(huì)填充的數(shù)據(jù)大小,如果dsize>msize,也就是說每一次load的data其實(shí)可以填充多個(gè)elements的,比如dsize=Word, msize=Byte, esize=Byte,那么只需要load 4次data就可以填滿1個(gè)register vector了,如果每次load的size為msize(Byte),那么需要load 16次才可以填滿,想想就知道效率很低的。

如果dsize

不過有一點(diǎn)要注意,在做對(duì)齊檢查和atomicity分析時(shí),由于實(shí)際其實(shí)就是要load msize大小的數(shù)據(jù),dsize只是投機(jī)多搞一些數(shù)據(jù)回來,因此檢查和分析還是要按msize來的。

8bb6f9ee-a446-11ed-bfe3-dac502259ad0.jpg

Vector instruction涉及到128bit,也就是有4個(gè)beats,因此是從beat0到beat3順序執(zhí)行的。

8bd0b564-a446-11ed-bfe3-dac502259ad0.jpg

在每一個(gè)architecture tick下,會(huì)執(zhí)行多少個(gè)beat,表征了該system是多個(gè)beat。如下:

In a single-beat system, one beat might occur for each tick.

In a dual-beat system, two beats might occur for each tick.

In a quad-beat system, four beats might complete for each tick.

ARM的cortex-M55就是一個(gè)dual-beat的processor。在dual-beat overlap system中,意味著上一條vector instruction的最后two beats可以和后一條vector instruction的two beats可以重疊起來,加快執(zhí)行效率。以下是dual-beat system在每一個(gè)architecture tick下,執(zhí)行的示意圖。

8be7cc40-a446-11ed-bfe3-dac502259ad0.jpg

如果data dependency是以beat粒度,而不是instruction粒度進(jìn)行的,architecture是允許vector instructions有overlap的。在每一個(gè)architecture tick下,architectural instruction的重疊情況可由EPSR.ECI值來表示。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    555

    文章

    8124

    瀏覽量

    354545
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17751

    瀏覽量

    358832
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9279

    瀏覽量

    374009
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5403

    瀏覽量

    122947
  • ARMv8
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    14381

原文標(biāo)題:學(xué)習(xí)分享 | Armv8.1-M的一些特性

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    keil mdk的一些常見錯(cuò)誤解析

    近期遇到的keil mdk的一些常見錯(cuò)誤 解析 2,USER\main.c(39):warning:#223-D: function "TP_GetAdXY"
    發(fā)表于 07-06 07:19

    使用ISE 13.3更改8.1 FIFO IP內(nèi)核中的一些參數(shù)可能有什么問題?

    嗨,我正在嘗試使用ISE 13.3更改8.1 FIFO IP內(nèi)核中的一些參數(shù)。當(dāng)我在coregen中打開項(xiàng)目時(shí),它警告邏輯核被取代,但允許我進(jìn)行修改。但是,當(dāng)我使用新生成的核心時(shí),它會(huì)抱怨“無法在庫
    發(fā)表于 06-26 07:52

    ARMv8-A AArch32主要特性

    Cortex-A32產(chǎn)品介紹ARMv8-A AArch32主要特性ARMv7-M與AArch32的不同之處軟件從ARMv7-M移植到ARMv
    發(fā)表于 02-19 06:20

    何謂神經(jīng)網(wǎng)絡(luò)處理指令?有什么作用?

    何謂神經(jīng)網(wǎng)絡(luò)處理指令?有什么作用?Armv8.1-M核心實(shí)施選項(xiàng)包括哪些?
    發(fā)表于 06-29 09:07

    你知道ARM Cortex-M55處理器的新功能都有哪些嗎

    前使用 Armv8.1-M 功能。讓我們看看這些工具如何幫助充分利用 Cortex-M55 處理器。構(gòu)建您的代碼——針對(duì)性能和功耗進(jìn)行優(yōu)化Arm Compiler 6包含在 Keil MDK 和 Arm
    發(fā)表于 06-01 17:18

    使用GCC10充分利用Arm架構(gòu)的案例

    中看到使用CASLSE 指令的更簡單的序列?,F(xiàn)在,使用 GCC 10.1 ,我們獲得了以下選項(xiàng) -O2 -march=armv8-a :這里有一些復(fù)雜性,與為函數(shù)調(diào)用準(zhǔn)備參數(shù)有關(guān),該函數(shù)調(diào)用是運(yùn)行時(shí)庫
    發(fā)表于 08-03 14:49

    Armv8.1-M PAC和BTI擴(kuò)展簡析

    1、Armv8.1-M PAC和 BTI 擴(kuò)展簡析Armv8-M通過Trustzone for Armv8-M, Memory Protection Unit (MPU) 和Privileged
    發(fā)表于 08-05 14:56

    介紹Armv8.6-A引進(jìn)的一些新功能的概況

    Arm 構(gòu)架持續(xù)進(jìn)化中以滿足我們生態(tài)伙伴的需求。這篇博文介紹了Armv8.6-A引進(jìn)的一些新功能的概況。這些增強(qiáng)構(gòu)架功能提供了更高效的處理和更好地使能新領(lǐng)域應(yīng)用,比如神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)。通用矩陣乘
    發(fā)表于 08-08 14:16

    ARMv8-M處理器故障處理和檢測(cè)

    錯(cuò)誤檢測(cè)和校正技術(shù)可用于幫助減輕硅器件。ARMv8-M處理器包括一些功能,可以檢測(cè)這些錯(cuò)誤。 在硅器件中,出現(xiàn)錯(cuò)誤的原因可能是: ?軟件錯(cuò)誤。 ?使用錯(cuò)誤,條件在正常操作條件之外。例如溫度或電源電壓
    發(fā)表于 08-02 06:28

    Armv8.1-M性能監(jiān)控用戶指南

    確定·驗(yàn)證、驗(yàn)證和測(cè)試·檢查不同的IP塊(如緩存)的利用情況·測(cè)量系統(tǒng)中的延遲M-Profile架構(gòu)提供不同的功能來幫助用戶執(zhí)行此類任務(wù),包括Armv8.1-M架構(gòu)的主線變體中引入的性能監(jiān)控單元(PMU)。 本應(yīng)用筆記演示了PMU的各種用例,如第7節(jié)在應(yīng)用程序中使用PMU
    發(fā)表于 08-22 06:25

    Arm Cortex-M55處理器數(shù)據(jù)集

    ARM Cortex-M55處理器是款完全可合成的中端微控制器級(jí)處理器,實(shí)現(xiàn)了ARMv8.1-M主線架構(gòu),并支持M-Profile向量擴(kuò)展(MVE),也稱為ARM氦技術(shù)。 它是ARM
    發(fā)表于 08-25 07:46

    模擬電路的一些簡單的特性

    準(zhǔn)備分析模擬電路的一些簡單的特性 偶是本科和研究生都是學(xué)儀器工程的,偶老師在這個(gè)方面也是很厲害的。師兄多人在這個(gè)行業(yè),有1人在NI做硬件工程師
    發(fā)表于 11-21 15:13 ?894次閱讀

    Armv8.1-M架構(gòu)能夠提升最小型邊緣設(shè)備的機(jī)器學(xué)習(xí)能力

    Arm Helium技術(shù)作為種全新的M-Profile Vector Extension矢量擴(kuò)充方案,能為Armv8.1-M架構(gòu)帶來經(jīng)過強(qiáng)化的計(jì)算能力
    發(fā)表于 02-19 13:58 ?1348次閱讀

    直流電機(jī)的一些特性

    直流電機(jī)的一些特性(現(xiàn)代電源技術(shù)基礎(chǔ)計(jì)算題)-直流電機(jī)的一些特性,有需要的可以參考!
    發(fā)表于 09-15 15:48 ?5次下載
    直流電機(jī)的<b class='flag-5'>一些</b><b class='flag-5'>特性</b>

    如何克服Amdahl定律的影響呢?

    在前幾篇文章中,我們介紹了采用 Arm Helium 技術(shù)(也稱為 MVE)的 Armv8.1-M 架構(gòu)如何處理矢量指令。
    的頭像 發(fā)表于 01-12 14:30 ?1091次閱讀
    如何克服Amdahl定律的影響呢?