在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM Cortex系列(A8/A9/A15/A7) NEON多媒體處理SIMD引擎優(yōu)化

            ARM Cortex系列(A8/A9/A15/A7) NEON多媒體處理SIMD引擎優(yōu)化

            作者: 時間:2016-11-10 來源:網絡 收藏
            Cortex-A9的NEON多媒體處理器是基于ARMv7的SIMD(Single Instruction Multiple Data)和向量浮點VFPv3(Vector Floating-Point)指令集的,在具體的芯片設計中NEON組件是可選的,NEON處理器是面向音頻、視頻編解碼器、圖像處理和語音信號處理以及其他的基帶等信息處理領域的。 本文介紹了NEON處理器的基本架構、NEON處理器的并發(fā)情況下Cortex-A8和Cortex-A9的區(qū)別、NEON的寄存器組和數(shù)據類型、NEON編程的針對編譯器、匯編器的優(yōu)化方法以及其他的提高性能的并行方法。

            本文引用地址:http://www.biyoush.com/article/201611/317421.htm

            圖1. ARM體系結構的演進

            Cortex-A9處理器簡介

            圖2. Coretex-A9處理器的架構框圖(View Larger Cortex-A9處理器Image)

            Cortex-A9是性能最高的ARM處理器,可實現(xiàn)受到廣泛支持的ARMv7體系結構的豐富功能。Cortex-A9處理器的設計旨在打造最先進的、高效率的、長度動態(tài)可變的、多指令執(zhí)行超標量體系結構,提供采用亂序猜測方式執(zhí)行的8階段管道處理器,憑借范圍廣泛的消費類、網絡、企業(yè)和移動應用中的前沿產品所需的功能,它可以提供史無前例的高性能和高能效。ARMCortex?-A9處理器提供了史無前例的高性能和高能效,從而使其成為需要在低功耗或散熱受限的成本敏感型設備中提供高性能的設計的理想解決方案。它既可用作單核處理器,也可用作可配置的多核處理器,同時可提供可合成或硬宏實現(xiàn)。該處理器適用于各種應用領域,從而能夠對多個市場進行穩(wěn)定的軟件投資。

            Cortex-A9微體系結構既可用于可伸縮的多核處理器(Cortex-A9 MPCore?多核處理器),也可用于更傳統(tǒng)的處理器(Cortex-A9單核處理器)??缮炜s的多核處理器和單核處理器支持16、32或64KB 4路關聯(lián)的L1高速緩存配置,對于可選的L2高速緩存控制器,最多支持8MB的L2高速緩存配置,它們具有極高的靈活性,均適用于特定應用領域和市場。

            下載Cortex-A9白皮書

            窗體頂端

            與高性能計算平臺消耗的功率相比,ARM Cortex-A9處理器可提供功率更低的卓越功能,其中包括:

            • 無與倫比的性能,2GHz標準操作可提供TSMC 40G硬宏實現(xiàn)
            • 以低功耗為目標的單核實現(xiàn),面向成本敏感型設備
            • 利用高級MPCore技術,最多可擴展為4個一致的內核
            • 可選NEON?媒體和/或浮點處理引擎

            通過共享以下常見需求,Cortex-A9處理器可提供滿足各種不同市場應用需求的可擴展解決方案,包括移動手機以及高性能的消費類產品和企業(yè)產品:

            • 通過提高性能、降低功耗來提高能效;
            • 提高最高性能,滿足要求更高的應用需求;
            • 能夠在多個設備之間共享軟件和工具投資;

            Cortex-A9 MPCore多核處理器集成了經驗證非常成功的ARM MPCore技術以及更多增強功能,以此簡化了多核解決方案,并使其應用范圍得到擴展。Cortex-A9 MPCore處理器可提供史無前例的可擴展的最高性能,同時還支持靈活設計和新功能,從而進一步降低和控制處理器和系統(tǒng)級的能耗。借助Cortex-A9 MPCore處理器的定向實現(xiàn),移動設備的最高性能還可在現(xiàn)在的解決方案的基礎上不斷提高,具體方法是:利用設計靈活性和ARM MPCore技術提供的高級功率管理技術,在散熱受限以及移動電源預算緊張的情況下維持運行。使用可伸縮的最高性能,該處理器可超過現(xiàn)今類似的高性能嵌入式設備的性能,并可在拓寬市場的基礎上進行穩(wěn)定的軟件投資。

            Cortex-A9多核處理器是首款結合了Cortex應用級架構以及用于可擴展性能的多處理能力的ARM處理器,提供了下列增強的多核技術:

              *加速器一致性端口(ACP),用于提高系統(tǒng)性能和降低系統(tǒng)能耗

              *先進總線接口單元(Advanced Bus Interface Unit),用于在高帶寬設備中實現(xiàn)低延遲時間

              *多核TrustZone® 技術,結合中斷虛擬,允許基于硬件的安全和加強的類虛擬(paravirtualization)解決方案

            *通用中斷控制器(GIC),用于軟件移植和優(yōu)化的多核通信

            Cortex-A9 NEON媒體處理引擎(MPE)

            Cortex-A9 MPE可用于任一Cortex-A9處理器,并可提供一個具有Cortex-A9浮點單元的性能和功能以及NEON高級SIMD指令集實現(xiàn)的引擎,以便進一步提高媒體和信號處理功能的速度。MPE可擴展Cortex-A9處理器的浮點單元(FPU),提供一個quad-MAC以及附加的64位和128位寄存器集,在每個周期8位、16位和32位整型以及32位浮點數(shù)據量的基礎上支持一組豐富的SIMD操作。

            Cortex-A9浮點單元(FPU)

            在與任一Cortex-A9處理器一起實現(xiàn)時,F(xiàn)PU可提供與ARM VFPv3體系結構兼容的高性能的單雙精度浮點指令,該體系結構是與上一代ARM浮點協(xié)處理器兼容的軟件。

            物理IP:提供在Cortex-A9處理器上實現(xiàn)低功耗、高性能應用所需的眾多標準單元庫和存儲器。標準單元包括功耗管理工具包,可實現(xiàn)動態(tài)和漏泄功耗節(jié)省技術,例如時鐘門控、多電壓島和功率門控。還提供具有先進的功耗節(jié)省功能的存儲編譯器。

              · Fabric IP:Cortex-A9處理器得到廣泛的PrimeCell® fabric IP元件的支持。這些元件包括:一個動態(tài)存儲控制器、一個靜態(tài)存儲控制器、一個AMBA® 3 AXI可配置的內部互連及一個優(yōu)化的L2 Cache 控制器,用于匹配Cortex-A9處理器在高頻設計中的性能和吞吐能力。

              · 圖形加速: ARM Mali? 圖形處理單元及Cortex-A9處理器的組合,將使得SoC合作活動能夠創(chuàng)造高度整合的系統(tǒng)級解決方案,帶來最佳的尺寸、性能和系統(tǒng)帶寬優(yōu)勢。

              · 系統(tǒng)設計:ARM RealView® SoC Designer工具提供快速的架構優(yōu)化和性能分析,并允許在硬件完成以前很長時間即可進行軟件驅動程序和對時間要求很嚴格的代碼的早期開發(fā)。RealView系統(tǒng)發(fā)生器(RealView System Generator)工具為基于Cortex-A9處理器的虛擬平臺的采用提供超快建模能力。Realview工具中關于Cortex-A9處理器的基于周期的(cycle based)及程序員視角的模型將于2008年第二季度上市。

              · 調試: ARM CoreSight?片上技術加速了復雜調試的時間,縮短了上市時間。程序追蹤宏單元技術(Program Trace Macrocell technology)具有程序流追蹤能力,能夠將處理器的指令流完全可視化,同時配置與ARMv7架構兼容的調試接口,實現(xiàn)工具標準化和更高的調試性能。用于Cortex-A9處理器的CoreSight設計工具包擴展了其調試和追蹤能力,以涵蓋整個片上系統(tǒng),包括多個ARM處理器、DSP以及智能外設。

             · 軟件開發(fā):ARM RealView開發(fā)套件(ARM RealView Development Suite)包括先進的代碼生成工具,為Cortex-A9處理器提供卓越的性能和無以比擬的代碼密度。這套工具還支持矢量編譯,用于NEON媒體和信號處理擴展集,使得開發(fā)者無需使用獨立的DSP,從而降低產品和項目成本。包括先進的交叉觸發(fā)在內的Cortex-A9 MPCore多核處理器調試得到RealView ICE和Trace產品的支持,同時也得到一系列硬件開發(fā)板的支持,用于FPGA系統(tǒng)原型設計和軟件開發(fā)。

            作為許多下一代設備的核心,Cortex-A9處理器通常與許多其他IP塊集成。

            系統(tǒng)IP

            系統(tǒng)IP組件對于在芯片上構建復雜的系統(tǒng)至關重要,通過利用系統(tǒng)IP組件,開發(fā)人員可以顯著縮短開發(fā)和驗證周期,從而節(jié)約成本并縮短產品的上市時間。

            工具支持

            所有ARM處理器均受ARM RealView?系列開發(fā)工具以及各種第三方工具、操作系統(tǒng)和EDA供應商的支持。ARM RealView工具獨一無二,所提供的解決方案涉及從概念到最終產品部署的整個開發(fā)過程。

            圖3. 基于Coretex-A9核的主要芯片

            NEON多媒體SIMD引擎簡介

            NEON是一個SIMD數(shù)據處理架構,256字節(jié)的寄存器堆包含32個64-bit位寬的寄存器或者16個128-bit位寬的寄存器。所有的寄存器都被視為具有相同數(shù)據類型的一個向量,支持的數(shù)據類型包括有符號或者無符號的8-bit、16-bit、32-bit和64-bit的整型數(shù)據或者單精度浮點數(shù)據。NEON指令都是針對相同數(shù)據類型的通道處理的,即所有通道執(zhí)行相同的指令操作。如下圖4所示。

            圖4. ARM NEON處理器的SIMD操作

            NEON的寄存器組:NEON和VFPv3 浮點協(xié)處理器共享寄存器組,這些寄存器和ARM核的寄存器截然不同,NEON還會采用ARM的寄存器作為地址寄存器間接尋址。圖5是NEON寄存器的視圖,16個128-bit的4字節(jié)寄存器Q0~Q15,或者32個64bit的雙字寄存器D0~D31,VFPv3的寄存器堆還有32個32-bit的寄存器S0~S31.

            圖5. NEON和VFPv3協(xié)處理器的寄存器堆視圖

            NEON指令支持的操作數(shù)類型包括:有符號或者無符號的8-bit、16-bit、32-bit和64-bit的整型數(shù)據(I8、S8、U8、I16、S16、U16、I32、S32、U32、I64、S64、U64)或者單精度浮點數(shù)據(F32)。

            圖6. 單個寄存器組的元素分配

            NEON支持的一些數(shù)據訪問:支持非對齊訪問但對齊的訪問速度更快,可以通過訪問@bits來指定地址對齊的位數(shù),如@32、@64、@128等。加載和存儲支持打包的數(shù)據類型,即可以有2、3、4個通道的interleave的數(shù)據加載和存儲,還能在標量和向量間進行數(shù)據的移動,但是速度比較慢、還能支持單精度浮點的數(shù)據運算。

            NEON指令集

            圖7. NEON的線性加載和存儲指令

            圖8. 交織的數(shù)據加載和存儲指令

            圖9. 使用結構化的加載指令加載RGB數(shù)據

            vld1.32 {d16-d19}, [r1]!

            vmul.f32 q12, q8, d0[0]

            vmla.f32 q12, q9, d0[1]

            vst1.32 {d24-d27}, [r0]!

            NEON的并行優(yōu)化方法

            ARM編譯器優(yōu)化方法

            NEON并行化和向量化的編譯選項:ARM RVDS 3.0以上版本或者DS-5使用編譯選項armcc --vectorize或者Codesourcery 2007q3之后的gcc版本使用如下編譯選項使能vfp:-mcpu=cortex-a8 -mtune=cortex-a8 -O3 -mfloat-abi=softfp -mfpu=vfp或者使用-mcpu=cortex-a8 -mtune=cortex-a8 -O3 -mfloat-abi=softfp -mfpu=neon -ftree-vectorize來使能NEON的并行處理。一般認為RVDS或者DS-5編譯器的armcc針對并行處理性能很差,即使調整算法的結構以適合編譯器進行NEON指令的優(yōu)化,但是生成的代碼還是難以讓人滿意。而GCC的自動并行化處理的結果性能更差,針對Android開發(fā),只能采用Google提供的NDK的GCC工具鏈可以用來開發(fā)。但ARM EABI提供了編譯器支持的C內聯(lián)intrinsics??梢詤⒖糀RM V7-A的 ABI手冊以及arm_neon.h文件。

            ARM匯編器的優(yōu)化方法

            使用NEON的intrinsic指令進行優(yōu)化需要對NEON的指令集非常熟悉,而且使用intrinsics沒法控制寄存器分配和內存對齊等,因而很多的NEON的優(yōu)化還是基于匯編代碼。當然手工寫匯編代碼總是需要很多的額外開銷的,而且還要了解ARM EABI編程規(guī)范。

            NEON編程優(yōu)化的基本方法

            一般NEON優(yōu)化是針對需要大量數(shù)據處理的函數(shù),而函數(shù)的基本操作都是先加載數(shù)據,然后進行數(shù)據處理,最后把計算的結果保存到內存。首先針對NEON數(shù)據的加載和存儲,可以參考http://houh-1984.blog.163.com/blog/static/3112783420111159169507/,即適當考慮結構化的加載/存儲以有效的進行數(shù)據加載成為有利于并行處理的方式,當然除了數(shù)據加載有利于并行處理,還要考慮數(shù)據加載有利于cache性能的優(yōu)化。然后采用NEON指令進行計算,針對數(shù)據訪問,可以考慮使用Q0~Q3的參數(shù)寄存器以及Q8~Q15寄存器,而對于Q4~Q7寄存器則必須根據EABI的規(guī)范在函數(shù)調用內保存。

            另外就是關需數(shù)據的加載類型,一個是數(shù)據的對齊,雖然NEON完全支持非對齊訪問,但是對齊數(shù)據一個是有利于加載、存儲,另外一個是也更cache友好,非對齊的數(shù)據訪問要消耗更多的時鐘周期尤其是在非對齊還要跨越cache行的情況下,數(shù)據對齊方式可以采用[,:],其中align可以為32、64、128、256位。軟件流水是非常重要的優(yōu)化工具,因為現(xiàn)在的ARM基于RISC的處理器,流水線是必須的,因而針對流水線需要更好的優(yōu)化方法,雖然NEON的流水線在Coretex-A8和Cortex-A9的處理器上不同,NEON的指令一般都是在一個周期內發(fā)出,但是執(zhí)行結果可能若干個周期才能有效,只有簡單的如VSUB、VADD和VMOV指令才能在下一個周期可以用。并發(fā)的指令發(fā)出也是需要提到的。另外從NEON的寄存器把數(shù)據保存到ARM寄存器非常耗時,需要至少20個周期的延時,因而盡量避免這類操作,NEON沒有提供除法和求平方根的操作,而VFPv3則存在這些指令。但是由于NEON處理器和VFP單元共用硬件,因而不要混合使用NEON和VFP指令。最后是盡量避免ARM和NEON處理器訪問相同的數(shù)據區(qū)域。

            Vld1.8 {D0}, [R1:64]

            Vld1.8 {D0,D1}, [R1:128]!

            Vld1.8 {D0,D1,D2,D3}, [R2:256]!,R3

            Cortex-A8和Cortex-A9的多指令并發(fā)有所不同,A8是每次并發(fā)兩次fetch,而A9除了多次并發(fā)外,還能亂序執(zhí)行,因而指令重排的優(yōu)化非常重要。一般而言NEON的SIMD優(yōu)化能提高至少2倍的系統(tǒng)性能,取決于實際處理的位寬。

            http://houh-1984.blog.163.com/

            http://baike.baidu.com/view/2937500.htm

            http://www.arm.com/zh/products/processors/cortex-a/cortex-a9.php

            Cortex-A9的NEON多媒體處理器是基于ARMv7的SIMD(Single Instruction Multiple Data)和向量浮點VFPv3(Vector Floating-Point)指令集的,在具體的芯片設計中NEON組件是可選的,NEON處理器是面向音頻、視頻編解碼器、圖像處理和語音信號處理以及其他的基帶等信息處理領域的。 本文介紹了NEON處理器的基本架構、NEON處理器的并發(fā)情況下Cortex-A8和Cortex-A9的區(qū)別、NEON的寄存器組和數(shù)據類型、NEON編程的針對編譯器、匯編器的優(yōu)化方法以及其他的提高性能的并行方法。



            評論


            技術專區(qū)

            關閉