查看原文
其他

CCCF:包云岗 | 关于RISC-V成为印度国家指令集的一些看法

包云岗 中国计算机学会 2022-05-15

点击上方中国计算机学会轻松订阅!

来源:《中国计算机学会通讯》2018年第1期《专栏》

处理器指令集是软硬件的接口,是核心基础软硬件生态系统的基石,其重要性不言而喻。2011年加州大学伯克利分校发布了开放指令集RISC-V,并很快建立起一个开源软硬件生态系统。很多企业开始将RISC-V集成到产品中,例如全球第一大硬盘厂商西部数据(Western Digital)最近宣布将把每年各类存储产品中嵌入的10亿个处理器核换成RISC-V。印度政府则大力资助基于RISC-V的处理器项目,使RISC-V成为印度的事实国家指令集。本文主要探讨笔者对印度举措以及RISC-V发展态势的一些看法。

国家指令集


2012年,中国曾在工信部的推动下计划制定CPU指令集国家标准。然而,一方面由于国内几家公司选择了不同指令集的国产处理器,各不相让,另一方面从零开始设计一套全新的指令集又让人望而却步,于是国家指令集便逐渐没有了下文。几年过去,如今国内正在研制的处理器所采用的指令集包罗万象,有ARM、MIPS、PowerPC、SPARC、SW64、RISC-V、x86等,应该是全世界最多的了。在国产处理器中,龙芯与申威一直在坚持创建自己的生态系统;基于ARM的海思、飞腾、华芯通与基于x86的海光、兆芯,则希望借助现有的生态系统开拓市场。看似一片繁荣,实则严重分散了本已十分稀缺的基础软件开发力量,导致编译、操作系统等基础软件开发者与爱好者由于精力有限而无法兼顾所有指令集的优化,延缓了自主生态的建设。这种现状还严重影响到计算机专业的本科教学¹。目前的课程体系并没有制定相关标准,很多学校开设的不同课程会让学生使用不同的指令集开展实验,导致学生忙于了解各种指令集汇编语言,而疏于了解指令集本身的设计精髓和指令集与处理器/编译/操作系统之间的联系。


让我们看看邻国印度。2011年,印度开始实施处理器战略计划,在全国范围内资助2~3个研制处理器的项目。印度理工学院马德拉斯分校(Indian Institute of Technology, Madras)的迈德苏丹(G. S. Madhusudan)与卡玛柯帝(V. Kamakoti)教授在该计划支持下启动了SHAKTI处理器项目,目标是研制与IBM PowerPC兼容的处理器。为了获得合法授权,SHAKTI项目组与IBM进行了合作谈判,但始终未能达成一致。与此同时,加州大学伯克利分校推出了一套开放指令集RISC-V,其原型芯片也于2013年1月成功流片²。于是,2013年SHAKTI项目组毅然放弃PowerPC,全面拥抱RISC-V——将项目目标调整为研制6款基于RISC-V指令集的开源处理器核。RISC-V涵盖了32位的单核微控制器、64核64位高性能处理器和安全处理器等多个应用领域。项目目标的临时调整不仅未受到指责,反而得到了政府更大力度的支持,调整后的SHAKTI项目获得了9000万美元的经费支持³。2016年1月,曾长期开展超级计算机研究的先进计算发展中心(Centre for Development of Advanced Computing, C-DAC)获得印度电子信息技术部4500万美元的资助,目标是研制一款基于RISC-V指令集的2GHz四核处理器。在印度政府支持的另一个关于神经形态加速器(neuromorphic accelerator)项目中,也将RISC-V作为计算主核心。过去几年,随着印度政府资助的处理器相关项目都开始向RISC-V靠拢,利出一孔,RISC-V成为了印度的事实国家指令集。


对比中印两国在国家指令集上的举措,笔者为中国CPU未来发展多了一分担忧。这分担忧源自笔者在深度参与RISC-V社区过程中对该开放指令集的了解。在此笔者希望通过介绍RISC-V的起源、现状、发展趋势以及担任第7届RISC-V国际研讨会程序委员会委员过程中的见闻来解读心中的担忧,希望更多感兴趣的同行关注这个话题,更希望有识之士指出笔者观点中的片面与缺漏,证明这是杞人忧天——这反而可以让笔者宽心。

