1. ARM概述
1.1 Application Cortex Processors (ARM Cortex 應用處理器 )
• Cortex™-A 系列 - 開放式操作系統的高性能處理器
Cortex 應用處理器在先進工藝節點中可實現高達 2GHz+ 標準頻率的卓越性能,從而可支持下一代的移動 Internet 設備。這些處理器具有單核和多核種類,最多提供四個具有可選 NEON™ 多媒體處理模塊和先進浮點執行單元的處理單元。
所有 Cortex-A 處理器都共享共同的體系結構和功能集。 這使其成爲開放式平臺設計的最佳解決方案,因爲此時不同設計之間軟件的兼容性和可移植性最重要:
- ARMv7-A 體系結構
- 對所有操作系統的支持
- Linux 完整分配 - Android、Chrome、Ubuntu 和 Debian
- Linux 第三方 - MontaVista、QNX、Wind River
- Symbian
- Windows CE
- 需要使用內存管理單元的其他操作系統支持
- 指令集支持 - ARM、Thumb-2、Thumb、Jazelle®、DSP
- TrustZone® 安全擴展
- 高級單精度和雙精度浮點支持
- NEON™ 媒體處理引擎
1.2 Embedded Cortex Processors (ARM Cortex 嵌入式處理器)
• Cortex-R 系列 - 面向實時應用的卓越性能
• Cortex-M 系列 - 面向具有確定性的微控制器應用的成本敏感型解決方案
Cortex 嵌入式處理器旨在爲各種不同的市場提供服務。
Cortex-M 系列處理器主要是針對微控制器領域開發的,在該領域中,既需進行快速且具有高確定性的中斷管理,又需將門數和可能功耗控制在最低。
而 Cortex-R 系列處理器的開發則面向深層嵌入式實時應用,對低功耗、良好的中斷行爲、卓越性能以及與現有平臺的高兼容性這些需求進行了平衡考慮。
1.3 Classic ARM Processors (經典 ARM 處理器)
• ARM11™ 系列 - 基於 ARMv6 架構的高性能處理器
• ARM9™ 系列 - 基於 ARMv5 架構的常用處理器
• ARM7™ 系列- 面向通用應用的經典處理器
ARM 經典處理器適用於那些希望在新應用中使用經過市場驗證的技術的組織。這些處理器提供了許多的功能、卓越的能效和範圍廣泛的操作性能,適用於成本敏感型解決方案。這些處理器每年都有數十億的發貨量,因此可確保設計者獲得最廣泛的生態系統和資源,從而最大限度地減少集成過程中出現的問題並縮短上市時間。
2. ARM架構
ARM 架構在不斷演進的同時在各個實現之間保持了很高的兼容性。
• ARMv4T架構
引進了 16 位 Thumb® 指令集和 32 位 ARM 指令集,目的是在同一個架構中同時提供高性能和領先的代碼密度。16 位 Thumb 指令集相對於 32 位 ARM 指令集可縮減高達 35% 的代碼大小,同時保持 32 位架構的優點。
示例處理器- ARM7TDMI®
• ARMv5TEJ 架構
引進了數字信號處理 (DSP) 算法(如飽和運算)的算術支持和 Jazelle® Java 字節碼引擎來啓用 Java 字節碼的硬件執行,從而改善用 Java 編寫的應用程序的性能。與非 Java 加速內核比較,Jazelle 將 Java 執行速度提高了 8 倍,並且減少了 80% 的功耗。許多基於 ARM 處理器的便攜式設備中已使用此架構,目的是在遊戲和多媒體應用程序的性能方面提供顯著改進的用戶體驗。
示例處理器 - ARM926EJ-S™ 和 ARM968E-S™
• ARMv6 架構
引進了包括單指令多數據 (SIMD) 運算在內的一系列新功能。SIMD 擴展已針對多種軟件應用程序(包括視頻編解碼和音頻編解碼)進行優化,對於這些軟件應用程序,SIMD 擴展最多可將性能提升四倍。此外,還引進了作爲 ARMv6 體系結構的變體的 Thumb-2 和 TrustZone 技術。
示例處理器 - ARM1176JZ 和 ARM1136EJ
• ARMv6M 架構
爲低成本、高性能設備而設計,向以前由 8 位設備占主導地位的市場提供 32 位功能強大的解決方案。其 16 位 Thumb 指令集架構允許設計者設計門數最少卻十分經濟實惠的設備。始終如一的中斷處理結構和編程器模式爲所有 Cortex-M 系列處理器(從 Cortex-M0 處理器到 Cortex-M3 處理器)提供了完全向上兼容的途徑。
示例處理器 - Cortex™-M0 和 Cortex-M1
• ARMv7 架構
向目標應用提供一組自定義配置文件。所有 Cortex 處理器都實現了 ARMv7 架構(實現 ARMv6M 的 Cortex-M 系列處理器除外)。所有 ARMv7 架構配置文件都實現了 Thumb-2 技術(一個經過優化的 16/32 位混合指令集),在保持與現有 ARM 解決方案的代碼完全兼容的同時,既具有 32 位 ARM ISA 的性能優勢,又具有 16 位 Thumb ISA 的代碼大小優勢。ARMv7 架構還包括 NEON™ 技術擴展,可將 DSP 和媒體處理吞吐量提升高達 400%,並提供改進的浮點支持以滿足下一代 3D 圖形和遊戲以及傳統嵌入式控制應用的需要。Cortex 架構旨在橫跨各種應用領域(從成本少於 1 美元的微控制器到功能強大,運行速度超過 2GHz 的多核設計)。此架構分爲 3 種配置文件:
• Cortex-A -應用配置文件,它擁有MMU(內存管理單元)、用於多媒體應用的可選 NEON 處理單元以及支持半精度、單精度和雙精度運算的高級硬件浮點單元的基礎上實現了虛擬內存系統架構。 它適用於高端消費電子設備、網絡設備、移動互聯網設備和企業市場。示例處理器 - Cortex-A9, Cortex-A8 和 Cortex-A5
• Cortex-R - 實時配置文件,它在 MPU(內存保護單元)的基礎上實現了受保護內存系統架構。它適用於高性能實時控制系統(包括汽車和大容量存儲設備)。示例處理器 - Cortex-R4(F)
• Cortex-M - 微控制器配置文件,可進行快速中斷處理,適用於需要高度確定的行爲和最少門數的成本敏感型設備。示例處理器 - Cortex-M3
• ARMv8 架構
ARMv8-A 將 64 位體系結構支持引入 ARM 體系結構中,其中包括:
• 64 位通用寄存器、SP(堆棧指針)和 PC(程序計數器)
• 64 位數據處理和擴展的虛擬尋址
兩種主要執行狀態:
• AArch64 - 64 位執行狀態,包括該狀態的異常模型、內存模型、程序員模型和指令集支持
• AArch32 - 32 位執行狀態,包括該狀態的異常模型、內存模型、程序員模型和指令集支持
這些執行狀態支持三個主要指令集:
• A32(或 ARM):32 位固定長度指令集,通過不同體系結構變體增強部分 32 位體系結構執行環境現在稱爲 AArch32
• T32 (Thumb),以 16 位固定長度指令集的形式引入,隨後在引入 Thumb-2 技術時增強爲 16 位和 32 位混合長度指令集。部分 32 位體系結構執行環境現在稱爲 AArch32
• A64:提供與 ARM 和 Thumb 指令集類似功能的 32 位固定長度指令集。隨 ARMv8-A 一起引入,它是一種 AArch64 指令集。
• ARM ISA 不斷改進,以滿足前沿應用程序開發人員日益增長的要求,同時保留了必要的向後兼容性,以保護軟件開發投資。在 ARMv8-A 中,對 A32 和 T32 進行了一些增補,以保持與 A64 指令集一致。
3. NEON
ARM® NEON™ 通過 SIMD 引擎可有效處理當前和將來的多媒體格式,從而改善用戶體驗。
NEON 技術可加速多媒體和信號處理算法(如視頻編碼/解碼、2D/3D 圖形、遊戲、音頻和語音處理、圖像處理技術、電話和聲音合成),其性能至少爲 ARMv5 性能的 3 倍,爲 ARMv6 SIMD 性能的 2 倍。
NEON 技術是通過清晰方式構建的,並可無縫用於其本身的獨立流水線和寄存器文件。
NEON 技術是 ARM Cortex™-A 系列處理器的 128 位 SIMD(單指令多數據)體系結構擴展,旨在爲消費性多媒體應用提供靈活強大的加速功能,從而明顯改善用戶體驗。 它具有 32 個寄存器,64 位寬(是 16 個寄存器,128 位寬的雙倍視圖。)
NEON 指令可執行“打包的 SIMD”處理:
- 寄存器被視爲同一數據類型的元素的矢量
- 數據類型可爲:有符號/無符號的 8 位、16 位、32 位、64 位單精度浮點
- 指令在所有通道中執行同一操作
使用 NEON 技術的 ARM Cortex™-A 系列處理器,以及 ARM 的 Mali 多媒體硬件解決方案可用於多媒體應用,範圍從智能手機和移動計算設備到 HDTV。
3.1 NEON 增強了用戶體驗
NEON 可增強許多多媒體用戶體驗:
- 觀看任意格式的任意視頻
- 編輯和強化捕獲的視頻 – 視頻穩定性
- 鋸齒消除渲染和合成
- 遊戲處理
- 快速處理幾百萬像素的照片
- 語音識別
- 強大的多通道高保真音頻處理
3.2 NEON 的特徵和優點
3.2.1 NEON 支持用於 Internet 應用程序的範圍廣泛的多媒體編解碼器:
- 許多軟編解碼器標準:MPEG-4、H.264、On2 VP6/7/8、Real、AVS.....
- 對於各種格式的正常大小的“Internet 流”解碼來說,是理想的解決方案
- 不僅僅針對編解碼器,還適用於 2D 和 3D 圖形和其他矢量處理
- 提供現有工具、操作系統支持和體系支持
3.2.2 所需週期減少:
- NEON 可使複雜視頻編解碼器的性能提升 60-150%
- 單個簡單 DSP 算法可實現更大的性能提升(4 倍 -8 倍)
- 處理器可更快進入睡眠狀態,從而在整體上節約了動態功耗
3.2.3 NEON 技術的大量元素能夠提高性能並簡化軟件開發過程,如:
- 通過對齊和非對齊數據訪問,可對 SIMD 操作進行有效的矢量化。
- 清晰的指令集體系結構,設計用於自動矢量化編譯器和手動編碼。
- 有效訪問打包數組,如 ARGB 或 xyz 座標
- 支持整數和浮點操作,以確保適合從編解碼器、高性能計算到 3D 圖形等廣泛應用領域。
- 與 ARM 處理器緊密結合,提供單指令流和內存的統一視圖,從而能夠提供一個具有更簡單工具流的開發平臺目標。nbsp;
- 通過具有雙 128 位/64 位視圖的大型 NEON 寄存器文件,可有效處理數據並儘可能減少對內存的訪問,從而增加了數據吞吐量。