第1章 通用处理器架构简介
1.1 综述
本书涉及的处理器架构内容中,绝大部分以ARMv8的64位架构为例。ARM架构从ARMv4指令集开始成熟,之后每个版本都会加入很多新的处理器特性(CPU feature)。ARMv5架构引入了VFP-V2、Jazelle。ARMv6架构引入了Thumb2、TrustZone、SIMD。ARMv7架构引入了VFP-V3/V4、NEON(SIMD扩展)。ARMv8架构引入了64位架构,可以通过一个开关切换到传统的32位架构,并且对之前的大部分处理器特性做了增强。64位平台上的虚拟地址空间也大大增加,避免了在32位架构上很多虚拟地址空间小导致的问题。ARMv8引入了新的异常模式,以应对复杂的运行环境,如日益严重的系统安全问题、虚拟化等。
和ARMv7一样,ARMv8分成A、R、M这3个系列,分别对应大型应用领域、嵌入式领域和微处理器领域,本书只介绍ARMv8-A。ARMv8-A支持AArch32和AArch64两种执行状态(execution state),分别对应32位和64位,本书只介绍AArch64。
AArch64提供了31个64位的通用寄存器,分别是X0~X30。寄存器长度都是64位,所有指令的长度都是32位,其中X30作为函数调用链接寄存器。64位的寄存器有程序计数器(Program Counter,PC)、栈指针(Stack Pointer,SP)寄存器,以及异常链接寄存器(Exception Link Register,ELR)。AArch64提供了32个128位的SIMD寄存器,用于为整数向量运算和浮点运算提供支持。AArch64还定义了4种异常级别EL0~EL3。
除以上基本寄存器之外,ARMv8架构还提供了功能丰富的系统控制寄存器,并且架构的每一次升级都会引入很多新的处理器特性,这些内容将会在其他章节探讨。