RISC-V起源


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


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


一是将新的指令集命名为RISC-V(读作RISC-Five),表示第五代RISC(精简指令集计算机)。图1展示了此前的四代和第五代RISC处理器原型芯片。每一代RISC处理器都是在同一个人的带领下完成,那就是加州大学伯克利分校的大卫·帕特森(David Patterson)教授。也正是他与学生大卫·迪策尔(David Ditzel)在1980年发表的经典论文“The Case for the Reduced Instruction Set Computer”中创造了“RISC”一词。


图1 大卫·帕特森教授带领研制的五代RISC处理器


二是将RISC-V指令集彻底开放,使用BSD License开源协议。伯克利分校研究团队认为,指令集体系结构(Instruction Set Architecture, ISA)作为软硬件接口的一种说明和描述规范,不应该像ARM、PowerPC、x86等指令集那样需要付费授权才能使用,而应该开放和免费。RISC-V选择的BSD开源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件的发布和销售。


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

质疑中成长


虽然目标远大、愿景美好,但第一版RISC-V发布后并未受到关注,也未能取得预期反响,反而备受多方质疑。一方面,很多学术界人士认为RISC-V指令集毫无技术创新,伯克利分校的教授们就不应该去做这种没有学术创新的事。因此RISC-V相关工作也很难在ISCA这样的一流学术会议上发表。另一方面,工业界对于这种由学术界推出的新指令集也是持观望态度,因为对于商业处理器设计而言,仅仅免费开放指令集还远远不够,很多处理器外围模块(如内存控制器)仍需要支付昂贵的IP授权费。而且开放指令集并不代表性能就好,处理器的性能和一些核心模块(如分支预测器、多级缓存、访存预取器)的具体设计相关,与选择哪种指令集其实并没有多大关系。因此基于RISC-V设计高性能处理器仍可能面临来自现有处理器厂商在核心模块的具体设计和工程实现上的专利壁垒。


面对各方质疑,伯克利分校的研究团队步步为营,采取三大措施予以应对:


首先,将RISC-V从概念直接推进到原型芯片阶段,用原型芯片的实测数据来回应工业界对其性能的质疑。2011年以来,研究团队设计并实现了一个基于RISC-V指令集的顺序执行的64位处理器核心(代号为Rocket),并前后基于45nm与28nm工艺进行了12次流片。Rocket芯片主频大于1GHz,与ARM Cortex-A5相比,实测性能高10%,面积效率高49%,单位频率动态功耗仅为Cortex-A5的43%。这些数据表明,RISC-V Rocket处理器核已具有很好的竞争力。伯克利分校的研究团队又推出了开源的乱序执行核心BOOM(Berkeley Out-of-Order Machine),图2表明其性能可以达到ARM中高端处理器水平。2015年,伯克利分校的研究团队又往前推进了一步,成立了SiFive初创公司,加速RISC-V的商业化进程。SiFive公司的定位和基于Linux开源社区的Red Hat公司、基于Spark开源社区的Databricks公司一样,为用户提供高性能的处理器IP核以及集成了外围部件IP的SoC芯片。


图2 RISC-V处理器核性能横向对比(黄色柱)


其次,在2015年成立非营利组织RISC-V基金会(RISC-V Foundation),旨在凝聚全世界的力量共同构建开放、合作的软硬件社区,打造RISC-V生态系统。两年内,有100多个单位加入了RISC-V基金会(如图3),包括谷歌、华为、IBM、镁光、英伟达、高通、三星、西部数据等国际领军企业以及加州大学伯克利分校、麻省理工学院、普林斯顿大学、苏黎世联邦理工学院(ETH Zurich)、印度理工学院、洛伦兹国家实验室、新加坡南洋理工大学以及中国科学院计算技术研究所等学术机构。这些企业与研究机构可通过RISC-V基金会参与指令集规范的演进以及软硬件生态系统的发展。


图3 RISC-V基金会成员一览(中国共有7个成员,其中1个来自学术界)


