包云岗:关于RISC-V成为印度国家指令集的一些看法
作者 | 包云岗
本文于2017年11月28日完稿,将在《中国计算机学会通讯》2018年第1期发表。
处理器指令集是软硬件的接口,是核心基础软硬件生态系统的基石,其重要性不言而喻。2011年加州大学伯克利分校发布了开放指令集RISC-V,并很快建立起一个开源软硬件生态系统。很多企业开始将RISC-V集成到产品中,例如全球第一大硬盘产商西部数据(Western Digital)最近宣布将把每年各类存储产品中嵌入的10亿个处理器核换成RISC-V!印度政府则大力资助基于RISC-V的处理器项目,使RISC-V成为了印度的事实国家指令集。本文主要探讨笔者对印度举措以及RISC-V发展态势的一些看法。
一、国家指令集
2012年中国曾在工信部的推动下计划制定CPU指令集国家标准。然而,一方面由于国内几家选择了不同指令集的国产处理器各不相让,另一方面从零开始设计一套全新的指令集又让人望而却步,于是国家指令集便逐渐没有了下文。几年过去,如今国内正在研制的处理器所采用的指令集包罗万象,基于Alpha、ARM、MIPS、PowerPC、SPARC、RISC-V、X86等进行了扩展,应该是全世界最多的了。在这些国产处理器中,龙芯与申威一直在坚持创建自己的生态系统;有基于ARM的海思、飞腾、华芯通与基于X86的海光、兆芯,则希望借助现有的生态系统开拓市场。
看似一片繁荣,但却严重分散了本已十分稀缺的基础软件开发力量,导致编译、操作系统等基础软件开发者与爱好者由于精力有限而无法兼顾所有指令集的优化,延缓自主生态的建设。这种现状还严重影响到计算机专业的本科教学[1],目前的课程体系并没有制定相关标准,于是很多学校开设的不同课程会让学生使用不同的指令集开展实验,导致学生忙于了解各种指令集汇编语言而疏于了解指令集本身的设计精髓、指令集与处理器/编译/OS之间的联系。
让我们看看邻国印度。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指令集的开源处理器核,涵盖了32位的单核微控制器、64核64位高性能处理器和安全处理器等多个应用领域。项目目标的临时调整不仅未受到指责,反而得到了政府更大力度的支持,调整后的SHAKTI项目获得了9000万美元的经费支持[2]。
另一边,2016年1月,曾长期开展超级计算机研究的先进计算发展中心(Centre for Development of Advanced Computing,C-DAC)获得印度电子信息技术部4500万美元的资助,目标研制一款基于RISC-V指令集的2GHz四核处理器。在印度政府支持的另一个关于神经形态加速器(neuromorphic accelerator)项目中,也将RISC-V作为计算主核心。过去几年,随着印度政府资助的处理器相关项目都开始向RISC-V靠拢,力出一孔,RISC-V成为了印度的事实国家指令集2。
对比中印两国在国家指令集上的举措,笔者为中国CPU未来发展多了一分担忧。这分担忧源自于笔者在深度参与RISC-V社区过程中对该开放指令集的了解。在此笔者希望通过介绍RISC-V的起源、现状、发展趋势以及担任第7届RISC-V国际研讨会程序委员会委员过程中的见闻来解读心中的担忧,也希望更多感兴趣的同行关注这个话题。更希望有识之士指出笔者观点中的片面与缺漏,证明这是杞人忧天——这反而可以让笔者更加宽心。
二、RISC-V起源
2010年,加州大学伯克利分校的一个研究团队正在准备启动一个新项目,需要选择一种处理器指令集。他们分析了ARM、MIPS、SPARC、X86等多个指令集,发现它们不仅设计越来越复杂,而且还存在知识产权问题。于是伯克利的研究团队临时组建一个四人小组[3],开展一个3个月的暑期小项目——从零开始设计一套全新的指令集!这个小项目的目标是新指令集能满足从微控制器到超级计算机等各种尺寸的处理器,能支持从FPGA到ASIC到未来器件等各种实现,能高效地实现各种微结构,能支持大量的定制与加速功能,能和现有软件栈与编程语言很好的适配。还有最重要的一点就是要稳定——不会改变,不会消失。
2011年5月,第一版指令集正式发布。该指令集设计非常简单,采用了基础指令集与扩展指令集的方式。基础指令集只包含了不到50条指令,但已经可以用于实现一个具备定点运算和特权模式等基本功能的处理器。扩展指令集提供了一些常用的原子操作指令、浮点运算指令等,用户也可以需要自身需求进行自定义。这样,这套指令集既保留了“简单”这个大优点,又赋予了用户足够的灵活性。伯克利的研究团队在发布时还做了两个重大的决定:
一是将新的指令集命名为RISC-V(读作RISC-Five),表示为第五代RISC(精简指令集计算机)。图1展示了此前的四代RISC处理器原型芯片。每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David Patterson教授。也正是他与学生David Ditzel在1980年发表的那篇经典论文“The case for the reducedinstruction set computer”中创造了RISC一词。
图1. DavidPatterson教授带领研制的五代RISC处理器
二是将RISC-V指令集彻底开放,使用BSD License开源协议。伯克利研究团队认为,指令集ISA作为软硬件接口的一种说明和描述规范,不应该像ARM、PowerPC、X86等指令集那样需要付费授权才能使用,而应该开放(Open)和免费(Free)。RISC-V选择的BSD开源协议给予使用者很大自由,允许使用者修改和重新发布开源代码,也允许基于开源代码开发商业软件发布和销售。因此BSD开源协议对商业集成很友好,很多的企业在选用开源产品时都会首选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,与ARMCortex-A5相比,实测性能较之高10%,面积效率高49%,单位频率动态功耗仅为Cortex-A5的43%。这些数据表明RISC-VRocket处理器核已具有很好的竞争力。
伯克利研究团队又推出了开源的乱序执行核心BOOM(Berkeley Out-of-Order Machine),图2表明其性能可以达到ARM中高端处理器水平。2015年,伯克利研究团队又往前推进了一步,成立了SiFive初创公司,加速RISC-V的商业化进程。SiFive公司的定位和基于Linux开源社区的RedHat公司、基于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月第1届RISC-V研讨会召开,到现在已经成功召开了7届。在每届RISC-V研讨会现场,与会者总能看到一位和蔼的长者坐在前排,全程出席研讨会,他正是前面提到的RISC架构的奠基者以及RISC一词的缔造者David Patterson教授。在计算机体系结构界,Patterson教授具有极高的威望,他只要一出现就能吸引众多仰慕者。为了扩大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)得到了国际同行的认可与关注,笔者有幸入选程序委员会,深度参与了研讨会的组织工作。
表1. 第7届RISC-V研讨会的程序委员会名单
程序委员会从2017年7月开始每个月召开一次电话会议,讨论研讨会组织方面的进展情况。最终本届研讨会收到了约80篇投稿,主要来自欧美的企业与大学(占90%左右),中国、韩国、印度则有少量的投稿。
从投稿的内容来看,RISC-V开始在各个维度迅速发展,一个全新的、活跃的软硬件生态系统已初见雏形:
(1)投稿单位呈现多样化,除了谷歌、英伟达、西部数据等大公司以及麻省理工学院、华盛顿大学等研究机构,很多投稿来自初创公司,甚至还有Global Foundries专门为RISC-V定制优化。
(2)应用场景呈现多样化,包括用于DARPA资助的前沿研究,航天器的宇航芯片设计,面向IoT的智能芯片,面向安全的芯片,用作服务器上的主板管理控制器,GPU和硬盘内部的控制器等。
(3)软硬件生态在逐渐完善。有相当比例的工作在关注RISC-V外围模块与工具链的设计,比如调试工具链、中断控制器等。另外一批工作则是在移植与优化软件,包括实时操作系统、JVM、LLVM、Python等开发者常用的软件工具。
经过程序委员会的评审与讨论,最终录用了47个报告。随后程序委员会推荐了两个大会主旨报告:一个报告来自东道主西部数据,CTOMartin Fink给整个RISC-V社区带来一个振奋人心的消息——每年西部数据产品中使用了10亿个处理器核心,将会替换为RISC-V处理器核[5]!另一个报告是由DARPA的项目主管Linton G. Salmon介绍开源硬件IP对于国防的意义[6]。虽然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)”研讨会[7]甚至超过了机器学习主题成为参加人数最多的研讨会。
五、中国如何应对
鉴于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开发了FPGA原型系统(即标签化RISC-V),得到国际同行包括David Patterson教授与Krste Asanovic教授的关注与认可而入选第7届研讨会程序委员会(图4)。同时,一批RISC-V开发者与爱好者也自发地组建起国内社区,目前两个活跃的RISC-V微信群已聚集近千位爱好者。景略半导体的郭雄飞、英国剑桥大学的宋威以及新加坡南洋大学的黄柏玮更是推出了RISC-V双周简报[8],收集与整理全世界关于RISC-V的前沿动态并翻译为中文,分享给国内的RISC-V爱好者,目前已经发布了13期。
图4. 标签化RISC-V团队与伯克利的Patterson教授和Asanovic教授[9]
3. 已有研究机构基于RISC-V开展前沿研究。在徐志伟研究员的富有前瞻性的建议下,中科院计算所在2015年RISC-V基金委成立时便与加州大学伯克利、麻省理工学院、瑞士苏黎世联邦理工学院、印度印度理工学院马德拉斯分校一起成为第一批5个学术界创始成员。目前除了笔者团队,中科院计算所还有王元陶研究员与张磊副研究员团队在基于RISC-V研制智能IoT芯片,并取得了突破,先后两次在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就是从一个暑期3个月小项目开始成长起来的,这给予我们很大鼓励与启发,关键还是各方目标需要达成一致。然后配以RISC-V采取的组合措施,结合国家政策,相信也可以建立起一套基于全新指令集的生态系统。
指令集,事关整个信息产业的基础。在此笔者抛砖引玉,希望能有更多同行关注与讨论。
致谢:感谢中科院计算所孙凝晖研究员与徐志伟研究员对本文的建议以及RISC-V发展的见解。感谢中国科学技术大学计算机科学与技术学院张昱副教授提供本科教学方面的案例。特别感谢博士生余子濠及其他成员在Labeled RISC-V项目中的投入与付出。
[1]感谢中国科学技术大学计算机科学与技术学院张昱副教授提供本科教学方面的案例。
[2] Krste Asanovic, InstructionSets Want to be Free, 6th RISC-V Workshop, May 2017.
[3]四人组由David Patterson、KrsteAsanovic两位教授与Andrew Waterman、Yunsup Lee两位博士生组成
[4]https://riscv.org/2017/06/7th-risc-v-workshop-call-for-papers/
[5] Martin Fink, RISC-V: Enabling a New Era of Open Data-CentricComputing Architectures, Keynote of 7th RISC-V Workshop, Nov. 2017.
[6] Linton Salmon, A Perspective on the Role of Open-Source IP inGovernment Electronic Systems, Keynote of 7th RISC-V Workshop, Nov. 2017.
[7] The 1st Workshop on Computer Architecture Research usingRISC-V. https://carrv.github.io/
[8] RISC-V双周简报,https://cnrv.io/
[9]图4的右二为清华大学徐崴教授,他是Patterson教授的学生。
本文授权转自包云岗的博客
http://blog.sciencenet.cn/home.php?mod=space&uid=414166&do=blog&id=1089206
热文精选
算法还是算力?周志华微博引爆深度学习的“鸡生蛋,蛋生鸡”问题
重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
多图 | 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了
重磅 | 128篇论文,21大领域,深度学习最值得看的资源全在这了(附一键下载)
资源 | 多伦多大学“神经网络与机器学习导论”2017年课程表
爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
Quora十大机器学习作者与Facebook十大机器学习、数据科学群组
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 奋力打开改革发展新天地 7980846
- 2 保时捷断臂求生 7999743
- 3 刘强东提前发年终奖 7899596
- 4 “冷资源”里的“热经济” 7752595
- 5 全球约有1.9亿妇女为内异症患者 7600147
- 6 88万买房入住后发现是凶宅 法院判了 7551654
- 7 医生:舌头舔嘴唇是坏习惯 7450195
- 8 为什么有些人会有“休耻感” 7386542
- 9 会计发现领导语气不对劲保住296万 7235467
- 10 内塔尼亚胡:将与美国联手 7168332