RISV-V架构的寄存器介绍

2023-09-13 17:57:09

1、RISC-V的通用寄存器

在这里插入图片描述

(1)在编写汇编代码时,使用寄存器的ABI名字,一般不直接使用寄存器的编号;

(2)x0-x31是用来做整形运算的寄存器,f0-f31是用来做浮点数运算的寄存器;RISC-V一定有x0-x31寄存器,但是不一定有f0-f31寄存器,这要看支不支持浮点数运算;

(3)保存者:调用者保存就是在函数跳转前要保存的寄存器,被调用者保存就是在函数执行过程中要使用该寄存器必须将原来的值保存到栈中,在函数返回前要恢复;

(8)x8寄存器除了作为保存数据的寄存器s0,还可以作为栈指针FP。作为栈指针FP时,保存的是栈底,用于栈回溯,就是gdb调试看到的函数调用关系,在《RISC-V 体系结构编程与实战》的4.3节有介绍;

(9)x0寄存器是零寄存器,寄存器的永远是0,这是硬件决定的,读x0寄存器的值永远是0,写x0寄存器则没有效果;

1.2、s0寄存器什么时候作为fp?

(1)不作为FP:若在编译时,GCC使用"-fomit-frame-pointer"编译选项,则s0不会被作为FP, 这样能够避免保存,设置和恢复帧指针的指令,提高程序性能,同时对许多函数提供一个额外的寄存器。但是在大多数机器上将无法调试,因为没法栈回溯;

(2)作为FP: 若在编译时,GCC使用"-fno-omit-frame-pointer"编译选项,则s0被作为FP,可以进行栈回溯,方便调试,会降低程序性能;

2、RISC-V的系统寄存器

2.1、RISC-V的三种处理器模式

模式功能
M(Machine)模式具有对机器的全部访问权限,通常运行SBI
S(system)模式系统模式,通常运行uboot和kernel
U(user)模式用户模式,应用程序运行在此模式

2.2、CSR指令编码

在这里插入图片描述

字段含义
opcode指令操作码,说明该条指令时什么类型指令
rd目标寄存器
funct3功能码,进一步区分指令。比如CSR指令还细分为CSRRW、CSRRS等
rs1源操作数
csrCSR编码,也就是系统寄存器的编码

(1)访问系统寄存器需要通过CSR指令,上面是CSR指令的编码格式;

(2)系统寄存器的编码是12bit,对应CSR指令里的csr字段;

2.3 CSR地址空间映射

在这里插入图片描述

bit数含义
bit[11:10]表示系统寄存器的读写属性:0b11表示只读,其余表示可读可写
bit[9:8]表示允许访问该系统寄存器的处理器模式:0b00表示U模式,0b01表示S模式,0b10表示HS/VS,0b11表示M模式

(1)从地址空间映射可以指定,部分地址已经被RISC-V体系结构占用,用作固定功能系统寄存器的地址,还有部分地址是在RISC-V体系结构中没有定义的,用户在设计RISC-V架构芯片时可以自行增加系统寄存器;

(2)《RISC-V 体系结构编程与实战》的1.3节有介绍;

2.4 各个模式下的系统寄存器

2.4.1、U模式

在这里插入图片描述

2.4.2、S模式

在这里插入图片描述

2.4.3、M模式

在这里插入图片描述

3、什么是通用寄存器、系统寄存器?

(1) 通用寄存器:寄存器的功能没有提前定义,是给编写代码的程序员使用的,具体寄存器里保存的数据是什么含义,是由编写代码的程序员决定;

(2)系统寄存器:和处理器模式相关的寄存器,寄存器的每个bit都已经提前定义好,程序员只能按照规则来操作系统寄存器。比如:M、S、U各个模式下的系统寄存器,每个寄存器的每个bit都已经定义好了含义;

更多推荐

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置impala介绍Impala集群包含一个CatalogServer(Catalogd)、一个StatestoreServer(Statestored)和若干个ImpalaDaemon(Impalad)。Catalogd主要负责元数据的获取和DDL的执

【K8S系列】深入解析K8S监控

序言做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s监控相关知识希望这篇文章能让你不仅有一定的收获,而且可以愉快的学习

剖析 Kubernetes 控制器:Deployment、ReplicaSet 和 StatefulSet 的功能与应用场景

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

【云原生】kubernetes关于存储(Volume)

目录1卷Volume2卷的类型3使用方式4常见类型5PV&PVC1卷Volume官网地址:卷|KubernetesContainer中的文件在磁盘上是临时存放的,这给Container中运行的较重要的应用程序带来一些问题。问题之一是当容器崩溃时文件丢失。kubelet会重新启动容器,但容器会以干净的状态重启。第二个问题

云原生之深入解析如何使用Devtron简化K8S应用开发

一、NeuVector简介①什么是NeuVector?NeuVector是业界首个端到端的开源容器安全平台,唯一为容器化工作负载提供企业级零信任安全的解决方案。NeuVector是业界领先的安全和合规解决方案,已被全球知名企业广泛采用;其代码库的开源不仅使NeuVector成为开源社区的首选技术,还为受严格监管的客户(

文举论金:黄金原油全面走势分析策略指导。

市场没有绝对,涨跌没有定势,所以,对市场行情的涨跌平衡判断就是你的制胜法宝。欲望!有句意大利谚语:让金钱成为我们忠心耿耿的仆人,否则,它就会成为一个专横跋扈的主人。空头,多头都能赚钱,唯有贪心不能赚。是你掌控欲望还是欲望掌控你?古人云:不积硅步无以至千里,不积小流无以成江海。希望这句话成为我们之间的共勉。自知!人贵自知

百度 RT-DETR : 在实时目标检测上击败所有 YOLO !

论文地址:https://arxiv.org/abs/2304.08069代码地址:https://github.com/PaddlePaddle/PaddleDetection最近,基于端到端的Transformer检测器(DETRs)取得了显著的性能。然而,DETRs的高计算成本问题尚未得到有效解决,这限制了它们的

【计算机网络】图解应用层协议

图解应用层协议1.应用层2.远程登录2.1Telnet2.2SSH3.文件传输3.1FTP3.2TFTP4.电子邮件4.1通信架构4.2邮件地址4.3SMTP协议4.4POP3协议4.5IMAP协议5.WWW5.1URI5.2HTML5.3HTTP6.网络管理应用6.1DHCP协议6.2DNS协议1.应用层我们前面介绍

软件设计模式系列之七——原型模式

1模式的定义原型模式(PrototypePattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是使用构造函数。原型模式将对象的创建委托给原型对象,通过克隆(复制)来生成新对象,这种方式可以避免对象的重复初始化,提高性能,并使对象的创建更加灵活和动态。原型模式的关键思想是通过复制已有对象的属

【视觉SLAM入门】8. 回环检测,词袋模型,字典,感知,召回,机器学习

"见人细过掩匿盖覆”1.意义2.做法2.1词袋模型和字典2.1.2感知偏差和感知变异2.1.2词袋2.1.3字典2.2匹配(相似度)计算3.提升前言:前端提取数据,后端优化数据,但误差会累计,需要回环检测构建全局一致的地图;1.意义通俗的讲,机器人两次经过同一个场景,为了检测是同一个场景,这就是回环检测。它可以用来构建

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA预测股票价格(适用于时序问题)、相似度计算、各类评判指标绘图(数学建模科研适用)

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用CSDN平台,自主完成项目设计升级,提升自身的硬实力。专栏订阅:项目大全提升自身的硬实力[专栏详细介绍:项目设计

热文推荐