ARM 架构、cpu

一、ARM的架构

ARM是一种基于精简指令集(RISC)的处理器架构.

1、ARM芯片特点

ARM芯片的主要特点有以下几点:

精简指令集 :ARM芯片使用精简指令集,即每条指令只完成一项简单的操作,从而提高指令的执行效率和处理器的性能。相比之下,复杂指令集(CISC)的指令可以完成多项复杂的操作,但是需要更多的硬件资源和执行时间。

负载/存储架构 :ARM芯片使用负载/存储架构,即只有专门的负载和存储指令可以访问内存,其他指令只能在寄存器之间进行操作。这样可以减少内存访问的次数和延迟,提高数据处理的速度。相比之下,寄存器/内存架构的处理器可以直接在内存和寄存器之间进行操作,但是会增加内存访问的开销。

统一寄存器文件 :ARM芯片使用统一寄存器文件,即所有的通用寄存器都可以用于任何目的,没有专门的数据寄存器或地址寄存器。这样可以提高寄存器的利用率和灵活性,减少数据移动的开销。相比之下,分段寄存器文件的处理器需要区分不同类型的寄存器,并进行相应的转换。

条件执行:ARM芯片支持条件执行,即每条指令都可以根据一个条件码来决定是否执行。这样可以减少分支指令的使用,提高代码密度和流水线效率。相比之下,非条件执行的处理器需要使用专门的分支指令来实现条件跳转。

多种工作模式:ARM芯片支持多种工作模式,例如用户模式、系统模式、管理模式、中断模式、异常模式等。不同的工作模式有不同的权限和功能,可以实现不同级别的任务切换和异常处理。相比之下,单一工作模式的处理器需要使用软件来模拟多任务和异常处理。

2、按核心类型分类

ARM核心是指实现了某个版本ARM架构的具体处理器设计,它由ARM公司设计并授权给其他厂商生产。不同类型的ARM核心有不同的性能、功耗、面积等。例如,Cortex-A系列是针对高性能应用的核心,Cortex-R系列是针对实时应用的核心,Cortex-M系列是针对微控制器应用的核心等。

一、Cortex-A系列
  • 特点:面向高性能应用,支持虚拟内存和复杂的操作系统,具有较高的处理能力和较大的缓存容量。
  • 适用领域:智能手机、平板电脑、服务器和嵌入式系统等需要高性能的领域。
  • 典型内核:Cortex-A76、Cortex-A75、Cortex-A73、Cortex-A72、Cortex-A9以及最新的Cortex-X2、Cortex-A710和Cortex-A510等。
二、Cortex-R系列
  • 特点:针对实时系统,具有较低的延迟和较高的可靠性,专门设计用于实时应用。
  • 适用领域:汽车电子、工业控制、医疗设备等需要实时控制和嵌入式系统的领域。
  • 典型内核:Cortex-R4、Cortex-R5、Cortex-R7以及最新的Cortex-R8等。
三、Cortex-M系列
  • 特点:面向低功耗嵌入式应用,具有较低的功耗和较小的尺寸,易于编程。
  • 适用领域:物联网设备、传感器、智能家居、可穿戴设备和嵌入式控制器等低功耗、实时和成本敏感的应用。
  • 典型内核:Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4和Cortex-M7等。其中,Cortex-M4在Cortex-M3的基础上增加了DSP指令集,具有更强的计算能力和信号处理能力;而Cortex-M7则是Cortex-M4的升级版本,提供更高的性能和计算能力。

二、计算机的组成

闪存(Flash)则结合了RAM和ROM的优点,它既可以在断电后保留数据,又具有较快的读写速度。

三、cpu的内部架构

MMU(Memory Manager Unit),是内存管理单元,负责将虚拟地址转换成物理地址。除此之外,MMU 实现了内存保护,进程无法直接访问物理内存,防止内存数据被随意篡改。

PC指针的工作原理

1、取指(Fetch)

在取指阶段,处理器从 PC 指向的地址读取指令。 PC 指向当前要执行的指令的内存地址,并将这一指令从内存中读取到指令寄存器中。

