Login

ARM 处理器架构

ARM 架构是构建每个 ARM 处理器的基础。ARM 架构随着时间的推移不断发展,其中包含的架构功能可满足不断增长的新功能、高性能需求以及新兴市场的需要。有关最新公布版本的信息,请参阅 ARMv8 架构

ARM 架构支持跨跃多个性能点的实现,并已在许多细分市场中成为主导的架构。ARM 架构支持非常广泛的性能点,因而可以利用最新的微架构技术获得极小的 ARM 处理器实现和极有效的高级设计实现。实现规模、性能和低功耗是 ARM 架构的关键特性。

ARM 已经开发了架构扩展,从而为 Java 加速 (Jazelle®)、安全性 (TrustZone®)、SIMD 和高级 SIMD (NEON™) 技术提供支持。ARMv8-A 架构增加了密码扩展作为可选功能。

ARM 架构与精简指令集计算 (RISC) 架构类似,因为它包含以下典型 RISC 架构特征:

  • 统一寄存器文件加载/存储架构,其中的数据处理操作只针对寄存器内容,并不直接针对内存内容。
  • 简单寻址模式,所有加载/存储地址只通过寄存器内容和指令字段确定。

对基本 RISC 架构的增强使 ARM 处理器可以实现较高性能、较小代码大小、较低功耗和较小硅面积的良好平衡。

 

 
 


A64 is a new 32-bit fixed length instruction set to support the AArch64 execution state. The following is a summary of the A64 ISA features.
  • Clean decode table based on 5-bit register specifiers
  • Instruction semantics broadly the same as in AArch32
  • 31 general purpose 64-bit registers accessible at all times
  • No modal banking of GP registers - Improved performance and energy
  • Program counter (PC) and Stack pointer (SP) not general purpose registers
  • Dedicated zero register available for most instructions

Key differences from A32 are:

  • New instructions to support 64-bit operands. Most instructions can have 32-bit or 64-bit arguments
  • Addresses assumed to be 64-bits in size. LP64 and LLP64 are the primary data models targeted
  • Far fewer conditional instructions than in AArch32 conditional {branches, compares, selects}
  • No arbitrary length load/store multiple instructions LD/ST ‘P’ for handling pairs of registers added A64

Advanced SIMD and scalar floating-point support are semantically similar to the A32 support; they share a floating-point/vector register file, V0 to V31. A64 provides three major functional enhancements:

  • More 128 bit registers: 32 x 128 bit wide registers; can be viewed as 64-bit wide registers
  • Advanced SIMD supports DP floating-point execution
  • Advanced SIMD supports full IEEE 754 execution; rounding-modes, Denorms, NaN handling

There are some additional floating-point instructions for IEEE754-2008:

  • MaxNum/MinNum instructions
  • Float to Integer conversions with RoundTiesAway

The register packing model in A64 is also different from A32:

  • All vector registers 128-bits wide, Vx[127:0] :
    • Double precision scalar floating point uses Vx[63:0]
    • Single precision scalar floating point uses Vx[31:0] 

 


ARM(通常称为 A32)是一种固定长度(32 位)的指令集。它是 ARMv4T、ARMv5TEJ 和 ARMv6 架构中使用的基础 32 位 ISA。在这些架构中,该指令集用于需要高性能的应用领域,或用于处理硬件异常,如中断和处理器启动。

对于性能关键应用和旧代码,Cortex 架构的 Cortex™-A 和 Cortex-R 配置文件也支持 ARM ISA。其多数功能都包括在与 Thumb-2 技术一起引入的 Thumb 指令集中。Thumb (T32) 从改进的代码密度中获益。

ARM 指令的长度为 32 位,需要 4 字节边界对齐。

可以对大多数 ARM 指令进行“条件化”,使其仅在以前的指令设置了特定条件代码时执行。这意味着,如果应用程序状态寄存器中的 N、Z、C 和 V 标志满足指令中指定的条件,则指令仅对程序员的模型操作、内存和协处理器发挥其正常作用。如果这些标记不满足此条件,则指令会用作 NOP,即执行过程正常进入下一指令(包括将对异常进行任意相关检查),但不发挥任何其他作用。此条件化指令允许对 if 和 while 语句的一小部分进行编码,而无需使用跳转指令。  

条件代码包括:

 条件代码  含义

 N

 否定条件代码,如果结果为否定的,则设置为 1

 Z

 零条件代码,如果指令的结果为 0,则设置为 1

 C

 进位条件代码,如果指令生成进位条件,则设置为 1

 V

 溢出条件代码,如果指令生成溢出条件,则设置为 1。

 

 


成本敏感型嵌入式控制应用领域(例如手机、磁盘驱动器、调制解调器和寻呼机)一直在寻求通过某些方式在兼顾内存占用空间的前提下以最低成本实现 32 位性能和地址空间。   

Thumb (T32) 指令集提供已压缩至 16 位宽操作码的、最常用的 32 位 ARM 指令的子集。在执行时,这些 16 位指令实时、透明地解压缩为完整 32 位 ARM 指令,且无性能损失。

Thumb 可向设计人员提供:

  • 卓越的代码密度,可实现最小的系统内存大小和最低的成本。
    • 在 8 位或 16 位总线上的 8 位或 16 位内存中实现 32 位性能,从而降低系统成本。
  • 建立的 ARM 功能
  • 行业领先的 MIPS/Watt,以尽可能延长电池寿命和增加 RISC 性能
  • 小的芯片面积,以进行集成和尽可能降低芯片成本
  • 全球多合作伙伴源,可提供安全保证。

 设计人员可以同时使用 16 位 Thumb 和 32 位 ARM 指令集,这样,他们就可以灵活地根据应用需求在子例程级别上增强性能或调整代码大小。

Thumb ISA 受 ARM 生态体系的广泛支持,包括完善的 Windows 软件开发环境以及开发和评估卡。

改进了代码密度,具有性能效率和功效

Thumb-2 技术使 Thumb 成为混合(32 位和 16 位)长度指令集,是所有 ARMv7 兼容的 ARM Cortex 实现所通用的指令集。Thumb-2 提升了众多嵌入式应用程序的性能、能效和代码密度。

该技术与现有 ARM 和 Thumb 解决方案向后兼容,同时显著扩展了 Thumb 指令集的可用功能,从而使更多应用程序从 Thumb 的同类最佳代码密度中获益。为获得性能优化的代码,Thumb-2 技术使用少于 31% 的内存以降低系统成本,同时,提供比现有高密度代码高出 38% 的性能,因此可用于延长电池寿命,或丰富产品功能集。

 


Maximise


Cookies

We use cookies to give you the best experience on our website. By continuing to use our site you consent to our cookies.

Change Settings

Find out more about the cookies we set