第三,加强宣传力度,扩大国际影响力。伯克利分校的研究团队从2015年开始组织举办RISC-V技术研讨会,为RISC-V开发者、使用者、研究者建立一个面对面的技术交流平台。RISC-V研讨会一般为期3天,包含40个左右的技术报告,内容涵盖RISC-V技术更新、软件生态、新兴应用以及前沿研究。2015年1月,第一届RISC-V研讨会召开(到现在已经开了7届)。在每届RISC-V研讨会的现场,与会者总能看到一位和蔼的长者坐在前排,全程出席研讨会。他就是RISC架构的奠基者以及RISC一词的缔造者大卫·帕特森教授。在计算机体系结构界,帕特森教授具有极高的威望,他只要一出现就能吸引众多仰慕者。为了扩大RISC-V的影响力,即便古稀之年,他仍然不遗余力地到世界各地进行宣传。仅在2015年,他就奔赴哈佛大学、普林斯顿大学、康奈尔大学、华盛顿大学、伊利诺伊大学香槟分校、加州大学洛杉矶分校与圣塔芭芭拉分校、新加坡南洋理工大学等多所著名大学,在世界各地做了十几场巡回演讲。他演讲的题目是 “Instruction Sets Want To Be Free: A Case for RISC-V”。他的报告,大大地加强了人们对RISC-V的了解。

伯克利分校的研究团队实施的这一套组合拳,很快让RISC-V成长为一个在全世界具有很高参与度的开源社区。

发展前景


RISC-V的前景如何?笔者经常被问及这个问题。这里笔者打算通过分享担任第7届RISC-V国际研讨会程序委员会委员过程中的见闻与体会,从研讨会组织者的角度来介绍RISC-V的现状与发展前景。


2015年,第1届RISC-V研讨会共有来自33个公司、14所大学的144位与会者。但不到3年时间,RISC-V研讨会就快速膨胀为一个中等规模的会议——2017年11月刚结束的第7届RISC-V研讨会参会人员已达到了500人,包括世界各地的138家企业以及35所大学和研究机构。


第7届RISC-V研讨会的程序委员会一共有8位代表,分别来自全世界一流企业与研究机构,见表1。他们负责征集技术报告、投稿评审等工作。由于笔者所在团队在第6届RISC-V研讨会上汇报的基于RISC-V的标签化体系结构项目(Labeled RISC-V)得到了国际同行的认可与关注,笔者有幸入选第7届RISC-V研讨会程序委员会,深度参与了研讨会的组织工作(图4)。

表1  第7届RISC-V研讨会的程序委员会名单




图4 标签化RISC-V团队与伯克利的帕特森教授和阿萨诺维奇教授⁵


这一届的程序委员会从2017年7月开始每个月召开一次电话会议,讨论研讨会组织方面的进展情况。最终本届研讨会收到了约80篇投稿,主要来自欧美的企业与大学(占90%左右),中国、韩国、印度有少量投稿。


从投稿的内容来看,RISC-V开始在各个维度迅速发展,一个全新的、活跃的软硬件生态系统已初见雏形:(1)投稿单位呈现多样化,除了谷歌、英伟达、西部数据等大公司以及麻省理工学院、华盛顿大学等高校以外,还有很多投稿来自初创公司,格罗方德(Global Foundries)甚至专门为RISC-V定制优化。(2)应用场景呈现多样化,包括用于美国国防部高级研究计划署(DARPA)资助的前沿研究,航天器的宇航芯片设计,面向物联网(IoT)的智能芯片,面向安全的芯片,用作服务器上的主板管理控制器,GPU和硬盘内部的控制器等。(3)软硬件生态在逐渐完善,有相当比例的工作在关注RISC-V外围模块与工具链的设计,比如调试工具链、中断控制器等。另外一批工作则是在移植与优化软件,包括实时操作系统、JVM、LLVM、Python等开发者常用的软件工具。


