ARM体系结构与编程模型总结

article/2025/11/5 16:08:41

ARM体系结构与编程模型

这里写图片描述

ARM体系结构


一、ARM处理器简介及RISC特点

ARM处理器简介

ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。

RISC设计主要特点

1、指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定。

2、流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行。

3、寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器。

4、Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率。

5、寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。

二、ARM指令集特点

ARM处理器是基于RISC的,但不是纯粹的RISC体系结构。为了使ARM处理器能够更好的满足嵌入式系统的需要,ARM指令集和单纯的RISC指令集有以下几点不同:

1、一些特定的指令周期数可变。例如多寄存器装载或存储的Load/Store指令执行周期就是不确定的,这个会根据相关的寄存器个数而定。如果是访问连续的内存地址,就可以改善性能,因为连续的内存访问比随机访问要快。根据这个特点,由于在函数的起始和结尾通常会有多个寄存器与内存进行数据交换的操作,因此相应操作的指令条数会减少,提高了代码的密度。

2、内嵌的桶形移位寄存器产生了更复杂的指令。桶形移位寄存器是一个硬件部件,在一个寄存器被一条指令使用之前,桶形移位寄存器可以处理这个寄存器中的数据。桶形移位寄存器扩展了许多指令的功能,以此改善内核的性能,提高代码密度。

3、Thumb16位指令集。ARM处理器有两种工作状态,一种是ARM状态,一种是Thumb状态。ARM状态下指令长度为32位,Thumb状态下指令长度为16位。这种特点使得ARM既能执行16位指令,又能执行32位指令,从而增强了ARM内核的功能。

4、条件执行。只有当某个特定条件满足时指令才会被执行。这个特性可以减少分支指令的数目,从而改善性能,提高代码密度。

5、增强指令。一些功能强大的数字信号处理器(DSP)指令被加入到标准的ARM指令中,以支持快速的16*16乘法操作及饱和运算。ARM的这些增强指令,使得ARM处理器不需要加上DSP即可实现。

三、ARM处理器特点

1、ARM指令都是32位定长的

2、寄存器数量丰富(37个寄存器)

3、普通的Load/Store指令

4、多寄存器的Load/Store指令

5、指令的条件执行

6、单时钟周期中的单条指令完成数据移位操作和ALU操作

7、通过变种和协处理器来扩展ARM处理器的功能

8、扩展了16位的Thumb指令来提高代码密度

四、ARM处理器命名规则

这里写图片描述

ARM编程模型


一、ARM数据类型

1、字(Word):在ARM体系结构中,字的长度为32位。

2、半字(Half-Word):在ARM体系结构中,半字的长度为16位。

3、字节(Byte):在ARM体系结构中,字节的长度为8位。

二、ARM处理器存储格式

ARM体系结构将存储器看作是从0地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。

ARM体系结构可以用两种方法存储字数据,分别为大端模式小端模式

大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。

小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。

三、ARM处理器工作状态

从编程的角度来看,ARM微处理器的工作状态一般ARM和Thumb有两种,并可在两种状态之间切换。

1、ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。

2、Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。

四、ARM处理器工作模式

1、用户模式(usr,User Mode):ARM处理器正常的程序执行状态。

2、快速中断模式(fiq,Fast Interrupt Request Mode):用于高速数据传输或通道处理。当触发快速中断时进入此模式。

3、外部中断模式(irq,Interrupt Request Mode):用于通用的中断处理。当触发外部中断时进入此模式。

4、管理模式(svc,Supervisor Mode):操作系统使用的保护模式。在系统复位或执行软件中断指令SWI时进入。

5、数据访问中止模式(abt,Abort Mode):当数据或指令预取中止时进入该模式,可用于虚拟存储及存储保护。

6、系统模式(sys,System Mode):运行具有特权的操作系统任务。

7、未定义指令中止模式(und,Undefined Mode):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

除了用户模式之外,其余六种模式都是特权模式。除了用户模式和系统模式之外,其余五种模式都是异常模式。

在特权模式下程序可以访问所有的系统资源。非特权模式和特权模式之间的区别在于有些操作只能在特权模式下才被允许,例如直接改变模式和中断使能等。而且为了保证数据安全,一般MMU会对地址空间进行划分,只有特权模式才能访问所有的地址空间。而用户模式如果需要访问硬件,必须切换到特权模式下,才允许访问硬件。

五、ARM处理器寄存器组织

ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,包括R0-R15,R8_fiq-R14_fiq,R13_svc,R14_svc,R13_abt,R14_abt,R13_irq,R14_irq,R13_und,R14_und,CPSR,SPSR_fiq,SPSR_svc,SPSR_abt,SPSR_irq,SPSR_und。如图。

这里写图片描述

通用寄存器包括R0-R15,可以分为3类:

1、未分组寄存器R0-R7

在所有运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。因此在中断或异常处理进行异常模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏。

