ARM 处理器架构
转自:http://www.arm.com/zh/products/processors/instruction-set-architectures/index.php
ARM 架构是构建每个 ARM 处理器的基础。ARM 架构随着时间的推移不断发展,其中包含的架构功能可满足不断增长的新功能、高性能需求以及新兴市场的需要。有关最新公布版本的信息,请参阅 ARMv8 架构。
ARM 架构支持跨跃多个性能点的实现,并已在许多细分市场中成为主导的架构。ARM 架构支持非常广泛的性能点,因而可以利用最新的微架构技术获得极小的 ARM 处理器实现和极有效的高级设计实现。实现规模、性能和低功耗是 ARM 架构的关键特性。
ARM 已经开发了架构扩展,从而为 Java 加速 (Jazelle®)、安全性 (TrustZone®)、SIMD 和高级 SIMD (NEON™) 技术提供支持。ARMv8-A 架构增加了密码扩展作为可选功能。
ARM 架构与精简指令集计算 (RISC) 架构类似,因为它包含以下典型 RISC 架构特征:
- 统一寄存器文件加载/存储架构,其中的数据处理操作只针对寄存器内容,并不直接针对内存内容。
- 简单寻址模式,所有加载/存储地址只通过寄存器内容和指令字段确定。
对基本 RISC 架构的增强使 ARM 处理器可以实现较高性能、较小代码大小、较低功耗和较小硅面积的良好平衡。
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。 |