经过程序委员会的评审与讨论,最终录用了47篇投稿。程序委员会推荐了两个大会主旨报告:一个来自东道主西部数据,其首席技术官马丁·芬克(Martin Fink)给整个RISC-V社区带来一个振奋人心的消息——西部数据产品中,每年使用的10亿个处理器核心,将会替换为RISC-V处理器核⁶。另一个报告是由DARPA的项目主管林顿·萨蒙(Linton G. Salmon)介绍开源硬件IP对于国防的意义。虽然RISC-V已具有显著的优点,但是在理性的DARPA看来还远远不够。因此近几年DARPA加大了这方面的投入,先后资助了5个开源硬件项目(PERFECT、CRAFT、SSITH、POSH、IDEA),部分项目明确指明需要基于RISC-V指令集进行开发。


回到开头的问题,笔者认为RISC-V开源社区已经度过了艰难的起步阶段,正进入快速发展期,前景乐观。首先在控制领域与IoT场景,会涌现出越来越多基于RISC-V的产品和应用案例;其次,软件开源社区方面,会有越来越多的软件针对RISC-V进行适配与优化,比如近期Linux社区宣布Linux 4.15官方内核将支持RISC-V;第三,在基础研究方面,会出现越来越多基于RISC-V的前沿研究,为开源社区培养和输送一批深入了解RISC-V架构的技术人才。事实上,第7届RISC-V研讨会的47个报告中有15个报告来自学术界。而值得一提的是,2017年10月在微体系结构顶级会议MICRO上举办的第1届“基于RISC-V的体系结构研究(CARRV)”研讨会上⁷,RISC-V甚至超过了机器学习主题成为参加人数最多的研讨会。

中国如何应对


鉴于RISC-V的开放性,全世界范围内越来越多国家的政府项目开始选择RISC-V,除了前面提到的印度政府、美国DARPA,还有以色列国家创新局(Israel Innovation Authority)也选择基于RISC-V研制为全国企业服务的处理平台。那么中国该如何应对汹涌而至的RISC-V?事实上,RISC-V已经在国内形成相当的气候:


1. 企业界已开始积极参与RISC-V开源社区,很多企业正在研制基于RISC-V的产品。在RISC-V基金会中,台湾晶心科技是创始会成员,华为是白金会员,此外还有一批企业是银牌会员,如台湾联发科、上海谨嵘科技、西安优矽科技、广东高云等。除此之外,更有一批初创公司在关注和使用RISC-V。


2. 一批爱好者正积极参与RISC-V社区建设。在英伟达公司与上海交通大学的大力支持下,第6届RISC-V研讨会于2017年5月在上海交通大学召开,吸引了近300位与会者。笔者团队正是在此会议上发布了标签化RISC-V。同时,一批RISC-V开发者与爱好者也自发组建起国内社区,目前两个活跃的RISC-V微信群已聚集近千位爱好者。景略半导体公司的郭雄飞、英国剑桥大学的宋威以及台湾大学的黄柏玮更是推出了RISC-V双周简报⁸,收集与整理全世界关于RISC-V的前沿动态并翻译为中文,分享给国内的RISC-V爱好者,目前已经发布了12期。


3. 已有研究机构基于RISC-V开展前沿研究。在徐志伟研究员富有前瞻性的建议下,中科院计算所在2015年RISC-V基金委成立时便与加州大学伯克利分校、麻省理工学院、瑞士苏黎世联邦理工学院、印度理工学院马德拉斯分校一起成为第一批5个学术界创始成员。目前除了笔者所在团队,中科院计算所还有王元陶研究员与张磊副研究员的团队基于RISC-V研制智能IoT芯片,并取得了突破,已在第7届RISC-V研讨会上发布。一些航天院所也早已启动了基于RISC-V处理器的预研项目。


虽然国内关注RISC-V社区的企业与爱好者在不断增加,但仍有很大的进步空间。一方面,目前国内几乎没有在RISC-V开源社区中的贡献者,大部分还是以应用RISC-V为主,无法在社区与生态发展中拥有足够的话语权。另一方面,国内学术界基于RISC-V开展的前沿研究依然偏少。笔者的亲身经历充分证实了RISC-V其实是一个很好的计算机体系结构研究平台,很有可能孕育出颠覆性的体系结构创新。事实上,世界各地的很多一流大学都已经开始基于RISC-V开展体系结构研究。加州大学伯克利分校、麻省理工学院、普林斯顿大学、康奈尔大学、华盛顿大学、英国剑桥大学、瑞士苏黎世联邦理工学院、德州大学奥斯汀分校等在过去7届RISC-V研讨会上已累计发表了70余项前沿研究工作,但中国大陆学术界的工作仅有5项(其中4项来自中科院计算所、1项来自上海交通大学)。

