···························································· 第3 章 chapter3 ARM 处理器技术 如前面章节提到的,嵌入式系统处理器的种类十分多样,在学习过程中,往往需要以 某种或者某类处理器为例,具体对其结构、功能和使用说明进行学习。在嵌入式处理器 中,ARM 体系结构的处理器在嵌入式方面应用非常广泛。通过阅读本章,读者可以了解 ARM 不同系列的嵌入式芯片的设计中,厂商为处理器定义了哪些功能。本章重点介绍 Cortex-A8的功能特点,以及生产厂商根据设计制作的对应Cortex-A8内核设计的实际 处理器芯片S5PV210。 3.1 处理器体系结构 3.1.1 体系结构概述 为研究处理器技术,需要了解处理器技术包含的内容。在此之前,一起来看嵌入式系 图3-1 嵌入式系统的抽象层转换 统的抽象层转换,它与一般计算机系统相同,如图3-1 所示。按 照从硬件到软件的顺序,自下而上分别是器件、 电路、功能部件、微处理器体系结构、指令集体系结构、 操作系统、算法和应用。抽象层面对应的人员分别是 电子工程师、架构师、程序员和用户。 体系结构是嵌入式系统硬件与软件的衔接,它确 定嵌入式系统设计的部件、部件功能、部件间接口的设 计,并集中于嵌入式系统的核心部分—处理器的运算 与内存的存取。它包含一系列机器指令、基本数据类型、寄存器、寻址模式存储体系、中 断和异常处理等内容。 处理器的体系结构,也称架构,包含指令集体系结构(InstructionSetArchitecture, ISA)和微处理器体系结构或微架构(Microarchitecture)。指令集体系结构就是设计一系 列指令(如数据处理和存储操作、算术和逻辑操作以及控制流操作等基本命令),具体对 应一系列机器二进制编码信号;微架构则是设计硬件电路如何具体执行指令,也就是处 理器内部通过电压的高低电平对应上述的二进制编码指令。 软件要借助一定的词库和硬件沟通,这个词库就被称作“指令集”。大个头的计算机 处理器 体系结构 3 8 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 里占据支配地位的思想是要有一个很大、很丰富的词库,可能有好几千个词,别的软硬件 使用起来都比较方便。 体系结构定义了指令集和基于这一体系结构下处理器的编程模型,基于同种体系结 构可以有多种处理器,每个处理器性能不同,所面向的应用不同,每个处理器的实现都要 遵循这一体系结构。 体系结构主要分成以下两类。 复杂指令集(ComplexInstructionSetComputer,CISC):通过设置一些功能复杂的 指令,把一些原来由软件实现的、常用的功能改成用硬件的指令系统来实现,以此来提高 计算机的执行速度。 精简指令集(ReducedInstructionSetComputer,RISC):通过简化计算机指令功能, 使指令的平均执行周期减少,从而提高计算机的工作主频。 还有超长指令字(VeryLongInstructionWord,VLIW)指令集等一些衍生指令集架 构,通过将多条指令放入一个指令字实现指令集并行处理,从而提高计算运行效率。 3.1.2 流水线技术 在现代处理器中,流水线是一个最基本的概念。在了解CPU 时,很多时候会提及拥 有多少级流水线。虽然这个概念并不是在计算机技术中诞生的,但是这个技术却在处理 器世界中大放异彩。 流水线(Pipeline)技术是指程序在执行时,多条指令重叠进行操作的一种准并行处 理实现技术。通俗地讲,将一个时序过程,分解成若干子过程,每个过程都能有效地与其 他子过程同时执行。这种思想最初是在RISC体系结构中出现的,旨在提高处理器处理 效率,争取在一个时钟周期中完成一条指令。 1.流水线指令执行分级 最经典的当属无内部互锁的流水线处理器(MicroprocessorwithoutInterlocked PipedStages,MIPS)的5级流水线技术。MIPS属于RISC体系结构,本身就是为了流水 线而设计的,CPU 在高速缓存中运行,每条指令的执行过程都分成5级。每级成为一个 流水线阶段,每个阶段占用固定的时间,通常是一个时钟周期。图3-2中为MIPS5级流 水线结构图。 1)取指令 取指令(InstructionFetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。 2)指令译码 取出指令后,计算机立即进入指令译码(InstructionDecode,ID)阶段。在指令译码 阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同 的指令类别以及各种获取操作数的方法。 3)指令执行 在取指令和指令译码阶段之后,接着进入执行指令(Execute,EX)阶段。此阶段的任 务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU 的不同部分被连接 起来,以执行所需的操作。 流水线技术 ◆ 第 3 章 ARM 处理器技术39 图3- 2 MIPS5 级流水线结构图 4)访存取数阶段 根据指令需要,有可能要访问主存读取操作数,这样就进入了访存取数(Memory, MEM)阶段,此阶段的任务是根据指令地址码,得到操作数在主存中的地址,并从主存中 读取该操作数用于运算。 5)结果写回阶段 作为最后一个阶段,结果写回(Wr阶段把执行指令阶段的运行结果写 回到某种存储形式。 iteBack,WB) 如图3-3所示,假设每条指令的运行时间为一个时钟周期1000ps,那么单级操作的 时间为200ps,执行3条指令不采用流水线和采用流水线方式的时间分别为3000ps和 1400ps。那么执行 n 条指令所需时间为1000pn-s。 s+(1)×200p 2. 处理器冒险 很明显,如果只执行一条指令,流水线是不会提高效率的。但是如果要完成多条指 令,利用流水线的并行原理,其实可以提高几倍的处理速度。那么流水线的级数是不是 越多越好呢? 流水线级数越多,在处理多指令的时候确实也会越高效,但也需要更多的 寄存器,也就是用空间换时间;同时也会出现很多相关的副作用,被称为流水线冒险 (HaZard), 处理器中的冒险有以下3类。 1)结构冒险 由于处理器资源冲突,而无法实现某些指令或者阶段的组合实现,就称为处理器有 结构冒险。比如,早期的处理器中,程序和数据是存储在一起的,当IF 和MEM 同时访问 存储器导致有一个操作要等待,此时结构冒险就出现了。现在的处理器已经解决了该问 题,指令存储在L1PCache中,数据存储在L1DCache中,单独访问,不会影响相互操作。 ◆ 40 嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 图3- 3 5级流水线示意图 2)数据冒险 如果流水线中原来有先后顺序的指令在同一时刻处理时,可能会导致出现访问错误 的数据的情况。比如,指令1将寄存器R2 、R3的和赋予R1,改变R1的值;而紧接着将 R1 、R4的和赋予R5则会使用R1的值,可是R1必须在指令1的第5级才能更新到寄存 器中,指令2在第4级就要访问R1,也就是说指令2此时在使用错误的R1的值,数据冒 险就出现了。 最简单的处理方法是在两条指令中添加一条空指令—NOP,但是会影响处理器的指 令的执行效率。在现代处理器技术中,已经用forwarding或bypasing的方式解决了如 果处理器在检测到当前指令的源操作数正好在流水线的EX或者MEM阶段,直接将EX 和MEM寄存器的值传递给ALU的输入,而不再从寄存器堆中获取数据,因为此时寄存 器堆中的数据可能是没有被及时更新的。当然,不仅在EX阶段出现这种问题,在MEM 阶段也容易出现。 3)控制冒险 流水线执行指令时,由于并行处理的关系,后面很多指令其实都在流水线中开始处 理,包括预取值和译码。那么,如果此时程序中出现一条跳转语句怎么办? 在流水线中, 多条指令是并行执行的,在指令1执行的时候,后续的指令2和指令3可能已经完成IF 和ID两个阶段等待被执行,此时如果指令1跳到其他地方,那么指令2和指令3的IF和 ID就是无用功了,此时出现了控制冒险。这种情况对于程序和效率来说存在很大损失。 当然,简单的解决方法是在Jump指令后面(不会被真正使用,但是会进入流水线)添 加空指令,在MIPS程序中,经常在Jump指令后面添加空指令,更好的方法是采用预测 进行判断。 解决方法就是使用分支预测技术,通过预测的方式获取分支指令下一条指令的取 值。分支预测技术分为静态分支预测和动态分支预测。静态分支预测如规定向后跳转 的分支指令总是预测为跳,否则总是预测为不跳。动态分支预测即根据以往的跳转记录 来判断当前是否应跳转。 第◆3 章 ARM 处理器技术4 1 3.1.3 寻址和存储器设计 CPU 内部的核心组件有各类寄存器、控制单元(CU)、逻辑运算单元(ALU)、高速 缓存。 CPU 和外部交互的交通大动脉就是3种总线,即地址总线、数据总线和控制总线, I/O 设备、RAM 通过3种总线和CPU 实现功能交互。 地址总线(AddressBus):当CPU 要处理数据时,首先地址总线会根据要处理的数 据地址在内存中找到要处理的数据,然后再对其进行相应处理。也就是说,地址总线的 宽度决定CPU 能够处理的数据地址的总量大小。由于地址总线总是由CPU 发起的寻 址要求,因此数据总线只能由CPU 主动向外部寻找它所需要的地址,而不能被外部的 I/O 设备主动使用。因此,地址总线是单向(只能由CPU 主动去读而不会对其进行写) 三态(即高电平、低电平、高阻态)的。 数据总线(DataBus):当CPU 需要读取或写入数据的时候由地址总线先去寻址,然 后再由数据总线对读到的地址进行读或写操作(CPU 一次读写的数据总量由数据总线的 宽度决定),最终实现CPU 所要实现的相应功能。由于CPU 会通过数据总线对所要处 理的地址进行读和写两种操作,因此,数据总线是双向三态的。 控制总线(ControlBus):当CPU 要对外部的外设(I/O 设备或内存)进行操作的时 候,控制总线会对相应的外设发出相应的控制指令,然后再由数据总线对其进行操作。 由于控制总线要对所有的外设进行控制,因此,它是双向的且十分灵活,而其总线的宽度 也是不确定的,主要由外设的数量决定其宽度。 CPU 在处理数据时其实是要先由控制总线发送控制指令,然后再对外设(这里的外 设包括I/O 设备和内存)进行寻址操作,只有找到要操作的硬件或内存的地址之后才能 对其进行相应操作。而这个寻址方式是由CPU 对地址的编址方式决定的。而编址方式 就分为统一编址和独立编址。 统一编址是当CPU 要对I/O 设备进行操作时,就直接由地址总线进行寻址,因为地 址总线的宽度是一定的,也就是所寻址的范围是一定的。而如果由它直接对I/O 设备进 行寻址,那势必会占用有限的地址,进而导致对其能够操作的内存大小就会有所限制。 这也导致地址总线所能寻到的内存地址并不和自己的总线宽度对应。(假如一个32位 宽度的地址总线本来可以寻址4GB的内存地址,但是由于一部分外设占用了部分地址, 因此它所能使用的内存就会小于4GB。) 独立编址是指CPU 在对I/O 设备进行操作时会有专门的操作指令,而不会用内存 操作指令,这样就会使地址总线仅服务于内存,而不会被其他I/O 外设占用,也因此会使 内存的大小等于地址总线的宽度。 在存储器设计思想上,有两种结构———冯·诺依曼结构和哈佛结构,其示意图如 图3-4所示。 冯·诺依曼结构,也叫普林斯顿结构,指令和数据是不加区别地混合存储在同一个 存储器中的,共享数据总线。指令和数据地址指向同一个存储器的不同物理位置,指令 和数据的宽度相同。由于指令和数据放在同一个存储器中,因此冯·诺依曼结构中不能 同时获取指令和数据。又由于存储器的速度远低于CPU 的速度,从而使CPU 与存储器 4 2 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 图3-4 冯·诺依曼结构和哈佛结构 交换数据成了影响高速计算和系统性能的瓶颈。冯·诺依曼结构则是将逻辑代码段和 变量统一存储在内存中,它们之间一般是按照代码的执行顺序依次存储。这样就会导致 一个问题,如果当程序出现BUG时,由于程序没有对逻辑代码段的读/写限定,将拥有和 普通变量一样的读/写操作权限,因此一旦逻辑执行出现问题就容易死机。但是,冯·诺 依曼结构的好处是可以充分利用有限的内存空间,并且会使CPU 对程序的执行方便。 哈佛结构,指令和数据是完全分开的,存储器分为程序存储器和数据存储器。哈佛 结构至少拥有2组总线,即程序存储器的数据总线和地址总线,数据存储器的数据总线 和地址总线,这种分开的程序总线和数据总线,可允许同时获取指令字(来自程序存储 器)和操作数(来自数据存储器),是互不干扰。这意味着在一个机器周期内可以同时准 备好数据和指令,本条指令执行时可以预取下一条指令,所以哈佛结构的CPU 具有较高 的执行效率。同时由于指令和数据分开存放,可以使指令和数据有不同的宽度。(例如, 51单片机的程序的逻辑代码段放在ROM 中,而变量部分则放在ROM 中;而ARM 的逻 辑代码和变量都存放在RAM(内存)中,但是,它在内存中划分了两部分空间,其中一部 分是逻辑代码,另一部分是变量,二者之间不会相互干扰)。哈佛结构的优点就是逻辑代 码和变量单独存放,不会相互干扰,因而当程序出现BUG时,最多只会修改变量的值,而 不会修改程序的执行顺序(即逻辑关系)。 许多现代微型计算机的高速缓冲存储器采用哈佛结构,将Cache分为指令Cache和 数据Cache,而主存采用冯·诺依曼结构,只有一个存储器,由数据和指令混用。因此,将 哈佛结构和冯·诺依曼结构结合,不仅可以提高主存的利用率,而且可以提高程序执行 的效率,缩短指令执行的时钟周期。 3.1.4 RISC 和CISC 的区别 1.RISC和CISC指令集的区别 RISC处理器减少了指令种类,RISC的指令种类只提供简单的操作,使一个周期就 可以执行一条指令。编译器或者程序员通过几条简单指令的组合实现一个复杂的操作 (如除法操作)。RISC采用定长指令集,每条指令的长度都是固定的,允许流水线在当前 指令译码阶段去取其下一条指令;而在CISC处理器中,指令长度通常不固定,执行也需 要多个周期。因此,CISC强调硬件的复杂性,RISC注重编译器的复杂性,如图3-5所示。 2.RISC和CISC流水线的区别 RISC指令的处理过程被拆分成几个更小的、能够被流水线并行执行的单元。在理 想情况下,流水线每周期前进一步,可获得最高的吞吐率;而CISC指令的执行需要调用 第◆3 章 ARM 处理器技术4 3 图3-5 RISC和CISC的区别 微代码的一个微程序。 3.RISC和CISC寄存器的区别 RISC处理器拥有更多的通用寄存器,每个寄存器都可存放数据或地址。寄存器可 为所有的数据操作提供快速的局部存储访问,而CISC处理器都是用于特定目的的专用 寄存器。 4.RISC和CISC读取方式的区别 RISC处理器只处理寄存器中的数据。独立的load和store指令用来完成数据在寄 存器和外部存储器之间的传送。因为访问存储器很耗时,所以把存储器访问和数据处理 分开。可反复地使用保存在寄存器中的数据,避免多次访问存储器,从而达到提高程序 执行性能的目的。CISC处理器能够直接处理存储器中的数据。 下节介绍的ARM 处理器体系结构就属于RISC 体系结构,RISC 的特点可以归纳 如下。 ● 指令数目少,采用相同的字节长度。 ● 寻址方式简化,大部分使用寄存器寻址方式。 ● 主要采用寄存器间的数据操作。 ● 简化处理器结构,特别是控制器的设计。 ● 使用处理器并行技术,适合流水线、超级流水线和超标量技术。 因此,基于此类体系结构的处理器更适合嵌入式系统。 3.2 ARM 处理器体系结构 3.2.1 ARM 简介 ARM 是AdvancedRISC Machines的缩写,是一家微处理器行业的知名企业,该企 业设计了大量高性能、廉价、耗能低的RISC 处理器。ARM 公司的特点是只设计芯片, 而不生产。它将技术授权给世界许多著名的半导体、软件和OEM 厂商,并提供服务,图 3-6展示了ARM 的众多授权厂商。 ARM 处理器的应用非常广泛,包括以下几个领域。 1.工业控制领域 作为32位的RISC架构,基于ARM 微处理器核的微控制器芯片不但占据高端微控 制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM 微控制器 RISC和 CISC 4 4 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 图3-6 ARM 内核IP授权分布 的功耗低、性价比高,向传统的8位/16位微控制器提出了挑战。 2.无线通信领域 目前已有超过85%的无线通信设备采用ARM 技术,ARM 以其高性能和低成本的 优势,在该领域的地位日益巩固。 3.网络应用 随着宽带技术的推广,采用ARM 技术的ADSL芯片正逐步获得竞争优势。此外, ARM 在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了 挑战。 4.消费类电子产品 ARM 技术在数字音频播放器、数字机顶盒和游戏机中广泛采用。 5.成像和安全产品 现在流行的绝大部分数码相机和打印机中采用ARM 技术,手机中的32位SIM 智 能卡也采用了ARM 技术。 ARM 体系结构为嵌入式系统发展商提供很高的系统性能,同时保持优异的功耗和 面积效率。 3.2.2 ARM 体系结构版本 ARM 体系结构为满足ARM 合作者及设计领域的一般需求正稳步发展。目前, ARM 体系结构共定义了9个版本,从版本1到版本9,ARM 体系的指令集功能不断扩 大,不同系列的ARM 处理器,性能差别很大,应用范围和对象也不尽相同,但是,如果是 相同的ARM 体系结构,那么基于它们的应用软件是兼容的。 1.版本1(v1) 该版本的ARM 体系结构,只有26位的寻址空间,没有商业化,其特点如下。 ● 基本的数据处理指令(不包括乘法)。 ARM 体 系结构 ◆ 第 3 章 ARM 处理器技术45 字节、字和半字加载/存储指令。 ● ● 具有分支指令,包括在子程序调用中使用的分支和链接指令。 ● 在操作系统调用中使用的软件中断指令。 ● 寻址空间为64MB 。 2. 版本2(v2) 该版架构对v1版进行了扩展,如ARM2 和ARM3(v2a)架构,包含对32 位乘法指令 和协处理器指令的支持。同样为26 位寻址空间,现在已被废弃不再使用,它相对v1版 本有以下改进。 ● 具有乘法和乘加指令。 ● 支持协处理器。 ● 快速中断模式中的两个以上的分组寄存器 。 具有原子性加载/存储指令SWP 和SWPB 。 ● ● 寻址空间为64MB 。 3. 版本3(v3) ARM 作为独立的公司,在1990 年设计的第一个微处理器采用的是版本3的 ARM6 。它作为IP 核、独立的处理器、具有片上高速缓存、MMU 和写缓冲的集成CPU 。 变种版本有3G 和3M 。版本3G 是不与版本2a向前兼容的版本3,版本3M 引入有符号 和无符号数乘法和乘加指令,这些指令产生全部64 位结果。v3版架构(目前已废弃)对 ARM 体系结构作了较大的改动,具体包括以下内容。 ● 寻址空间增至32 位(4GB )。 ● 分开的当前程序状态寄存器(CPSR)和备份的程序状态寄存器(SPSR )。 ● 增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预 取中止异常和未定义指令异常。 增加了MRS/MSR 指令,以访问新增的CPSR/SPSR 。 ● ● 增加了从异常处理返回的指令功能。 4. 版本4(v4) v4版架构在v3版上作了进一步扩充,v4版架构是目前应用较广的ARM 体系结构, ARM7 、ARM8 、ARM9 和StrongARM 都采用该架构。v4不再强制要求与26 位地址空 间兼容,而且还明确哪些指令会引起未定义指令异常。指令集中增加了以下功能。 ● 符号化和非符号化半字及符号化字节的存/取指令。 ● 增加了T变种,处理器可工作在Thumb 状态,增加了16 位Thumb 指令集。 ● 完善了软件中断(SWI)指令的功能。 ● 处理器系统模式引进特权方式时使用用户寄存器操作。 ● 把一些未使用的指令空间捕获为未定义指令。 5. 版本5(v5) v5版架构是在v4版基础上增加一些新的指令,ARM10 和Xscale都采用该版架构。 这些新增命令如下。 带有链接和交换的转移(BLX)指令。 ● ● 计数前导零(CLZ)指令,中断(BRK)指令。 ◆ 46 嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 增加了数字信号处理指令(V5TE版)。 ● ● 为协处理器增加更多可选择的指令。 ● 改进了ARM/Thumb状态之间的切换效率。 ●E变种—增强型DSP指令集,包括全部算法操作和16位乘法操作。 6.版本6(v6) v6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。在 降低耗电量的同时,还强化了图形处理性能。通过追加有效进行多媒体处理的单指令多 数据(SingleInstruction,MultipleData,SIMD)功能,将语音及图像的处理功能提高到原 型机的4倍。此架构在v5版基础上增加了以下功能。 ●THUMBTM:35%代码压缩。 ●DSP扩充:高性能定点DSP功能。 ●JazeleTM:Java性能优化,可提高8倍。 ●Media扩充:音/视频性能优化,可提高4倍。 7.版本7(v7) ARMv7架构是在ARMv6架构的基础上诞生的,为Cortex系列内核使用,包括A 系列、R系列和M系列。 (1)Cortex-A(Application),主要高性能的处理器,相比于其他两种处理器,其特点 是增加了内存管理单元(MMU),对于运行大型的应用操作系统,MMU是必不可少的 元件 ( 。 2)Cortex-R(Realtime),实时性代表的是处理时间上的确定性和低延迟,即一个操 作可以在指定的短时间内完成,MMU引入的地址转换通常不能满足其实时性的要求, 所以R系列处理器并不挂载MMU 。 (3)Cortex-M(Microcontroler),微控制器,主打中低端市场,其特点在于低功耗、低 成本,相对的高性能,在中低端市场,性价比通常是一个主要的衡量因素。 该架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展 起来的,并且保持了对现存ARM解决方案的完整的代码兼容性。Thumb-2技术比纯32 位代码少使用31%的内存,减少了系统开销。同时,能够提供比已有的基于Thumb技术 的解决方案高出38%的性能。ARMv7架构还采用了NEON技术,将DSP和媒体处理 能力提高了近4倍,并支持改进的浮点运算,满足下一代3D图形、游戏物理应用以及传 统嵌入式控制应用的需求。此外,ARMv7还支持改良的运行环境,以迎合不断增加的 JIT(JustInTime)和DAC(DynamicAdaptiveCompilation)技术的使用。 8.版本8(v8) ARMv8引入可用的64位和32位执行状态(Executionstate),分别称为AArch64 和AArch32 。AArch64执行状态支持A64指令集,可以在64位寄存器中保存地址,并 允许基本指令集中的指令使用64位寄存器进行处理。AArch32执行状态是一个32位 执行状态,它保留了与Armv7-A体系结构的向后兼容性,并增强了该体系结构,可以支 持AArch64状态中包含的某些功能。它支持T32和A32指令集。 这是ARM公司的首款支持64位指令集的处理器架构。ARM在2012年时推出基 于ARMv8架构的处理器内核并开始授权,而面向消费者和企业的样机于2013年在苹果 ◆ 第 3 章 ARM 处理器技术47 的A7 处理器上首次应用。ARMv7架构的主要特性在ARMv8架构中得以保留并进一 步拓展,如TrustZone技术、虚拟化技术及NEONAdvancedSIMD 技术等。 9. 版本9(v9) ARM 在2021 年正式发布了ARMv9,它在兼容ARMv8的基础上,继续使用 AArch64 作为基准指令集,保持向下兼容性,在此基础上分别在安全性、AI 与ML 以及 可伸缩向量扩展和DSP 上做出改进,扩展了应用范围。不再局限于移动/嵌入式市场,未 来将发力PC 、HPC 高性能计算、深度学习等新市场,以满足全球对功能日益强大的安全、 人工智能和无处不在的专用处理的需求。 ARMv9架构引入ARM 机密计算体系结构(ConfidentialComputeArchitecture, CCA)重新设计安全应用程序的工作方式。机密计算通过打造基于硬件的安全运行环境 执行计算,保护部分代码和数据,免于被存取或修改,甚至不受特权软件的影响。 在机器学习方面,ARMv9架构支持BFloat16 格式,从而更好地支撑Int8计算和 BFloat16 的机器学习;可伸缩向量扩展2(SVE2)的引入,则能更好地帮助开发者对高阶 的应用场景进行开发,在处理5G 、虚拟现实和增强现实以及图像和语音识别等任务负载 时具有很大增益。ARM 体系结构版本对应的处理器内核如表3-1所示。 表3- 1 ARM 体系结构版本对应的处理器内核 体系结构内核 v1 ARM1 v2 ARM2 v2a ARM2aS,ARM3 v3 ARM6,ARM600,ARM610 v4 ARM7,ARM700,ARM710 v4T ARM7TDMI,ARM710T,ARM720T,ARM740T v5 StrongARM,ARM8,ARM810 v5T ARM9TDMI,ARM920T,ARM940T v5TE ARM9E-S,ARM10TDMI,ARM1020E v6 ARM11,ARM1156T2-S,ARM1156T2F-S,ARM1176JZ-S,ARM11JZF-S v7 ARMCortex-A5,7,8,9,12,15;Cortex-R4,5,6;Cortex-M3,4 v8 ARMCortex-A57,ARMCortex-A72,ARMCortex-A73 V9 ARMCortex-X2,ARMCortex-A710 ARM 处理器为RISC 芯片,其简单的结构使ARM 内核非常小,这使得器件的功耗 也非常低。它具有经典RISC 的特点。为了使ARM 指令集能够更好地满足嵌入式应用 的需要,ARM 指令集和单纯的RISC 定义有以下几个方面的不同。 ● 一些特定的指令周期数可变。 ● 内嵌桶形移位器产生了更为复杂的指令。 ●Thumb16 位指令集。 ● 条件执行。 4 8 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 3.2.3 ARM 体系结构下处理器系列 1.ARM 处理器变种 ARM 每个系列都提供了一套特定的性能满足设计者对功耗、性能和体积的需求。 在ARM 体系中增加的某些特定功能称为ARM 体系的某种变种(variant)。 1)Thumb指令集(T变种) Thumb指令集是将ARM 指令集的一个子集重新编码而形成的一个指令集。ARM 指令长度为32位,Thumb指令长度为16位。 与ARM 指令集相比,Thumb 指令集具有一定的局限性,即完成相同的操作, Thumb指令通常需要更多的指令。因此,在对系统运行时间要求苛刻的应用场合,ARM 指令集更适合。 Thumb指令集不包含进行异常处理时需要的一些指令,所以在异常中断的低级处 理时,还是需要使用ARM 指令。这种限制决定了Thumb指令需要和ARM 指令配合 使用。 2)长乘法指令(M 变种) M 变种增加了两条用于进行长乘法操作的ARM 指令:其中一条指令用于实现32 位整数乘以32位整数,生成64位整数的长乘法操作;另一条指令用于实现32位整数乘 以32位整数,然后再加上32位整数,生成64位整数的长乘加操作。 在需要长乘法的应用场合,使用M 变种比较合适。然而,在有些应用场合,乘法操作 的性能并不重要,在系统实现时就不适合增加M 变种的功能。 3)增强型DSP指令(E变种) E变种包含一些附加的指令,这些指令用于增强处理器对一些典型DSP算法的处理 性能,主要包括几条新的实现16位数据乘法和乘加操作的指令,实现饱和的带符号数的 加减法操作的指令。 饱和的带符号数的加减法操作是在加减法操作溢出时,结果并不进行卷绕 (wrappingaround),而是使用最大的正数或最小的负数表示。进行双字数据操作的指 令,包括双字读取指令LDRD、双字写入指令STRD 和协处理器的寄存器传输指令 MCRR/MRRC、Cache预取指令PLD。 4)Java加速器Jazelle(J变种) ARM 的Jazelle技术将Java的优势和先进的32位RISC芯片完美地结合在一起。 Jazelle技术提供了Java加速功能,可以得到比普通Java虚拟机高得多的性能。与普通 的Java虚拟机相比,Jazelle使Java代码运行速度提高3倍,功耗降低80%。 Jazelle技术使程序员可以在一个单独的处理器上同时运行Java应用程序、已经建立 好的操作系统、中间件以及其他应用程序。与使用协处理器和双处理器相比,使用单独 的处理器可以在提供高性能的同时,保证低功耗和低成本。 5)ARM 媒体功能扩展(SIMD 变种) ARM 媒体功能扩展为嵌入式应用系统提供了高性能的音频/视频处理技术。这就 要求处理器能够提供很强的数字信号处理能力,同时还必须保持低功耗,以延长电池的 使用时间。ARM 的SIMD媒体功能扩展为这些应用需求提供了解决方案。 ◆ 第 3 章 ARM 处理器技术49 SIMD变种的主要特点是:可以同时进行两个16位操作数或者4个8位操作数的 运算,提供了小数算术运算,用户可以定义饱和运算的模式,两套16位操作数的乘加/乘 减运算,32位乘以32位的小数MAC,同时8位/16位选择操作。 ARM对处理器体系结构的命名规则为ARM[x][y][z][T][D][M][I][E][J][F] [-S],这些后缀的含义如下。 x:系统,如ARM7 、ARM9 。 y:存储管理/保护单元 。 z:Cache 。 T:Thumb16位译码器(T变种) 。 D:JTAG调试器 。 M:长乘法指令(M变种)。 I:嵌入式跟踪宏单元。 E:增强型DSP指令(E变种) 。 J:Java加速器Jazele(J变种) 。 F:向量浮点单元。 S:可综合版本。 ARM7TDMI之后的所有ARM内核,即使“ARM”标志后没有包含“TDMI”字符,也 都默认包含TDMI的功能特性。 JTAG是由IEEE1149.是ARM用来 1标准测试访问端口和边界扫描结构描述的, 发送和接收处理器内核与测试仪器之间调试信息的一系列协议。 嵌入式ICE宏单元是建立在处理器内部用来设置断点和观察点的调试硬件。 可综合版本意味着处理器内核是以源代码形式提供的。这种源代码形式可被编译 成一种易于EDA工具使用的形式。 2.ARM 处理器系列 ARM微处理器目前包括下面几个系列,以及其他厂商基于ARM体系结构的处理 器,除具有ARM体系结构的共同特点外,每个系列的ARM微处理器都有各自的特点和 应用领域。 ●ARM7系列。 ●ARM9系列。 ●ARM9E系列 。 ARM10/10E系列 。 ● ●ARM11系列。 ●SecurCore系列。 ●Xscale处理器 。 StrongARM系列微处理器 。 ● ●Cortex系列处理器 。 1)ARM7系列微处理 器 ARM7内核采用冯·诺依曼体系结构,数据和指令使用同一条总线。内核有一条3 级流水线,执行ARMv4指令集。该系列包括ARM7TDMI 、ARM7TDMI-S、带有高速缓 ◆ 50 嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 存处理器宏单元的ARM720T和扩充了Jazele的ARM7EJ-S。该系列处理器提供 Thumb16位压缩指令集和EmbeddedICE软件调试方式,适用于更大规模的SoC设计中。 ARM7系列微处理器主要用于对功耗和成本要求比较苛刻的消费类产品,其最高主 频可达130MIPS 。 ARM7系列微处理器的主要应用领域为工业控制、Internet设备、网络和调制解调器 设备、移动电话、PDA等多种多媒体和嵌入式应用。 2)ARM9系列微处理器 ARM9系列采用5级指令流水线,能够运行在比ARM7更高的时钟频率上,改善处 理器的整体性能。ARM9的存储器系统根据哈佛体系结构重新设计,区分了数据总线和 指令总线。 ARM9系列的第一个处理器是ARM920T,包含独立的数据指令Cache和MMU 。 该处理器能够被用在要求有虚拟存储器支持的操作系统上。该系列包括ARM9TDMI 、 ARM920T和带有高速缓存处理器宏单元的ARM940T 。除了兼容ARM7系列,而且能 够更加灵活地设计。 ARM9系列微处理器主要应用于无线设备、引擎管理、仪器仪表、安全系统、机顶盒、 汽车、通信和信息系统高端打印机、数字照相机和数字摄像机等。 3)ARM9E系列微处理器 ARM9E系列微处理器是ARM9内核带有E变种的一个可综合版本,使用单一的处 理器内核提供了微控制器、DSP 、Java应用系统的解决方案,极大地减少芯片的面积和系 统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要 同时使用DSP和微控制器的应用场合。 ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S3种类型。 4)ARM10/10E系列微处理器 ARM10E系列微处理器具有高性能、低功耗的特点,由于采用新的体系结构和6级 整数流水线,与同等的ARM9器件相比,在同样的时钟频率下,性能提高近50% 。同时, ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低,且提供了64位的 Load/Store体系,支持包括向量操作的、满足IEEE754的浮点运算协处理器,系统集成 更加方便。 ARM10系列包括ARM1020和ARM1020E处理器核,其核心在于使用向量浮点 (VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高处理器的整型和浮点运 算性能。ARM10系列微处理器可以用于视频游戏机和高性能打印机等场合。 5)ARM11系列微处理器 ARM1136J-S发布于2003年,是针对高性能和高能效应而设计的。ARM1136J-S是 第一个执行ARMv6架构指令的处理器。它集成了一条具有独立的Load/Store和算术 流水线的8级流水线。ARMv6指令包含了针对媒体处理的单指令流多数据流扩展,采 用特殊的设计改善视频处理能力。 ARM11系列微处理器是ARM公司2002年推出的新一代RISC处理器,它是 ARMv6指令架构的第一代设计实现。该系列主要有ARM1136J 、ARM1156T2和 ARM1176JZ3个内核型号,分别针对不同应用领域。ARM11系列微处理器内核适合新 第◆3 章 ARM 处理器技术5 1 一代消费类电子、无线设备、网络应用和汽车电子产品等需求。 6)SecurCore系列微处理器 SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安 全解决方案。SecurCore系列微处理器除具有ARM 体系结构的低功耗、高性能的特点 外,还具有其独特的优势,提供对安全解决方案的支持。 该系列涵盖SC100、SC110、SC200和SC210处理器核。该系列处理器主要针对新兴 的安全市场,以一种全新的安全处理器设计为智能卡和其他安全IC开发提供独特的32 位系统设计,并具有特定的反伪造方法,从而有助于防止对硬件和软件的盗版。 SecurCore系列微处理器除具有ARM 体系结构的各种主要特点外,还在系统安全 方面具有如下特点。 ● 带有灵活的保护单元,以确保操作系统和应用数据的安全。 ● 采用软内核技术,防止外部对其进行扫描探测。 ● 可集成用户自己的安全特性和其他协处理器。 7)Xscale处理器 Xscale处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低 功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个 人数字助理和网络产品等场合。 Xscale处理器是Intel目前主要推广的一款ARM 微处理器。 IntelXscale体系架构是采用IntelPentium 技术实现的,是与ARMv5兼容的嵌入 式微处理器架构。它提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令 并集成数字信号处理(DSP)指令。 Xscale体系结构微控制器主频可高达1GHz,其设计目标是“面向特定应用的标准产 品”,目前已经用于移动电话、PDA 及网络设备中。 8)StrongARM 系列微处理器 IntelStrongARMSA-1100处理器是采用ARM 体系结构高度集成的32位RISC微 处理器。它融合了Intel公司的设计和处理技术以及ARM 体系结构的电源效率,采用在 软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。 IntelStrongARM 处理器是便携式通信产品和消费类电子产品的理想选择,已成功 应用于多家公司的掌上电脑系列产品。 9)Cortex系列处理器 Cortex系列处理器发布于2004年,是基于ARMv7架构的,分为Cortex-M、Cortex- R和Cortex-A3类。最早的型号是Cortex-M3,Cortex-A8内核于2005年10月4日发 布,随后ARM 在2006年5月15日发布Cortex-R4内核。 3.3 ARM Cortex-A8 内核 ARM Cortex-A8处理器是第1款基于ARMv7架构的应用处理器,处理器的主频在 600MHz~1GHz,既能满足低功耗移动设备的要求,又能满足需要高性能的消费类应用 的要求。从高端特色手机到上网本、DTV、打印机和汽车信息娱乐,Cortex-A8处理器都 5 2 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 提供了可靠的高性能解决方案,在如今的终端设备中得到验证。 3.3.1 Cortex-A8 概述 图3-7为ARM Cortex-A8处理器内核,其主要特点和相关技术介绍如下。 图3-7 ARM Cortex-A8处理器内核 1.ARMv7架构规范 ARMv7架构规范包括32位ARM 指令集,并采用了实现更高的性能、能量效率和 代码密度的Thumb-2技术,它是在ARM 的Thumb代码压缩技术的基础上演进而来, 并保持对当时ARM 解决方案的代码兼容性。Thumb-2技术比纯32位代码少使用31% 的内存,减少了系统开销,同时能够提供比当时已有的基于Thumb技术的解决方案高出 38%的性能。 2.NEONTM数据引擎和FP单元 NEON 是一款SIMD(单指令多数据)加速器处理器,其最大好处是如果想执行矢量 操作,如视频编码/解码,则同时可以并行执行单精度浮点运算(浮点运算)。FP是一个 经典的浮点硬件加速器,并非并行架构,通常对一组输入执行一个操作并返回输出,其目 的是加速浮点计算,它支持单精度浮点和双精度浮点。 采用NEON 信号处理扩展,用于加速H.264和MP3等媒体编解码器,将DSP和媒 体处理能力提高近4倍,并支持改良的浮点运算,能够满足3D图形、游戏物理应用以及 传统嵌入式控制应用的需求。 NEON单元包含一个10段NEON 流水线,用于译码和执行高级SIMD多媒体指令 集。NEON 单元包含以下几部分。 ● NEON 指令队列。 ● NEON 取数据队列。 ● NEON 译码逻辑的两个流水线。 ● 3个用于高级SIMD整数指令的执行流水线。 ● 2个用于高级SIMD浮点数指令的执行流水线。 ● 1个用于高级SIMD和FP的存取指令的执行流水线。 ◆ 第 3 章 ARM 处理器技术53 ●FP引擎,可完全执行FPv3数据处理指令集。 3.专用的L2缓存和优化的L1缓存 L2缓存使用标准编译的RAM建立而成,64KB到2MB的可配置容量,其访问延时 可编程控制;L1缓存经过性能和功耗的优化,结合最小访问延迟和散列确定方式,将性 能最大化、功耗最小化。 4.Jazele-Java加速 采用了高效支持预编译和即时编译Java及其他字节码语言的Jazele..运行时编译 目标(RCT)Java-加速技术,用于最优化即时(JIT)编译和动态自适应编译(DAC),同时减 少内存占用空间。Jazele技术是ARM提供的组合型硬件和软件解决方案。ARM Jazele技术软件是功能丰富的多任务Java虚拟机(JVM),经过高度优化,可利用许多 ARM处理器内核中提供的Jazele技术体系结构扩展。 Cortex-A8处理器中与Jazele扩展体系结构相关的寄存器有3个。 1)Jazele标识寄存器(JazeleIdentityRegister) 该寄存器为只读寄存器,在任何处理器模式和安全状态下均可访问,用于允许软件 确认处理器是否实现了Jazele扩展体系结构,正常情况下所读取的值为全零。 2)Jazele主配置寄存器(JazeleMainConfigurationRegister) 该寄存器用于控制Jazele扩展体系结构的特征。 3)JazeleOS控制寄存器(JazeleOSControlRegister) 该寄存器用于允许操作系统访问Jazele扩展体系机构的硬件。 5.13级超标量流水线 ARMCortex-A8处理器复杂的流水线架构基于双对称的、顺序发射的、超标量13级 主流水线,带有先进的动态分支预测,具有95%以上准确性。10级NEON媒体流水线, 带有可编程的等待状态,以及基于全局历史的分支预测。结合功率优化的加载存储流水 线,为功率敏感型应用提供2. 0DMIPS/MHz的速率。 6.AMBA 总线 ARM研发的AMBA(AdvancedMicrocontrolerBusArchitecture)提供一种特殊的 机制,可将RISC处理器集成在其他IP芯核和外设中。 AMBA的4个版本如下。 AMBA1:只有高级系统总线协议(AdvancedSystemBus,ASB)和高级外围总线协 议(AdvancedPeripheralBus,APB )。 vancedHigh-performanceBus,AHB),AMBA2:引入高级高性能总线协议(Ad用 于高速数据传输。 AMBA3:为适应高吞吐量传输和调试引入高级可拓展接口(AdvancedeXtensible Interface,AXI)和高级跟踪总线(AdvancedTraceBus,ATB),而AHB协议缩减为 AHB-lite,APB协议增加了PREADY和PSLVERR,ASB由于设计复杂而不再使用; AXI是系统总线的主要接口,64位或128位,用于执行L2Cache的填充和L1Cache指 令和数据的访问。AXI总线时钟和CLK输入同步,可以通过ACLKEN信号使能。 AMBA4:AXI得到了增强,引入QOS和longburst的支持,根据应用不同可选 AXI4、AXI4-lite、AXI4-stream,同时为满足复杂SoC的操作一致性引入ACE(AXI ◆ 54 嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) CoherencyExtensions)和ACE-lite协议,APB和ATB也同时得到增强。 7.CoreSight片上调试和跟踪 随着SoC时代的来临和Cache的广泛使用,在处理器调试过程中片外仪器难以测量 片内数据流和指令流,不得不以硅片面积为代价解决处理器运行状态的实时观测问题。 越来越多的处理器厂商开始提供硬件片上Trace功能,片上Trace系统通过专用硬件非 入侵地实时记录程序执行路径和数据读/写等信息,压缩成Trace数据流后,通过专用数 据通道,输出端口传输至调试主机。该主机中的开发工具解压缩Trace数据流,恢复程 序运行信息以供调试和性能分析。 1)CoreSight介绍 图3-8是CoreSight系统的一个示例,包含两个ARM内核,一个DSP,以及众多的 CoreSight组件,实现对内核和DSP的Debug和Trace功能。 图3- 8 CoreSight系统 ARM的CoreSight是目前业界领先的多核片上Trace解决方案。CoreSight体系结 构非常灵活,其中各个部件可以根据不同处理器厂商的需要而进行组合,实现Debug和 Trace的架构。该架构包含多个CoreSight组件。众多的CoreSight组件,构成了一个 CoreSight系统。可以根据CoreSight架构,实现自己的CoreSight组件。每个CoreSight 的组件,都要遵循CoreSight架构的要求。 2)CoreSight组成 一个典型的CoreSight调试结构组成部分如下。 (1)控制访问部件 控制访问部件配置和控制数据流的产生,但是不产生数据流。 DAP(DebugAcesPort):可以实时访问AMBA总线上的系统内存,外设寄存器, 以及所有调试配置寄存器,而不需挂起系统。 第◆3 章 ARM 处理器技术5 5 ECT(EmbeddedCrossTrigger):包括CTI(CrossTriggerInterface)和CTM(Cross TriggerMatrix),为ETM(EmbeddedTraceMacrocell)提供接口,用于将一个处理器的 调试事件传递给另一个处理器。 (2)源部件 源部件用于产生向ATB(AMBATraceBus)发送的跟踪数据,一般是APB总线。 HTM(AHBTraceMacrocell):用于获取AHB总线跟踪信息,包括总线的层次、存 储结构、数据流和控制流。 ETM(EmbeddedTraceMacrocell):用于获取处理器核的跟踪信息。 (3)汇聚点 汇聚点是芯片上跟踪数据的终点。 TPIU(TracePortInterfaceUnit):将片内各种跟踪数据源获取的信息按照TPIU 帧的格式进行组装,然后通过TracePort传送到片外。 ETB(EmbeddedTraceBuffer):一个32位的RAM,作为片内跟踪信息缓冲区。 SWO(SerialWireOutput):类似TPIU,但仅输出ITM 单元的跟踪信息,只需要一 个引脚。 使用TracePort接口进行调试还需要专用的跟踪器,ARM 公司的开发工具RVDS 中RVT(RealView Tracer)就是这种跟踪器。仿真器RealView ICE(In-Circuit Emulator)是一种基于JTAG的调试解决方案。 Cortex-A8处理器的主频在600MHz~1GHz,能够满足那些需要工作在300mW 以 下功耗优化的移动设备的要求。 3.3.2 Cortex-A8 处理器模式和状态 1.处理器模式 Cortex-A8体系结构支持8种处理器模式,如表3-2所示。 表3-2 Cortex-A8内核的8种处理器模式 处理器模式缩写说 明备 注 用户usr 正常程序执行模式不能直接切换到其他模式 特 权 模 式 异 常 模 式 系统sys 运行特权操作系统任务 与用户模式类似,但拥有可以 直接切换到其他模式等特权 管理svc 操作系统保护模式系统复位或软件中断时进入 数据中止abt 实现虚拟存储器或存储器保护当存取异常时进入 未定义und 支持硬件协处理器的软件仿真未定义指令异常响应时进入 中断irq 用于通用中断处理IRQ异常响应时进入 快中断fiq 支持高速数据传送或通道处理FIQ异常响应时进入 安全监视Mon 当处理器支持SecurityExtensions时才 会使用该模式 可以在安全模式和非安全模 式下转换 除用户模式外,其他模式均为特权模式。ARM 内部寄存器和一些片内外设在硬件 5 6 ◆嵌入式系统原理及应用———基于Cortex-A8 处理器内核(微课版) 设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由地切换处 理器模式,而用户模式不能直接切换到别的模式。 管理、数据中止、未定义、中断和快中断5种模式称为异常模式。它们除可以通过程 序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模 式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。 用户模式和系统模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的 寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的 资源。 2.处理器状态 Cortex-A8处理器有3种操作状态,这些状态由CPSR寄存器的T位和J位控制。 1)ARM 状态 该状态下,Cortex-A8处理器执行32位字对齐的ARM 指令,T位和J位都为0。 2)Thumb状态 该状态下,Cortex-A8处理器执行16位或32位半字对齐的Thumb2指令,T 位为 1,J位都为0。 3)ThumbEE状态 该状态下,Cortex-A8处理器执行为动态产生目标而设计的16位或32位半字对齐 的Thumb2指令集的变体。T位和J位都为1。 处理器的操作状态可以在以下几种状态间转换。 ARM 状态和Thumb状态之间转换使用BL和BLX指令,并加载到PC。 Thumb状态和ThumbEE状态之间转换使用ENTERX和LEAVEX指令。 异常会导致处理器进入ARM 状态或Thumb状态。一般情况下,当退出异常处理 时,处理器会恢复原来的T位和J位的值。 3.3.3 Cortex-A8 寄存器组织 CPU 寄存器是直接内置于CPU 的小容量快速存储器,用于操作数据。ARM 的 CPU 都是Load/Store架构,这意味着CPU 上进行的计算都直接作用在寄存器上。首先 CPU 在进行计算之前从主存储器中读取数据到寄存器中,然后可能再将计算结果写回主 存储器。没有任何指令操作直接作用于主存储器上的值,这避免了每次操作之后都要往 主存储器中写数据的过程,另外也简化了流水线,这对RISC处理器来说是十分关键的。 Cortex-A8处理器如图3-9所示。 Cortex-A8处理器共有40个32位长的寄存器,其中包括33个通用寄存器和7个状 态寄存器。7个状态寄存器包括1个当前程序状态寄存器(CurrentProgramsStatus Register,CPSR)和6个备份程序状态寄存器(SavedProgramsStatusRegister,SPSR)。 仔细分析,大多数例程都可以用这40个寄存器创建,ARM 处理器比其他处理器具有更 多的寄存器。 1.命名规则 ARM-Thumb过程调用标准(ARM-THUMBprocedurecallstandard,ATPCS)规定 Cortex-A8 寄存器组织