0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RISC-V指令集是如何设计的

冬至配饺子 来源:天奇工作室 作者:LRC 2022-08-08 14:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们来回顾一下上期内容:我们定义了两种指令,第一种是立即数指令,其指令规则是:xxxxxxxxxxxx(立即数)xxxxx(源寄存器序号)xxx(运算规则)xxxxx(目标寄存器序号)1(立即数标志位)。第二种指令是寄存器指令,其指令规则是:0000000xxxxx(源寄存器序号1)xxxxx(源寄存器序号2)xxx(运算规则)xxxxx(目标寄存器序号)0(立即数标志位)。不过呢,这些指令只是我们的一厢情愿,现实中实际的指令集是怎么实现的?

pYYBAGLwsFuAMLa5AACNBC2MMKU335.png

RISC-V指令格式

我们这次来讲讲RISC-V指令集,看看他们的指令集是如何设计的。

RISC-V指令集项目在2010年始于伯克利大学,是一个新颖先进的指令集。我们曾在前几章中多次提到过这个指令集,不过也就是顺嘴一题,这次我们具体看看究竟什么是RISC-V指令集。

首先RISC-V指令集由几部分组成。最主要的部分是最基础32位的RV32I,这部分是最基础的指令集,是兼容RISC-V程序的必要部分。其次是16位的RVC,作为压缩指令,可以极大节省程序占用内存的空间。再者是32位的RV32M,用以支持乘除法指令。此外还有RV32F、RV32A等等。为什么要分成这么多部分呢?因为我们设计的CPU大多不会对这些指令全部兼容,而是选择有目的的部分兼容。比如,设计一个低功耗的单片机CPU,我们就用不到乘除法等指令,我们可以选择只兼容RV32I,既简单又高效。当然这些指令还有64位版本,用以支持更高位数的计算。

RISC-V指令集规定了CPU中有32个寄存器。有疑问吗?你可能觉得指令集不就是指令的集合嘛,为什么还规定我们的硬件设计?不要忘了,32个寄存器意味着寄存器序号一共是5位,而这是由指令集决定的。顺便一说X86指令集中仅规定有8个寄存器。其中,00000即第一个寄存器本质并不是寄存器而是硬件连线0,始终代表数字0。这个设计是有意义的,可以借此写出许多骚操作的指令。

我们先讲最基础的RV32I指令集。作为最基础的指令集,其包括几种指令类型。分别是数字运算指令(包括寄存器指令和立即数指令)、pc跳转指令、分支指令和内存读写指令。我们上次定义的指令集属于数字运算指令,二者类型相同但内容并不完全一致。现在我来说说RV32I中的数字运算指令,你们可以和上次定义的指令集比比有何不同?这些差别能带来好处还是坏处?

pYYBAGLwsHOAc4hVAABmp1yVSCk758.png


add指令释义

首先是运算指令。RV32I一共定义了10种运算,分别是加法、减法、有符号比较、无符号比较、与、或、非、异或、逻辑左移、逻辑右移和算数右移。而这些运算分为寄存器指令和立即数指令。立即数指令中是无需减法指令的,因为我们曾经说过,减法可以通过对其中一个加数取反加一再与另一个加数求和实现,所以立即数可以直接在立即数上做文章,不需要减法指令。那我们是否需要十种运算电路来分别对应这十种计算指令呢?不用,我们只需要八种。少的那两种分别是减法和移位。减法完全可以复用加法电路,左移完全可以复用右移电路。什么是复用?为什么要复用?复用就是重复利用原有的电路,减少设置新的电路。这样可以节省芯片面积,节约生产成本,降低发热功耗。那么如何复用呢?不同的电路有不同的复用方法,以减法复用加法为例,使用加法电路前,将其中一个数取反加一便可成为减法电路。

综上所述,我们仍需要3位数字表示这八种运算逻辑,它们分别是000到111,这三位数字被称为funct3(3位功能数字)。不过加法和移位运算中需要额外的一位数字用以区分加减和左右。这一位数字在哪呢?我们先讲立即数移位指令,立即数一般是12位数字,但在移位运算中用不到这么多位数,一般只有5位。那么在这五位数之前会有7个空位,第二个空位便是这位数字所在。立即数加法指令不需要这一位数字,原因刚才有指出。寄存器指令中,同样会存在7位空位,第二位空位是这位数字所在。

