RISC-V架构的演变

随着苹果基于ARM的硅和新的RISC-V CPU的推出,对于CPU开发来说,这是一个令人兴奋的时刻,尽管开发人员的旅程目前对后者来说有点坎坷。

我最喜欢的理论是,没有发生是孤独的,而只是重复了以前发生过的事情,也许经常发生过。

马克·吐温认为,生活有重演的倾向。我们可以在苹果Macintosh的CPU架构变化中看到这一点的证据,如图1所示,1994年,最初的CISC(复杂指令集计算机)摩托罗拉68000被RISC(简化指令集计算机)摩托罗拉PowerPC取代。这反过来又在2005年被CISC Intel x86取代,并在2020年推出了基于ARM CPU的Apple Silicon,从而回归了RISC。

在2005年至2020年期间,英特尔x86作为笔记本电脑、台式机、企业服务器和HPC机器的首选CPU的主导地位似乎无懈可击,尽管ARM在移动设备中占据主导地位。此外,在此期间,我们看到了企业服务器和HPC域中竞争的RISC CPU架构的消亡,如Sun SPARC、MIPS和DEC Alpha,这表明CISC也许是CPU架构的未来。

图片
图1-苹果Macintosh CPU过渡时间线。

然而,对于台式机和笔记本电脑来说,随着基于ARM的Apple Silicon M1片上系统(SoC)的推出,苹果在2020年对这一假设提出了挑战。与之前基于英特尔的版本相比,这不仅使基于M1的MacBook Pro的功耗降低了约90%,而且还将运行时性能提高了约75%[2]。此外,基于富士通ARM的超级计算机Fugaku的推出,在2021年11月的Top500排行榜上排名第一[3],进一步加强了x86作为CISC CPU架构的主导地位的挑战。

虽然Fugaku在2022年6月的Top500榜单中被基于x86的Frontier系统取代,但它仍然位居第2位,并表明ARM将成为x86的重要竞争对手,也许会让RISC成为高性能机器的主导CPU架构。RISC CPU架构比CISC架构更易于实现,需要更小的硅面积,并降低功耗。与CISC架构相比,这可以增加CPU时钟频率和模具上更多的内核,从而提高性能。

虽然领先的SPARC、MIPS和Alpha RISC架构已经倒在一边,使ARM成为x86的主要RISC挑战者,但它并不是唯一获得牵引力的RISC架构。来自加州大学伯克利分校的RISC-V是伯克利RISC CPU架构系列的第五个版本,目前正在引起大量关注。人们普遍认为,这种兴趣是由于RISC-V指令集架构(ISA)是开源的,允许其不受约束地使用。然而,其他CPU架构也是开源的,例如SPARC(OpenSPARC [4])。

RISC-V的关键区别在于其ISA是模块化的。目前有五个已批准的基ISA:RVM0(弱内存排序)、RV32I(基32位整数)、RV32E(只有16个寄存器的基32位基)、RV64I(基64位整数)和RV64E(只有16个寄存器的基64位整数)。如图2所示,还定义了一些ISA扩展[5],包括支持单精度和双精度浮点(分别为“F”和“D”),压缩指令(“C”)和矢量指令(“V”),使CPU设计人员能够选择基本ISA和扩展,以提供满足其需求的特定功能。例如,RV32E基础ISA只支持16个寄存器,而不是32个寄存器,通过相应的功率降低,节省了大约25%的核心硅面积[6]。这对于需要非常低功耗的电池供电的嵌入式或边缘设备是有益的。由于这些是单独的扩展,GCC和LLVM/Clang等编译器提供了根据需要选择这些扩展的任意组合的选项。这种模块化方法不仅为硬件制造商提供了更大的灵活性,还允许在不影响现有ISA规范的情况下创建和批准新的扩展。

图片
图2:基础RISC-V ISA和扩展[7]。

 

