ARM NEON


ARM NEON 是適用於ARM Cortex-A和Cortex-R52系列處理器的一種128位SIMD(single instruction multiple data, 單指令多數據)擴展結構。
        ARM CPU最開始只有普通的寄存器,可以進行基本數據類型的基本運算。自ARMv5開始引入了VFP(Vector Floating Point)指令,該指令用於向量化加速浮點運算。自ARMv7開始正式引入NEON指令,NEON性能遠超VFP,因此VFP指令被廢棄。類似於Intel CPU下的MMX/SSE/AVX/FMA指令,ARM CPU的NEON指令同樣是通過向量化來進行速度優化。使用場景包含但不局限於:

 


1. 靈活的視頻轉碼(Flexible video transcoding)
2. 聲音識別、先進的語音處理(Speech Recognition,Advanced audio processing)
3. 視頻捕獲增強(Enhanced captured video)
4. 計算機視覺AR/VR(Computer Vision)
5. 機器學習及深度學習(Machine and deep learning)
6. 游戲及先進的人機交互界面(Gaming, Advanced user interface)

 

       關於SIMD(單指令多數據)和SISD(單指令單數據)。以加法指令為例,單指令單數據(SISD)的CPU對加法指令譯碼后,執行部件先訪問內存,取得第一個操作數;之后再一次訪問內存,取得第二個操作數;隨后才能進行求和運算。而在SIMD型的CPU中,指令譯碼后幾個執行部件同時訪問內存,一次性獲得所有操作數進行運算。這個特點使SIMD特別適合於多媒體應用等數據密集型運算:

 

                                                                  

       NEON技術是從ARMv7-A和ARMv7-R指令集引入的,目前已經擴展到了ARMv8-A和ARMv8-R指令集。
       NEON技術旨在通過加速多媒體(video/audio)編解碼,用戶界面,2D/3D圖形及游戲來提高人對多媒體的體驗度。
       NEON也可以通過加速信號處理算法和函數來加快應用程序,比如音頻和視頻處理,語音和面部識別,計算機視覺和深度學習。

 

概述
       NEON是一個打包的SIMD架構,NEON寄存器被視為相同數據類型的向量元,並且支持多種數據類型的一種技術。
      


NEON指令在所有向量通道上執行相同操作。執行操作數是由數據類型來決定的,Neon指令遵循如下的規則:

16x8-bit, 8x16-bit,4x32-bit,2x64-bit         整形操作
8x16-bit*,4x32-bit,2x64-bit**                      浮點操作

多個並行指令的操作僅在ARMv8.2-A, ARMv8-A/R上被支持。

 

怎樣使用NEON
       有多種方式來使用NEON,其中包含了以使用的庫文件,編譯器的自動向量化,內嵌NEON代碼等方式。

 

Library

       使用NEON最簡單的方式就是使用已經包含了NEON的開源庫。

 

       ARM計算庫用於機器學習和計算機視覺
       ARM計算庫是基於ARM CPU和GPU架構且針對圖像處理,計算機視覺和機器學習的低層次的函數集合。
       更多信息可參考:https://developer.arm.com/technologies/compute-library

 

       Ne10是一個基於C的開源庫,由ARM托管在github上,包含了一系列在ARM上重度優化的最常用的增強處理過程。
       Ne10是有幾個小型的庫構成的模塊化的開源庫。




        Libyuv

        是一個包含YUV數據的轉換和擴展功能的開源庫.

        Skia

        是一個開源的2D圖形庫,用作谷歌Chrome和Chrome OS、Android、Mozilla Firefox和Firefox OS以及其他許多產品的圖形引擎。

 

Neon生態系統

        Neon在如下表格所示的領域內有廣泛的使用。其中包含了很多跨平台的開源項目:

Video Codecs Audio Codecs Voice and speech codecs Audio enhancement algorithms Computer Vision Machine and deep Learning  
VP9 OTT encoder, VP9 Consumer encoder/decoder MP3 encoder/decoder G.711 Echo cancellation Canny Edge detection On-device object recognition
H.264(AVC) encoder/decoder MPEG-2 layer I&II encoder/decoder G.722, G.722.1, G.722.2-A Noise Reduction Harris Corner On-device scene recognition
MPEG4 SP/ASP encoder/decoder MPEG-1 layer III audio encoder G.723.1 Beam Forming ORB Human pose recognition
MPEG2 decoder MPEG-1 layer III audio encoder/decoder G.726 Comfort Noise Convolution filter Defect detection
H.263 decoder HE-AACv1, v2 encoder/decoder G.727 AudioZoom Erosion/Dilation  
  WMA Standard encoder/decoder G.728 Equalization Face detection  
  WMA Pro, WMA Lossless decoder G.729, G.729A, G.729B Wind noise reduction Pedestrian detection  
  SBC Bluetooth encoder/decoder G.729AB Audomatic Gain Control Fast9/Fast12 corner detection  
  OggVorbis encoder/decoder AMR Narrowband, Wideband, Wideband+ Voice Activity Detection Object tracking  
  FLAC encoder/decoder GSM-HR, GSM-ER, GSM-EFR Key word spotting Lane departure  
  Dolby Digital AC-3 encoder/decoder Opus Voice trigger Connected components  
  Dolby Digital eAC-3 decoder iLBC Voice biometrics    
  Dolby MS10/MS11 Multistream SILK Speeker verification    
  Dolby Digital Plus 5.1/7.1 Consumer decoder SPEEX      
  Dolby Digital 5.1 Creator Consumer encoder MELPe      
  Dolby Pro Logic I&II encoder/decoder        
  iSAC encoder/decoder        
  CELT encoder/decoder        
  DTS core encoder/decoder        
  DAB+ encoder/decoder        
  Dolby Mobile encoder/decoder        
  Dolby TrueHD consumer decoder        
  Dolby UDC encoder/decoder        
---------------------
版權聲明:本文為CSDN博主「rony2012」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/rony2012/article/details/76433431


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM