【ARM体系结构】之寄存器与三级流水线

这篇具有很好参考价值的文章主要介绍了【ARM体系结构】之寄存器与三级流水线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、ARM核的寄存器组织

1.1 寄存器概念介绍

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

控制器:控制程序运行,进行取指令操作,并将指令给到对应的运算器执行指令。
运算器:执行汇编指令,执行指令需要的使用的数据来源于寄存器,并将执行的执行结果返回到寄存器中。
存储器:又名寄存器,用来进行数据存储。

1.2 ARM-v7架构的arm内核的寄存器组织

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

  1. 寄存器组织图中,每个小方块就是一个寄存器,每个寄存器都是32位。
  2. 寄存器没有地址,访问寄存器是通过编号进行访问的,R0-R15,cpsr,spsr.
  3. 每种工作模式只能访问自己模式下的对应的寄存器,不可以访问其他模式下的寄存器。
  4. banked类型的寄存器表示私有的寄存器,非banked类型的寄存器表示公有的寄存器。
  5. 如果工作模式下具有私有的寄存器就不可以访问对应编号的公有的寄存器, 如果工作模式下没有私有的寄存器才可以访问公有的寄存器。 和上图的图2进行对照理解。
  6. user模式和sys模式共用一套寄存器组织
  7. user模式和sys模式下,最多访问17个寄存器 fiq,irq,svc,abort,undef,monitor模式最多访问18个寄存器, hyp模式最多访问19个寄存器。

1.3 寄存器为什么没有地址

add r0, r0, r1 —> 功能:加法指令 R0 = R0 + r1 | 编译器将其编译生成32位的机器码
机器码中需要包含add的信息,r0寄存器的信息,r1寄存器的信息。 如果寄存器存在地址,那么32位的机器码中无法存储32位的地址信息
因此寄存器是没有地址的,通过编号找到对应的寄存器。

1.4 ARM-v8架构的arm内核的寄存器组织

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

1.5 ARM-v7架构和ARM-v8架构的区别

区别1:
arm-v7架构支持的是32位的汇编指令集
arm-v8架构支持的是64位的汇编指令集,向下兼容arm-v7架构
区别2:
arm-v7架构主要使用的是32位的寄存器
arm-v8架构主要使用的是64位的寄存器,也有32位的寄存器
区别3:
arm-v7架构执行一条指令可以完成32位数据的处理,使用的是32位的寄存器
arm-v8架构执行一条指令可以完成64位数据的处理,使用的是64位的寄存器
相同点:
arm-v7架构的汇编指令集编译生成32位的机器码
arm-v8架构的汇编指令集编译生成的也可能是32位的机器码

2、特殊的寄存器

2.1 R13寄存器

R13 ----> 别名:sp(the Stack Register:栈指针寄存器) 作用:栈指针寄存器中存放的是栈空间的地址。
C语言的运行必须有对应的栈空间,用来压栈保存现场和出栈恢复现场。 及运行C程序必须先初始化栈空间。

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

2.2 R14寄存器

R14 ----> 别名:LR (the Linking Register:链接寄存器) 作用:链接寄存器用来保存返回地址

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

2.3 R15寄存器

R15 ----> 别名:PC(the Program Counter:程序计数寄存器) PC寄存器中存放的是当前取指指令的地址。

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

2.4 cpsr寄存器

cpsr : current program statued Register(当前程序状态寄存器)

作用:cpsr中存放的是当前程序的运行状态,比如处理器的工作模式。

2.5 spsr寄存器

spsr : saved program statued Register(保存程序状态寄存器)
作用:保存当前程序状态寄存器的,对cpsr寄存器进行备份。

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

3、cpsr寄存器的详解

spsr寄存器,ARM,单片机,嵌入式硬件,arm开发

重点掌握cpsr的高4位和低8位的含意及作用?

N[31] : 指令的运行结果为负数时,N位被自动置1,否则清0. Z[30] : 指令的运行结果为零时,Z位被自动置1,否则清0.
C[29] : 加法:产生进位(溢出),C位被自动置1,否则清0. 减法:产生借位(溢出),C位被自动清0,否则置1.
32位的处理器,一条汇编指令本身就可以完成32位以内数据的运算, 因此32位以内的数据是没有进位后者借位说法。
进位:低32位向高32位进位,(低32为存不下,数据溢出) 借位:低32为向高32为借位,(结果为负数) V[28] :
符号位发送变化,V位自动置1,否则清0.

I[7] : IRQ中断屏蔽位 I = 0 : 不屏蔽IRQ类型的中断 I = 1 : 屏蔽IRQ类型的中断 F[6] :
FIQ中断屏蔽位 F = 0 : 不屏蔽FIQ类型的中断 F = 1 : 屏蔽FIQ类型的中断 T[5] : 状态位 T = 0 :
ARM状态,执行ARM指令集,ARM指令的宽度是32位; T = 1 :
Thumb状态,执行Thumb指令集,Thumb指令的宽度是16位。 M[4:0] : 模式位 10000 User mode;
10001 FIQ mode;
10011 SVC mode;
10111 Abort mode;
11011 Undef mode;
11111 System mode;
10110 Monitor mode;
10010 IRQ mode;
其他的值保留不使用

4、三级流水线

ARM处理器的指令执行采用流水线的方式,提高指令的执行的效率。
重点理解3级流水线即可,5级流水线,7级流水线,8级流水线,13级流水线知道即可, 多级流水线都是再3级流水线的基础之上进行扩展。

