精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

安芯教育科技 ? 來源:CSDN技術社區 ? 2023-02-06 10:55 ? 次閱讀

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

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

MVE其實就是ARM-M系列的SIMD特性,使得M-profile processor在DSPAI等應用領域具有更強的處理能力。

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

8個128bit的vector size,可以拆成多個elements。

lane predication,適用code形式:if (a[i] != 0) then b[i]=a[i]*b[i],當然還有其它變形形式,這時候需要結合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,因為vector可能的一條指令會執行多個步驟,如果在執行期間有中斷,可以用ECI寄存當前instruction執行到哪個步驟了。

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循環和branches分支的效率,減少不需要耗在control flow指令上的時間。

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

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

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指令執行的時候,會設置LO_BRANCH_INFO去指示在哪一個address上會發生跳轉,因此當執行執行到該address時,就可以執行跳轉了,甚至都不需要取和譯碼BX LR指令了,因此減少因為執行分支而造成的branch penalty(通常那些已經取的instruction會被處理為Bubbles)。如果在BFX和BX期間發生interrupt了,那么LO_BRANCH_INFO會被清除,這時候就需要BX LR了。如果在processor中不支持Branch Feature這個特性,那么將被實現為NOP。

3. Security 由于越來越多的MCU會運行第三方軟件和連接到互聯網上,如何保證不被黑客攻擊也成了重要的問題。

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

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

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

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

UDE(Unprivileged Debug Extension):在v8.0-M中,如果secure debug打開,那么software開發人員對priv和un-priv的secure world有完全的debug訪問權限。但是,如果禁用了secure debug,那么debugger將不能訪問所有的secure world。在v8.1-M中新增了更細粒度的debug方式(UDE),當secure debug被關閉了,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手冊中涉及到lanes、beats和elements的概念。

operation的lane寬度是由正在執行的instruction決定的。允許的lane寬度和每一個beat進行的lane operation如下:1個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就是表示有多少個data會放在每個lane中。比如lane=16bit,那么element的size就為16bit(2Byte, size=2’b01)。其它類似。因為lane最大為64bit,也就是說elements最大也就是64bit(4Byte, size=2’b11)。

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

當然,在processor實現時,不只是每一個beat只load一個msize大小的data,這樣效率太低,如果在data width允許的情況下,可以load多個msize大小的data,也就是一次搞定multiple elements。

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

如果dsize

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

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

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

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

在每一個architecture tick下,會執行多少個beat,表征了該system是多個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就是一個dual-beat的processor。在dual-beat overlap system中,意味著上一條vector instruction的最后two beats可以和后一條vector instruction的two beats可以重疊起來,加快執行效率。以下是dual-beat system在每一個architecture tick下,執行的示意圖。

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    552

    文章

    7962

    瀏覽量

    348256
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16987

    瀏覽量

    350301
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9046

    瀏覽量

    366809
  • 寄存器
    +關注

    關注

    31

    文章

    5317

    瀏覽量

    120003
  • ARMv8
    +關注

    關注

    1

    文章

    35

    瀏覽量

    14141

原文標題:學習分享 | Armv8.1-M的一些特性

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    keil mdk的一些常見錯誤解析

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

    使用ISE 13.3更改8.1 FIFO IP內核中的一些參數可能有什么問題?

    嗨,我正在嘗試使用ISE 13.3更改8.1 FIFO IP內核中的一些參數。當我在coregen中打開項目時,它警告邏輯核被取代,但允許我進行修改。但是,當我使用新生成的核心時,它會抱怨“無法在庫
    發表于 06-26 07:52

    ARMv8-A AArch32主要特性

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

    何謂神經網絡處理指令?有什么作用?

    何謂神經網絡處理指令?有什么作用?Armv8.1-M核心實施選項包括哪些?
    發表于 06-29 09:07

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

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

    使用GCC10充分利用Arm架構的案例

    中看到使用CASLSE 指令的更簡單的序列。現在,使用 GCC 10.1 ,我們獲得了以下選項 -O2 -march=armv8-a :這里有一些復雜性,與為函數調用準備參數有關,該函數調用是運行時庫
    發表于 08-03 14:49

    Armv8.1-M PAC和BTI擴展簡析

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

    介紹Armv8.6-A引進的一些新功能的概況

    Arm 構架持續進化中以滿足我們生態伙伴的需求。這篇博文介紹了Armv8.6-A引進的一些新功能的概況。這些增強構架功能提供了更高效的處理和更好地使能新領域應用,比如神經網絡和機器學習。通用矩陣乘
    發表于 08-08 14:16

    ARMv8-M處理器故障處理和檢測

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

    Armv8.1-M性能監控用戶指南

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

    Arm Cortex-M55處理器數據集

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

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

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

    Armv8.1-M架構能夠提升最小型邊緣設備的機器學習能力

    Arm Helium技術作為種全新的M-Profile Vector Extension矢量擴充方案,能為Armv8.1-M架構帶來經過強化的計算能力
    發表于 02-19 13:58 ?1254次閱讀

    直流電機的一些特性

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

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

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