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

news2024/9/21 22:58:40

1、ARM核的寄存器组织

1.1 寄存器概念介绍

在这里插入图片描述

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

1.2 ARM-v7架构的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内核的寄存器组织

在这里插入图片描述

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程序必须先初始化栈空间。

在这里插入图片描述

2.2 R14寄存器

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

在这里插入图片描述

2.3 R15寄存器

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

在这里插入图片描述

2.4 cpsr寄存器

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

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

2.5 spsr寄存器

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

在这里插入图片描述

3、cpsr寄存器的详解

在这里插入图片描述

重点掌握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个时钟周期。
以上指令的流水线式理想情况的指令的流水线,当有跳转,异常,中断等指令执行时会打断指令的流水线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在服务器上安装相应的依赖和包

我感觉这一篇的逻辑写的比较奇怪,于是想重写一篇。 python setup.py install报错“error: can‘t create or remove files in install directory”_ACMSunny的博客-CSDN博客 开始遇到的问题是要跑的程序数据太大,咱们通常会将本机上的Python程序和数据…

MIT6.830-2022-lab6实验思路详细讲解

系列目录 lab1 地址 : lab1 lab2 地址 :lab2 lab3 地址 :lab3 lab4 地址 :lab4 lab5 地址 :lab5 lab6 地址 :lab6 文章目录系列目录一、实验概述SimpleDB日志格式steal/force策略:二、实验正文Exercise 1 - rollbackExercise 2 - Recovery总结一、实验概述 In this lab y…

【SAP Fiori】X档案:Node.js 与 SAPUI5 开发环境的安装与配置

Node.js 与 SAPUI5 开发环境的安装与配置一、安装Node.js1、下载2、安装3、配置环境变量4、验证5、更改路径6、更改镜像源二、安装 Vue.js1、安装Vue2、查看版本三、安装webpack1、安装webpack2、安装webpack-cli3、验证是否安装成功四、新建Vue项目1、创建项目2、启动项目五、…

使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程

NoneBot是一个基于Python 3.8的异步、开源和可扩展的框架,用于构建和运行聊天机器人,支持各种聊天平台,如Telegram,Discord和WeChat。它是基于nonebot库构建的,提供了一个易于使用的界面,用于创建聊天机器人…

Python爬虫之Scrapy框架系列(7)——XXTop250电影简介信息的获取及存储到本地

前面简单爬取了某Top250电影的一些信息。本文,来尝试搞到每个电影的简介信息。 目录:1. 获取电影简介信息1.1 第一步:配对每个电影对应的简介信息:First:包含电影简介信息url的获取Second:爬虫文件的更改Th…

Java和Scala中关键字package指定的是源文件的存放路径吗?

无为也,则用天下而有余;有为也,则为天下用而不足🔬 目录 Scala代码演示 Java代码演示 总结 写在前面: 包(package)不是约定源文件存放的位置,而是约定源文件编译后生成的字节码…

数据挖掘,计算机网络、操作系统刷题笔记37

数据挖掘,计算机网络、操作系统刷题笔记37 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

Scanpy 单细胞测序基因分析

参考:https://www.bilibili.com/video/BV1sq4y1C7Qx/ https://scanpy-tutorials.readthedocs.io/en/latest/pbmc3k.html 代码下载:scanpy分析scRNA-seq数据基本流程(含scanpy seurat两大工具对比) 链接: https://pan.baidu.com/s…

SCSS函数——Map

SCSS函数——MapSCSS函数——MapMap的简单声明Map取值遍历Map获取值实现换肤效果1. 设置用户可以选择的主题2.创建主题需要颜色的Map集合3.在使用SCSS文件中导入函数和Scss文件4.构建一个themeCombine函数动态创建类名5.使用each对变量进行遍历Map函数1.get()取值函数2.deep-re…

STM32F10x数据手册之GPIO手册记录

前言 1、本文根据数据手册进行记录 2、由于手册的逻辑结构是呈现为总体到具体的结构,导致查看的时候不方便,所以在此记录,方便回顾 GPIO–输入模式 对比分析: 1、在此模式下,向GPIO口,输出高低电平是无效的。 2、GPIO初始电平与…

PHP反序列化新手入门学习总结

最近写了点反序列化的题,才疏学浅,希望对CTF新手有所帮助,有啥错误还请大师傅们批评指正。 php反序列化简单理解 首先我们需要理解什么是序列化,什么是反序列化? PHP序列化:serialize() 序列化是将变量…

DW 2023年1月Free Excel 第八次打卡 Excel数据可视化

第八章Excel数据可视化 数据下载地址与参考链接:https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1 条形图 案例1 打开data/chap8/8.1xlsx中的【案例1】,现在有湖北区2022/01/01的不同商品的销售额。 问题1:如何更加直观…

Java基础11:正则表达式

Java基础11:正则表达式一、匹配规则1. 字符类(只匹配一个字符)2. 预定义字符(只匹配一个字符)3. 数量词二、Pattern三、Matcher四、在字符串方法中的使用1. matches2. replaceAll3. split五、 PatternMatcher示例1. 爬…

【自然语言处理】主题建模:基于 LDA 实现

主题建模:基于 LDA 实现主题建模是一种常见的自然语言处理任务。隐含的狄利克雷分布(Latent Dirichlet Allocation,LDA)是其中一种实现算法,其核心思想如下图所示。 主题建模的方法也比较多,除了本文提到的…

MySQL架构概述

MySQL架构 对MySQL服务端架构的概述,包括逻辑架构、并发控制、事务和MVCC(多版本并发控制)等内容。 逻辑架构 连接/线程管理 最上层负责与客户端交互,包括连接处理、身份验证、确保安全性等。 解析器、优化器 MySQL核心能力都在…

机器学习从入门到进阶所需学习资料-包括书、视频、源码

本文整理了一些入门到进阶机器学习所需要的一些免费的精品视频课程,一些优质的书籍和经典的代码实战项目。本文整理自网络,源地址:https://github.com/linxid/Machine_Learning_Study_Path视频1.1 吴恩达老师机器学习课程:•Cours…

【【黑马SpringCloud(2)】微服务调用

服务调用和网关Feign远程调用Feign自定义配置Feign性能优化使用连接池代替默认的URLConnection解决重复代码继承方式抽取方式Gateway服务网关gateway快速入门断言过滤器全局过滤器过滤器执行顺序:跨域问题Feign远程调用 RestTemplate发起远程调用的代码&#xff1a…

走进 CSS

看完本篇博客,你能收获: 👉 了解 CSS 是什么?👉 学会 CSS 怎么用?👉 CSS的选择器👉 如何用 CSS 美化网页 文章目录01 CSS 是什么?02 CSS的发展史03 CSS 快速入门04 CSS的…

唯一索引范围查询锁 bug修复了

唯一索引范围查询锁 bug修复了 其他资料介绍入下: session A 是一个范围查询,按照原则 1 的话,应该是索引 id 上只加 (10,15] 这个 next-key lock ,并且因 为 id 是唯一键,所以循环判断到 id15 这一行就应该停止了。…

生成标题的节点

生成标题的节点目录概述需求:设计思路实现思路分析1.mine 的概述2 mi是否自动计算未来的处理人参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,w…