目前有一些嵌入式和低端RISC-V CPU/SoC可用,如64位Allwinner D1(基于XuanTie C906)和64位四核SiFiveU740。还有大量的软核,从RV32E(例如PicoRV32)到RV64GC(例如XuanTie C910和Andes X45)的变体。

然而,RISC-V ISA扩展的萌芽性质给开发人员带来了一些困难。例如,“V”矢量扩展,通常称为“RVV”,于2021年9月下旬在1.0版本中被冻结。虽然这是一个伟大的里程碑,但它与以前的RVV版本不兼容的事实是不幸的,因为目前唯一可用的支持RVV的硬CPU,C906,使用不兼容的v0.7规范。由于GCC和LLVM / Clang编译器都针对冻结或批准的ISA扩展,在这种情况下是RVV v1.0,开发人员无法使用主线编译器版本针对D1提供的矢量支持,并被迫依赖XuanTie开发的GCC v8.4。不幸的是,这不再从制造商那里公开提供,但可以从爱丁堡大学的DataShare网站下载[8]。当针对C906设备(如Allwinner D1)时,使用XuanTieGCC编译器生成矢量化代码可以获得明显的运行时性能优势,如一些RAJAperf[9]基准内核的图3所示[10]。

图片
图3:矢量化RISC-V与标量代码的相对运行时性能[10]。

利用Allwinner D1矢量化支持的另一种方法是使用RVV v1.0到v0.7回滚工具[11],该工具由Joseph Lee博士开发,作为ExCALIBUR H&ES RISC-V测试台项目的一部分[12]。在这里,主线GCC和LLVM/Clang编译器可用于自动编码,该工具将生成的RVV v1.0汇编语言“.s”文件转换为RVV v0.7“.s”源文件。然后由XuanTieGCC编译器组装,以生成对象“.o”文件/二进制文件,以在基于Allwinner D1的板上执行。

虽然这仍然需要使用XuanTie GCC编译器,但原始源代码是使用最新的主流编译器版本编译的。有关使用RVV回滚工具的更多信息以及有关汇编RISC-V矢量代码的一般信息,请参阅RISC-V测试台网站[13]。

更一般地说,已经提供了RISC-V测试台,以支持那些希望在当前可用的RISC-V硬件上测试其代码的研究人员。目前,测试台在贫民窟集群中拥有24个RISC-V内核,2023年4月和5月将有额外的板,使核心总数达到72个。您可以使用网站上概述的步骤申请访问RISC-V测试台[14]。

当我们考虑20世纪90年代末和21世纪初的原始RISC架构的全盛时期,以及目前基于RISC的ARM和RISC-V CPU架构的兴起时,Mark Twain似乎是对的。

正文完


[1] M.吐温和F。Strothmann,跳跃的青蛙。哈珀,1903年。[在线]。可用:

https://books.google.co.uk/books?id=ld\_3LPm8FKkC

[2]“MacBook Pro(英特尔)与MacBook Pro(M1 Pro/Max)”,Macworld.

https://www.macworld.com/article/668176/macbook-pro-intel-vs-macbook-pr...(4月访问。07,2023)。

[3]“2021年11月|TOP500”。https://www.top500.org/lists/top500/2021/11/(4月访问。07,2023)。

[4]“OpenSPARC资源概述”。https://www.oracle.com/servers/technologies/opensparc-overview.html(4月访问。07,2023)。

[5]“规格-RISC-V国际”。

https://riscv.org/technical/specifications/(4月访问。07,2023)。

[6] F.Embeddev,“RISC-V指令集手册,第一卷:RISC-V用户级ISA”,Five EmbedDev。

https://www.five-embeddev.com//riscv-isa-manual/latest/rv32e.html(4月访问。07,2023)。

[7] R.Quinnell,“使用RISC-V创建自定义处理器”,EE Times Europe,2019年3月29日。

https://www.eetimes.eu/creating-a-custom-processor-with-risc-v/(4月访问。07,2023)。