然后我们讲一下另一类指令,内存读写指令。不过我们在此之前需要指出一件事,我们现在有两种指令类型了,分别是运算指令和内存读写指令,我们怎么区分呢?RV32I设置了另一种功能数字,funct7(7位功能数字),为什么会有七位呢?因为指令类型很多,funct7不单起到区分RV32I指令类型的作用,同时还区分所有RISC-V的所有指令,甚至还包括16位和64位指令,所以funct7会有7位数字。回到内存读写指令上来,读和写可以被看成两种类型,需要一位数字区分,这位数字在funct7中。读和写都需要地址,否则不知道读哪或是写哪。

同时读指令还需要知道取到的内容放到哪,而写指令需要知道写什么内容。先说地址,地址是由某一寄存器中的数字加上七位立即数得到,这样正好组成之前说的12位数字。读指令放到哪呢?放到目标寄存器嘛。写指令的内容从哪来呢?来源寄存器嘛。这不就和之前的指令样式对应起来了吗?所以这两种指令样式区别其实不大。只不过执行内容有所区别。

我们现在刚刚简单讲完两种指令类型,是不是很多人就已经迷失自我了?难道所有这些指令规则只能通过繁琐的文字来讲述吗?这里就要提到指令集图卡了。

pYYBAGLwsLCANZaWAAC_XgiafkQ258.png

RV32I指令集图卡

上图就是实拍RV32I指令集图卡,每一行都代表着一条指令,你所要做的便是填入对应的寄存器序号和立即数即可。其中rs1和rs2分别是来源寄存器1和2,rd是目标寄存器,imm是立即数。有的指令可能只需要一个来源寄存器甚至一个都不要,有的指令可能不需要目标寄存器,有的指令可能需要12位立即数,有的则可能要20位立即数。这些在指令集图卡中都体现出来了。看到右边英文中,我手写的几道黑横线了吗?夹在里面的指令是我们在前文中所讲的指令类型,可以再根据这张图对前文进行理解,会容易得多哦。

举个例子,比如加法指令,看到最右侧有两个add,分别是I addi和R add,区别在于一个是立即数加法,一个是寄存器加法。对应到靠右边的方框中是不是可以看到7位数字,这就是funct7,中间有3位数字000,这就是funct3。寄存器指令中的最左侧7位数字是空着的为0000000,而立即数指令中最左侧则是12位的立即数。再看R add下面的R sub,与R add唯一的区别是不是左边第二位数字变成了1?这就是之前所说的复用所需的那一位数字。现在是不是能完全和之前所说的联系起来了?也没那么难对吧?

