RISV-V架构的寄存器介绍

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都已经定义好了含义;

RISC-V(Reduced Instruction Set Computer - Five)是一种开源的指令集架构(ISA),它具有以下几个好处: 1. 开放性和自由度高:RISC-V是一个开源的指令集架构,任何人都可以免费使用、设计和定制。这使得RISC-V非常适合于教育、研究和创新,同时也促进了硬件和软件的生态系统的发展。 2. 简洁而灵活的指令集:RISC-V采用了精简的指令集设计,使得指令集更加简洁和易于理解。同时,RISC-V还提供了可选的扩展指令集,可以根据需求进行定制,从而满足不同应用场景的需求。 3. 跨平台兼容性:RISC-V的指令集架构是与特定硬件实现无关的,这意味着可以在不同的处理器架构上实现RISC-V指令集,并且可以在不同的操作系统上运行RISC-V程序。这种跨平台兼容性使得RISC-V成为了一个通用的指令集架构。 4. 高性能和低功耗:由于RISC-V采用了精简的指令集设计,使得指令执行更加高效。同时,RISC-V还支持硬件流水线和超标量技术,可以提高指令的并行执行能力,从而提高处理器的性能。此外,RISC-V还支持动态电压频率调节(DVFS)等功耗优化技术,可以降低处理器的功耗。 5. 可扩展性和可定制性:RISC-V提供了可选的扩展指令集,可以根据应用需求进行定制。这种可扩展性和可定制性使得RISC-V非常适合于各种不同的应用场景,包括嵌入式系统、物联网设备、高性能计算等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值