查看: 689|回复: 0
收起左侧

开放指令集与开源芯片年度发展报告

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2022-6-21 08:23
  • 签到天数: 2 天

    [LV.1]

    发表于 2021-10-16 00:25:31 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 塞巴斯蒂安 于 2021-10-16 00:23 编辑
    芯片是信息技术的引擎,推动着人类社会的数字化、信息化与智能化。开源芯片是面向下一代计算的芯片设计新模式,是应对摩尔定律逐渐终结的重要技术路线。从计算机体系结构未来技术发展趋势来看,领域专用体系结构DSA(Domain-Specific Architecture)是后摩尔定律时代数量级提升芯片性能与能效的主要途径,开源芯片正是实现DSA并解决DSA碎片化的高效手段。此外,在开源芯片的基础上引入敏捷开发,有望数量级降低芯片设计成本与周期,降低芯片领域创新门槛,有助于我国在芯片设计领域培养优秀人才,繁荣芯片产业,从而保障中国企业的芯片供应链安全。

    为求更好地厘清当前开放指令集与开源芯片的发展态势,本文首先分析开源芯片设计与传统芯片设计的不同之处,并调研当前主流开放指令集RISC-V和MIPS的发展历史、开放生态和商业模式等内容。此外,本文还将详细描述芯片的前后端设计流程,并重点分析芯片设计的关键组成部分(IP核、EDA和系统软件等)的开源发展现状。本文还将通过一个真实案例说明基于Chisel的芯片敏捷开发效率比基于Verilog的传统方式高一个数量级,这可以大幅缩短芯片的开发周期,从而大大降低芯片的设计成本和风险。最后,本文将总结建立开源芯片生态所面临的挑战、机遇以及发展方向。

    1前言

    1.1背景

    芯片是信息技术的引擎,推动着人类社会的数字化、信息化与智能化。随着摩尔定律濒临终结,维持芯片技术创新面临挑战。开源芯片设计将是应对挑战的新思路。

    如今芯片设计动辄需要上亿研发费用、投入上百人年,只有少数企业才能承担[1]。反观互联网领域通过开源软件降低开发门槛,创造了繁荣的互联网产业。如果开源芯片设计能将芯片设计门槛降低几个数量级——3-5人的小团队在3-4个月内,只需几万元便能研制出一款有市场竞争力的芯片,必将吸引大量人员投入芯片产业,重塑繁荣。

    加州大学伯克利分校开发的开放指令集RISC-V[2,3]朝着这个目标迈出了第一步,它希望像开源软件生态中的Linux那样,成为计算机芯片与系统创新的基石。但是只有RISC-V又远远不够,还需要开发基于RISC-V的开源工具链、开源IP、开源SoC等才能形成完整的开源芯片生态,这需要更多支持开源芯片的力量参与和贡献。

    尽管开放指令集与开源芯片还处于初期发展阶段,但已经得到各界的越来越多的关注并付诸行动。除了RISC-V生态的快速成长,其他指令集也加入到开放开源队伍中,例如Wave Computing于2018年12月17日宣布开放其MIPS指令集架构。

    为了更好地厘清当前开放指令集与开源芯片的发展态势,本文梳理开源芯片生态与芯片敏捷开发现状与未来面临的挑战与机遇,编制了《开放指令集与开源芯片年度发展报告》。

    1.2内容概述

    本报告主要包括九方面内容:
    • 第1章介绍开放指令集与开源芯片的背景以及报告基本内容概述;
    • 第2章综述传统芯片设计的现状与开源芯片总体趋势;
    • 第3章集中介绍RISC-V开放指令集生态现状;
    • 第4章介绍MIPS开放生态现状,并与RISC-V进行了对比;
    • 第5章分析开源芯片发展现状以及芯片敏捷开发案例;
    • 第6章介绍建立开源芯片生态的挑战、机遇以及发展方向;
    • 第7章分析了开源项目的风险及其对策建议;
    • 第8章为报告总结。

    希望通过本报告能为社会各界更了解开放指令集与开源芯片有所帮助。在此,更希望呼吁更多的中国企业、工程师与学者投身开源芯片设计行动,携手推动开放指令芯片发展,共创开源芯片生态黄金时代!

    2开放指令集与开源芯片的兴起

    2.1芯片设计高门槛现状


    芯片领域的创新门槛之高、投入之大业内公认。设计与制造一款芯片涉及多个环节,包括EDA开发环境搭建、外围IP模块选型、芯片前端逻辑设计、后端物理设计、流片与封装测试等,每个环节都需要巨额的资金与大量的人力投入。

    以28nm工艺研制一款SoC芯片为例,比较完整的EDA工具版权费便超过500万元,购买内存控制器、PCIe控制器等外围IP费用往往高达500~1000万元,流片费用由芯片面积大小而定,但往往也会达到1000万,封装相对便宜,大约需要50万左右。简单估算,研制这款芯片所需要的资金投入便已经超过2000万元。另一方面,芯片的研发往往需要数十位工程师,花上一年的时间来设计与验证,仅工资开销就需要上千万元。但是,芯片设计与验证时哪怕出现一个很小的错误,都有可能导致芯片最终无法工作。不光前期的投入打水漂,还不得不再花上千万元重新流片1。

    芯片领域的高门槛客观上严重阻碍了创新。在互联网领域,得益于开源软件,拥有创新想法的互联网初创公司,往往只需几百万元甚至几十万元,便可以在几个月时间内推出原型产品进行迭代优化。相比而言,芯片领域的初创公司却需要数千万的资金,而且迭代优化的时间周期很长,所以很难想象风险投资人愿意把资金投入到这类初创公司。

    事实上,半导体、大规模集成电路发展的黄金期是上世纪六七十年代,当时芯片规模都很小、成本较低,却又具有很高的收益,吸引了美国、日本、中国台湾等大量优秀的人才投入到半导体领域创办公司,也吸引了大量资本投入到这个领域,但中国大陆错过了这个黄金时代。经过半个世纪的发展,少数发达国家和地区通过市场机制自然地形成了技术积累与产业优势,同时构建了极高的创新门槛,不仅让后来者追赶无望,也让芯片成为他们“卡别人脖子”的利器。

    如今中国的半导体产业要想改变现状,已经很难完全依靠初创企业与风险资本来追赶了,必须通过必要的产业政策来引导。

    2.2传统芯片设计模式

    传统的芯片设计模式是芯片开发者提出芯片设计目标,将需求分解为各个功能模块。通用性比较强的功能模块,比如处理器核、内存控制器、PCIe控制器、网络控制器、存储控制器、视频编解码器等,采取购买商用IP的形式获得。对于领域专用功能模块,可能没有商用IP可以采购或者出于技术保密考虑,采用自己研发的形式完成。在主要功能模块就绪之后,将所有功能模块采用总线形式进行互联。随后进入正常的芯片设计流程,即进行芯片的验证及后端设计开发。

    传统芯片设计模式中包含大量的第三方商用IP并采用商用EDA工具开发,形成极高的开发门槛,极大限制了普通开发者的参与,不利于芯片开发的普及和创新。

    2.3开源软件的启示

    中国的互联网公司在国际上是具有竞争力的。事实上,全世界十大互联网公司中国占了4家,而中国的互联网共享经济、移动支付甚至处于引领世界的地位。

    2016年美国移动支付金额为1120亿美元,而中国则达到了5.5万亿美元,是美国的50倍。2017年11月11日,阿里巴巴“双十一”成交额达到惊人的1682亿(约为260亿美元)。相比之下,美国黑色星期五(2017年11月24日)的网络销售成交额仅为 50.3亿美元。根据阿里提供的数据,“双十一”零时5分22秒,支付宝的支付峰值达到每秒25.6万笔,其数据库处理峰值更是达到每秒4200万次操作,均刷新了全球纪录。相比之下,全球最大的清算组织VISA的交易峰值仅为1.4万笔/秒,支付宝是VISA的20倍。

    中国互联网公司的成功离不开背后强大的技术支持。值得一提的是,中国的互联网公司普遍使用开源软件来构建其业务系统。开源软件,就是一种源代码可以自由获取并在遵循开源协议的规定下,进行自行修改而无需付费的计算机软件。

    对于互联网企业而言,开源软件为它们节省大量的时间与成本(图1)。据统计,常用的开源软件已经构成了一个价值超过150亿美元的开源软件生态,一些开源软件如LAMP(Linux + Apache + MySQL + PHP)组合或MEAN(MongoDB + Express + AngularJS + Node.js)组合,已经成为互联网公司(尤其是初创公司)构建其业务的标配,为企业节省大量的时间与成本,让其可以专注于业务创新上。

    阿里云前总裁章文嵩博士曾在一次演讲中提到,阿里集团因为使用开源软件而节省了大量成本。有了开源软件,当人们想创办摩拜这样的新公司,不再需要从零开始造“轮子”,而是可以在庞大的开源软件库中寻找到合适的模块并根据需要进行合适的修改。比如利用LAMP组合,3~5位开发人员就在几个月时间里快速搭建出一个业务原型。因此,开源软件很重要的意义在于大大降低了互联网创新的门槛。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(1)
    图1. 价值上百亿美元的开源软件栈2

    另一方面,开源软件也可以让中国的互联网产业,在软件技术方面不再面临“卡脖子”问题,从而让中国的互联网企业能与硅谷几乎在同一起跑线上竞争,甚至在共享经济、移动支付等领域更具竞争力。当银行等传统企业还严重依赖于IOE(IBM的小型机、Oracle的数据库、EMC的存储)时,中国的互联网企业却已经用行动证明了“去IOE”的可行性,这一切都得益于中国互联网企业积极拥抱开源软件的实践。

    2.4开放指令集与开源芯片趋势

    和开源软件对于中国互联网产业的作用类似,开源芯片生态如果能形成气候,则会大幅降低芯片领域创新门槛,形成芯片领域的“大众创新”格局。这将会对中国乃至全世界半导体产业产生深远和积极的影响。

    构建开源芯片生态是伟大的理想,加州大学伯克利分校开发的开放指令集RISC-V朝这个目标迈出了第一步。基于RISC-V开放指令集的处理器有可能像Linux那样成为开源芯片生态的基石。但是,只有RISC-V远远不够,还需要开源的EDA工具链、IP模块、工艺库等协同合作,才能真正实现开源芯片生态。

    这正如今天的开源软件生态除了Linux以外,还包括大量构建于Linux之上的其他开源工具与开源软件,例如GCC、LLVM、MySQL、Apache等。RISC-V还只是星星之火,但却已展露出燎原之潜力。从当前发展势头来看,RISC-V很有可能像Linux那样成为主宰世界的开放指令集标准。

    2.5开源芯片的意义与可行性

    经过多年的发展,开源芯片已经具备良好的基础,已经有了比较丰富的开源芯片设计资源。例如,研制一款180nm工艺的芯片,可以使用开源的Qflow[27],(由Magic、Xcircuit、IRSIM、NetGen、Qrouter等组成EDA工具链),其可使用兼容WISHBONE总线协议的开源IP模块,并有多种180nm开源工艺库供选择,流片费用也并不高。综合起来,研制一款180nm工艺的芯片可能只需要几千美元便可实现,门槛已经大为降低。

    然而,对于中高端的芯片,还缺乏完整的开源芯片设计EDA工具链与工艺库资源。畅想一下,如果全世界也拥有了价值上百亿美元的芯片设计所需的开源EDA工具链、IP模块、工艺库等,使得中高端芯片研制成本降低两个数量级,从数千万元降至数十万元级别,那么芯片领域的创新将像今天的互联网那样层出不穷,这可能为解决中国半导体产业的卡脖子问题提供了一条新思路。

    历史上降低芯片设计门槛的思路曾取得巨大的成功。1980年代初,美国的半导体产业一度落后于日本。更为尴尬的是全美上千所大学中只有不到100 位教授和学生从事半导体相关的研究,人才储备严重不足。

    为了应对这场半导体之争,美国各界都积极采取行动。1981年美国国防部高级研究计划局(DARPA)启动MOSIS项目[9],资助成立一个服务大学和科研机构的专业流片服务机构,隶属南加州大学信息学院。MOSIS提出多项目晶圆MPW(Multi Project Wafer)模式,实现将多个使用相同工艺的集成电路设计放在同一晶圆片上流片,大幅降低了芯片设计与制造成本。近40年来MOSIS为大学和研究机构流了60000多款芯片,培养了数万名学生,缓解了人才匮乏问题。更为重要的是,MOSIS通过降低芯片开发门槛,直接催生了新的商业模式——无晶圆厂模式(Fabless)企业,如英伟达(NVIDIA)、高通(Qualcomm)、博通(Broadcom)和赛灵思(Xilinx)等,它们只需专注于芯片设计(如图23);也启发张忠谋于1987年创办了台积电(TSMC),专注于芯片制造。

    如今通过开源芯片降低芯片设计门槛,也有可能催生出芯片产业领域的新商业模式。因此,开源芯片虽然面临众多困难,但仍是一条值得探索的道路。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(2)
    图2. 1980年代初DARPA资助MOSIS项目,降低芯片设计门槛,催生无晶圆厂模式(Fabless)企业的诞生

    3 RISC-V开放指令集生态现状


    3.1 RISC-V起源


    2010年,加州大学伯克利分校的David Patterson教授与Krste Asanovic教授研究团队正在准备启动一个新项目,需要选择一种处理器指令集。他们分析了ARM、MIPS、SPARC、X86等多个指令集,发现它们不仅设计越来越复杂,而且还存在知识产权问题。于是伯克利的研究团队临时组建一个四人小组,开展一个3个月的暑期小项目——从零开始设计一套全新的指令集!这个小项目的目标是新指令集能满足从微控制器到超级计算机等各种尺寸的处理器,能支持从FPGA到ASIC到未来器件等各种实现,能高效地实现各种微结构,能支持大量的定制与加速功能,能和现有软件栈与编程语言很好的适配。还有最重要的一点就是要稳定——不会改变,不会消失。

    2011年5月,第一版指令集正式发布。该指令集设计非常简单,采用了基础指令集与扩展指令集的方式。基础指令集只包含了不到50条指令,但已经可以用于实现一个具备定点运算和特权模式等基本功能的处理器。扩展指令集提供了一些常用的原子操作指令、浮点运算指令等,用户也可以需要自身需求进行自定义。这样,这套指令集既保留了“简单”这个大优点,又赋予了用户足够的灵活性。伯克利的研究团队在发布时还做了两个重大的决定:

    一是将新的指令集命名为RISC-V(读作RISC-Five),表示为第五代RISC(精简指令集计算机)。图3展示了此前的四代RISC处理器原型芯片。每一代RISC处理器都由David Patterson教授领导与参与。也正是他与学生David Ditzel在1980年发表的那篇经典论文“The case for the reduced instruction set computer”中创造了RISC一词。

    二是将RISC-V指令集彻底开放,使用BSD License开源协议设计了开源处理器核Rocket Core[4,5]。伯克利研究团队认为,指令集ISA作为软硬件接口的一种说明和描述规范,不应该像ARM、PowerPC、X86等指令集那样需要付费授权才能使用,而应该开放(Open)和免费(Free)。他们选择的BSD开源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件发布和销售。因此BSD开源协议对商业集成很友好,很多的企业在选用开源产品时都会首选BSD开源协议。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(3)
    图3 五代RISC 处理器

    于是,一套全新的开放指令集RISC-V诞生了——全世界任何公司、大学、研究机构与个人都可以开发兼容RISC-V指令集的处理器,都可以融入到基于RISC-V构建的软硬件生态系统,而不需要为指令集付一分钱[13,14]。伯克利研究团队对RISC-V寄予厚望,希望它能被应用到各种场合,从微控制器到超级计算机;也希望它能像Linux通过开源成为全世界操作系统的事实标准之一,最终成为全世界处理器指令集的事实标准。

    3.2RISC-V指令集特点

    RISC-V开源的特点保证了它的稳定性,因为它只属于一个开放的、非盈利性质的基金会。而商用指令集的盛衰往往与该商业公司的发展息息相关,历史上由于商业公司倒闭或者被收购而导致其商用指令集消失的例子比比皆是。

    RISC-V最为重要的一个特点是模块化。传统的增量指令集架构设计要求保持向后的二进制兼容,因此新处理器必须负重前行,在实现所有历史设计的基础上实现新的设计,这使得指令集架构的复杂度随时间持续增长。RISC-V的做法是将指令集划分为几个标准的子集,称为扩展,并保持一些基础的扩展(例如RV32I)永远不变。这一约定给编译器和操作系统相关的开发人员提供了稳定的目标。并且这些扩展是可选的,处理器的设计者可以根据需求选择实现不同的扩展,这对于嵌入式应用至关重要。

    RISC-V主要的指令扩展[18]如下:
    • I扩展:整数扩展(RV32I)为RISC-V的基础整数指令集,所有实现都必须支持。RV32I极度精简,仅有38条指令,但是功能齐全,执行通用计算所必须的整数计算、访存、分支以及系统调用等指令一应俱全。处理器仅需支持RV32I,便可以运行完整RISC-V软件栈。
    • M扩展:乘法扩展(RV32M)为RISC-V整数乘除法扩展指令集,M扩展支持整数的有符号以及无符号乘除法运算。
    • F扩展/D扩展:单精度浮点扩展(RV32F)和双精度浮点扩展(RV32D)为RISC-V的浮点指令集。共用一组独立于整数寄存器的浮点寄存器,拥有常规的访存和运算指令,也有一些包括乘加指令在内的融合运算指令,使得运算过程更精简而准确。另外为了有助于数学库的编写,还包括了有助于符号操作的符号注入指令和测试操作数属性的分类指令。F和D扩展没有包括浮点分支指令,取而代之的是浮点比较指令,可以根据浮点数的比较结果设置寄存器的值,并用于条件分支。
    • A扩展:原子扩展(RV32A)为RISC-V的原子操作指令集,为同步操作提供了必要的支持。RV32A扩展为不同的使用场景提供了两种对应的原子操作。其中加载保留(lr)指令和条件存储(sc)指令保证了原子的比较-交换(compare-and-swap)的实现;AMO指令在多处理器系统中的可扩展性比lr和sc更好,可以实现I/O通信中的总线原子读写,从而简化设备驱动,提高I/O性能。
    • G扩展:通用扩展(RV32G)为RISC-V基础整数指令集RV32I 加上标准扩展(M、F、D、A),统称RV32G。
    • C扩展:压缩扩展(RV32C)为RISC-V的压缩指令集。包括了与标准32位RISC-V一一对应的短指令,它们只对汇编器和链接器可见,因此编译器编写者和汇编语言程序员可以忽略它们。以往的ISA设计在重新设计短指令集时,会为处理器和编译器的设计增加负担,而RISC-V通过上述设计避免了这一缺陷。
    • V扩展:向量扩展(RV32V)为RISC-V向量指令集,与其它指令集中的单指令多数据流(SIMD)指令不同的是,RV32V将内部向量寄存器的宽度与指令集解耦,解决了SIMD指令集每一代升级宽度时,带来的上层软件适配问题。向量指令集支持向量计算、向量load/store、向量条件运算等操作。

    与其它指令集一样,RISC-V为操作系统和其它场景提供了更高的权限模式。除了通常的用户模式(U模式)以外,RISC-V架构还包括最底层的机器模式(M模式)和为操作系统提供的监管者模式(S模式)。M模式和U模式的组合可以实现简单的基于地址寄存器比较的内存隔离,而更复杂的基于分页的虚拟内存方案需要依靠S模式来实现。默认情况下,所有异常都会交由M模式处理,但对于那些实现了S模式的系统,RISC-V提供了一套异常委托机制,可以选择性地将中断和同步异常交给S模式处理,完全绕过M模式,从而避免了异常处理效率的降低。

    3.3 RISC-V基金会

    RISC-V基金会(RISC-V Foundation)是一个非盈利性组织,负责RISC-V指令集架构及其软硬件生态的标准化、保护和推广。RISC-V基金会的会员可以参与RISC-V指令集规范以及相关软硬件生态的开发,并决定RISC-V未来的推广方向。

    RISC-V基金会每年举办全球性大会,以整合其广阔的生态系统,探讨RISC-V的最新项目与实现,并推动RISC-V指令集架构的未来发展。大会邀请顶尖科技公司和学术机构,讨论RISC-V的架构、开源实现和商业实现、软件、芯片、向量和安全、应用和加速器、模拟器基础设施等等。

    RISC-V基金会成立于2015年8月,会员条约于2016年12月形成。

    RISC-V基金会遵循的原则包括:
    1)RISC-V指令集及相关标准必须对所有人开放且无须授权;
    2)RISC-V指令集规范必须能够在线下载;
    3)RISC-V的兼容性测试套件必须提供源码下载。


    为了保护RISC-V标准,只有基金会会员可以使用“RISC-V”及相关商标,并且只能用于已经通过RISC-V兼容性测试套件测试的产品。

    基金会的董事会由来自Bluespec、谷歌、Microsemi、英伟达、恩智浦半导体、加州大学伯克利分校和西部数据的七名代表组成。董事会成员的变更须由董事会投票决定。董事会可修改会员条约,须经过三分之二赞成票通过。董事会可决定建立委员会来处理关于RISC-V的具体事务,并任命下属委员会的主席。目前已经建立的委员会包括技术委员会和营销委员会。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(4)
    图4.RISC-V基金会部分成员

    RISC-V基金会目前有超过210名成员,包括机构、学术和个人会员,覆盖25个国家,这些国家占据世界人口的55%。基金会自2015年成立以来,会员数的年增长率超过100%。当前的成员包括:中科院计算所、阿里巴巴、华为、谷歌、镁光、英伟达、高通、三星、西部数据、日立、IBM、联发科、希捷、海力士等。图4展示了RISC-V基金会的部分成员。

    3.4RISC-V 研讨会/峰会

    RISC-V研讨会(Workshop)一共举办了11届,举办了1届峰会(Summit),有来自全球20多个国家的共1100多名参会人员。历届研讨会如表1所示。

    表1.历届RISC-V研讨会
    届数
    时间
    地点
    1
    2015年1月
    美国加州蒙特里万豪酒店
    2
    2015年6月
    美国加州伯克利国际之家酒店
    3
    2016年1月
    美国加州红木海岸Oracle会议中心
    4
    2016年7月
    美国马萨诸塞州麻省理工学院
    5
    2016年11月
    美国加州Google山景园区
    6
    2017年5月
    中国上海交通大学
    7
    2017年11月
    美国明尼苏达州西部数据公司
    8
    2018年5月
    西班牙巴塞罗那
    9
    2018年7月
    印度金奈
    10
    2019年3月
    中国台湾
    11
    2019年6月
    瑞士苏黎世

    RISC-V研讨会的目的是向全社区通报全球各种RISC-V项目的最新活动,并就RISC-V项目的未来步骤达成共识,同时举办训练营提供从RISC-V开发团队了解RISC-V基础架构的机会。研讨会和训练营中,展示了多个RISC-V流片、FPGA板设计和相关软件工具的演示。研讨会的特色是讲座和海报展示,介绍RISC-V社区当时在公开提交期间收集的活动。

    3.5 RISC-V软硬件生态

    芯片技术是信息技术产业链中的重要基石,也是我国大幅落后于国际水平的技术领域之一。发展自主可控的芯片技术,并打破Intel、高通、ARM等芯片巨头的技术垄断,已成为当下亟待解决的问题。

    处理器指令集是软硬件的接口,是构建芯片生态和发展芯片技术的核心部分,其重要性不言而喻。2011年,加州大学伯克利分校发布了开放指令集RISC-V,并很快建立起一个开源软硬件生态系统。由于RISC-V的指令标准清晰,并且开源免授权等特性,在芯片领域受到广泛关注。截止2019年1月,已有包括Google、NVidia等在内的200多个公司和高校在资助和参与RISC-V项目。其中,部分企业已经开始将RISC-V集成到产品中。例如全球第一大硬盘厂商西部数据(Western Digital)最近宣布将把每年各类存储产品中嵌入的10亿个处理器核换成RISC-V;Google利用RISC-V来实现主板控制模块;NVidia也将在GPU上引入RISC-V等。此外,国内阿里巴巴、华为、联想等公司都在逐步研究各自的RISC-V实现;上海市将RISC-V列为重点扶持项目;印度政府也正在大力资助基于RISC-V的处理器项目,使RISC-V成为了印度的事实国家指令集[17]。这表明RISC-V已经逐渐成为芯片设计领域的主流指令集之一,且广受各大厂商青睐。

    RISC-V指令集清晰且开源,与现有商用指令集相比,RISC-V更加精简。此外,RISC-V支持在标准指令集之外,自定义扩展指令集,兼顾了灵活性。目前,基于RISC-V的指令扩展已经发展得颇为丰富,如 SiFive[24]、LowRISC[25]、ORCA[26]等已经发展出了面向矢量化、虚拟化、硬件安全和特定领域加速等的多种扩展指令集,极大提升了RISC-V应对真实场景下应用需求的能力。

    RISC-V的生态系统日趋完善。良好的生态系统对发展芯片技术,以及形成良性可持续的芯片产业循环是至关重要的。与其它开源指令集(如OpenSPARC和OpenPOWER)相比,RISC-V在社区支持方面更完善,支持包括Linux、SeL4、BSD等通用操作系统,支持FreeRTOS和RT-thread等实时操作系统,支持GCC、LLVM等通用编译和调试工具链,支持C/C++、Java、Python、OpenCL和Go等主流编程语言。近年来国内外兴起的RISC-V的研究热潮也将持续完善其生态系统,借助该生态系统,可以使得优秀的RISC-V实现迅速落地并形成产业影响力。

    目前已经出现了面向各种目标设计的开源RISC-V实现(如表2所示)。其中大部分RISC-V实现,如Rocket Core和LowRISC等,面向嵌入式和低功耗的场景应用,采用单发射顺序执行技术,获得良好的性能功耗比。而面向工业级处理器的BOOM[15,16]采用超标量乱序执行技术,性能提升巨大。

    鉴于RISC-V指令集开源、规范清晰、扩展灵活并已经具备完整的生态系统支持,已成为当下芯片技术研究的热点。虽然面向嵌入式场景的RISC-V实现已经百花齐放,但目前还没有一个开源且实用的高性能RISC-V实现来应对复杂场景下的应用需求。为填补此空白,占领未来芯片技术发展的先机,研究可靠实用的高性能RISC-V核心已经迫在眉睫。

    表2.部分开源的RISC-V实现
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(5)
    3.6RISC-V在中国的发展
    3.6.1中国的研究

    在2015年之前,大多数微结构和芯片相关的研究受限于指令集的授权问题而难以开展。随着RISC-V开源开放理念的流行,越来越多的科研项目受益于RISC-V而得以开展。其中有代表性的研究成果介绍如下:

    • RISC-V系统架构创新方向
    中国科学院计算技术研究所先进计算团队开展的标签化RISC-V(Labeled RISC-V)[7,8]属于国内RISC-V的首批研究之一,该项目基于RISC-V来对软件定义体系结构进行探索。该团队也基于RISC-V处理器开展了缓存预取的研究。

    • RISC-V加速器和领域专用处理器领域:
    中国科学院计算技术研究所泛在计算团队开展了基于RISC-V核心的轻量级神经网络处理器的研究,探索了RISC-V核心在物联网设备中的应用,而上海交通大学的北斗导航与位置服务重点实验室则开展了基于RISC-V指令集的基带处理器扩展研究项目。

    • RISC-V安全领域
    清华大学计算机软件研究所团队开展了基于RISC-V的操作系统安全研究,中国科学院信息工程研究所信息安全国家重点实验室团队则开展了基于RISC-V的微结构安全研究。

    3.6.2中国的教育

    RISC-V指令集和体系结构源于UC Berkeley的CS152课程。作为计算机体系结构界殿堂级的存在,UC Berkeley在体系结构教学和教育方面的经验值得国内高校认真学习和借鉴。在国内,RISC-V正被越来越多的高校教师和学生接触和学习。南京大学袁春风老师在开设的《计算机组成原理》课程中尝试使用RISC-V作为课程设计的基础。清华大学的向勇和陈渝老师在操作系统实验课上也把RISC-V作为目标系统。自2016年开始,北京大学的易江芳老师就在计算机体系结构实习课上介绍并尝试进行RISC-V的各级模拟器和FPGA实现。2019年,《计算机组成与设计:软硬件接口》RISC-V中文版即将出版,可以作为各大高校体系结构课程的教材选择,这将为RISC-V在中国高校中的推广起到重要的推动作用。不过,作为经典体系结构的MIPS在计算机相关课程体系中本就占有重要地位,并随着“龙芯”的推广其地位不断加强。在高校和教育界,RISC-V如何能够获得更多的拥趸和青睐,还需要社会各界更多力量的加入和推动。

    3.6.3中国联盟与组织

    随着RISC-V的知名度与关注度不断增加,2018年在中国成立了三家与RISC-V相关的联盟组织。虽其侧重点略有不同,但都在为RISC-V在中国的宣传发展及生态建设凝聚力量。

    1)中国RISC-V产业联盟(简称CRVIC联盟)

    2018年9月20日,中国RISC-V产业联盟[31]宣布成立,上海芯原控股有限公司担任联盟首任理事长单位。中国RISC-V 产业联盟致力于集聚和整合国内RISC-V创新力量,助推RISC-V产业生态的建设,提升中国企业在RISC-V指令集创新、标准制定中的影响力,同时,加快RISC-V的市场推广和产业化应用

    2)中国开放指令生态(RISC-V)联盟 (简称CRVA联盟)

    2018年11月8日,中国开放指令生态(RISC-V)联盟[32]在第五届互联网大会上宣布成立,联盟理事长由倪光南院士担任。CRVA联盟旨在召集从事RISC-V指令集、架构、芯片、软件和整机应用等产业链各环节企事业单位及相关社会团体,自愿组成一个全国性、综合性、联合性和非营利性的社团组织。此联盟将围绕RISC-V指令集,整合各方资源,通过产、学、研、用深度融合,力图推进RISC-V生态在国内的快速发展。

    3)RISC-V基金会中国顾问委员会

    2018年11月8日,在中国乌镇举行的世界互联网大会(World Internet Conference)上,RISC-V基金会(RISC-V Foundation)宣布成立中国顾问委员会[33],将就RISC-V基金会的教育和应用推广战略提供指导。半导体行业资深人士方之熙(Jesse Zhixi Fang)博士被任命为RISC-V基金会中国顾问委员会主席。RISC-V基金会在中国的影响力不断扩大,覆盖超过25个组织机构与大学。

    3.7 RISC-V相关的教材资料

    采用RISC-V CPU作为国内高校软硬件系统类课程的学习研究对象,有助于高校老师和同学充分利用RISC-V生态环境,使用丰富的开源软硬件资源和信息,简化课程建设,有利于打通编译原理、汇编语言、操作系统、计算机组成原理、计算机系统结构等课程,让学生能够更加深入的掌握计算机系统相关的知识。

    目前国内高校对RISC-V的教学和教育相对较少,在普及RISC-V方面落后于企业。在教科书、教材方面,胡振波撰写的《手把手教你设计CPU——RISC-V处理器》是一本介绍通用CPU设计的入门书,以相对通俗的语言系统介绍了CPU和RISC-V架构,可帮助读者理解CPU设计和计算机体系结构。中科院计算所勾凌睿等人翻译了《The RISC-V Reader: An Open Architecture Atlas》一书[18]。英文教材方面,《Computer Organization and Design RISC-V Edition: The Hardware/Software Interface》是一本经典教材。

    在计算机组成原理等硬件课程方面,目前已经有一些大学,如清华大学、江南大学等,基于或部分基于RISC-V进行课程原理和实验内容建设。在编译原理、操作系统等系统软件类课程中,清华大学把RISC-V作为可选的实验硬件平台,用于编译器后端实验和操作系统实验等。

    4MIPS开放生态现状

    4.1MIPS开放计划介绍

    Wave Computing 于2018年12月17日宣布开放其MIPS指令集架构以便半导体公司、开发者以及大学能快速采用MIPS架构用于下一代的SoC芯片的设计开发。Wave Computing是致力于开发AI和深度学习数据流芯片的美国硅谷公司,该公司于2018年6月收购了MIPS公司,开放MIPS指令集是该公司“All in AI”战略的重要组成部分。

    该公司认为,虽然开源指令集以及开源芯片在最近几年发展迅速,但直到现在仍然缺乏达到工业标准的、受到专利保护以及经过硅验证的开源RISC架构。而工业标准的MIPS ISA代表了几十年以来的持续创新,拥有数以千计的设计实现,生产了超过85亿颗芯片,并且以每年10亿颗的速度继续增长。

    MIPS开放计划将会鼓励全球的半导体社区开发新的用于各行业市场的MIPS兼容芯片解决方案。MIPS开放计划将由Wave Computing公司、工业界领先的OEM制造商、合作伙伴、大学以及杰出的技术人员组成的咨询委员会共同主持,将以社区驱动的形式来帮助指导在MIPS架构上的创新。MIPS开放计划也会引入一些经过认证的验证合作伙伴用来帮助确认实现的兼容性以防止架构碎片化。MIPS开放计划将会极大扩展包括全球数以千计的开发者、超过100个的学术机构的现有的MIPS生态环境,这些生态环境将会从第三方工具供应商、软件开发者以及大学获得创造创新的机会。通过MIPS开放计划,MIPS架构的客户也将获得保证,MIPS开发生态环境提供的开发工具、应用软件或者其它增值特性及服务将会与新的实现保持兼容。

    4.2MIPS指令集发展历史及MIPS公司主要产品
    4.2.1MIPS指令集发展历史

    MIPS指令集从1985年第一个版本发布至今发已有30多年历史,其中2014年发布的MIPS Release 6是最新的版本。每个版本的发布时间如表3所示。
    3 MIPS各版本发布时
    版本
    发布时间
    Release 1
    1985年
    Release 2
    2002年
    Release 3
    2010年
    Release 5
    2013年
    Release 6
    2014年

    不仅如此,MIPS架构也在不断演进,其演进路线如图5所示。

    MIPS指令集及架构在2010年以后发展迅速,至2014年的5年时间共发布了3个版本,在传统的整数浮点应用指令基础上逐步增加了多线程、DSP模块、SIMD模块以及虚拟化模块。这也与移动互联网应用的迅速发展时间相吻合,随着应用需求变化,MIPS指令集以及架构也在迅速发展。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(6)
    图5.MIPS架构演进路线

    在MIPS指令集发展过程中,基本上严格保持新版本向后兼容的特点。比如MIPS Release5可以向下兼容之前的所有指令集版本。

    但在最新发布的MIPS Release 6版本中,这种情况发生了变化。这个版本中增加了一些新的指令并对指令集进行了简化,删除了一些不常用的指令,重新排布了指令的编码,空余出了大量的指令槽用于将来的扩展。因此,可以把MIPS Release 6版本看成一个几乎全新的定义。

    4.2.2MIPS公司主要产品

    自2014年发布MIPS R6版本之后,MIPS公司的IP Core产品全面转向MIPS R6版本,形成覆盖高中低不同性能和应用需求的Warrior产品系列,而把R6之前的产品全部归为Classic系列。Warrior产品系列又分为M-Class,I-Class和P-Class三个级别。这三个级别的产品的特性如表4所示。

    表4 Warrior三个级别的产品特性
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(7)
    MIPS公司的IP Core产品主要被应用在人工智能、汽车电子、消费类电子、IoT以及网络等5个市场。其中人工智能是Wave Computing公司既定的方向,其技术方案将加速AI计算的数据流架构与MIPS嵌入式多线程RISC处理器核组合起来。

    总体而言,MIPS架构处理器在大部分行业应用中的市场份额处于下降趋势,即使在MIPS架构的传统优势领域,比如机顶盒、打印机控制器、WIFI路由器、网络处理器等,也已经逐步被ARM架构的处理器所取代。

    从已有信息来看,自2014年MIPS Release 6发布以来,除MIPS公司自己的Warrior产品系列之外,尚无第二个实现MIPS Release 6指令集的芯片。

    4.3 MIPS开放计划特点

    MIPS开放计划包含的内容包括以下IP和技术架构:

    开源的MIPS 32和64位指令集,Release 6版本
    • MIPS SIMD扩展
    • MIPS DSP扩展
    • MIPS多线程技术
    • MIPS MCU
    • microMIPS架构
    • MIPS虚拟化技术

    MIPS公司对MIPS开放计划进行了以下澄清:

    1)此次开放计划仅仅针对MIPS指令集的最新版本,即2014年发布的Release 6版本。在开放计划中,并不包含早期版本(即Release 5或更早期)。不能把MIPS开放计划的授权与早期版本的授权混淆。
    2)如果一个公司开发了一个基于MIPS开放计划授权的实现,可以不需要开源这部分代码。
    3)合作伙伴如果加入MIPS开发计划并且通过认证,有机会把自己的服务放在MIPS开源计划中进行销售。

    从以上信息可以知道,MIPS开放计划并不是开放所有版本的MIPS指令集,而仅仅是最新的MIPS Release 6版本。从MIPS Release 6版本的文档可以知道,该版本并不与早期版本完全兼容,其中的修改甚至包括删除大量不常用指令,将回收的指令槽用于新增加的指令,在一定程度上几乎可以看成是一个全新的指令集。由此可见,MIPS开放计划中的MIPS指令集的初始生态环境并不乐观。这也是很少有产品采用基于MIPS Release 6指令集的IP Core的主要原因之一。

    4.4 MIPS开放计划与RISC-V开源计划对比

    MIPS开放计划与RISC-V的开源计划有相似之处,也有不同之处。相对自2010开始发展的RISC-V指令集,MIPS开放计划的中开放的MIPS Release 6(2014年)指令集优势并不明显。与RISC-V指令集致力于全面的开源ISA不同,MIPS开放计划仍然会存在一些商业上的顾虑和一些沉重的历史包袱,显然不如RISC-V的开源计划来得更彻底、更纯粹。

    表5中,对MIPS开放计划和RISC-V开源计划进行了对比。

    总体来看,MIPS开放计划在商业化应用上具有一定优势,但其License形式相对RISC-V具有一定的不确定性,而RISC-V的开源更为彻底,采用较为宽松的BSD License形式。
    表5 MIPS开放计划与RISC-V开源计划对
    项目
    MIPS开放计划
    RISC-V开源计划
    指令集起始时间
    2014年
    (MIPS Release 6)
    2010年
    主导方
    Wave Computing
    公司
    RISC-V基金会
    SIMD/DSP扩展
    虚拟化技术
    多线程技术
    硅验证
    批量商业化应用
    开源实现
    多个
    License形式
    未知
    BSD License

    5 开源芯片发展现状
    5.1 芯片设计流程

    芯片设计总体流程如图6所示,一般可分为前端设计和后端设计两部分,二者之间通过逻辑综合交换网表数据。除此之外,后端设计完成布线阶段以后生成带延迟的网表给前端进行后仿真。下面对芯片的前后端设计流程分别进行介绍。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(8)
    图6.芯片设计总体流程

    5.1.1芯片前端设计流程

    芯片前端设计流程主要有芯片需求分析、硬件架构设计与分析、RTL实现、功能验证(仿真验证)、FPGA验证、逻辑综合、静态时序分析、一致性验证以及时序仿真(后仿真)。

    需求分析主要是了解芯片功能、性能、成本,对后续芯片设计产生指导作用。在确定需求以后进入具体实现流程。

    硬件架构设计与分析完成芯片的高层次架构的分析与建模,为硬件提供一个正确的软件功能模型,更重要的是通过大量的高层次仿真和调试,为RTL实现提供总体性的设计指导。

    RTL实现根据硬件架构设计和分析的结果,完成从高层次描述到使用硬件描述语言(RTL)描述的实现过程。常用的硬件描述语言有verilog[11]、system Verilog[12] 及VHDL[10]等。

    功能验证(仿真验证)是在无硬件延迟的理想情况下,通过大量的仿真,发现电路设计中的各种错误。在功能验证过程中将会使用到各种验证手段,其中形式化验证起到主要作用。功能验证的主要指标是功能覆盖率,覆盖率越大硬件出错的概率越小。

    FPGA验证是将RTL代码映射到FPGA硬件平台上进行验证的方法。因为功能验证的运行速度较慢,不能启动较为复杂的应用(比如操作系统),也不能外接较为复杂的硬件设备(比如显示控制器),即使经过了功能验证(仿真验证),其验证仍然不完全。FPGA具有和ASIC类似的后端设计流程,运行速度相对较快,可以连接大量的外设,更接近实际的ASIC环境,成为芯片验证中的重要环节。

    逻辑综合将RTL代码映射为与工艺库相关的门级网表。这个过程的输入文件为RTL代码、foundry提供的工艺库文件(db)以及由逻辑综合工程师和ASIC工程师共同确定的约束文件(SDC)。逻辑综合完成后输出门级网表(netlist)、标准延时文件(SDF)、工程文件(DDC)以及各种报告。这些报告包括时序报告、面积报告、约束报告、时钟报告和设计违例报告等。经过逻辑综合以后,芯片后端设计可以介入开始芯片后端设计。

    静态时序分析是了解芯片的设计是否满足芯片的时序性能设计要求。静态时序分析从逻辑综合步骤开始,每进行一次调整都要进行时序分析,以确认设计在时序上是否收敛。

    一致性验证用于确认RTL代码和门级网表在功能上是否完全一致。需要进行一致性验证的主要原因是逻辑综合步骤会对生成的网表进行性能优化,有可能对实际电路进行调整,一致性验证用于检查调整后的电路与RTL表示的电路的一致性。

    时序仿真(后仿真)与功能仿真(前仿真)类似,只是将要仿真的RTL换为网表,并且需要加载标准延时文件(SDF)和工艺库仿真模型。该步骤的目的在与观察电路延迟接近实际芯片的条件下,功能是否还能保持正确。

    5.1.2芯片后端设计流程

    芯片后端设计也称为物理设计,将门级网表转换成有功能描述、物理大小定义和位置位置信息的硬件单元,完成所有单元之间的连线,在实现过程中满足芯片设计需求的面积、功耗以及性能等要求。

    芯片后端设计的主要流程有布局、放置、时钟树综合、布线、signoff。

    布局(Floor Plan)阶段需要定义芯片的长宽尺寸、pad或者pin的位置、芯片的时序目标、电源环的宽度以及strap的长度或者宽度等内容。如果芯片中包含锁相环、RAM、寄存器堆等宏单元,还要确定这些宏单元的位置,以及如何摆放能使得走线更顺畅,芯片面积更小等。

    放置(placement)的目的是将所有标准单元放入core area中,并能满足拥塞及时序要求。

    时钟树综合的目的是为了生成满足芯片时序要求的时钟树。芯片中的时钟网络要驱动电路中所有时序单元,因此时钟源端门单元的负载很多,负载延时很大且不平衡,需要插入缓冲器减少负载和平衡延时。时钟网络及其缓冲器构成了时钟树。

    布线是将所有需要连接的线在芯片中形成实际的金属走线。布线中需要满足DRC和LVS等规则检查,不会导致芯片时序变差也不会引入信号完整性问题。此外布线还要考虑可制造性设计(DFM),主要解决在制程中所遇到的一些问题,比如fix antenna、add filler、slot wire、fill nbotch和fill dummy等。

    signoff(签核)是芯片后端设计的最后流程。主要完成一些最后的检查工作。检查芯片是否有时序违例,检查芯片静态功耗、动态功耗和IR drop、检查设计规则如DRC、LVS、ANT、ERC和DFM等,最后还要检查布线完成后的网表与综合后网表的功能一致性。完成signoff检查后即可以进行流片工作。

    5.2 以往开源芯片现状与分析

    芯片开发的投入非常高,表现为投入人员多、开发周期长、芯片流片费用高等。芯片的整个开发流程对EDA软件的依赖极大,没有相应的EDA软件,芯片开发几乎无法开展。这些EDA软件种类繁多,专业性强,价格昂贵,普通个人开发者无法负担。芯片的开发特别是后端设计对foundry的依赖极大,没有foundry的技术资料,几乎很难完成芯片的开发并正常流片。而foundry的技术资料也不会对个人开发者开放,导致熟悉开发流程的研发人员数量稀少。

    除此之外,现在的芯片基本上都以片上系统(System-on-Chip,SoC)的形式出现,芯片上集成了非常多的功能部件,一个芯片开发团队很难把所有的功能部件独立开发出来,会集成很多第三方IP。由于知识产权的问题,这些第三方功能部件可能不能进行开源,也在很大程度上限制了开源芯片的发展。

    从以上分析来看,芯片开发的门槛极高,只有实力雄厚的大公司才能承担,普通个人开发者很难参与,导致开源芯片远不如开源软件发展迅速和普及。事实上,由于芯片开投入大、门槛高、周期长、知识产权复杂导致开源芯片发展极为缓慢。从某种意义上讲,目前并没有完全意义的开源芯片存在,基本上都是以开源IP的形式出现。

    5.3 开源IP

    随着集成电路行业制造工艺的飞速发展,SoC芯片集成度急剧增加,其功能和复杂度也大幅提高。从设计开发难度和上市时间上看,这些特征都对芯片设计人员提出了更大的挑战。目前,设计复用技术已成为解决上述问题的有效方法。根据业界经验,任何逻辑模块如果不作任何修改就可以在十个或更多设计项目中复用,都应以IP(Intellectual Property)核的形式进行开发设计,以供更多开发者使用。基于IP核的设计已成为SoC芯片设计的必由之路。选择满足产品需求,又经过严格硅验证的IP,可大幅降低SoC设计的复杂度和难度,提高投片成功率,加快产品的上市速度。

    IP核是指具有独立知识产权的电路核,用于实现特定的电路功能和结构,一般包括软核、硬核与固核。软核是以FPGA为代表的硬件可编程逻辑器件为目标载体,用硬件描述语言(如Verilog HDL)设计可复用电路。硬核是针对集成电路制造而设计的电路结构掩膜。固核是完成综合后以网表形式存在的文件。以IP核形式设计的各种功能模块具有良好的兼容性和移植性,恰当地复用这些IP核可使设计效率大大提高,降低设计成本和开发周期。

    目前各芯片设计厂商及逻辑模块开发商均提供商用的IP核设计。这些IP核往往集成于相应的芯片开发工具中或单独向用户提供销售,用户无法得到源代码。对于资金短缺的小规模设计团队或个人,这些闭源IP核的使用授权费用大幅增加了设计的成本负担。同时,由于缺少相应厂商的技术支持,完全闭源的IP设计也为系统集成带来了极大困难。即使可以获得技术支持,也需要付出额外的经济代价。

    作为一种推广尝试,自21世纪初开始,国内外一些非盈利组织和个人致力于开源IP核的发展,为芯片设计人员提供遵循开源协议(如GPL)的免费IP核,具有代表性的开源IP组织包括:

    OpenCores[34],著名的OpenRisc处理器核即是OpenCores组织提供的基于GPL协议的开源RISC处理器源码;OpenHW[35], OpenHW社区是赛灵思(Xilinx)大学计划在中国资助的非营利学生社团组织,是Xilinx学生俱乐部的官方网站;以及Design And Reuse[36]等。

    这些开源社区为中小公司、大学及科研院所提供了较为丰富的IP核开源RTL代码资源。上述机构在开源IP核的支持下,可以使用最小的人力和财力投入,完成小规模SoC芯片或科研样片的投片,并加速设计迭代速度。这些社区提供的IP核往往更加关注低端嵌入式应用领域,并主要提供SoC芯片中较为易于实现的低速I/O接口(如UART、SPI、I2C、USB等)。

    另一方面,大学及科研院所受限于流片资金的限制,更多专注于基于FPGA硬件可编程逻辑器件的工程设计与实现。由于开发工具的通用性与设计语言的标准化,面向FPGA的IP核逻辑设计过程基本与器件的硬件结构无关。与此相反,由于使用的制造工艺不同,ASIC设计需要重点关注底层的硬件结构及芯片封装细节,仅凭开源RTL代码无法完成最终的设计。这就造成开源IP核,特别是复杂高速I/O接口IP核(如DDR控制器、PCIe控制器、SATA控制器、网卡控制器等),在被迁移到ASIC设计时,需花费使用者大量额外的时间进行修改和适配,大幅降低了开源IP核的可移植性。

    缺少SoC芯片中最核心的高可用处理器IP核,也是制约设计人员广泛使用开源IP社区的重要因素。由于缺少对整体设计的考量,开源IP社区中发布的I/O接口IP核往往仅针对某一接口内部功能进行优化设计,并未充分考虑与处理器核的整体适配,进而缺少SoC集成支持(如SoC片上总线接口),造成移植开发过程中需要投入大量额外的设计精力。同时,这些开源IP核对应的驱动程序或应用程序软件也比较欠缺,对软硬件系统的集成开发也会造成极大的困难。

    随着开放处理器指令集RISC-V的出现,上述问题已开始得到有效缓解。一大批围绕RISC-V指令集开发设计的开源处理器核心已逐步问世,如 Rocket Core、BOOM和蜂鸟等。这些高质量的开源RISC-V处理器不仅提供处理器IP核本身的实现,还提供完整的配套SoC、详细的FPGA原型平台搭建和软件实例,并支持完整的调试方案。这就使得二次开发用户可以按照其步骤重现出整套系统,轻松将这些处理器IP核应用到具体产品中,有效提升设计复用的效率。

    受RISC-V指令集所引领的开源开放生态影响,其他处理器设计公司也纷纷将其内部的高水平处理器核IP以不同形式开放出来,供开发者使用。ARM为帮助嵌入式设计开发者、初创企业以及OEM厂商能够快速获得其IP而推出了加强版的DesignStart计划[37]。在该计划中,ARM将开放Cortex-M0、Cortex-M3和Cortex-A5及相关IP子系统,并取消了预付授权或者评估费用,改以产品成功量产出货后才收取版税的模式运作,旨在降低开发风险。

    通过上述分析可以看出,由自由开发者主导的开源IP核虽然可在一定程度上为芯片开发者提供设计参考,但因生态本身并不完善,从而在SoC芯片的二次开发过程中引入过多的额外设计开销。本文认为,以处理器核为核心,构建从处理器、内存、I/O接口等开源IP核到相应操作系统、驱动程序软件;并打通逻辑设计到物理设计的闭环设计链,依托有影响力的组织或公司打造完整生态,是开源IP核支撑未来开源芯片设计的必由之路。

    5.4 开源工具链

    在芯片的设计中,EDA(Electronics Design Automation,电子设计自动化)工具是非常重要的辅助设计软件,且价格昂贵,一整套EDA工具可达数百万元,已经成为发展开源芯片的巨大阻碍。故而,人们转而开始研究开源EDA工具,以降低芯片设计门槛,这也是美国的电子复兴计划中的主要目标之一。

    EDA工具贯穿着整个芯片设计流程,包括多个阶段:逻辑编译,综合,优化,布局,布线和仿真等,各阶段之间的松耦合性为开源EDA工具的发展提供了很大空间。目前,开源社区已经孕育出了诸多EDA工具,功能完善且互为补充,借助这些工具已经基本可以满足芯片设计的所有需要,不少创业公司已经在开始使用开源EDA工具链来研发低成本芯片。本文选择了其中较为活跃且知名者,列在了表6中。

    这些开源EDA工具主要分为两类:功能专用和全流程设计。其中功能专用工具的功能较为单一,仅专注于芯片设计流程中的单个或数个阶段,且性能较好。以Icarus Verilog和GTKWave为例,可由Icarus Verilog对RTL代码进行仿真,再交由GTKWave来呈现波形图。此外,功能专用的EDA工具,如Magic等,支持自定义功能,为用户尝试更加高效的布局、布线和路由算法提供了很大空间。全流程设计工具则包含了芯片设计流程中所需要的几乎全部功能,如QFlow,其一般由多个功能专用的EDA工具整合而成,支持从RTL代码到版图的整个芯片设计流程。此外,Electric和gEDA支持可视化IDE设计,进一步优化了设计效率和用户体验。

    6. 知名的开源EDA工具链介绍
    工具
    功能描述
    Xcircuit
    提供可视化的电路原理图设计,且支持跨平台(Linux/Win)
    Icarus Verilog[38]
    支持Verilog综合和仿真,且可生成指定格式网表
    Verilator[39]
    综合和仿真工具,且仿真速度较快
    GTKWave
    查看仿真波形的工具
    QRouter
    路由工具
    IRSIM
    门级电路模拟工具
    Magic
    电路布局工具,性能稳定且应用广泛
    Ngspice
    历史悠久的电路仿真工具,孕育了诸多商用SPICE软件
    Electric[40]
    可视化的芯片设计工具
    QFlow[27]
    完整的芯片设计流程工具(松散的工具组合)
    gEDA[41]
    可视化的芯片设计工具
    PCB
    PCB布局和编辑工具

    目前开源EDA工具的发展蓬勃向上,但仍然面临着如下挑战:其一,开源EDA工具在部分关键算法上与商用软件如Cadence、Synopsys等仍有差距,亟需性能更加优秀的算法,这将大幅提升开源EDA工具的可用性,从而吸引更多的使用人群;其二,目前开源的器件库较少且工艺较低,限制了最终设计的芯片的实用性,加强与芯片设计厂商的合作交流,提高器件库的工艺,对设计真实可用的开源芯片至关重要;其三,各开源EDA工具达数十个之多,且互相之间都是松耦合,这虽有利于各EDA工具的独立发展,但也限制了其易用性,故而构建完整高效,灵活可配置,且简单易用的开源EDA工具链非常重要。

    5.5 开源芯片“死结”与突破口

    传统芯片开发的门槛非常高。一次芯片设计流程需要投入20~50人,花费1~2年的时间,同时需要投入几千万元的资金。如果流片失败,投入的时间和成本将会付诸东流,需要承当相当大的风险。

    同时,芯片设计的上述投入之间的关系还存在“死结”(如图7)。具体地,芯片设计本身就需要投入大量的成本,因此开发人员或企业不愿意开源其设计的芯片与IP;这导致无高质量的开源芯片与IP可用,于是企业购买高价的IP;这进一步推高了开发代价,导致企业希望充分验证设计来提高流片的成功率,这又需要投入更多的人力和时间进行验证……如此循环,最终形成了一个死结。

    打破上述“死结”的一种可能的解决方案是芯片敏捷开发——如果芯片设计也能像软件开发一样,3~5人的小团队在3~4个月内, 只需几万元便能研制出一款有市场竞争力的芯片, 就可以大大降低芯片开发的成本和风险。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(9)
    图7 开源芯片“死结”

    5.6 芯片敏捷开发

    在学术界,目前大多数微结构相关的研究还是在模拟器上进行,这是因为基于FPGA的工作周期一般都比较长,例如中科院计算所的标签化RISC-V研究需要花费约半年的时间来完成FPGA原型系统的构建,基于真实芯片设计的研究工作则鲜有听闻。在工业界,芯片的开发周期长达2~3年,其中设计和验证工作需要花费1~2年,投片需要花费约1年。如果流片失败,投入的时间和精力将会付诸东流,风险相当大。因此,如果有办法加快芯片设计的效率,实现芯片的敏捷开发,那么将会对学术研究和芯片产业带来巨大的影响。

    如果通过敏捷开发模式将芯片设计成本降低到几十万甚至几万、开发周期降低到几个月,那么用这种方式开发的IP模块成本也将大幅下降,开发人员将更愿意开源与共享IP模块。

    当芯片开发周期也能从数年缩减为几个月,那将形成一种软硬件协同的敏捷开发模式(如图8),这将颠覆现在的IT产品开发模式。如今,互联网应用开发团队一般有负责手机APP的前端工程师,与负责服务器端的后端工程师配合起来一起开发。而在未来的软硬件协同敏捷开发模式下,开发团队将包括软件端工程师与硬件端工程师——软件端通过几个月开发出新的软件功能,硬件端则用几个月很快实现出相应的加速芯片。这正是两位图灵奖得主John Hennessy与David Patterson在图灵奖演讲中所推崇的领域专用体系结构DSA(Domain-Specific Architecture)的体现。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(10)
    图8. 软硬件协同的敏捷开发模式

    伯克利研究团队在2010年的时候已经考虑到这方面的问题了,他们在2012年的DAC会议上发表了一门新的编程语言Chisel[6]来进行硬件的敏捷开发。Chisel的主要目标是减少项目中的重复代码,提高代码密度,从而提升开发效率、代的可读性和易维护性。编写Chisel代码后,用Chisel编译器将其编译成底层的Verilog代码(网表),可用于标准的ASIC和FPGA流程。需要说明的是,虽然Chisel支持传统硬件描述语言不具备的很多高级特性,但Chisel还是一门硬件构建语言,而不是高层次综合语言。硬件构建语言用于描述电路具体如何构建,而高层次综合语言则用于描述算法的流程。表7中总结了Chisel和传统的硬件描述语言(Verilog和SystemVerilog)之间的对比。

    表7.不同硬件描述语言的特性总结
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(11)
    5.7 敏捷开发案例

    本文将通过两个开发案例,分别从编码效率(开发耗时和代码量)和编码质量(性能、功耗和面积)这两方面,对以Chisel和Verilog为代表的敏捷开发模式和传统开发模式进行对比[42]。

    5.7.1Chisel与Verilog编码效率对比

    中科院计算所包云岗研究员团队曾经由于项目需要,期望尽快实现一个简单的共享二级缓存。该二级缓存无需实现一致性协议的功能,只需要具有缓存功能即可,但需要集成到标签化RISC-V项目[7,8]中并正确运行。团队中的两人分别进行独立开发,具体情况如表8所示。

    参与开发的其中一位是团队中的工程师,他在标签化项目中早期阅读并理解过OpenSPARC T1的二级缓存源代码[20],也修改过赛灵思系统缓存,在其中成功添加基于标签的路划分功能,具有丰富的缓存设计经验。这位工程师使用传统开发模式,选择Verilog语言来开发这个二级缓存,并决定从零开始搭建测试环境,不复用任何代码。他主要开发了6周,编写了约1700行有效代码。遗憾的是,他开发的二级缓存模块在几个月后仍无法在标签化RISC-V项目上成功运行。

    表8.二级缓存开发案例对比
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(12)
    参与开发的另外一位人员是团队中的大四本科生,他做过CPU课程设计,并有9个月的Chisel开发经验,但从未设计过二级缓存。这位本科生使用敏捷开发模式,选择Chisel语言来开发这个二级缓存,并使用Chisel标准库来帮助设计,同时也复用标签化RISC-V项目的测试环境。经过了两天的设计和仿真验证,他就写出了一个可以支持多核Linux启动的二级缓存,有效代码量约350行,只有工程师编写代码的1/5。不过这个二级缓存一开始并不支持不完整的突发读写,导致DMA模式的以太网模块不能正确工作。1周后团队将这个情况反馈给他,他又额外花了1天时间改动了约50行有效代码,添加了对不完整突发读写的支持,并进行仿真验证,最终成功支持DMA模式的以太网模块并正确工作。

    这个案例充分展示了敏捷开发在项目中的优势:运用语言的各种高级特性、复用标准库中已经经过验证的模块来编写易读、易维护、高密度的代码,可以大大提升项目开发的效率。具体到这个案例中,敏捷开发模式的效率是传统开发模式的14倍!由于没有进行代码和环境的复用,这位工程师表示他花费了一半的时间在构建测试环境和编写并测试基本元件(如RAM、队列、仲裁器等)中,而使用Chisel的本科生并没有在这些事情上花费任何时间。不过即使把工程师花费的一半时间排除在效率比较的范围之外,敏捷开发模式的效率仍然是传统开发模式的7倍。实际上代码重用是敏捷开发的一个基本理念,代码的重用率越高,项目开发的效率就越高。

    5.7.2 Chisel与Verilog编码质量对比

    考虑上述案例展示的两个设计,虽然它们的需求是一致的,但不同的开发人员可能会采用不同的实现方式,导致编码质量的可比性不强。为了进一步对比Chisel和Verilog的编码质量,研究团队安排另一位没有Chisel开发经验的大四本科生,让他来把上述Verilog代码中的部分关键模块翻译成功能等价的Chisel代码。在项目中提供了一些测试,用于验证翻译结果的等价性。

    5.7.2.1 逐句翻译

    由于这位本科生一开始并没有Chisel的开发经验,他需要从零开始学习Chisel,并选择最简单的翻译方式:逐句翻译,而不使用Chisel的高级特性。这位本科生表示,他一开始觉得Chisel代码比较难读懂,但是学习并逐句翻译Chisel代码的过程中,他也逐渐感受到Chisel的方便之处,例如丰富的标准库、方便的数据类型系统及其转化机制、简洁的时序逻辑编码风格等,这些特性让他对Chisel有了新的认识。

    表9.Chisel和Verilog的性能、功耗、面积和对比
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(13)
    我们用Chisel编译器把翻译后的Chisel代码编译成Verilog代码(网表),然后对其以及工程师编写的Verilog代码分别进行评估。我们在Vivado 2017.01中,使用xc7v2000tfhg1716-1型号的FPGA,在125MHz的时钟频率下进行评估,结果如表9中第2,3列所示。

    为了评估设计的性能,我们展示了时序报告中的最差负时序余量(worst negative slack,WNS),并将其换算成可运行的最高时钟频率,结果显示Verilog和Chisel最高分别可运行在135.814MHz和136.388MHz的时钟频率下,性能非常接近。

    而两者的功耗则分别为0.770W和0.749W,和Verilog相比,Chisel的功耗节省了2.73%。而为了展示面积开销,我们给出两份设计各自消耗的查找表(lookup table,LUT)和触发器(flip-flop,FF)数量。

    我们对LUT的消耗分成逻辑和存储两部分来统计,和Verilog代码相比,Chisel代码多消耗了13.14%的LUT逻辑,但节省了29.62%的LUT存储,这是因为Chisel标准库提供了RAM相关的基本元件,它与工程师实现的RAM被Vivado分别映射成RAM64M和RAM64X1D这两种不同的原语,其中RAM64M会消耗更多的LUT逻辑,但节约大量LUT存储。

    对于FF,Chisel比Verilog节省了14.72%,这是因为Chisel编译器对代码进行了更进一步的优化。

    从代码量上看,即使是逐句翻译,Chisel也比Verilog节约了23.95%的代码量,这是因为:
    1) 和Verilog的generate特性相比,基于Scala的元编程特性编写出的代码更加紧凑;
    2) 在Chisel中编写时序逻辑无须像Verilog那样声明always块;
    3) Chisel代码不会产生锁存器(latch),无须像Verilog那样补全if和switch的所有分支。

    逐句翻译方式的整体评估结果说明,使用Chisel开发不但节省了代码,编码质量也和Verilog非常接近,在部分指标上甚至优于Verilog。

    5.7.2.2 使用Chisel高级特性

    这位本科生对Chisel上手之后,研究团队让他使用Chisel的高级特性对代码进行重构,包括使用Chisel标准库来实例化RAM和队列等基本元件。研究团队对重构之后的Chisel代码进行评估,结果如表9中第4列(Chisel-opt)所示。令人惊讶的是,和Verilog相比,Chisel-opt的LUT逻辑节省了54.30%,而FF则节省了82.49%!这是因为和工程师编写的基本元件相比,Chisel标准库提供的基本元件更成熟,能使用更少的资源实现相同的功能。由于资源的大幅节省,Chisel-opt的性能也得到了进一步的提升。具体地,可运行的最高时钟频率提升到154.107MHz,与Verilog相比提升了13.47%。除此之外,Chisel的高级特性使得Chisel-opt的代码量更加精简,和Verilog相比,节省了74.92%的代码量。

    这个案例很好地展现了一个敏捷开发的例子:一个本科生的Chisel新手,可以在更短的时间内编写更少的代码,编码质量就能达到和工程师相当的水平,甚至还可以超越工程师。即使编码质量与传统开发有20%的差距,敏捷开发仍然展现了其节省人力和时间的价值:能快速构建一个可以工作的原型,对项目开展来说是非常有意义的。从这点来看,敏捷开发确实大大降低了硬件开发的门槛。

    5.8 Designless设计模式

    今天的半导体行业的分工,最为大家熟知的是Fabless(无晶圆厂)模式,即芯片设计公司负责定义、设计和设计定案,而制造则是在提供代工的Fab完成;三星、Intel等半导体巨头也会走包含从定义到制造所有环节的IDM(Integrated Device Manufacture, 集成设备制造商)模式。此外不少公司是混合Fabless和IDM,即有的产品走Fabless模式,而有的产品走IDM模式,例如Broadcom在CMOS芯片产品线走的是Fabless,而在射频前端模组产品线则是IDM模式有自己的Fab。在今天的半导体行业分工中,设计服务公司提供模块设计IP以及协助一些公司做设计,主要起的是辅助作用。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(14)
    图9  IDM、Fabless和Designless的设计模式

    在现在的AI时代,许多新的公司入局半导体行业,出现了一种新的模式,即AI硬件系统或算法公司负责定义芯片、完成小部分设计、并花钱完成设计定案流片,设计服务公司负责大部分设计,而代工厂负责芯片制造。这种新模式可以称为Designless(无电路设计)模式(如图9所示)。历史上,半导体公司从传统的IDM走到Fabless模式,主要是因为Fab开销过高,成为了半导体公司发展的包袱,而代工厂则提供了一个非常灵活的选项。

    未来的AIOT智慧物联网时代,大量碎片化的应用场景,导致不同应用场景下的系统公司和终端公司会入局半导体芯片,可能会出现Designless模式,把大量设计外包,以节省时间成本。系统公司做芯片,除了追求极致性能之外,还有快速的上市时间。对于他们来说,产品晚上市3个月,错过了产品上市周期节点将会是灾难性的。如果要像传统半导体公司一样,需要从头开始培养自己的前端+后端设计团队,从头开始积累模块IP,恐怕第一块芯片上市要到数年之后。这样的节奏,是跟不上AIOT时代电子产品的快速迭代的节奏。

    那么如何实现高性能加快速上市呢?最佳方案就是这些巨头自己招募芯片架构设计团队做芯片定义,用有丰富经验的芯片工程师来根据需求定制架构以满足性能需求,而具体的实现,包括物理版图设计甚至前端电路设计都可以交给设计服务公司去做。半导体芯片的一个重要特点就是细节非常重要,ESD、散热、IR Drop等一个小细节出错就可能导致芯片性能大打折扣无法达到需求。因此,如果把具体设计工作交给有丰富经验的设计服务公司,就可以大大减少细节出错的风险,从而减小芯片需要重新设计延误上市时间的风险。

    事实上,我们已经在一些芯片中看到一些互联网巨头负责芯片架构+设计服务公司提供IP/设计服务的模式了。一个例子就是微软使用在HoloLens中的HPU,其中微软设计了多核架构以加速AR计算,而每个核则是使用了Cadence的Tensilica IP。另一个例子,华米手环推出了全球可穿戴领域第一颗人工智能芯片“黄山1号”,其中就使用了SiFive 的E30系列 IP。

    历史上,半导体公司从传统的IDM走到Fabless模式,主要是因为Fab开销过高,成为了半导体公司发展的包袱,而代工厂则提供了一个非常灵活的选项,同样到了今天,芯片设计高昂的费用和时间成本,促使了半导体产业又一次分工,即由Fabless模式走向Designless模式。

    6 开源项目风险分析与对策建议

    开源,是指源代码、文档等设计内容开放的开发模式,其版权由开源协议定义。开源用户可依据开源协议自由获取设计内容并根据需求自行修改。开源的主要要素包括开源基金会、开源许可证、开源项目、开源代码托管平台等(图10为各要素之间的关系)。当前,绝大多数开源基金会和开源项目都位于美国,几乎所有开源许可证和代码托管平台也都由美国的学术界和工业界主导。因此,一个需要厘清的问题是那些或隶属于美国开源基金会、或使用美国主导的开源许可证、或存放于美国代码托管平台上的开源项目是否会受到美国的出口管制?
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(15)
    图10 开源要素关系图

    本节针对上述问题开展了调研,分析了美国出口管制(Export Control)条款、司法管辖权(Jurisdiction)、开源许可证(License)的作用范围以及相互之间的关系,进一步具体分析了12个知名开源基金会、6个常用的开源许可证与3个代码托管平台受美国法律的影响,得到以下三点结论与建议:

    1.合理的开源基金会管理办法可以规避美国出口管制。选择开源项目时务必要同时仔细阅读三个声明:所属开源基金会的声明、开源项目本身的声明、所用的开源许可证声明。

    2.开源许可证关联的是知识产权(版权),与出口管制无关。现有常用开源许可证并没有在知识产权层面上对中国进行管制,但不排除未来会出现将使用范围限定在美国的开源许可证的可能。

    3.现有GitHub等代码托管平台默认同意遵守美国的出口管制条例和美国法律,因此代码托管平台同时受出口管制和司法管辖权的限制,是最大的风险。长远来看,中国必须建立开源项目托管平台,并以更开放的方式吸引全世界的开源爱好者。

    最后,本节梳理了国内开源现状。一方面,中国IT企业受益于开源软件,但多数仍以使用开源软件为主,只有少数企业积极主导或参与开源项目,但呈现上升趋势。另一方面,中国开源项目托管平台仍处于起步阶段,与GitHub等国际知名托管平台差距甚大,亟需加强。

    6.1 法律约束

    开源相关的法律约束涉及三类,即出口管制、司法管辖权与开源许可证。

    6.1.1出口管制(Export Control)

    国家出于政治、经济、军事和对外政策的需要,制定的商品出口的法律和规章,以对出口国别和出口商品实行控制。美国的出口管制条例(EAR,Export Administration Regulations)主要规定是否能从美国出口货物到外国,以及是否可以从外国“再出口(re-export)”到另一个外国,其中包含了计算机软硬件。而按照EAR 的规定(734.7b 和742.15b),所有“公开可获得(publicly available)”的源代码(不含加密软件以及带加密功能的其他开源软件),都是不被出口管制的。而“公开可获得”的带加密功能的源代码,虽不会被限制出口,但需登记备案(5D002) [43][44],这也就是ASF网站上的ASF Product Classification Matrix [45]的由来。

    默认情况:开源项目(除含加密功能的开源项目需备案外),都属于“公开可获得”的代码,可以正常使用。

    极端情况下的潜在风险:如果一个开源项目或开源组织声明遵从美国的出口管制条例,此时一旦美国修改EAR,将高性能软件、EDA软件等一些核心基础软件加入到管制中(这并非不可能,2018年11月,美国BIS曾就AI和机器学习等新兴技术是否加入管制名单征求公众意见[55]),并且将目前“备案即不被管制”(这其中包含了ASF几乎所有开源项目),修改为“备案且需要被管制”,那就意味着大量核心开源项目将受到出口管制。

    6.1.2 司法管辖权(Jurisdiction)

    司法管辖权又称为审判权,是指法院或司法机构对诉讼进行裁决和判决的权力[46]。使用网站或注册会员时,如果其使用条款(Terms of Use)或会员条款(Membership Agreement)中指定了司法管辖权的归属,则代表合同双方同意只承认指定的司法机关做出的判决为赔偿的依据。

    极端情况下的潜在风险:如果一个开源项目或开源组织指定了司法管辖权归属于美国某法院,那么所有围绕使用条款展开的纠纷,都将以该美国法院的判决为准。

    6.1.3开源许可证(License)

    开源许可证属于软件许可证的一种,而软件许可证是一种具有法律性质的合同或指导,目的在于规范受著作权保护的软件的使用或散布行为[47,48]。当下常用开源许可证,如BSD、MIT、GPL等都是围绕代码的版权说明,修改后是否可以闭源等问题展开的(早期的开源许可证如MPL 1.1等,在协议中指定了其司法管辖权在美国加州,但现在皆已弃用)。换言之,当下常用的开源许可证保护的是知识产权,其自身与出口管制和司法管辖权并无关联。

    默认情况:开源许可证的作用为保护知识产权,不涉及其他的国家法律层面的条款(如出口管制、司法管辖权等)。

    极端情况下的潜在风险:如果美国NSF、NASA以国防安全为由,制定一个新的开源许可证,限制其资助的所有开源项目只能在美国使用和发布,则美国以外的其他国家将失去这部分开源项目的使用权。国内公司一旦使用,就会侵犯知识产权。

    6.1.4 三者之间的关系

    表1总结了三类法律约束。可以看出,出口管制、司法管辖权和开源许可证之间并无直接联系,它们分别从商品出口、诉讼的审判权和知识产权这三个方面界定了不同的法律约束。

    表1. 法律约束总结
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(16)
    6.1.5 对商业和教育等不同用户的影响

    从出口管制的角度,美国的制裁针对的是威胁到美国国防安全的“政府行为”和“商业行为”,除部分企业外,当前国内部分高校,如北京航空航天大学、电子科技大学、国防科技大学、四川大学和西北工业大学等数所高校已被美国列入实体名单。此外,从知识产权(亦即开源许可证)的角度,部分许可证会区分商业和教育用途,目前尚未发现明确变化。

    6.2 国际开源组织与项目

    一个完整的生态包含开源基金会(组织)、开源项目、开源许可证和代码托管平台等多方面要素,它们各自的条款声明和受到的法律制约都不尽相同。

    6.2.1 开源基金会

    开源基金会管理开源项目,但基金会的管理办法差异较大,而基金会旗下的开源项目也可以选择不同管理办法。详细内容请见本节末附表1。举例:

    •Linux基金会自身的管理办法不受美国出口管制[49],其旗下的项目包括Linux Kernel等默认遵循该管理办法,但其分布式存储项目Ceph明确指定司法管辖权归属美国加州,并要求使用并出口者遵循美国出口管制[50],就属于Linux基金会中的特例;

    •Apache基金会的管理办法明确说明遵循美国出口管制,旗下绝大多数项目如Hadoop、Spark等,在备案(5D002)后即不受出口管制 [45];

    •Mozilla基金会明确声明司法管辖权归属加州。根据前述司法管辖区与出口管制的关系,Mozallia基金会声明司法管辖权,只是表示出现各类纠纷都将以加州Santa Clara的法庭裁决为准[51]。如前所述,这并不表示其管理的开源项目默认受到出口管制。

    •RISC-V基金会隶属于Linux基金会,没有特别声明受美国出口管制,因此RISC-V基金会拥有的RISC-V开放指令集标准并不会受美国出口管制。值得注意的是,RISC-V基金会的会员条款中也指明了其司法管辖权在美国特拉华州[59]。根据前述司法管辖权与出口管制的关系,RISC-V基金会声明司法管辖权,表示所有围绕会员条款产生的纠纷都将交由指定法庭裁决,但并不表示其管理的开源项目默认受到出口管制。

    6.2.2 开源许可证

    本文调研了6个开源许可证,即GPL、LGPL、BSD、MIT、Mozilla、Apache,均未涉及与政府出口管制无关的声明。详细内容请见本节末附表2.

    6.2.3 代码托管平台

    本文调研了3个代码托管平台,即GitHub、SourceForge和Google Code。该三个平台均明确声明遵守美国出口管制条例,并且司法管辖权均在加州(即需按加州法律解决纠纷)。详细内容请见本节末附表3。

    以GitHub为例,GitHub明确声明其GitHub Enterprise Server是被出口管制,不能出口到被制裁国家(如伊朗等)的。至于GitHub网站的普通功能,由于架设在美国的GitHub服务器的上传和下载的行为都需要遵从出口管制和美国法律,所以其正常使用是可能会被管制的。亦即,GitHub上的开源项目代码在遵守项目自身的开源许可证的同时, 也可能作为GitHub上的信息(Information)遵从出口管制和美国法律[60]。表面上看,这两者在是否受到出口管制这一问题上会有一定的矛盾,但根据前文介绍的司法管辖权,最终如何解读取决于美国法院的判决。华为也很可能在此次“实体名单”事件中因为GitHub因素使其访问开源项目受到影响。日前,报告作者通过跟一名伊朗的大学教授邮件咨询得知,GitHub的访问和使用功能在伊朗目前是可用的,但不排除GitHub有在将来限制伊朗访问的可能性。

    开源项目如何规避出口管制风险?存在四种情况,但都需要开源项目发起人或开发者支持与配合:

    •对于已存放于GitHub的开源项目,若同时存放于美国以外其他托管平台,且开发者分别独立提交更新到GitHub与其他托管平台,且开发过程中不从GitHub下载任何信息,那么从美国以外的托管平台获取开源项目不受美国出口管制;

    •对于已存放于GitHub的开源项目,若发起人本地拥有副本,且未从GitHub上下载更新,那么发起人可在美国以外其他托管平台创建开源项目,并将副本上传到该托管平台。此后开发者分别独立提交更新到GitHub与美国以外的托管平台,且开发过程中不从GitHub下载任何信息,那么从美国以外的托管平台获取开源项目不受美国出口管制;

    •对于新启动的开源项目,发起者可在美国以外的托管平台和GitHub上同时创建项目,且开发者分别独立提交更新到美国以外的托管平台与GitHub,且开发过程中不从GitHub下载任何信息,那么从美国以外的托管平台获取开源项目不受美国出口管制;

    •对于新启动的开源项目,发起者可直接在美国以外的托管平台创建项目,其后开发者向该托管平台更新,那么从该托管平台获取开源项目不受美国出口管制。

    6.3 国内开源现状
    6.3.1 开源力量和开源组织

    此次“开源危机”在国内开源各界掀起了轩然大波,这无疑凸显了国内对开源项目的重视。但长期以来,中国用户以使用为主,对开源社区贡献较少。

    近年来,国内开源社区对国际开源项目的贡献已经日趋瞩目,以华为、阿里、百度、腾讯等公司为首的公司和个人已经在国际各开源项目中占据了越来越重要的角色[52][53]。例如华为在Linux Kernel 5.1 中的patch提交数量位居全球第五[56](如图11所示);阿里、腾讯和百度在GitHub上的贡献分列全球第九、十二和十五[57](如图12所示),这都说明了国内各界对开源领域的贡献。

    国内的开源组织也正逐渐走上舞台,例如倡导发展开源芯片的中国开放指令生态(RISC-V)联盟和中国 RISC-V 产业联盟,致力于开源软件的中国开源软件推进联盟,关注开源人工智能等的新一代人工智能产业技术创新战略联盟,聚焦工业4.0 的开源工业互联网联盟,着力于云计算行业的云计算开源产业联盟和中国开源云联盟等,都彰显了国内开源社区蓬勃的生命力。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(17)
    图11 华为在Linux Kernel 5.1 中的patch提交数量位居全球第五[56]
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(18)
    图12 阿里、腾讯和百度在GitHub上的贡献分列全球第九、十二和十五 [57]

    6.3.2 代码托管平台和开源许可证

    近年来,国内的托管平台也正在稳步发展,其中如开源中国的码云[54]和OpenI启智平台[58]等:码云现在已经吸引了数百万的托管项目和开发者的加入,展示出了巨大的发展潜力[61];OpenI启智平台也正在发展代码托管服务,并推动建立了开源社区,积极促进人工智能领域的软硬件开源。

    在开源许可证方面,中国开始重视起来。例如openI启智平台发布的“启智开源许可证 1.1”,也说明了国内对开源项目的知识产权意识正在逐步增强,为将来发展国内主导的开源项目奠定了良好的基础。

    6.4 总结及建议

    其一,合理的开源基金会管理办法可以规避美国出口管制。选择开源项目时务必要同时仔细阅读三个声明:所属开源基金会的声明,项目本身的声明,所用的开源许可证声明。

    其二,开源许可证关联的是知识产权(版权),与出口管制无关。现有常用开源许可证并没有在知识产权层面上对中国进行管制,但不排除未来会出现将使用范围限定在美国的开源许可证的可能。

    其三,代码托管平台同时受出口管制和司法管辖权的限制,是开源最大的风险,因为现有GitHub等平台是默认同意遵守美国的出口管制条例和美国法律的。在开源项目发起人与开发者的支持和配合下,一部分开源项目有可能规避托管平台带来的出口管制。但从长远来看,中国必须建立起自己的开源项目托管平台,发展自身的开源力量,并以更开放的方式吸引全世界的开源爱好者。

    此次“危机”折射出的是国内工业界和学术界对国外开源软件的依赖,一旦美国在法律层面上限制开源项目的使用范围,即使仅对部分核心开源软件进行限制,也会对国内各界产生釜底抽薪式的影响。因此,提倡和发展不受美国出口管制和司法管辖权限制的开源项目,完善中国自己的开源社区与托管平台等开源基础设施,才能更好地解决这个问题。如何探索发展更加开放和自由的开源社区,也将是未来开源各界需要重点思考的问题。

    附表1:开源基金会&组织列表
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(19)
    附表2:开源许可证列表
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(20)
    附表3:代码托管平台
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(21)
    7 挑战、机遇与未来发展方向
    7.1 面临挑战

    开放指令集与开源芯片目前面临以下挑战:
    • 开放指令集与开源芯片同样面临开发门槛高的问题;
    • 开放指令集与开源芯片的稳定性及成熟度还需要通过硅验证及大量的市场应用来进行检验;
    • 开放指令集与开源芯片会面临大量的商业指令集与商业芯片的竞争;
    • 开放指令集与开源芯片还需要探索符合自身特点的商业模式,以便促进其健康发展;
    • 公众对开放指令集与开源芯片的认识和重视程度还不够,一方面需要持续迭代开发来提供高质量的开放产品,另一方面还需要大力加强开放指令集与开放芯片的宣传,让更多的人参与进来。

    7.2 机遇

    开放指令集与开源芯片面临前所未有的历史性机遇。

    首先,从市场需求角度来看,物联网、云计算以及5G的发展将会催生大量的IoT芯片应用需求,这些需求具有应用领域广泛、应用需求千变万化和使用量巨大的特点。除此之外,高速发展的人工智能技术还会推动这些应用需求进一步升级,对芯片的性能、功耗、灵活性提出更高的要求。传统芯片开发模式无论在开发的资金投入门槛、技术投入门槛以及产品开发复用性方面远远不能满足以上需求。在这种需求背景下,只有开放指令集与开源芯片这种全新的开发模式或者商业模式才能更好地满足要求,同时也将会极大推动物联网、云计算、人工智能以及5G应用的推广。可以设想在不久的将来会出现类似在互联网技术中大放异彩以及逐渐成为其发展基石的开源软件技术相对应的开放指令集与开源芯片,后者也将成为蓬勃发展的物联网、云计算、人工智能以及5G等的硬件基础,改变传统芯片的开发及应用模式。

    其次,从技术发展的角度来看,目前已经完全具备发展开放指令集与开源芯片的技术条件。从芯片开发的整个流程来看,在各个关键点都已经有相应的开放产品。其中尤为重要的是RISC-V这种开放指令集以及相应开发实现的出现和发展。除此之外,芯片开发中所需要的各种EDA工具也已经具有相应的开放版本,这些EDA软件目前虽然还达不到商用EDA软件的功能和性能水平,但对普通芯片开发已经足够,相信随着时间的推移以及参与的人越来越多,这些开源的EDA工具将会越来越成熟可靠。而且经过多年的发展,芯片开发中所需要的大部分IP也有相应的开源实现。

    最后,芯片制造工艺的发展已经趋缓,其成本也会逐渐下降(如图10所示),这将会降低开源芯片的制造成本,缩小与商用芯片之间的工艺差距。
    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(22)
    图10. 成熟工艺制造成本会因摩尔定律放缓而自然下降

    7.3 未来发展方向

    开放指令集与开放芯片的主要发展方向有以下几点:
    • 通过推动开放指令集、普及芯片敏捷开发模式、推广开源EDA工具链、开发云平台的应用、成熟工艺选择以及成熟IP积累等多个方向的努力来极大降低芯片开发门槛;
    • 持续开发高性能、高质量的开源芯片,通过大量的硅验证及大量的市场应用持续检验开源芯片,促进其成熟发展;
    • 探索并找到符合开放指令集与开放芯片特点的商业模式,形成可持续发展的模式;
    • 通过宣传让更多的人了解开放指令集与开放芯片,让更多的人参与进来。

    8 总结

    在开源软件生态中,Linux是整个生态的基石。基于Linux,人们开发Python、LLVM、GCC等完整的工具链,创造MySQL、Apache、Hadoop等大量开源软件,实验各种创新思想与技术,逐渐形成一个价值超过150亿美元的开源软件生态。这对中国的互联网产业的意义尤为重大,不仅提升了BAT等互联网企业的技术研发能力,也大大降低了互联网产业创新的门槛,如今3-5位开发人员在几个月时间里就能快速开发出一个互联网应用。

    在芯片设计领域,开源芯片越来越受到关注,涌现出RISC-V、MIPS开放指令集与开源处理器计划,它们有望像Linux那样成为计算机芯片与系统创新的基石。但是只有开放指令集又是远远不够的,更重要的是形成一个基于开放指令集的开源芯片设计生态,包括开源处理器、开源工具链、开源IP、开源SoC等等。

    开源芯片还只是星星之火,却已展露出燎原之潜力。作为全世界最大的芯片用户,中国一直希望能把芯片产业做大做强,各方也都在努力。借鉴开源软件对于中国互联网产业发展的作用,开源芯片设计是一条值得尝试的道路。

    脚注
    1 引自美国DARPA的ERI (Electronics Resurgence Initiative,电子复兴计划) 白皮书
    2 图片来源:Andreas Olofsson, Intelligent Design of Electronic Assets (IDEA),2017.
    3 图片来源:Andreas Olofsson, Intelligent Design of Electronic Assets (IDEA),2017.

    作者简介

    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(23)
    包云岗
    博士,中国科学院计算技术研究所,研究员,博士生导师。从事计算机体系结构方向的基础研究,做出多项创新性成果,发表于ASPLOS、HPCA、ISCA、SIGMETRICS 等国际顶级学术会议。其牵头成立中国开放指令生态(RISC-V)联盟,联合产业界与学术界一起推动开源芯片与芯片敏捷开发行动,旨在降低芯片创新门槛。CCF高级会员,CCF理事,普及工委主任。

    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(24)
    唐丹
    博士,中国科学院计算技术研究所,高级工程师。2010年毕业于中科院计算所获工学博士学位。主要研究方向为计算机体系结构,长期从事高性能处理器I/O系统及超低功耗SoC芯片研究与开发工作。在HPCA和JCST等高水平会议和期刊上发表多篇论文,获得多项国家发明专利。CCF会员。

    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(25)
    张科
    博士,中国科学院计算技术研究所,高级工程师,硕士生导师。主要从事计算机体系结构研究、工程实现和计算机组成原理课程教学等工作。研究兴趣为面向数据中心的异构加速计算及软硬件可编程FPGA云服务系统等。CCF计算机工程与工艺专委委员。

    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(26)
    解壁伟
    中国科学院计算技术研究所,助理研究员,研究方向为计算机体系结构、EDA技术、高性能计算等。CCF会员。

    SiFive FE310单片机应用-开放指令集与开源芯片年度发展报告risc-v单片机中文社区(27) 致谢
    在此特别感谢(按单位拼音序):
    北京大学易江芳副教授,RISC-V基金会中国顾问委员会主席方之熙博士,清华大学陈渝副教授,中国电子信息产业发展研究院集成电路研究所王世江所长,中科院计算所孙凝晖研究员、李华伟研究员、韩银和研究员、常轶松助理研究员、王卅助理研究员、赵然工程师、黄博文工程师、余子濠博士生、刘伯然博士生、颜志远博士生、刘志刚博士生、勾凌睿、李一苇、张旭、张亚杰,中科院上海微系统所郑云龙博士。






    上一篇:Hifive FE310 RISC-V板子原理图
    下一篇:那些年你没有认真看过的开源约束 -- 深度剖析出口管制
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-29 13:31 , Processed in 0.822427 second(s), 48 queries .

    快速回复 返回顶部 返回列表