2、分组寄存器R8-R14

对于分组寄存器,他们每次所访问的物理寄存器都与当前的处理器运行模式相关。具体如上图。

R13常用作存放堆栈指针,用户也可以使用其他寄存器存放堆栈指针,但在Thumb指令集下,某些指令强制要求使用R13存放堆栈指针。

R14称为链接寄存器(LR,Link Register),当执行子程序时,R14可得到R15(PC)的备份,执行完子程序后,又将R14的值复制回PC,即使用R14保存返回地址。

3、程序计数器PC(R15)

寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。

由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。

六、程序状态寄存器CPSR和SPSR

CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。

每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存当前CPSR的值,从异常退出时则可由SPSR来恢复CPSR。

由于用户模式和系统模式不属于异常模式,这两种状态下没有SPSR,因此在这两种状态下访问SPSR,结果是未知的。

CPSR保存数据的结构:

这里写图片描述

1、N(Negative):当用两个补码表示的带符号数进行运算时,N=1表示结果为负,N=0表示结果为正数或零

2、Z(Zero):Z=1表示运算结果为0,Z=0表示运算结果非零

3、C(Carry):有4种方法可以设置C的值:

(1)加法指令(包括比较指令CMP)

(2)当运算产生进位时(无符号数溢出),C=1,否则C=0

(3)减法运算(包括比较指令CMP)

(4)当运算产生了借位(无符号数溢出),C=0,否则C=1

对于包含移位操作的非加/减运算指令,C为移出值的最后一位。对于其他的非加/减运算指令,C的值通常不变。

4、V(Overflow):有2种方法设置V的值:

(1)对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

(2)对于其他的非加减法运算指令,V的值通常不变。

5、I(Interrupt Request):I=1表示禁止响应irq,I=0表示允许响应

6、F(Fast Interrupt Request):F=1表示禁止响应fiq,F=0表示允许响应

7、T(Thumb):T=0表示当前状态位ARM状态,T=1表示为Thumb状态

8、M4-M0:表示当前处理器的工作模式,如图:

这里写图片描述

七、工作模式的切换

(1)执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。当然,在其他模式下执行SWI,也会进入该模式,不过一般操作系统不会这么做,因为除了用户模式属于非特权模式,其他模式都属于特权模式。执行SWI指令一般是为了访问系统资源,而在特权模式下可以访问所有的系统资源。SWI指令一般用来为操作系统提供API接口。

(2)有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式。

(3)CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。

(4)有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。要进入System模式只需改变CPSR的模式位为System模式对应的模式位即可。进入System模式一般是为了利用System模式和用户模式下的寄存器相同的特点,因此一般情况下,操作系统在通过SWI进入Supervisor模式后,做一些操作后,就进入System模式。

(5)在任何特权模式下,都可以通过修改CPSR的MODE域来进入其他模式。不过需要注意的是由于修改的CPSR是该模式下的影子CPSR,即SPSR,因此并不是实际的CPSR,所以一般的做法是修改影子CPSR,然后执行一个MOVS指令来恢复执行某个断点并切换到新模式。


http://chatgpt.dhexx.cn/article/4X4OLyPP.shtml

相关文章

数学建模-层次分析法(评价模型)

层次分析法概述 层次分析法的步骤和方法 1. 建立层次结构模型 2. 构造判断(成对比较)矩阵 3. 层次单排序及其一致性检验 4. 层次总排序及其一致性检验 总结 应用层次分析法的注意事项 举例 层次分析法代码实现 disp(输入判断矩阵C) Cinput(C); %输入矩阵 [n,n] size(C);%…

数学建模-层次分析模型

层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次…

数学建模-层次分析法

个人主页: 个人主页 系列专栏: 数学建模 目录 前言 一、引入 二、层析分析法 1.思想介绍 2.判断矩阵 3.一致矩阵 4.一致性检验 5.一致性检验步骤(两张图片告诉你) 6.计算权重 一致矩阵计算权重: 判断矩阵计…

数学建模--层次分析法

层次分析法的求解步骤 1.建立层次结构模型 模型分为三层。分别为最高层(决策问题最终要解决什么,即决策的目的)、中间层(考虑的因素,决策的准则。比如买衣服要考虑价格、尺寸、款式等因素)和最低层&#…

层次分析法模型(数学建模学习)

本系列参考清风老师的数学建模课程 层次分析法模型 一、模型介绍 (一)模型引入 对于方案选择类问题,评价类问题采用层次分析法(The ayalytic hierarchy process / AHP)模型进行评分,之后评分高的就是最佳…

数据库常用数据模型1(层次模型)

1 数据模型分为两类:一类是概念模型(信息模型),第二类是逻辑模型(数据建模)和物理模型(对数据最底层的抽象)。 2 常用的逻辑模型:层次模型、网状模型、关系模型、面向对…