由于 ARM 指令是固定大小的(大多数情况下为 4 字节),所以每次取指时 PC 的值会加上 4(在某些特殊情况下如 Thumb 模式可能会有所不同)。

2、解码(Decode)

在解码阶段,处理器解析刚刚取出的指令,确定需要执行的操作和参与的寄存器等信息。

解码阶段虽然不直接改变 PC 的值,但它为处理器后续的执行阶段提供了必要的信息。

3、执行(Execute)

在执行阶段,处理器根据解码结果进行相应的计算或操作,如寄存器间的加法、逻辑运算等。

执行完成后,若为跳转指令(例如条件跳转、无条件跳转等),则会修改 PC 的值以指向跳转后的地址。

PC 与 流水线的关系

在现代 ARM 处理器中,流水线技术得到了广泛应用,通常分为几个阶段,例如取指、解码、执行、访存和写回。流水线的设计允许多个指令并行处理,从而提高处理器的整体性能。

流水线结构:

在流水线结构中,多个指令可以在不同阶段同时进行。例如,第一条指令在取指阶段,第二条指令在解码阶段,第三条指令在执行阶段,依此类推。例如:

Cycle 1: 取指指令1

Cycle 2: 取指指令2,解码指令1

Cycle 3: 取指指令3,解码指令2,执行指令1

...

PC 的实时更新:

PC 通常会在取指阶段被更新。因为它在每次取指时会自动加上指令的宽度(如 4 字节),顺序执行。

但是在跳转指令出现时,PC 的更新会变得复杂,可能需要在解码或执行阶段更新,这会涉及到分支预测等技术,以减少因跳转带来的流水线冒险(Stall)。
流水线冒险

流水线中的"冒险"问题指的是指令在不同阶段之间的依赖关系,主要有:

结构冒险:由于硬件资源不足而导致的冲突。

数据冒险:指令之间依赖导致的数据读取/写入冲突。

控制冒险:因分支指令导致的流水线需要多清空和重新加载指令的问题。

为了减少控制冒险,现代处理器使用分支预测技术和延迟槽等技术来优化 PC 的调整和指令的顺序执行。

总结

PC 在 ARM 处理器中起到了指向当前执行指令地址的作用。

PC 的取指、解码、执行等过程是紧密联系在一起的,形成了处理器指令执行的基本循环。

流水线设计允许指令在多个阶段并行处理,提高了处理器的效率,但也引入了冒险问题,需要通过结构设计和控制策略来解决。

流水线:

ARM寄存器

ARM 寄存器是 ARM 处理器内部用于存储数据、地址和处理器状态等信息的存储单元。ARM 寄存器主要分为通用寄存器和特殊寄存器两类:

通用寄存器

未分组寄存器 R0-R7 :在所有的运行模式下,这 8 个寄存器都指向同一个物理寄存器,它们没有被系统用作特殊用途。但是在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成这些寄存器中数据的破坏。

分组寄存器 R8-R12: 对于这 5 个寄存器,每个寄存器对应 2 个不同的物理寄存器。当使用快速中断模式(FIQ)时,访问的是R8_fiq - R12_fiq;当使用除 FIQ 模式以外的其他模式时,访问的是R8_usr - R12_usr。这些寄存器可用于数据的暂存和运算,在不同的模式下可以根据需要切换使用不同的物理寄存器。

程序计数器 PC(R15):用于存放当前指令的下一条指令的地址。由于 ARM 体系结构采用了多级流水线技术,对于 ARM 指令集而言,PC 总是指向当前指令的下两条指令的地址,即 PC 的值为当前指令的地址值加 8 个字节(在 Thumb 指令集中,PC 的值为当前指令的地址值加 4 个字节)3。

特殊寄存器

栈指针 SP(R13 ):实际上 R13 在不同的处理器模式下有不同的物理寄存器,每个异常模式都有自己独立的 R13。在 ARM 指令中,R13 常用作堆栈指针,用于存储函数调用时的局部变量、参数、返回地址等信息。通过PUSH(入栈)和POP(出栈)操作可以实现对栈的访问23。

