基于RISC-V架构的开源处理器及SoC研究综述(一)

    RISC-V是加州大学伯克利分校(University of California at Berkeley,以下简称UCB)设计并发布的一种开源指令集架构,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域。其产生是因为UCB的研究人员在研究指令集架构的过程中,发现当前指令集架构存在如下问题[1]。
   (1)绝大多数指令集架构都是受专利保护的,比如:x86、MIPS、Alpha,使用这些架构需要授权,限制了竞争的同时也扼制了创新。
   (2)当前的指令集架构都比较复杂,不适合学术研究,而且很多复杂性是因为一些糟糕的设计或者背负历史包袱所带来的。
   (3)当前的指令集架构都是针对某一领域的,比如:x86主要是面向服务器、ARM主要是面向移动终端,为此对应的指令集架构针对该领域做了大量的领域特定优化,缺乏一个统一的架构可以适用多个领域。
   (4)商业的指令集架构容易受企业发展状况的影响,比如:Alpha架构就随着DEC公司的被收购而几近消失。
   (5)当前已有的各种指令集架构不便于针对特定的应用进行自定义扩展。
   为此,UCB的研究人员Krste Asanovic、Andrew Waterman、Yunsup Lee决定设计一种新的指令级架构,并决定以BSD授权的方式开源,希望借此可以有更多创新的处理器产生、有更多的处理器开源,并以此降低电子产品成本[2]。

   RISC-V自2014年正式发布以来,受到了包括谷歌、IBM、Oracle等在内的众多企业以及包括剑桥大学、苏黎世联邦理工大学、印度理工学院、中国科学院在内的众多知名学府与研究机构的关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC采用RISC-V架构,这些处理器既有标量处理器,也有超标量处理器,既有单核处理器,也有多核处理器,本文接下来将简单介绍RISC-V架构的基本设计,随后将详细描述目前采用RISC-V架构的开源处理器与SoC。

1 RISC-V简介

1.1 RISC-V基本设计

   RISC-V是一个典型三操作数、加载-存储形式的RISC架构,包括三个基本指令集和6个扩展指令集,如表1所示,其中RV32ERV32I的子集,不单独计算。


   基本指令集的名称后缀都是I,表示Integer,任何一款采用RISC-V架构的处理器都要实现一个基本指令集,根据需要,可以实现多种扩展指令集,例如:如果实现了RV32IM,表示实现了32位基本指令集和乘法除法扩展指令集。如果实现了RV32IMAFD,那么可以使用RV32G来表示,表示实现了通用标量处理器指令集。本文只介绍RV32I的基本情况。

   RV32I指令集有47条指令,能够满足现代操作系统运行的基本要求,47条指令按照功能可以分为如下几类。

   (1)整数运算指令:实现算术、逻辑、比较等运算。

   (2)分支转移指令:实现条件转移、无条件转移等运算,并且没有延迟槽。

   (3)加载存储指令:实现字节、半字、字的加载、存储操作,采用的都是寄存器相对寻址方式。

   (4)控制与状态寄存器访问指令:实现系统控制与状态寄存器原子读-写、原子读-修改、原子读-清零等操作

   (5)系统调用指令:实现系统调用、调试等功能。

1.2 RISC-V的优势

1.2.1 与开源指令集架构比较

   在RISC-V发布之前,实际上已经有几种开源指令级架构,包括SPARC V8OpenRISC,其中SUN发布的开源多核多线程处理器OpenSparcT1OpenSparcT2,以及欧空局的LEON3采用的就是SPARC V8OpenRISC也有同名的开源处理器,在[2]中介绍了RISC-V与前两者的比较,如表2所示。此外,OpenRISC的许可证为GPL,这意味着所有的指令集改动都必须开源。而RISC-V的许可证是较为宽松的BSD License授权。


1.2.2 与商业指令集架构比较
   UCB的研究人员设计了一款采用RISC-V指令集架构的开源处理器Rocket,并且已经成功流片了11次,其中采用台积电40nm工艺时的性能与采用同样工艺的,都是标量处理器的ARM Cortex-A5的性能对比如表3所示。可见Rocket占用更小的面积,使用更小的功耗,但是性能却更优。



(未完待续)

发布了129 篇原创文章 · 获赞 99 · 访问量 46万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览