计算机网络层次模型

计算机网络层次模型 OSI 7层协议 物理层:在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。数据链路层:在两个网络实体之间提供数据链路连接的创建、维持和释放管理。构成数据链路…

批判马斯洛需求层次模型

再次批判马斯洛需求层次模型,有啥缺陷? 趣讲大白话:文化不同,心理不同 【趣讲信息科技182期】 **************************** 每个民族的文化心理结构都不一样 常常低估文化对人的影响 有一门心理学分支,文化心理学 专…

网络层次模型及各层对应协议

一、OSI七层模型 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数…

层次分析法模型

层次分析法 文章目录 层次分析法概述层次分析法简介层次分析法典型应用层次分析法基本原理 层次分析法的步骤和方法建立层次结构模型构造判断矩(成对比较)阵层次单排序及其一致性检验一致性检验正互反阵最大特征根和特征向量的简化计算 层次总排序及其一…

层次分析法模型讲解

一、解决评价类问题 二、资料来源 三、例题 1.准备 2.权重表格 3.分而治之解决权重弊端 4.层次分析法 根据判断矩阵求权重,下面对各个指标进行填写判断矩阵: bug分析: 如果小明填写的不是5而是1,这里发现:苏杭>北戴…

数学建模之层次分析法模型

目录 问题 问题实例 问题分析 建立层次分析法模型 分析权重的方法 ​编辑 填表指标的权重​编辑 一致性检验 一致性检验的引入 一致性检验的步骤 计算判断矩阵 归一化处理 算术平均法求权重 几何平均法求权重 特征值法求权重(常用) 汇总结果…

逻辑数据模型之层次数据模型、网状数据模型和关系数据模型

上一篇文章简单介绍了概念数据模型、逻辑数据模型、物理数据模型的基本概念、特性以及三者所对应的数据库的开发阶段。现在针对逻辑数据模型中所用到的三种数据模型---层次数据模型、网状数据模型以及关系数据模型做一个相信的介绍与对比分析。 一、层次数据模型 定义&#xff…

三种数据模型---层次模型、网状模型以及关系模型

一、层次数据模型 定义&#xff1a;层次数据模型是用树状<层次>结构来组织数据的数据模型。 其实层次数据模型就是的图形表示就是一个倒立生长的树&#xff0c;由基本数据结构中的树&#xff08;或者二叉树&#xff09;的定义可知&#xff0c;每棵树都有且仅有一个根节点…

【数学模型】层次分析

Hello大家好&#xff0c;今年数学建模国赛将于9月中旬举行&#xff0c;是时候提前做一些准备了。 本次模型非常简单&#xff0c;只是介绍比较得详细&#xff0c;我下次注意&#xff0c;争取限制下字数。 文末准备了 层次分析-python 模型的实现&#xff0c;简单懂得模型原理便…

数据库中的常用的数据模型 层次模型 网状模型 关系模型

层次数据模型 定义&#xff1a;层次数据模型是用树状<层次>结构来组织数据的数据模型。 满足下面两个条件的基本层次联系的集合为层次模型     1. 有且只有一个结点没有双亲结点&#xff0c;这个结点称为根结点     2. 根以外的其它结点有且只有一个双亲结点 其…

1.2 《数据库系统概论》之数据模型(概念模型、逻辑模型--物理模型、层次模型、网状模型、关系模型、面向对象模型、对象关系模型)

文章目录 0.思维导图1.数据模型的概念2.两大类数据模型客观对象的抽象过程---两步抽象 3.数据模型的组成要素(1)数据结构(2)数据操作(3)数据的完整性约束条件 4.概念模型(1)用途与基本要求(2) 信息世界中的基本概念(3)两个实体型之间的联系① 一对一联系&#xff08;1:1&#x…

层次、网状、关系模型

层次、网状、关系模型都是逻辑上的&#xff0c;它们都是以一定的方式存储在数据库系统中&#xff0c;这是数据库管理系统的功能&#xff0c;是数据库管系统中的物理存储模型。 格式化模型 层次模型和网状模型统称为格式化模型。格式化模型中数据结构的基本单位是基本层次联系&…

层次分析模型

离散模型&#xff1a;代数方程与差方程、整数规划、图论、对策论、网络论 层次模型&#xff08;AHP&#xff09;是一种定性与定量相结合的、系统化、层次化的分析方法。 人们在进行社会的、经济的以及科学管理领域问题的系统分析中&#xff0c;面临的常常是一个互相关联、相互…

常用的数据模型及其对比(层次模型、网状模型、关系模型)

数据库领域中主要的逻辑数据模型有:层次模型、网状模型、关系模型、面向对象数据模型等,我们重点讲解了**层次模型、网状模型、关系模型**。1.1 层次模型 层次数据库系统的典型代表是IBM公司的Information Management System数据库管理系统。层次模型用树形结构来表示各类实体…