有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 ニコ·ロビン 于 2020-8-10 11:48 编辑
背景
国产芯片能够自主一直是大家共同的期待!但无奈起步较晚,目前的通用计算平台已经是外国企业的天下。 国产自主的芯片不仅仅是在工艺上还达不到目前商用芯片的水平,最底层的CPU指令集架构上也是处处受制于ARM,Intel这样的外国企业。
如果国家自己定义一套指令集架构没有太大意义,因为处理器架构必须是全球范围的一个通用架构,必须获得生态支持。 国产芯片自主之路还有很长,但并不是毫无机会。RISC-V指令集架构便是一个很好的机会。
RISC-V和其他开放架构有何不同如果仅从“免费”或“开放”这两点来评判,RISC-V架构并不是第一个做到免费或开放的处理器架构。 在开始之前,我们先通过论述几个具有代表性的开放架构,来分析RISC-V架构的不同之处以及为什么其他开放架构没能取得足够的成功。
0.1 平民英雄——OpenRISC
OpenRISC是OpenCores组织提供的基于GPL协议的开放源代码RISC处理器。
OpenRISC具有以下特点:
采用免费开放的32/64位 RISC架构。 用Verilog HDL(硬件描述语言)实现了基于该架构的处理器源代码。
具有完整的工具链。 OpenRISC被应用到很多公司的项目之中。可以说,OpenRISC是应用非常广泛的一种开源处理器实现。
OpenRISC的不足之处在于其侧重于实现一种开源的CPU Core,而非立足于定义一种开放的指令集架构,因此其架构的发展不够完整,指令集的定义也不具备上节中提到的RISC-V架构的优点,更加没有上升到成立专门的基金会组织的高度。
OpenRISC更多的时候被认为是一个开源的Core,而非一种优美的指令集架构。 此外,OpenRISC的许可证为GPL,这意味着所有的指令集改动都必须开源(而RISC-V则无此约束)。
0.2 豪门显贵——SPARC
SPARC架构作为经典的RISC微处理器架构之一,SPARC最早于1985年由Sun电脑所设计。 SPARC也是SPARC国际公司的注册商标之一,这家公司于1989年成立,目的是向外界推广SPARC架构以及为该架构进行兼容性测试。
该公司为了推广SPARC的生态系统,SPARC国际公司将标准开放,并授权予多家生产商采用,包括德州仪器、Cypress半导体和富士通等。 由于SPARC架构也对外完全开放,因此,也出现了完全开放源码的LEON处理器。
不仅如此,Sun公司还于1994年推动SPARC v8架构成为IEEE标准(IEEE Standard 1754-1994)。
由于SPARC架构的初衷是面向服务器领域而设计,其最大的特点是拥有一个大型的寄存器窗口,符合SPARC架构的处理器需要实现从72到640个之多的通用寄存器,每个寄存器宽度为64bits,组成一系列的寄存器组,称之为寄存器窗口。
这种寄存器窗口的架构,由于可以切换不同的寄存器组快速地响应函数调用与返回,因此,能够产生非常高的性能,但是这种架构由于功耗面积代价太大,而并不适用于PC与嵌入式领域处理器。
而SPARC架构也不具备模块化的特点,使得用户无法裁剪和选择。
很难作为一种通用的处理器架构对商用的x86和ARM架构形成替代。
设计这种超大服务器CPU芯片又非普通公司与个人所能涉足,而有能力设计这种大型CPU的公司也没有必要投入巨大的成本来挑战x86的统治地位。
随着Sun公司的衰弱,SPARC架构现在基本上退出了人们的视野。
感兴趣的读者请在网络上自行搜索文章《再见SPARC处理器,再见Sun》
0.3 名校优生——RISC-V
关于RISC-V在伯克利大学诞生的经历,本节在此不做重复赘述。
因为多年来在CPU领域已经出现过多个免费或开放的架构,很多高校也在科研项目中推出过多种指令集架构。 因此,当笔者第一次听说RISC-V之时,以为又是一个玩具,或纯粹学术性质的科研项目而不以为意。
直到笔者亲自通读了一遍RISC-V的架构文档,不禁为其先进的设计理念所折服。 同时,RISC-V架构的各种优点也得到了众多专业人士的青睐好评和众多商业公司的相继加盟。
并且2016年RISC-V基金会的正式启动在业界引起了不小的影响。 如此种种,使得RISC-V成为至今为止最具备革命性意义的开放处理器架构。
感兴趣的读者可以在RISC-V基金会的网站上(https://riscv.org/specifications/)无需注册便可免费下载其文档,如图1所示。
RISC-V基金会网站上的架构文档
关于RISC-V架构
RISC-V(读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。
每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David Patterson教授。 其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域。
其产生是因为UCB的研究人员在研究指令集架构的过程中,发现当前指令集架构存在如下问题。
(1)绝大多数指令集架构都是受专利保护的,比如:x86、MIPS、Alpha,使用这些架构需要授权,限制了竞争的同时也扼制了创新。
(2)当前的指令集架构都比较复杂,不适合学术研究,而且很多复杂性是因为一些糟糕的设计或者背负历史包袱所带来的。
(3)当前的指令集架构都是针对某一领域的,比如:x86主要是面向服务器、ARM主要是面向移动终端,为此对应的指令集架构针对该领域做了大量的领域特定优化,缺乏一个统一的架构可以适用多个领域。
(4)商业的指令集架构容易受企业发展状况的影响,比如:Alpha架构就随着DEC公司的被收购而几近消失。
(5)当前已有的各种指令集架构不便于针对特定的应用进行自定义扩展。
为此,加州大学伯克利分校的研究人员Krste Asanovic、Andrew Waterman、Yunsup Lee决定设计一种新的指令级架构,并决定以BSD授权的方式开源,希望借此可以有更多创新的处理器产生、有更多的处理器开源,并以此降低电子产品成本。
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个扩展指令集,其中RV32E是RV32I的子集,不单独计算。
基本指令集的名称后缀都是I,表示Integer,任何一款采用RISC-V架构的处理器都要实现一个基本指令集,根据需要,可以实现多种扩展指令集,例如:如果实现了RV32IM,表示实现了32位基本指令集和乘法除法扩展指令集。
如果实现了RV32IMAFD,那么可以使用RV32G来表示,表示实现了通用标量处理器指令集。
本文只介绍RV32I的基本情况。 RV32I指令集有47条指令,能够满足现代操作系统运行的基本要求,47条指令按照功能可以分为如下几类。
(1)整数运算指令:实现算术、逻辑、比较等运算。
(2)分支转移指令:实现条件转移、无条件转移等运算,并且没有延迟槽。
(3)加载存储指令:实现字节、半字、字的加载、存储操作,采用的都是寄存器相对寻址方式。
(4)控制与状态寄存器访问指令:实现对系统控制与状态寄存器的原子读-写、原子读-修改、原子读-清零等操作。
(5)系统调用指令:实现系统调用、调试等功能。
1.2与商业指令集架构比较
UCB的研究人员设计了一款采用RISC-V指令集架构的开源处理器Rocket,并且已经成功流片了11次,其中采用台积电40nm工艺时的性能与采用同样工艺的,都是标量处理器的ARM Cortex-A5的性能对比如表3所示。
可见Rocket占用更小的面积,使用更小的功耗,但是性能却更优。
|