建议与结语


开放指令集RISC-V的远大目标令人钦佩,其成长故事也十分励志。从当前发展势头来看,RISC-V很有可能像Linux那样成为主宰世界的事实指令集标准。幸运的是,它是开放的、免费的;但遗憾的是,对于它的发展目前我们并没有太多话语权。


随着越来越多的国家采用RISC-V作为事实国家指令集标准,一个更深层次的问题是:中国是否应该再次考虑推行指令集国家标准?是基于开放指令集RISC-V,还是重新设计一套指令集?以下是笔者对该问题的粗浅看法:


首先,作为全世界最大的芯片用户,中国一直希望能把国产芯片产业做大做强。各方都在努力,但思路不同,导致目前“军阀割据”的状态,整个产业一盘散沙,严重分散基础软件开发力量。这种局面必须扭转才能形成在国际上有竞争力的芯片产业。因此对于第一个问题,答案是肯定的——有必要考虑推行指令集国家标准


其次,对于选择何种指令集,个人认为没有唯一的答案,基于RISC-V或者重新设计一套指令集均可行。对于前者,RISC-V生态系统已经初步建成,我们需要在生态系统中作出更多的贡献,树立起威信才能争取到更多话语权。另一方面,重新设计一套指令集也并非不可行,因为开放指令集RISC-V给我们两个启发:(1)指令集与芯片具体设计实现可以分离。这就形成了第一个可行性条件——国内各家芯片厂商可以采用统一的、免费的开放指令集,但各个厂商可以有各自的内部模块实现,并可以申请专利予以保护。这样既可以构建同一个软件生态系统,又可以保持芯片企业之间的独立性。当然也存在一些需要深入研究的技术挑战,例如,如何用尽量小的微架构改动来实现不同的指令集(尤其是特权指令)。(2)如果各方目标一致,推行一套全新的指令集并不是那么困难。2012年国内各方都认为“从零开始设计一套全新的指令集是一项让人望而却步的工作”,但RISC-V就是从一个暑期小项目开始成长起来的,这给予我们很大鼓励与启发,关键还是各方目标需要达成一致,配以RISC-V采取的组合措施,结合国家政策,相信也可以建立起一套基于全新指令集的生态系统。


指令集,事关整个信息产业的基础。在此,笔者抛砖引玉,希望能有更多同行关注与讨论。       

作者介绍








包云岗


CCF高级会员、CCF理事、普及工委主任、本刊编委

中科院计算所研究员

研究方向:计算机体系结构与计算机系统性能分析


脚注


1 感谢中国科学技术大学计算机科学与技术学院张昱副教授提供本科教学方面的案例。


2 流片(tape out),即像流水线一样通过一系列工艺步骤制造芯片。在集成电路设计领域,流片指的是试生产,即电路设计完后,先生产几片几十片,供测试用。如果测试通过,也叫成功流片,就可以大规模制造芯片了。


3 Krste Asanovic, Instruction Sets Want to be Free, 6th RISC-V Workshop, May 2017。


4 四人组由大卫·帕特森(David Patterson)、克尔斯特·阿萨诺维奇(Krste Asanovic)两位教授与安德鲁·沃特曼(Andrew Waterman)、Yunsup Lee两位博士生组成。


5 图4的右二为清华大学徐崴教授,他是帕特森教授的学生。


6 Martin Fink, RISC-V: Enabling a New Era of Open Data-Centric Computing Architectures, Keynote of 7th RISC-V Workshop, Nov. 2017。

7 The 1st Workshop on Computer Architecture Research using RISC-V. https://carrv.github.io/。


8 RISC-V双周简报,https://cnrv.io/。


中国计算机学会   

微信号:ccfvoice           

长按识别二维码关注我们


CCF推荐

【精品文章】


点击“阅读原文”加入CCF。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存