[8] J.Lee,“支持矢量扩展的RISC-V GNU编译器工具链”,2023年3月,doi:10.7488/ds/3831。

[9] 'LLNL/RAJAPerf'。劳伦斯利弗莫尔国家实验室,2023年3月31日。访问时间:4月。07,2023。[在线]。可用:https://github.com/LLNL/RAJAPerf

[10] J.Lee,“基准更新”,ExCALIBUR H&ES RISC-V测试台,2023年3月29日。http://riscv.epcc.ed.ac.uk/success/benchmarks/(4月访问。07,2023)。

[11] J.李,“RISCVtestbed/rvv-rollback”。RISC-V测试台,2023年3月22日。访问时间:4月。07,2023。[在线]。可用:https://github.com/RISCVtestbed/rvv-rollback

[12] N.布朗,J.Lee和M。Jamieson,“ExCALIBUR H&ES RISC-V测试台”,ExCALIBUR H&ES RISC-V测试台。

http://riscv.epcc.ed.ac.uk/(4月访问。07,2023)。

[13] J.Lee,“编译矢量代码”,ExCALIBUR H&ES RISC-V测试台,2022年11月23日。

http://riscv.epcc.ed.ac.uk/issues/compiling-vector/(4月访问。07,2023)。

[14] N.布朗和J。Lee,“申请访问”,ExCALIBUR H&ES RISC-V测试台,4月。2023年5月5日。http://riscv.epcc.ed.ac.uk/documentation/access/(4月访问。07,2023)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 远程登录

Linux 远程登录 Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。 这时我们就需要远程登录到Linux服务器来管理维护系统。 Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 2…

C++QT教程1——QT概述(下载与安装)

文章目录 1 Qt概述1.1 什么是Qt1.2 Qt的发展史1.3 Qt版本1.4 Qt的下载与安装下载地址:其实我是有点懵逼的,因为还有个qtcreator,我差点不知道下哪个。。。(qt框架比qtcreator功能更多更强大) 安装 1.5 Qt的优点1.6 QT成…

SpringBoot + Docker 实现一次构建到处运行~

一、容器化部署的好处 图片 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行…

[数据分析大全]基于Python的数据分析大全——Numpy基础

目录 一、前言二、NumpyNumpy数组 二、创建数组初始化占位符 三、输入、输出3.1 保存与载入文本文件3.2 保存与载入磁盘上的文件 四、数据类型五、数组信息六、调用帮助七、数组计算7.1 算数运算7.2 比较7.3 聚集函数 八、数组复制九、数组排序十、子集、切片、索引相关实现10.…

深入大B行业,什么是最有力的敲门砖?

引言:2023上半年, 能扛过外部环境各种变化, 这样的科技公司就很不容易了。 【全球云观察 | 热点关注】在当前后疫情时代下,全球经济增长处于的低增长期,这对所有科技企业的发展带来了直接影响。 有业内人…

win10 2022unity设置中文

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言解决方法 前言 在Edit->preferences里找不到language选项。 解决方法 【1】打开下面地址 注意 :把{version}换成你当前安装的版本,比如说如果…

SpringBoot第33讲:SpringBoot集成ShardingJDBC - 基于JPA的读写分离

SpringBoot第33讲:SpringBoot集成ShardingJDBC - 基于JPA的读写分离 本文是SpringBoot第33讲,主要介绍分表分库,以及SpringBoot集成基于 ShardingJDBC 的读写分离实践 文章目录 SpringBoot第33讲:SpringBoot集成ShardingJDBC - 基…

天津最新python培训班就业形势 python能就业吗?

小编认为Python是一门非常适合学习的编程语言,无论性别如何。它易于学习、功能强大,并且在各个领域都有广泛的应用,因此,性别不应该成为学习Python的障碍,那么学习Python是否就能找到满意的工作呢? 这是一…

