计算机组成原理 — ARM 体系结构

目录

ARM

ARM 架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个 32 位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM 处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。

在今日,ARM 家族占了所有 32 位嵌入式处理器 75% 的比例,使它成为占全世界最多数的 32 位架构之一。ARM 处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于 ARM 设计的派生产品,重要产品还包括 Marvell 的 XScale 架构和德州仪器的 OMAP 系列。

ARM 的架构

在这里插入图片描述
ARM 由 32 位 ALU、若干个 32 位通用寄存器以及状态寄存器、8 位乘法器、32 位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。

  • ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。
  • 桶形移位寄存器:ARM 采用了 32 位的桶形移位寄存器,这样可以使在左移/右移 N 位、环移 N 位和算术右移 N 位等都可以一次完成。
  • 高速乘法器:乘法器一般采用 “加一移位” 的方法来实现乘法。ARM 为了提高运算速度,则采用两位乘法的方法,根据乘数的 2 位来实现 “加一移位” 运算。ARM 高速乘法器采用 8 位的结构,这样可以降低集成度(其相应芯片面积不到并行乘法器的 1/3)。
  • 浮点部件:浮点部件是作为选件供 ARM 构架使用。FPA10 浮点加速器是作为协处理方式与 ARM 相连,并通过协处理指令的解释来执行。
  • 控制器:ARM 的控制器采用的是硬接线的可编程逻辑阵列 PLA。
  • 寄存器:除了用户模式之外的其他 6 种处理器模式称为特权模式(Privileged Modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除系统模式外,其他 5 种特权模式又称为异常模式。

处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下,这时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式的切换时,应用程序可以产生异常处理,在异常处理过程中进行模式的切换。这种体系结构可以使操作系统控制整个系统的资源。

当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保证了程序运行状态)不被破坏。

系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式的切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式下的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。

x86 架构与 ARM 架构的区别

  1. 性能:x86 架构的工业电脑比 ARM 架构的工业电脑在性能方面要快得多、强得多。ARM 的优势在于效率,ARM 采用 RISC 流水线指令集,在完成综合性工作处于劣势,而在任务相对固定的应用场合其优势就能发挥得淋漓尽致。

  2. 扩展能力:x86 架构的工业电脑采用 “桥” 的方式与扩展设备(如:硬盘、内存等)进行连接,且 x86 架构的工业电脑能很容易进行性能扩展,如增加内存、硬盘等。

  3. ARM 架构的工业电脑是通过专用的数据接口使 CPU 与数据存储设备进行连接,所以 ARM 的存储、内存等性能扩展难以进行(一般在产品设计时已经定好其内存及数据存储的容量),所以采用 ARM 架构的工业电脑,一般不考虑扩展。

  4. 操作系统的兼容性:几乎所有 x86 硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件,所以 x86 系统在兼容性方面具有无可比拟的优势。ARM 几乎都采用 Linux 的操作系统,而且几乎所有的硬件系统都要单独构建自己的系统,与其他系统不能兼容,这也导致其应用软件不能方便移植,也制约了 ARM 的发展和应用。Android 系统开发后,统一了 ARM 架构电脑的操作系统,使新推出基于 ARM 架构的电脑系统有了统一的、开放式的、免费的操作系统,为 ARM 的发展提供了强大的支持和动力。

  5. 软件开发的方便性及可使用工具的多样性:在软件开发方面, x86 架构比 ARM 架构更容易、更简单、实际成本也更低,同时更容易找到第三方软件(免去自己开发的时间和成本),而且软件移植更容易。

  6. 功耗:在服务器、工作站以及其他高性能运算等应用方面,不考虑功耗和使用环境等条件,x86占了绝对优势;但受功耗、环境等条件制约且工作任务固定的情况下 ARM 就占有很大的优势。

ARM 的技术实现

要想深入理解 ARM 的实现原理是个很大的学习工程,这里一样希望读者读后能对 ARM 起到一个总体的认识,后续可以进一步的深入学习。

汇编语言是机器代码上的一个薄的语法层,它由以二进制编码的指令组成,这是我们的计算机所理解。那么为什么我们不写代码呢?可想而知以二进制来进行 Coding 的话是多么的痛苦,因此我们将编写 ARM 程序集。

但是计算机本身只识别机器码是不能运行汇编代码的,这就需要将汇编代码装到机器代码中的工具 GNU Binutils 项目中的 GNU Assembler。一旦用扩展名 *.s 编写程序就需要把它与其进行组合并与 ld 链接起来: 
在这里插入图片描述
我们从最底层来看下,在最底层,电路上有电信号,信号是将电压切换为两个电平来形成的,例如 0 伏(关)或 5 伏(开)。

因为只是我们不能轻易的告诉电路电压,只能选择使用 1/0 来写入开/关的模式,然后我们对 0 和 1 的顺序进行分组,以形成机器码指令,该指令是计算机处理器的最小工作单元,以下是机器语言的示例:
在这里插入图片描述
我们知道 ARM 处理器只能对寄存器执行数据处理,所以与存储器的交互有两种:从存储器加载到寄存器,并将值从寄存器存储到存储器,即 ARM 使用加载/存储(LDR 和 STR)模型进行内存访问。

通常 LDR 用于将内存中的内容加载到寄存器中,STR 用于存储寄存器中的内容到存储器地址。我们来举一个基本例子:

在这里插入图片描述

第一看的小伙伴或许会一头雾水,下面以一张图来解释下 ARM 是如何和存储器交互的:

在这里插入图片描述

原创文章 592 获赞 1483 访问量 197万+

猜你喜欢

转载自blog.csdn.net/Jmilk/article/details/105931370