认识RISC-V

认识RISC-V

一、RISC-V指令集特点

RISC-V拥有规整的指令编码,能在流水线中今早尽快地读取通用寄存器。

RISC-V指令编码基本方式(举例):

  • 三操作数指令:

(R-type)

31 - 2524 - 2019-1514-1211-76-0
function7rs2rs1funct3rdopcode
  • 双操作数指令:

(S-type)

31 - 2524-2019-1514-1211-76-0
Imm[11:5]rs2rs1funct3Imm[4:0]opcode

(I-type)

31-2019-1514-1211-76-0
Imm[11:0]rs1funct3rdopcode
  • 单操作数指令

(U-type)

31 - 1211-76-0
Imm[31:12]rdopcode

二、设计简单的RISC-V指令

a d d i x 18 , x 0 , 5 s w x 18 , 8 ( x 0 ) l w x 19 , 8 ( x 0 ) o r x 20 , x 18 b e q x 19 , x 20 , − 16 addi \quad x18,x0,5\\ sw\quad x18,8(x0)\\ lw\quad x19,8(x0)\\ or \quad x20,x18\\ beq \quad x19,x20,-16 addix18,x0,5swx18,8(x0)lwx19,8(x0)orx20,x18beqx19,x20,16

a d d i x 18 , x 0 , x 5 addi \quad x18,x0,x5 addix18,x0,x5

31-2019-1514-1211-76-0
Imm[11:0]rs1funct3rdopcode
00000000010100000000100100010011

转换为16进制地址:

00500913

s w x 18 , 8 ( x 0 ) sw\quad x18,8(x0) swx18,8(x0)

31 - 2524-2019-1514-1211-76-0
Imm[11:5]rs2rs1funct3Imm[4:0]opcode
00000001001000000010010000100011

转换为16进制地址:

01202423

l w x 19 , 8 ( x 0 ) lw\quad x19,8(x0) lwx19,8(x0)

31-2019-1514-1211-76-0
Imm[11:0]rs1funct3rdopcode
00000000100000000010100110000011

转换为16进制地址为

00802983

o r x 20 , x 18 , x 19 or\quad x20,x18,x19 orx20,x18,x19

31 - 2524 - 2019-1514-1211-76-0
function7rs2rs1funct3rdopcode
00000001001110010110101000110011

转换为16进制位

001396A33

b e q x 19 , x 20 , − 16 beq \quad x19,x20,-16 beqx19,x20,16

31 - 2524-2019-1514-1211-76-0
Imm[11:5]rs2rs1funct3Imm[4:0]opcode
11111111010010011000100011100011

转化为16进制为

FF4988E3

流水线指令

a d d i x 1 , x 0 , 2 a d d i x 3 , x 0 , 6 a d d i x 5 , x 0 , 10 a d d i x 6 , x 0 , 2 a d d i x 0 , x 0 , 0 s u b x 2 , x 1 , x 3 a d d i x 6 , x 0 , 12 addi\quad x1,x0,2\\ addi\quad x3,x0,6\\ addi\quad x5,x0,10\\ addi \quad x6,x0,2\\ addi \quad x0,x0,0\\ sub \quad x2,x1,x3\\ addi\quad x6,x0,12\\ addix1,x0,2addix3,x0,6addix5,x0,10addix6,x0,2addix0,x0,0subx2,x1,x3addix6,x0,12

单个指令具体设计参考上文。

流水线时空图

指令1234567891011
ADDIIFIDEXMWB
ADDIIFIDEXMWB
ADDIIFIDEXMWB
ADDIIFIDEXMWB
ADDI(空操作)IFIDEXMWB
SUBIFIDEXMWB
ADDIIFIDEXMWB

附表

RISC-V常用寄存器调用名

寄存器调用名字用途存储者
x0zero常数0N.A.
x1ra返回地址Caller
x2sp栈指针Callee
x3gp全局指针/
x4tp线程指针/
x5-x7t0-t2临时存储Caller
x8s0/fp保存用寄存器/帧指针(配合栈指针界定一个函数的栈)Callee
x9s1保存用寄存器Callee
x10-x11a0-a1函数参数/返回值Caller
x12-x17a2-a7函数参数Caller
x18-x27s2-s11保存用寄存器Callee
x28-x31t3-t6临时存储Caller
f0-f7ft0-ft7浮点临时存储Caller
f8-f9fs0-fs1浮点保存用寄存器Callee
f10-f11fa0-fa1浮点函数参数/返回值Caller
f12-f17fa2-fa7浮点函数参数Caller
f18-f27fs2-fs11浮点保存用寄存器Callee
f28-f31ft8-ft11浮点临时存储Caller

关于R、I、U、S简单解释

R即Reg相关;I即立即数相关;S存储相关;B分支相关;U高位数相关(因为一条32位指令中无法表示高达32位的数据);J跳转相关。

RISC-V手册摘要

指令类型

image-20210530104645973

基本指令集

image-20210530104811462

手册其他内容请参照 RISC-V手册
–本附录内容是我结合RISC-V手册(中文版)第 58 页写的,如有错误请读者斧正

文章转载自 [原文地址] 暂不可见 建议使用Chrome内核的浏览器阅读,以保证阅读流畅

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Best-Wishes

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

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

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

打赏作者

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

抵扣说明:

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

余额充值