吃瓜教程-Task05

目录 支持向量机 间隔与支持向量 SVM基本型 对偶问题 kkt条件 例子 对偶问题 例子 对偶问题原理解释 软间隔与正则化 替代损失函数 支持向量回归 例子 支持向量机 间隔与支持向量 在样本空间中,划分超平面可通过如下线性方程来描述: 样本空间中任意点x到…

数据结构【哈夫曼树】

哈夫曼树 哈夫曼树的概念哈夫曼树的构造构造算法的实现哈夫曼树应用哈夫曼编码哈夫曼编码的算法实现 哈夫曼树的概念 最优二叉树也称哈夫曼 (Huffman) 树,是指对于一组带有确定权值的叶子结点,构造的具有最小带权路径长度的二叉树。权值是指一个与特定结…

[原创]从强化学习的本质推导到PPO

前言 这篇博客很久之前就想做了,一直在拖是因为觉得自己对知识点理解还没有足够的透彻。但是每当去复盘基本概念的时候又很难理清逻辑,所以觉得即便现在半吊子水平,但是也想通过博客记录一下自己肤浅的学习心得,权当是为自己巩固…

加拿大量子研究新动作!D-Wave与滑铁卢大学合作研究量子相干性

​ (图片来源:网络) D-Wave是量子计算系统、软件和服务的领导者,也是量子计算机的第一家供应商。近期,D-Wave宣布与滑铁卢大学量子计算研究所(IQC)达成两项新合作。他们为量子计算系统建立了关键…

【计算机网络】网络层协议 -- ICMP协议

文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系!!!5. traceroute命令 1. ICMP协议简介 ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机…

无代码集成明道云与更多应用连接

明道云是一个APaaS平台,可以帮助用户快速搭建个性化企业应用,用户不需要代码开发就能够搭建出用户体验上佳的销售、运营、人事、采购等核心业务应用,打通企业内部数据,也能够通过API和Webhook和其他系统对接。 场景描述&#xff…

libcurl网络库的函数接口使用

文章目录 1、libcurl简介2、libcurl的使用3、函数简介4、 curl_easy_setopt函数部分选项介绍5、curl_easy_perform 函数说明(error 状态码)6、简单实例,包含库文件,头文件即可 1、libcurl简介 libcurl是一个跨平台的网络协议库,支…

消息队列(3) -封装数据库的操作

前言 上一篇博客我们写了, 关于交换机, 队列,绑定, 写入数据库的一些建库建表的操作 这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用 , 并在写完该类之后, 测试代码是否完整 实现封装 在写完上述的接口类 与 xml 后, 我们想要 创建一个类 ,来调用…

uniapp实现支付宝菜单展开与收起

需求实现支付宝类似的效果: 思路: 1.首先建立展开收起按钮,这里使用的是uview里面的icon图标。 2.其次建立展开菜单内容,这里只演示了文本信息,后期引入首页应用。 3.最后写js逻辑,展开收起时改变盒子高度和…

基于STM32设计的出租车计费系统

一、项目介绍 在城市交通中,出租车是一种常见的交通工具。为了方便乘客和司机之间的交易,出租车计费系统被广泛应用于出租车行业。系统能够自动计算乘客的费用,提供准确、方便的计费服务,并且能够记录乘客的行驶数据,…

flink kafka消费者如何处理kafka主题的rebalance

背景: 我们日常使用kafka客户端消费kafka主题的消息时,当消费者退出/加入消费者组,kafka主题分区数有变等事件发生时,都会导致rebalance的发生,此时一般情况下,如果我们不自己处理offset,我们不…

django处理分页

当数据库量比较大的时候一定要分页查询的 在django中操作数据库进行分页 queryset models.PrettyNum.objects.all() #查询所有 queryset models.PrettyNum.objects.all()[0:10] #查询出1-10列 queryset models.PrettyNum.objects.filter(mobile__contains136)[0:10] …