链接寄存器 LR(R14):用于保存函数或子程序调用时的返回地址。当执行子程序调用指令(如BL)时,会自动将返回地址放入 LR 中,当子程序执行结束后,将 LR 中的值加载至 PC 中,就可以返回到调用处继续执行。在发生异常时,异常模式的 LR 也可以用来保存异常返回地址23。

程序状态寄存器3:

当前程序状态寄存器 CPSR:可以在任何运行模式下被访问,它包含条件标志位(如 N、Z、C、V)、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。这些标志位可以被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。

备份的程序状态寄存器 SPSR:每种异常模式下都有一个专用的 SPSR,当异常发生时,SPSR 用于保存 CPSR 的当前值,以便从异常退出时可以由 SPSR 来恢复 CPSR。用户模式和系统模式不属于异常模式,它们没有 SPSR。

四、处理器内部架构

Cache:

高速缓存**。**

五、工作模式

处理器(CPU)的7种工作模式主要包括:

  1. 用户模式(User Mode)

    • 非特权模式,是大多数用户程序正常执行的模式。
    • 在此模式下,程序无法直接访问硬件资源或改变处理器的工作模式,除非通过软中断或异常。
  2. 快速中断模式(FIQ Mode)

    • 也称为快速中断响应模式,用于处理高优先级的中断请求。
    • 这种模式支持高速数据传输和通道处理,适用于需要快速响应的中断场景。
  3. 普通中断模式(IRQ Mode)

    • 也称为一般中断模式,用于处理普通的中断请求。
    • 在硬件产生中断信号后,处理器会自动进入此模式,并允许程序访问系统硬件资源。
  4. 管理模式(SVC Mode)

    • 也称为操作系统保护模式,是操作系统内核代码运行的模式。
    • 当CPU上电复位或应用程序执行SVC指令调用系统服务时,会进入此模式。
  5. 中止模式(Abort Mode)

    • 当数据或指令预取终止时进入此模式。
    • 此模式用于处理存储器故障、实现虚拟存储或存储保护。
    • 当用户程序访问非法地址或没有权限读取的内存地址时,会触发此模式。
  6. 未定义指令异常模式(Undefined Instruction Mode)

    • 当处理器执行未定义的指令时进入此模式。
    • 此模式主要用于处理未定义的指令陷阱,并支持硬件协处理器的软件仿真。
  7. 系统模式(System Mode)

    • 特权模式之一,使用与管理模式相同的寄存器组。
    • 用于运行特权级的操作和系统任务。

在这7种工作模式中,除了用户模式以外,其他6种模式可以称为特权模式。在特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除了系统模式外的其他5种特权模式又称为异常模式。

相关推荐
切糕师学AI13 小时前
ARM 汇编指令:STM
汇编·arm开发·stm
切糕师学AI20 小时前
ARM 汇编指令:LDM
汇编·arm开发
ShiMetaPi21 小时前
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 09 CAN
arm开发·fpga开发·fpga·rk3568
未来之窗软件服务21 小时前
幽冥大陆(八十)Win7环境下ARM架构开发—东方仙盟练气期
arm开发·架构·仙盟创梦ide·东方仙盟
未来之窗软件服务2 天前
国产化系统(一)ARM轻量化系统开发与试用全指南—东方仙盟练气期
arm开发·仙盟创梦ide·东方仙盟·阿雪技术观·国产化操作系统
林政硕(Cohen0415)2 天前
ARM Linux Qt Widget 虚拟键盘输入法移植
linux·arm开发·qt·键盘·输入法
100编程朱老师3 天前
Linux 下互联网络编程的基础知识
arm开发
番茄灭世神3 天前
32位ARM单片机视频教程第一篇
arm开发·单片机·嵌入式·gd32·pn学堂
驱动探索者4 天前
[缩略语大全]之[ARM CPU]篇
arm开发
ArrebolJiuZhou4 天前
00 arm开发环境的搭建
linux·arm开发·单片机·嵌入式硬件