RISC-V是什么?

RISC全名Reduced Instruction Set Computer ,即精简指令集计算机。V是罗马字母,代表第五代RISC(精简指令集计算机),可读作RISC-FIVE。

RISC-V指令集,类似于INTEL的X86 ,ARM指令集,是一个被CPU读取到内存后,指导计算机运行的指令集合。使用了该指令集的CPU,能执行指令集中规定的所有基本指令,使其按该套指令集编译的程序能够无障碍运行,且具有同系列CPU可移植和兼容性。

RISC-V的起源?

RISC-V源于 2010年,当时加州大学伯克利分校的一个研究团队要设计一款CPU,为该项目选架构的时候研究团队对比了当时的ARM、MIPS、SPARC和X86等,发现这些指令集不仅越来越复杂,还有很多IP法律问题,再加上X86授权难以获取,ARM授权价格昂贵,所以该研究团队最终决定设计一套全新的指令集。于是成立了一个四人小组,仅用了3个月的时间就完成了RISC-V指令集的开发。其目标是新的指令集能满足从微控制器到超级计算机等各种尺寸的处理器。

讲到这里,小伙伴们估计要坐不住了,3个月就可以开发一套指令集,为什么我们还在受制于芯片。仅仅是因为生态建设问题吗?其实在RISC-V指令集架构之前,伯克利分校已经有了四代RISC指令集架构的设计经验,第一代RISC指令集早在1981年就已经出现,因此指令集的开发简单与否并不是那么容易得出结论。

