导读
RISC-V董事长摊牌了,RISC-V不是开源处理器?它当然不是处理器,它是指令集。近日,网络上出现对RISC-V与开源处理器存在误读的文章,让一些读者产生困惑。本文将对处理器的指令集、微架构实现与开源模式等概念以及和RISC-V的联系等进行解读,希望能帮助广大读者更好地理解RISC-V与开源处理器。以下为几个要点:
指令集规范(Specification)和处理器实现(Implementation)是两个不同层次的概念,要区分开。指令集(ISA)是规范标准,往往用一本书或几张纸来记录描述,而处理器实现是基于指令集规范完成的源代码。RISC-V是一个指令集规范。
我们可以基于x86/ARM/ RISC-V指令集,进行处理器微架构设计和实现形成源代码,并通过流片最终形成芯片产品。其中指令集规范与处理器实现的知识产权是独立的,不能混为一谈。(详见第二、三节)
"RISC-V是开源的"表示指令集规范是开源、开放和免费的(open and free),这与x86与ARM指令集有本质不同,但并不是指具体的处理器实现也都是开源免费的。
基于RISC-V指令集规范,既可以由开源社区来开发开源免费版的处理器实现(如Berkeley开发的Rocket核等),也可以有商业公司开发收费授权版的处理器实现(如国内平头哥玄铁910、芯来N200核与优矽渭河WH-32核等)。(详见第三节)
一、关于近期一篇网络文章的分析
近日,网络上出现一篇文章《RISC-V董事长摊牌了,RISC-V不是开源处理器》[1][2],对RISC-V与开源处理器存在一些误读,让一些读者产生困惑。以下针对该文中提到的一些观点进行解读:疑问1:文中提到“RISC-V基金会主席Krste Asanovic澄清了‘RISC-V不是开源的’”,是否属实?
Krste Asanovic 在文章中阐述的是:a)RISC-V是指令集,不是处理器;b)RISC-V不止可以用来做开源处理器,也可以做商用处理器。而 "RISC-V是开源的"这一点从始至终没有改变。一般人对于“开源”的理解,就是公开可获得并且可以免费使用的代码或资料。从这个角度来讲,RISC-V作为一套指令集规范,虽然没有源代码,但它本身确实是开放并且免费的(open and free),这无论对于开源的RISC-V处理器,还是商用的RISC-V处理器都是一样。所以"RISC-V是开源的"这个结论是没有疑问的。此外,RISC-V不仅本身开源,其与整个开源芯片生态的关系也非常 紧密。虽不能说所有基于RISC-V的项目都是开源的(其中一部分是做商用处理器和软件的),但至少都是深度参与和使用开源(处理器芯片或软件)的,甚至可以说RISC-V在特定场景下可以代表整个开源芯片生态。疑问2:基于RISC-V设计的处理器,是否以后需要付费使用呢?
作为一个开放自由免费的指令集,RISC-V支持多种模式的微结构设计(详见本文第三节)。人们既可以基于RISC-V做开源处理器设计,也可以做成商用的处理器(不开源出来,自己卖或者用)。正是RISC-V开放自由的特性,成就了芯片产业的百家争鸣。RISC-V基金会只负责RISC-V指令集规范,既不做微架构设计,也不生产芯片。设计和生产什么样的芯片是其它企业来做的,跟基金会没有关系,开不开源,收不收钱,也跟基金会没关系。Krste Asanovic 只是想告诉大家,RISC-V不止可以做开源处理器,也可以做商业处理器,并非所有的RISC-V处理器都是开源免费的。【注:这里的开源和商业只是从是否开放和收费上来说的,两者性能是可以做到等同的】疑问3:RISC-V源于美国,是否有被管制的风险?
RISC-V指令集是一套开放开源、自由免费的接口规范,并不会受美国管制的影响。但是,基于RISC-V开发的处理器是以商品形式存在的,故而美国企业研制的RISC-V处理器会受到美国出口管制。而美国以外的企业(包括欧洲、中国等)自主研制的RISC-V处理器,则不算是美国商品,故不受美国出口管制条例限制。举例如平头哥自研的RISC-V处理器玄铁910,便不受美国的出口管制影响。此外,历史上TCP/IP协议与如今的RISC-V颇为相似。TCP/IP协议受美国国防部高级研究计划局(DARPA,Defense Advanced Research Projects Agency)资助研发,是开放标准的典范。世界各地基于该协议构建起今天连接几十亿人的Internet,而中国基于TCP/IP协议构建网络,这并没有受到美国的出口管制;中国企业基于TCP/IP研制的交换机与路由器,也并不受到美国的出口管制。最后,2019年11月RISC-V基金会宣布将会把总部搬到瑞士[3],也正是在释放信息,向全世界传达RISC-V坚持开放自由、坚持为全世界服务的理念。
二、什么是指令集,指令集有什么作用?
指令集(ISA):指令集是软件和硬件之间的接口,是一套标准规范(以文档的形式发布),并不具备实体,我们可以根据这套规范去设计处理器芯片和对应的软件系统,并最终形成产品。常见指令集如x86(常见于桌面和服务器)、ARM(常见于移动嵌入式、手机平板等)、RISC-V(异军突起的开放指令集)等[4]。
图1 指令集是软硬件之间的接口
软件和硬件的关系恰如螺母和螺钉。把软件看做是螺母,硬件看做螺钉,那么指令集(ISA)就是螺母和螺钉之间对接的尺寸规范。螺母和螺钉都按照相同的尺寸(也就是同一个规范)去设计,即使是由不同的厂商来生产,也可以保证最终所有的螺母都能拧到螺钉上。如图1所示,指令集向上承载的是整个软件生态,向下则规范了以处理器芯片为代表的整个硬件生态。根据一份指令集规范,设计一款处理器,其上可以运行同样遵循该指令集规范所编写的软件代码。故而,我们在提到指令集的时候,有时候也指的是其背后的整个软硬件生态系统,包括外围芯片、操作系统、编译器和诸多应用软件(浏览器、游戏软件等)。事实证明,每一种芯片在市场竞争中要取得成功,很大程度上取决于其生态系统。
三、RISC-V和开源处理器之间是什么关系?
首先,一个处理器芯片包含了三个层次:指令集(ISA)、微结构设计、产品。指令集(ISA),是规范标准(Specification),常用一本书或几张纸来记录描述;
微结构设计,也常被称为处理器实现(Implementation),是对具体实现,对应的是一种设计方法及其源代码;
产品,是微架构设计的实例化,比如华为基于ARM指令集和Cotex-A76微架构,设计了麒麟990这款芯片。
图2 指令集、微架构设计和产品之间的关系分析
严格意义上来讲,“开源”,是“开放源代码”的缩写,而指令集只是几张纸,是没有源代码的。我们通常提到的开源处理器,是指的微架构设计的代码开源。如图2,进一步将指令集标准与架构设计都分为三类:开放免费(Open & Free)、可授权(Licensiable)、封闭(Closed)。于是,我们可以看到,Intel就属于封闭指令集+封闭设计,ARM属于可授权指令集+可授权设计,但要获得授权价格不菲,往往需要上百万甚至数千万美元 [5]。 RISC-V为全世界提供了开放免费指令集+开放免费设计的选择。根据图2的第一行,我们可以知道只有先有了开源开放的指令集,才有可能有开源开放的微架构设计,即绿色格子。需要强调的是RISC-V本身是一种标准规范,和C/C++语言规范、POSIX系统调用等这些标准是一样的。本身是开放的,谁都可以基于这些标准来实现自己的处理器。但有一点需要厘清的是,即使都是基于开源开放指令集(比如RISC-V),也存在三种不同的商业模式,分析图3第一行,开放免费的指令集(RISC-V)包含了三种模式的微架构设计[5]:开源模式,Berkeley的Rocket Chip、剑桥大学的lowRISC、蜂鸟E203等RISC-V核将RTL级源码也开源,这些设计可归到绿色格子;
授权模式,SiFive公司、晶心科技Andes、阿里平头哥的RISC-V核是可以被授权给第三方使用,但不开源RTL级源码,属于黄色格子;
封闭模式,Google、NVIDIA等企业在内部大量使用RISC-V核作为MCU,但他们不对外开放IP以及源代码,这就属于红色格子。
综上,指令集是开源开放免费的,但是微架构设计既可以选择开源给大家(开源模式);也可以选择收费后授权给其它公司去生产(授权模式);也可以不往外授权,自己拿去生产(封闭模式)。RISC-V提供给了大家完全自由开放的选择。而这里开源模式的绿色格子,便是我们经常说的基于RISC-V的开源处理器设计。
四、为何要做开源处理器?
开源处理器项目的重要性是毋庸置疑的,它将极大降低芯片开发的周期和门槛,使得大家可以专注于增量创新,而不用从头去探索构建一颗芯片,加快迭代周期,并且借助RISC-V的软件生态快速推出市场。研发新的开源处理器项目,设定开源主线,获得更多技术和生态上的优势,对提升国内RISC-V各企业在国际RISC-V产业界的话语权和主导权,至关重要[6]。
五、引用及参考材料
[1] RISC-V董事长摊牌了: RISC-V不是开源处理器;
https://www.toutiao.com/a6800643802252968456/
[2] RISC-V is not an “open-source processor”;
https://riscv.org/2020/02/risc-v-is-not-an-open-source-processor-krste-asanovic-chairman-of-the-board-risc-v/
[3] RISC-V 基金会为寻求技术中立,迁址瑞士;
https://www.infoq.cn/article/ko94LqU9lXblLXGVTamQ
[4] 一些关于RISC-V的质疑与解读;
[5] 远景研讨会纪要:面向下一代计算的开源芯片与敏捷开发;
http://blog.sciencenet.cn/blog-414166-1192579.html
[6] 开放指令集与开源芯片进展报告;
http://crva.ict.ac.cn/documents/OpenISA-OpenSourceChip-Report.pdf
背景简介:本文作者包云岗,中国科学院计算技术研究所研究员、先进计算机系统研究中心主任,中国科学院大学岗位教授,中国开放指令生态(RISC-V)联盟秘书长。主要研究领域为开源处理器与敏捷设计、数据中心体系结构等,主持研制多款达到国际先进水平的系统,相关技术已在华为、阿里、Intel等国内外企业应用。曾获“CCF-Intel青年学者”奖,ARM2018全球研究峰会45分钟特邀大会报告、中科院青年创新促进会优秀会员,获“CCF-IEEE CS”青年科学家奖、共青团中央“全国向上向善好青年”荣誉称号。文章2020年3月9日发表于微信公众号 中国开放指令生态RISCV联盟(关于RISC-V和开源处理器的一些解读),风云之声获授权转载。