学习汇编指令重点从宏观上理解每条指令执行之后的功能即可,不需要对指令进行细分。

取指器:取指器根据PC寄存器中的指令的地址完成取指的操作,交给译码器对指令进行译码; 译码器:对指令进行翻译,交给对应的执行器执行指令;
执行器:执行汇编指令并将结果写回到寄存器。

以上三个器件都属于单周期(之间相互独立,工作互不干扰)的器件,完成一次操作需要一个时钟周期。

指令1 指令2 指令3 指令4 指令5 指令6 指令7
1T 取指
2T 译码 取指
3T 执行 译码 取指
4T 执行 译码 取指
5T 执行 译码 取指
6T 执行 译码 取指
7T 执行 译码 取指
8T 执行 译码 取指
9T 执行 译码 取指

执行7条汇编指令最少需要9个时钟周期,1条汇编指令大约需要1个时钟周期。
以上指令的流水线式理想情况的指令的流水线,当有跳转,异常,中断等指令执行时会打断指令的流水线。文章来源地址https://www.toymoban.com/news/detail-621037.html

到了这里,关于【ARM体系结构】之寄存器与三级流水线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

    快速学习嵌入式开发其他基础知识? 返回专栏总目录 《嵌入式工程师自我修养/C语言》 Tip📌:鼠标悬停双虚线/句,可获得更详细的描述   ARM处理器有多种工作模式,如下表所示。应用程序正常运行时,ARM处理器工作在 用户模式(User mode) ,当程序运行出错或有中

    2024年02月21日
    浏览(42)
  • ARM架构(寄存器点灯)

    本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯,一般对于新人来说都是使用HAL库或者标准库来操作的,但是学习寄存器有助于我们了解更加深入的知识,这加会提高我们对ARM架构的理解。 首先第一步我们需要先找到LED的原理图,确定对应的引脚,然后知道是高电平点

    2024年02月15日
    浏览(45)
  • ARM中的寄存器

    ARM工作模式 ARM有8个基本的工作模式 User 非特权模式,一般在执行上层的应用程序时ARM处于该模式 FIQ 当一个高优先级中断产生后ARM将进入这种模式 IRQ 当一个低优先级中断产生后ARM将进入这种模式 SVC 当复位或执行软中断指令后ARM将进入这种模式 Abort 当产生存取异常时ARM将进

    2024年02月03日
    浏览(29)
  • 12.3 ARM寄存器组织

    目录 ARM寄存器组织(一) 寄存器 概念 作用 分类 ARM寄存器 ARM寄存器组织(二) 专用寄存器 R15(PC,Program Counter) R14(LR,Link Register) R13(SP,Stack Pointer) ARM寄存器组织(三) CPSR寄存器 ARM寄存器组织(一) 寄存器 概念 寄存器是处理器内部的存储器,没有地址 C语言中register存储在寄

    2024年02月13日
    浏览(31)
  • ARM编程模型-寄存器组

    Cortex A系列ARM处理器共有40个32位寄存器,其中33个为通用寄存器,7个为状态寄存器。usr模式和sys模式共用同一组寄存器。 通用寄存器包括R0~R15,可以分为3类: 未分组寄存器R0~R7 分组寄存器R8~R14、R13(SP) 、R14(LR) 程序计数器PC(R15)、R8_fiq-R12_fir为快中断独有 在不同模式下,名称相同的

    2024年02月10日
    浏览(36)
  • ARM汇编寄存器和常用指令详解

    对于32位及其以下的ARM处理器来说,函数调用规则如下: 父函数与子函数的入口参数以此通过 R0~R3 这4个寄存器传递。 父函数在调用子函数前先将子函数入口参数存入 R0~R3 寄存器中,若只有一个入口参数则使用 R0 寄存器传递,若有2个入口参数则使用 R0 和 R1 寄存器传递,以

    2024年02月03日
    浏览(39)
  • 【ARM】——当前程序状态寄存器 CPSR

    Current Program Status Register 即 CPSR,当前程序状态寄存器,可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位,当前处理器模式标志以及其他的一些控制和状态位。 除了 usr 和 sys 模式外,每一种处理器模式下都有一个专用的物理寄存器,称为 SPSR(备份程序状态寄

    2024年02月03日
    浏览(35)
  • ARM64 寄存器、常用汇编指令收集

    ARM64 有34个寄存器,包括31个通用寄存器、SP、PC、CPSR。 寄存器 位数 描述 x0-x30 64bit 通用寄存器,如果有需要可以当做32bit使用:WO-W30 FP(x29) 64bit 保存栈帧地址(栈底指针) LR(x30) 64bit 通常称X30为程序链接寄存器,保存子程序结束后需要执行的下一条指令 SP 64bit 保存栈指针,使用

    2023年04月20日
    浏览(31)
  • day3 ARM寄存器组织

    目录 寄存器  ARM寄存器 专用寄存器 CPSR寄存器 概念: 寄存器是处理器内部的存储器,没有地址; 作用: 一般用于暂时存放参与运算的数据和运算结果; 分类: 包括通用寄存器、专用寄存器、控制寄存器;   注:在某个特定模式下只能使用当前模式下寄存器,一个模式下

    2024年02月08日
    浏览(39)
  • optee读取Arm系统寄存器的模板

    快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 联系方式-加入交流群 ---- 联系方式-加入交流群 先写一个通用的内联函数模板,然后再通过宏控来定义各种读写函数。

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包