技术当然是成功的重要方面,但也需要成功的运营。从2015年非盈利性组织RISC-V基金会(RISC-V Foundation)成立时的25个成员,至今已经有300多个单位加入,为RISC-V的发展建立了良好的生态环境。除了学术机构外,像芯片开发、软件工具、设计服务与系统等厂商,都有加入。其中包括阿里、谷歌、华为、英伟达、高通、麻省理工学院、普林顿大学、印度理工学院、中科院计算所、英伟达、联发科、Mentor Graphics、Express Logic(于2019年4月被微软收购)、西部数据、希捷等(了解更多可以访问其官网查看https://riscv.org/)。

由此可以看出RISC-V出身名门,又有BSD许可证(商业公司最喜欢的开源许可证之一)的加持。那作为名校优等生,本身究竟有哪些特点呢?

1.简洁

在IC的设计工作中,简洁通常意味着可靠、高效。IC设计的最终目标都是产出芯片,而芯片从设计到制造的周期一般都比较长,并且不同于软件开发可以后期通过打补丁来修复,其试错的成本极其高昂。所以简洁就意味着出错的概率低,出成果的效率高。

相对X86足足几千页的指令集手册,RISC-V是相当的简洁。我们打开官网https://riscv.org/specifications/查看RISC-V的“指令集手册,当前版本一共是236页。中文手册可以访问中国开放生态联盟网站获取:http://crva.io/(以上无需注册即可直接下载)

ISA

页数

字数(英文)

RISC-V

236

76,702

ARM-32

2736

895,032

X86-32

2198

2,186,259

以上数据出自RISC-V-Reader-Chinese-v2p1.pdf

2.模块化

它的核心是一个名为RV32I的基础ISA,运行一个完整的软件栈。RV32I是固定的,永远不会改变。这为编译器编写者,操作系统开发人员和汇编语言程序员提供了稳定的目标。模块化来源于可选的标准扩展,根据应用程序的需要,硬件可以包含或不包含这些扩展。这种模块化特性使得RISC-V具有了袖珍化、低能耗的特点,而这对于嵌入式应用可能至关重要。RISC-V编译器得知当前硬件包含哪些扩展后,便可以生成当前硬件条件下的最佳代码。惯例是把代表扩展的字母附加到指令集名称之后作为指示。例如,RV32IMFD将乘法(RV32M),单精度浮点(RV32F)和双精度浮点(RV32D)的扩展添加到了基础指令集(RV32I)中。

基础模块

版本

状态

描述

RV32I

V2.1

批准

基础的32位整数指令集,32位地址空间,寄存器是32位

RV64I

V2.1

批准

基础的64位整数指令集,64位地址空间,寄存器是64位

RV32E

V1.9

草案

嵌入式架构,仅有16个整数寄存器。

RV128E

V1.7

草案

基础的128位整数指令集,支持128位地址空间。

扩展模块

版本

状态

描述

A

V2.0

冻结

支持原子操作指令

B

V0.0

草案

标准扩展,位操作

C

V2.0

批准

支持编码长度为16的压缩指令

D

V2.2

批准

双精度浮点指令

F

V2.2

批准

单精度浮点指令

J

V0.0

草案

标准扩展,动态翻译语言

L

V0.0

草案

十进制浮点

M

V2.0

批准

标准扩展,支持乘法和除法指令

N

V1.1

草案

标准扩展,用户态中断

P

V0.2

草案

标准扩展,封闭的单指令多数据(Packed-SIMD)指令

Q

V2.2

批准

标准扩展,四精度浮点

模块化的RISC-V架构使得用户能够灵活选择不同的模块组合,以满足不同的应用场景,可以说是“面面俱到”。譬如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。而他们共同的部分则可以相互兼容。

3.整齐

得益于后发优势和总结了多年来处理器发展的教训,RISC-V的指令集编码非常的规整,指令所需的通用寄存器的索引(Index)都被放在固定的位置,如图下图所示。因此指令译码器(Instruction Decoder)可以非常便捷的译码出寄存器索引然后读取通用寄存器组(Register File,Regfile)。

       RISC-V指令格式。我们用生成的立即数值中的位置(而不是通常的指令立即数域中的位置) (imm[x])标记每个立即数子域。(本图基于Waterman和Asanovi'c 2017的图 2.2)

关于RISC-V本身的特点还有很多,例如:简洁的存储器访问指令、高效的分支跳转指令、简洁的子程序调用、无条件码执行、无分支延迟槽(Delay Slot)、无零开销硬件循环(Zero Overhead HardwareLoop)、简洁的运算指令、优雅的压缩指令子集、特权模式(机器模式M Mode;监督模式S Mode;用户模式U Mode)、矢量指令子集、自定义指令扩展等。我们就不在此一一赘述,感兴趣的小伙伴可以网上查找,也可以给我们留言讨论。下面我们以表格的形式将RISC-V设计时从其它指令集中所汲取的经验展示出一部分,供大家参考。

类别

过去的教训

吸取的经验改进

ARM-32 (1986)

MIPS-32 (1986)

x86-32 (1978)

RV32I (2011)

简洁性

无零寄存器、条件指令执行、复杂的寻址模式、栈操作指令(push/pop)、算术/逻辑指令中存在移位

立即数支持零扩展及符号扩展、一些算术指令会造成溢出异常

无零寄存器、复杂的过程调用指令(enter/leave)、栈指令(push/pop)、复杂寻址模式、循环指令

寄存器x0专门用于存放常数0、立即数只进行符号扩展  、一种数据寻址模式、没有条件执行、没有复杂的函数调用指令以及栈指令、算术指令不抛异常、使用单独的移位指令来处理移位操作

性能

分支指令使用条件码、在不同格式的指令中,源和目的寄存器的位置不同、加载多个计算得到的立即数、PC是一个通用寄存器

在不同格式的指令中,源和目的寄存器的位置不同

分支指令使用条件码、每个指令中最多只能使用两个寄存器

使用同一条指令实现比较及跳转(不使用条件码)、每条指令三个寄存器 、不能一次load多个数据、不同指令格式中,源及目的寄存器字段位置固定、立即数是常数(不是由计算得出的)、PC不是通用寄存器

架构和具体实现的分离

将PC像普通寄存器一样读写,这样暴露了流水线长度

分支指令延迟槽、Load指令延迟槽、乘除法使用单独的HI,LO寄存器

寄存器不是通用的(AX,CX,DX, DI,SI有特殊用途)

分支指令没有延迟槽、Load指令无延迟槽、通用寄存器

增长

空间

有限的指令码空间

有限的指令码空间

 

大量可用的指令码空间

程序

大小

仅有32bit指令 (Thumb-2  是作为一个独立的ISA)

仅32bit指令(microMIPS是作为一个独立的ISA)

指令长度可以是不同字节,但这是一个很不好的选择

32位指令+16位 RV32C 扩展

易于

编程 编译 链接

仅15个寄存器内存数据必须对齐、不规则的数据寻址模式、不一致的性能计数器

内存数据必须对齐、不规则的数据寻址模式、不一致的性能计数器

仅15个寄存器内存数据必须对齐、不规则的数据寻址模式、不一致的性能计数器

31个寄存器、数据可用不对齐、PC相对的数据寻址模式 、对称的数据寻址模式、定义在架构中的性能计数器

通常的教训是避免过去的ISA“优化”。经验和教训在简单性和性能下列出的许多指令集特性可以互换,因为这只是设计的偏好问题,但不管它们出现在哪里,它们都很重要。以上摘自RISC-V中文手册。

既然RISC-V具备这些优势,那我们再来探讨一下RISC-V的现状。时至今日,RISC-V指令集的支持工具已经相对完善。芯片设计公司不再担心工具链问题,只需专注于芯片设计,RISC-V社区已经提供了完整的工具链,并且RISC-V基金会将会持续维护该工具链。

IAR现已推出适用于RISC-V的工具链新版本。1.20版增加了对基本指令集RV32E的支持,以及对原子操作(A)的标准扩展。这使OEM以及SoC供应商能够根据应用程序或产品所需的确切定义来设计自定义内核。通过不断增加更多的支持和功能,IAR Systems可使这些公司充分利用领先的嵌入式开发工具链的功能来开发基于定制内核的应用程序。

UltraSoC宣布将通过OpenHW集团提供其业界领先的RISC-V跟踪编码器的开源实现。可用的生产级、符合标准的处理器跟踪解决方案是开发进步的关键推动力,其支持基于开源处理器为开发创建开放的、商业级的生态系统。

Microchip及其Mi-V合作伙伴提供了基于RISC-V的SoCFPGA以及其Mi-V生态系统,正在推动嵌入式领域的创新。Mi-VRISC-V生态系统是由Microchip和众多第三方开发的一套全面的工具和设计资源,以全面支持RISC-V设计。

今年2月,西部数据(Western Digital)发布了基于RISC-V指令集的自研通用架构SweRV,这是西部数据努力引领ISA(指令集架构)及其生态系统的一部分,也是他们向免授权CPU核心过渡的一部分。迄今为止西部数据已经开发出了三款RISC-V核心的产品。

12月11日Cobham Gaisler在加利福尼亚州圣何塞举行的RISC-V峰会上宣布,它将发布实现RISC-V指令集体系结构(ISA)的处理器IP内核新线。该系列的第一款产品NOEL-V处理器IP内核将于12月25日上市,可下载到Xilinx的Kintex UltraSCALE FPGA中。

根据分析机构Semico Research的最新报告《RISC-V市场分析:新兴市场》估计,到2025年,市场将总共消费624亿个RISC-VCPU内核,预计工业领域将是最大的细分市场,拥有167亿个内核。Semico预测RISC-V CPU内核的复合年增长率(CAGR),估计包括计算机,消费者,通讯,运输和工业市场在内的细分市场在2018年至2025年之间的平均复合年增长率为146.2%。

RISC-V 基金会于 11 月 25 日正式宣布,总部注册地将从美国迁往中立国家瑞士,只待瑞士监管机构的最终审核。此举在于试图避免受到地缘政治氛围的负面影响

RISC-V在中国的火热程度甚至超过美国,这背后也有地缘政治的原因。伴随着中美之间的贸易摩擦,科技冷战也开始打响。美国政府加大美国先进技术对中国企业的出口管制,迫使以华为为首的中国高科技企业寻求自主创新之道。虽然多年来中国科研院所和企业先后购买Intel、AMD、MIPS和Arm架构授权,但在微处理器研发和产业化方面都没能形成突破性进展,更谈不上“自主可控”了。RISC-V恰逢其时,短短两年时间内就在中国半导体业界形成“芯芯之火”的燎原之势。

专门负责RISC-V架构及指令标准制定的RISC-V基金会特别重视中国市场,不但有专门的中国委员会,还积极推动与中国RISC-V机构合作。立足上海的中国 RISC-V 产业联盟(CRVIC)以围绕RISC-V的芯片设计产业发展为主,而立足北京的中国开放指令生态(RISC-V)联盟CRVA则以RISC-V生态的设计工具和软件开发为主。深圳在今年11月份将RISC-V的开山鼻祖 DavidPatterson教授请来并在清华-伯克利深圳学院(TBSI)成立以Patterson教授命名的RISC-V国际开源实验室(RIOS),RIOS在西班牙语里是“河流”的意思,寓意这个RISC-V研究机构将像河流一样汇聚来自全球的资源和智力,催生和孕育RISC-V生态的健康发展,并推动RISC-V发展成为未来50年的计算架构标准。

2018 年下半年起,除了早早入局的华为和阿里,还有有华米、中天微、乐鑫等代表性企业表示支持 RISC-V。

首先,华米科技发布黄山一号芯片,没有采用传统的 ARM 架构处理器,成为全球第一款采用 RISC-V 开源指令架构的穿戴式处理器,相比 ARM Cortex-M4 处理器的运算效率高出 38%,凸显 RISC-V 与低功耗市场的契合。

阿里巴巴旗下的中天微和平头哥也双双拿出成果。前者宣布推出支持 RISC-V 第三代指令系统架构处理器 CK902,后者在今年推出了运用 12 纳米工艺,搭载 16 个核心,号称“业界最强”的 RISC-V 处理器玄铁 910。

成立于 2008 年的上海乐鑫公司也基于RISC-V指令集架构开发物联网芯片,致力于研发 WiFi 和蓝牙组成的双模物联网。此外,还有芯来、君正、芯原和核芯等中国公司也在从事 RISC-V 架构的相关研发

随着RISC-V生态建设的不断推进,我们相信未来一段时间内,RISC-V将与ARM同行发展,即一个设计中,既能使用ARM也能使用RISC-V,或者同一颗芯片里,可以同时有两种内核。期望未来RISC-V的生态环境建设从围绕芯片设计转向开发者教育和实践阶段,为培养更多的行业人才而努力。

参考资料及更多信息可访问以下网站获取:

RISC-V基金会:https://riscv.org/

中国开放生态联盟:http://crva.io/

IAR公司:https://www.iar.com/

本文由介方团队成员原创,未经原作者本人同意,不得转载

关注本公众号

掌握“软件定义”和军工行业科技动态

还有更多惊喜哦

RISC-V的前世今生相关推荐

  1. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  2. 计组学习笔记2(RISC v版)

    指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...

  3. 安装Ubuntu RISC V toolchain失败(网速、git配置原因)

    git获取大容量工程出错:RPC failed: curl GnuTLS recv error : Decryption has failed. error: RPC failed; curl 56 ...

  4. 图书推荐|计算机组成与设计(原书第5版) 硬件软件接口 RISC-V

    计算机组成与设计(原书第5版)  硬件软件接口 RISC-V 这本书是引进过来的,本系列图书广受盛誉,有两位"图灵奖"得主撰写,书的权威性及细致性不言而喻,两位作者的履历也是让我们 ...

  5. GPU指令集技术分析

    GPU指令集技术分析 本文将两篇文章整理了一下. 参考文章链接如下: https://zhuanlan.zhihu.com/p/391238629 https://zhuanlan.zhihu.com ...

  6. 中国芯片将靠此超车!RISC-V架构神在哪全解构

    来源: 智东西 RISC-V(发音为"risk-five")是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种"开源硬件& ...

  7. 中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】

    来源: 智东西 RISC-V(发音为"risk-five")是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种"开源硬件& ...

  8. RISV-V未来将面临怎样的挑战?

    来源:MoneyDJ.半导体行业观察 继大陆的RISC-V联盟成立之后,台湾RISC-V联盟也在今年正式成立,这也让RISC-V的议题热度逐渐加温,事实上这也是许多人看好能够足以与ARM竞争的架构,加 ...

  9. 基于 RT-Thread的全向赛车算法开发

    学校:山东大学 队伍名称: TSH 参赛队员:芦子晟.曹晓东.刘家宝 带队教师:陈桂友.吴皓 #mermaid-svg-pRxf6GoJMQZfNccu .label{font-family:'tre ...

  10. 英特尔的指令集体系结构_对标英特尔的RISC-V大有可为,CPU三分天下格局可期

    据行业媒体报道,挪威物联网(IoT)公司ONiO日前推出了一种基于RISC-V的超低功耗微控制器,能够完全利用采集的能量进行操作,而无需电池.无需超级电容器或任何其他形式的储能. 此款微控制器本身基于 ...

最新文章

  1. 实战DeviceIoControl 之中的一个:通过API訪问设备驱动程序
  2. 设计模式之四:适配器模式(Adapter Pattern)
  3. 深度学习100例-卷积神经网络(CNN)识别验证码 | 第12天
  4. [转]面向对象的三个基本特征
  5. Python 狠甩 Java,Rust 持续称王!揭晓Stack Overflow 2019 开发者报告
  6. DenseNet论文
  7. 为解决WINDOWS JRE启动外壳,找了好几个方案
  8. 表白js特效 html爱情表白网站 html爱心代码
  9. 用逻辑覆盖法设计测试用例 int fun(int x,int y, int z) { if((y>1)(z==0)) {x=x/y} if((y==2)||(x==1)) {x=x+1}
  10. ipad触屏失控出现乱跳
  11. SEO工具:免费快速排名软件大全!
  12. Frobenius标准型与Jordan标准型总结
  13. python笔记3 闭包 装饰器 迭代器 生成器 内置函数 初识递归 列表推导式 字典推导式...
  14. PHY--PDCCH
  15. Reversible Data Hiding in Encrypted Images by Reversible Image Transformation
  16. 怎么制作GIF动态图片,如何做GIF
  17. 汽车凸轮轴的拆装过程
  18. 清华计算机系开学典礼,清华大学举行2017级本科生新生开学典礼
  19. 一汽大众t一roc_最近迷上了一汽大众T-ROC探歌,到底哪个配置的车型最值得买
  20. 如何添加PDF书签?学会这三种方法

热门文章

  1. 投资品讲解及国债逆回购
  2. Xshell连接Linux时中文乱码的解决
  3. 图像处理(十一)图像分割(3)泛函能量LevelSet、snake分割
  4. Reactive Extensions (Rx) 入门(5) —— Rx的事件编程③
  5. Hbase思维导图之物理模型
  6. 用java实现基于感知器的数据线性分类
  7. 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)
  8. VS code修改字体为电脑自带字体
  9. kuangbin 二分
  10. 看了 B 站 Elasticsearch 视频的标题,我仿佛看到了内卷的天花板