剩下的下次再来吧?还是你们剩下的都能自己看懂了?可以找公众号回复一下,我想看看。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5589

    浏览量

    129058
  • 减法电路
    +关注

    关注

    0

    文章

    15

    浏览量

    8270
  • 指令集
    +关注

    关注

    0

    文章

    228

    浏览量

    24237
  • RISC-V
    +关注

    关注

    48

    文章

    2792

    浏览量

    51902
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RISC-V指令集手册中F指令部分

    本文主要讲解RISC-V指令集手册中F指令部分 RISC-V标准中采用了符合IEEE 754-2008算术标准的单精度浮点计算指令,对于浮点
    发表于 10-22 08:18

    提高RISC-V在Drystone测试中得分的方法

    性能:内存的读写速度、延迟和带宽等都会影响到 Drystone 的性能。 指令集优化:对RISC-V指令集的优化也会影响性能。例如,对于特定的应用或计算任务,可以通过定制指令集来提高性
    发表于 10-21 13:58

    RISC-V B扩展介绍及实现

    B扩展简介 RISCV B扩展指的是RISCV用于位运算加速的一个扩展指令集,目的是使用一条指令实现原本需要2-3条指令才能实现的位操作指令。具体包含内容如下: B扩展就是
    发表于 10-21 13:01

    明晚开播 |开源芯片系列讲座第28期:高性能RISC-V微处理器芯片

    是一种开放(Open)指令集架构(ISA)标准。本报告探讨了RISC-V指令集架构标准区别于其它主流ISA的不同特点,以及这些特点对于国产微处理器芯片(CPU)的重
    的头像 发表于 07-29 17:02 1052次阅读
    明晚开播 |开源芯片系列讲座第28期:高性能<b class='flag-5'>RISC-V</b>微处理器芯片

    RISC-V芯片出货超百亿颗!四大厂商重磅产品来袭,加速边缘AI终端落地

    RISC-V基金会宣布,2024年基于RISC-V指令集的芯片出货量超过百亿颗,其中30%用于AI加速场景。本次盛会,知合计算、全志科技、博流智能、凌思微等厂商都携最新RISC-V内核
    的头像 发表于 07-22 08:58 6097次阅读
    <b class='flag-5'>RISC-V</b>芯片出货超百亿颗!四大厂商重磅产品来袭,加速边缘AI终端落地

    芯华章RISC-V敏捷验证方案再升级

    7月17-18日,在中国规模最大、规格最高的RISC-V峰会上,芯华章向数千名专业用户展示其面向RISC-V指令集打造的完整敏捷验证方案,其中最新发布的GalaxSim Turbo 3.0创新性地
    的头像 发表于 07-21 17:03 836次阅读
    芯华章<b class='flag-5'>RISC-V</b>敏捷验证方案再升级

    直播预约 |开源芯片系列讲座第28期:高性能RISC-V微处理器芯片

    RISC-V是一种开放(Open)指令集架构(ISA)标准。本报告探讨了RISC-V指令集架构标准区别于其它主流ISA的不同特点,以及这些特点对于国产微处理器芯片(CPU)
    的头像 发表于 07-14 17:34 994次阅读
    直播预约 |开源芯片系列讲座第28期:高性能<b class='flag-5'>RISC-V</b>微处理器芯片

    【好书推荐】RT-Thread第18本相关书籍!RISC-V嵌入式系统设计 | 技术集结

    RISC-V指令集、存储器与外设接口、通信协议、高速总线及操作系统等核心知识模块,构建了一条完整的学习路径。书中以项目驱动为主线,配套大量典型案例与实战项目,包括语音识别
    的头像 发表于 07-11 17:05 650次阅读
    【好书推荐】RT-Thread第18本相关书籍!<b class='flag-5'>RISC-V</b>嵌入式系统设计  | 技术集结

    进迭时空同构融合技术加速大模型AI应用创新

    复杂的异构调度系统来协调CPU和XPU的额外数据交互和同步。进迭时空践行的同构融合技术,创新性地在CPU内集成TensorCore,以RISC-V指令集为统一的软硬
    的头像 发表于 06-06 16:55 884次阅读
    进迭时空同构融合技术加速大模型AI应用创新

    RISC-V的未来应走向何方

    半导体行业正孜孜不倦地推动创新,在这个过程中,做出正确选择,正成为芯片成功的关键因素。在众多操作系统、编译器、调试器和其他工具的选项中,开放的RISC-V指令集架构(ISA)正在加速普及。这种开放式ISA赋予了开发者更多自由,使其能够以开源或商业资源为起点,打造专属的定制
    的头像 发表于 04-01 09:30 833次阅读

    首款RISC-V架构服务器,助力行业精准适配AI场景

    RISC-V融合服务器RS-SRM120为2U双路异构服务器产品,搭载双RISC-V指令集64核处理器SG2042,通过高效的双芯互联架构,提供强大的智算能力。支持CV模型、LLM等多种深度学习模型
    的头像 发表于 02-28 16:34 1498次阅读
    首款<b class='flag-5'>RISC-V</b>架构服务器,助力行业精准适配AI场景

    中国开放指令生态联盟携手雄安新区推动RISC-V产业发展

    此前,2025年1月7日下午,一场聚焦RISC-V指令集架构未来发展的高端交流会议在雄安新区成功举办。本次交流由中国开放指令生态(RISC-V)联盟产业孵化组的多位核心成员与雄安新区的
    的头像 发表于 01-24 11:22 1404次阅读

    若贝集成电路设计和RISC-V双系统平台

    RISC-V双系统平台结合了FPGA的灵活性和RISC-V指令集的开放性,为用户提供了一个高效、灵活的开发环境。
    的头像 发表于 01-14 09:58 1061次阅读
    若贝集成电路设计和<b class='flag-5'>RISC-V</b>双系统平台

    RISC-V架构及MRS开发环境回顾

    PowerPC以及现在统治嵌入式市场的ARM。 2. 什么是RISC-V RISC全名Reduced Instruction Set Computer,即精简指令集计算机;V是罗马字
    发表于 12-16 23:08

    如何使用 RISC-V 进行嵌入式开发

    RISC-V是一种开源的指令集架构(ISA),它允许任何人设计、制造和销售基于RISC-V的处理器,这为嵌入式开发提供了极大的灵活性和创新空间。以下是使用RISC-V进行嵌入式开发的基
    的头像 发表于 12-11 17:32 2747次阅读