ARM

作者: wjundong | 来源:发表于2021-09-18 17:07 被阅读0次

    ARM处理器基础

    • 数据在内核各个组成部分之间是如何移动的。
    • 从软件开发的角度描述ARM处理器的编程模型,从而了解内核的功能以及不同部分之间的相互作用。
    • 内核扩充
    • ARM 内核结构的不同版本和指令集结构的变化
    • 对内核结构分类

    程序员可以把ARM内核看作是由数据总线连接的各个功能单元的集合, 如下图所示:
    数据通过数据总线进入处理器核,这里的数据可能是数据项或指令,该图显示了冯诺伊曼结构的ARM实现--数据和指令共享同一总线,若是哈弗结构,则使用两条总线。

    与所有RISC处理器一样,ARM处理器采用load-store体系结构,这意味着它只有两种类型的指令用于把数据移入移出处理器;load指令从存储器复制数据到内核的寄存器,store 指令从寄存器复制数据到存储器,没有直接操作存储器数据的指令,因此数据处理只能在寄存器里进行。

    由于 ARM 是32位,大部分指令认为寄存器中保存的是32位有符数或无符号数, 因此当从存储器读取一个数据到寄存器时,符号扩展会将8位和16位有符号数转换成32位;

    典型的ARM指令通常有两个源寄存器 Rn, Rm和一个目的寄存器 Rd, 源操作数分别通过内部总线A和B从寄存器中读出,ALU(算术逻辑单元)和 MAC(乘累加单元) 通过 A, B总线得到寄存器值 Rn, Rm 并计算出一个结果后将结果Rd 写到寄存器中。

    load-store 使用ALU来产生一个地址,这个地址将被保存到地址寄存器并发送到地址总线。

    ARM的一个重要特性是寄存器Rm可以选择在进入ALU之前是否先经过桶形移位器预处理。桶形移位器和ALU的协作可以计算较大范围的表达式和地址。

    在经过有关功能单元后,Rd寄存器里的结果通过结果总线写回到寄存器文件,对于load-store指令,在写入或读取之前,地址加法器会自动更新地址寄存器。

    寄存器

    通用寄存器可以保存数据和地址,它们用r为前缀加该寄存器的序号来标识。
    下图列出了在用户模式(一种受限模式,通常用于执行应用程序)下的有效活动寄存器。处理器可以在7种不同的模式下运行。

    最多可有18个活动寄存器,16个数据寄存器和两个处理器状态寄存器,程序员可见的数据寄存器是 r0~R15。有3个寄存器被赋予了特殊的功能:

    • r13 (sp) 通常用作堆栈指针,保存当前处理器模式的堆栈栈顶。
    • r14 (lr) 又称为链接寄存器,保存调用子程序的返回地址。
    • r15 (pc) 程序计数器,保存处理器要取下一个指令的地址.

    寄存器 R0~R13 是正交的--任何指令如果可使用r0,那么也就可以使用其他寄存器,但是有些指令是以特殊的方式来对待人r14和r15

    除了16个数据寄存器,还有两个程序状态寄存器:cpsr和spsr (分别是当前和备份的程序状态寄存器)

    寄存器文件包含所有程序员可利用的寄存器,哪些寄存器对程序员是可见的取决于当前的处理器模式;

    当前程序状态寄存器

    ARM使用 cpsr 来监视和控制内部测操作。cpsr分为4个8位区域:标志域,状态域,扩展域和控制域。扩展域和状态与目前保留,以便将来使用。控制域包含处理器模式、状态和中断屏蔽位。标志域包含条件标志位。

    处理器模式

    共有7种处理器模式:6种特权模式:中止模式、中断模式、快速中断模式、管理模式、系统模式、未定义模式;1种非特权模式--用户模式;模式决定了那些寄存器是活动的,以及对cpsr的访问权限。特权模式允许对cpsr完全访问,非特全模式只允许读cpsr的控制域,单运行读写标志域;

    当处理器访问存储器失败时,进入访问中止模式,中断模式和快速中断模式分别对ARM处理器两种不同级别的中断作出响应;处理器复位后进入管理模式,操作系统内核通常处于这种模式;系统模式是一种特殊的用户模式,允许对cpsr完全读写;当处理器遇到没有定义的指令或处理器不支持该指令,进入未定义模式;用户模式运行应用程序。

    分组寄存器

    下图列出寄存器文件里所有37个寄存器,不过在不同时刻,有20个寄存器对程序是隐藏的。这些寄存器被称为分组寄存器,即图中的阴影部分。只有当处理器处于某种特定模式时,它们才有效,例如,中止模式使用分组寄存器r13_abt, r14_abt 和spsr_abt。除用户模式外,每一种模式都可以改写cpsr来改变当前模式。

    相关文章

      网友评论

          本文标题:ARM

          本文链接:https://www.haomeiwen.com/subject/itrygltx.html