RISC-V ISA 学习笔记(1) 指令集介绍及基本指令集RV32I v2.0

  

(一)RISC-V指令集介绍

   RISC-V指令集是UC Berkley 大学设计的第五代开源 RISC ISA, V 也可以认为是允许变种(Variations)和向量(Vector)向量实现,数据的并行加速功能也是明确支持目标,是专用硬件发展的一个重要方向。RISC ISA相对于成熟的指令集来说有开源、简捷、可扩展、和后发优势(没有历史包袱,可以绕过很多弯路,也不需要考虑兼容历史指令集)等。
  指令集分为基本部分和扩展部分,基本部分的指令集所有硬件实现都必须有这一部分实现,而扩展部分则是可选的。扩展部分又分为标准扩展和非标准扩展。例如,乘除法、单双精度的浮点、原子操作就在标准扩展子集中。
“I” 基本整数集,其中包含整数的基本计算、Load/Store和控制流,所有的硬件实现都必须包含这一部分。
“M” 标准整数乘除法扩展集,增加了整数寄存器中的乘除法指令。
“A” 标准操作原子扩展集,增加对储存器的原子读、写、修改和处理器间的同步。
“F” 标准单精度浮点扩展集,增加了浮点寄存器、计算指令、L/S指令。
“D” 标准双精度扩展集,扩展双精度浮点寄存器,双精度计算指令、L/S指令。
I+M+F+A+D 被缩写为 “G” ,共同组成通用的标量指令。
在后续ISA的版本迭代过程中,RV32G和RV64G总是保持不变。

  基本RISC-V ISA具有32位固定长度,并且需要32位地址对齐。但是也支持变长扩展,要求指令长度为16位整数倍,16位地址对齐。
  32位指令最低2位为“11”,而16位变长指令可以是“00、01、10”,48位指令低5位位全1,64位指令低6位全1。任何长度的指令,如果所有位全0或全1,都认为是非法指令,前者跳入填满0的储存区域,后者通常意味着总线或储存器损坏。
  另外,RISC-V默认用小端储存系统,但非标准变种中可以支持大端或者双端储存系统。

另外专业术语:

异常:RISC-V线程中出现了指令相关的非正常情况。
自陷:RISC-V线程中出现了指令相关的异常情况,控制同步传输到自陷处理函数(一般在高特权环境中执行)。
中断:RISC-V线程外异步出现了一个事件,如果需要处理则需要选择某条指令来接收,并顺序产生自陷。

  

(二)RV32I 基本整数指令集

  基本整数子集用户可见状态为31个寄存器x1~x31,用来保存整数值,其中x0是常数0。还有一个用户可见的寄存器pc用来保存当前指令的地址。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值