本文是risc-v基础知识的入门篇。介绍了开放式架构理念,模块化isa的技术描述,以及一些商业risc-v微处理器实现。
risc-v开放式指令集架构是当今专有架构(如arm架构)的流行替代方案。自诞生以来,risc-v在学术和商业上稳步普及。 了解 risc 与 cisc
risc是1980年代提出的一种计算机架构理念,,作为英特尔、摩托罗拉和几乎所有其他公司提供的商业体系结构的替代方案。这种架构最初被称为“复杂指令集计算机”或cisc,它依赖于密集的指令集来实现各种被认为是有用和必要的操作。然而,包括ibm和加州大学伯克利分校在内的许多研究团队发现,编译器最终通常只使用这些复杂指令集的很小一部分。这一发现,以及后续的一些其他发现,导致了对于是否需要更大的指令集的质疑,转而采用专注于将简单性作为提高效率的手段。总体而言,risc在许多方面与cisc相反。通常,cisc中央处理器(cpu)具有少量的寄存器和大量指令集,其中大多数可以访问内存,而risc cpu具有大量寄存器和非常适度的指令集,内存访问仅限于少数加载和存储指令。为了说明复杂指令和简单指令之间的区别,表1显示了使用cisc cpu(恩智浦的s08)和risc cpu(arm cortex m0 +)递增计数器变量之间的代码比较。 表 1. cisc 和 risc 代码之间的比较示例
在此表中,cisc 允许在单个指令中递增变量,而risc需要用加载和存储来访问内存。虽然这显示了代码大小的差异,但这不是一对一的比较,因为架构之间存在许多差异,因此这并不能证明一个在技术上比另一个更好。
如今,英特尔 x86/x64 架构证明了 cisc 微处理器没有被 risc 取代,而 arm 架构则证明了 risc 已经主导了移动设备市场。 risc-v 历史
risc的首字母缩略词是在1980年左右由加州大学伯克利分校的david patterson教授创造的,他和斯坦福大学的john hennessy教授共同创作了著名的书籍《计算机组织与设计》和《计算机体系结构:定量方法》。由于他们在risc架构上的突出贡献,他们在2017年获得了acm a.m图灵奖。从1980年到2010年,第五代risc研究项目的开发开始了,并最终被称为risc-v。 risc-v international— 一个开放的 isa
risc-v是一种开放式指令集架构(isa),这意味着您可以自由地在微处理器或微控制器中实现risc-v cpu,而无需向任何人支付使用此isa的版税。
risc-v international是一个全球性的非营利组织,拥有并维护risc-v isa知识产权。其主要目标之一是保持risc-v的设计基于简单性和性能,而不是专注于商业利益。出于这个原因,risc-v international依赖于其成员,这些成员代表了微处理器生态系统群体,从个人到google,intel和nvidia等组织。成为会员有很多好处,包括有可能为isa的设计做出贡献,并投票批准拟议的变更。在图1中,你可以看到多年来risc-v发展的高层次时间表。
图 1. 自2010年成立以来,risc-v一直受到微处理器行业的好评,并且在硬件和软件方面的采用一直在稳步增长
risc-v isa和扩展的约定
作为始于1980年的第五代研究项目,risc-v是一个经验丰富的架构,旨在成功地解决过去其他人可能失败的问题,risc-v旨在从过去任何潜在的错误中吸取教训。因此,risc-v被设计为模块化isa,而不是传统的增量isa。这意味着risc-v实现由一个强制性的基本isa和许多isa扩展组成,因此可以根据应用程序的需求定制cpu。自定义 isa 的命名约定由字母 rv(对于 risc-v)后跟位宽度和变体的标识符组成。例如,rv32imac(如图 2 所示)表示: rv32i:具有基本整数 isa 的 32 位 cpu
m:整数乘法和除法扩展
a:原子指令扩展
c:压缩指令扩展
图 2.rv32imac isa的指令集显示了risc-v的模块化(非增量)特性。必需的基本 isa 与一组扩展名组合在一起
编译器会被告知目标 cpu 中包含的扩展,以便它生成尽可能好的代码。如果代码包含来自缺少扩展的指令,则硬件将捕获并执行标准库中的软件函数。 基本整数 isa
rv32i 基本整数 isa 仅包含 47 条指令,即可实现绝大多数必要的操作,以实现 32 位整数的基本功能(其 64 位变体为 rv64i)。此 isa 以 32 位编码,包括以下说明: 加法 减法 按位运算 加载和存储 跳转 分支
基本 isa 还指定了 32 个 cpu 寄存器(均为 32 位宽)以及程序计数器。唯一的特殊寄存器是x0,它总是读作0,就像以前的risc isa中实现的那样。尽管所有寄存器(表2中显示的一些寄存器)都可用于一般用途,但应用程序二进制接口(abi)根据其调用约定为每个寄存器指定了用途。这意味着一些寄存器应该保存临时或已保存的数据、指针、返回地址等。
表 2.rv32i寄存器文件显示risc-v应用二进制接口中指定的硬件寄存器名称及其分配的功能。
risc-v 乘法和浮点
rv32m扩展实现了8条指令,以对整数执行乘法和除法(rv64m在这8条指令中增加了5条指令)。rv32f 扩展为 32 位浮点数和 26 个浮点指令增加了 32 个单独的寄存器。同样,rv32d 扩展使用 32 个 64 位浮点寄存器,支持双精度 64 位浮点数。 risc-v 指令的压缩
rv32c扩展是risc-v isa的一个巧妙的补充,因为它为现有指令的一个特殊子集提供了一种可选的16位编码。
在分析了现代优化编译器生成的无数行代码后,risc-v的创建者确定了最流行的指令,并创建了16位版本,放弃了其完整32位版本的一些功能,无论如何,这些功能仍然在rv32i基础isa中可用。
由于这些指令的存在,这种压缩是可能的:
1.有些寄存器比其他寄存器更受欢迎。
2.通常会覆盖一个操作数。
3.有一些首选的即时值。
这允许将有限数量的寄存器的指令编码为操作数,仅使用2个寄存器而不是3个,使用小的即时值,所有这些都在16位中。
通过压缩最常用的指令,您有更好的机会显着压缩程序。
其他 risc-v 扩展
还有许多其他扩展,它们实现了您可能期望从现代微处理器获得的所有功能。这包括嵌入式基础isa(rv32e),原子操作(a),位操作(b),矢量操作(v)的扩展,等等。
risc-v 实现
有许多公司在其微控制器、微处理器和 soc 中制造 risc-v 内核的所有变体。一个例子是sifive,这是第一家基于risc-v isa制造芯片的公司。他们的芯片范围从低端微控制器一直到高性能soc。
图 3. risc-v框图的一个例子,即p550高性能应用处理器
然而,实际的risc-v项目并不局限于集成电路。在许多领域,如编译器、模拟器、开发环境、操作系统等,正在进行的项目数量都令人印象深刻。有关项目的详细列表,请访问此github (https://github.com/riscvarchive/riscv-software-list) 以了解更多信息。
总而言之,risc-v是计算机架构世界中一个令人兴奋的话题。
吉时利WiMAX测试方案满足IEEE 802.16标准发展的需要
iphone8什么时候上市:iphone8对比iphone7全方位大提升!全面屏+双摄像头+双卡双待+无线充电
智信通:直击厂商渠道下沉痛点,助力汽车新零售全面发展!
为迎击GTX1660Ti AMD将Vega56显卡官降到279美元
关于半导体厂商对于小批量订单的处理方法
RISC-V入门:模块化开放式的ISA CISC和RISC代码区别
微软获向华为出售软件的许可证,华为PC产品可以搭载Windows系统
iOS11和Android O之间有什么差异?我们又该如何选择?
让下载速度更快更稳,华为云CDN多重技术助力网络加速
电动车废旧电池大多当废品卖
安静高效的开关稳压器
用TDA1521自制一台功率续接器,TDA1521 AMPLIFIER
可燃气体报警器设定点为何不是气体爆炸下限
如何才能使用低成本实现非接触式的数据交互
FPGA设计衍生时钟约束和时钟分组约束设置
振动传感器的作用及分类
美国思科完成收购光学芯片制造商Acacia
运动控制器RTEX总线使用入门
虹软开放平台“AI创造营”西安站落幕,深度赋能开发者、助力AI普惠化
如何设计一个小型嵌入式操作系统