查看原文
其他

RISC-V会被卡吗?那么你觉得C语言会不会被卡? | 包云岗

包云岗 风云之声 2023-10-24

     


关注风云之声

提升思维层次



导读

指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!

指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!

指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!


本文是对于知乎问题《从技术的角度来看,RISC-V 能对芯片发展、科技自主起到哪些作用?》的回答(https://www.zhihu.com/question/425542531/answer/1607862976)。


一、关于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核等)。(详见原文第三节)


作为上文的总结,强烈推荐仔细研读以下这张表(详细解读参见原文第三节):


图1. 指令集、微架构设计和产品之间的关系分析


一点补充,重要的事情再说三遍:


指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!
指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!
指令集规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!


下面可以做几道判断题来检验一下是否理解上述概念:

  • X86是一种指令集规范?

  • 苹果M1牛是因为采用了ARM指令集?

  • 国产处理器的实现和国外还有差距?

  • 几个月就可以定义一个新指令集?

  • 根据指令集规范实现一个处理器不容易?

  • 给定一个指令集只有一种处理器实现?

  • 可以给一个处理器实现换一个指令集?


答案:Yes、No、Yes、Yes、Yes、No、Yes


关于最后一个问题,多说几句。当具备了处理器实现能力,换一个指令集其实是很容易的事。比如龙芯最近能在很短的时间内就从MIPS切换到自定义的LoongArch指令集。因此,处理器芯片领域的核心竞争力是处理器设计与实现能力

指令集的重要性体现在生态建设上。指令集向上承载的是整个软件生态,向下则规范了以处理器芯片为代表的整个硬件生态。定义一个新指令集本身并不是一件难事,但更重要的是如何能吸引整个业界乃至全世界一起来共同建设生态,这需要一种开放共享的理念作为基底。这也就引出了下一个话题——为什么会出现RISC-V?为什么RISC-V能受到全世界如此关注?


二、为什么会出现RISC-V


在理解了指令集规范和处理器实现的区别后,我们再回过来看为什么会出现RISC-V。从图2可以看出,在不同领域均存在开放标准,以及相应的开源实现与商业实现。例如操作系统有开放的POSIX Syscall标准,基于POSIX标准,有开源的Linux、FreeBSD,也有闭源的商用的Windows。

TCP/IP、POSIX、C、SQL、OpenGL等这些标准是开放的、共享的。全世界任何一家公司、任何一所大学、任何一个个人都可以基于这些开放标准设计自己的操作系统、编译器、网络交换机、数据库等,而不需要得到谁的授权,不需要为这些标准付费。

而在处理器领域,故事就不一样了。一直以来指令集规范/标准都是公司所有,没有一个开放共享免费的标准,因此长期以来形成了处理器的指令集标准与实现是混为一体的印象。而RISC-V正是填了这个空(图2表中的红色问号格子)——提供了一个开放、免费的处理器指令集。这也是RISC-V诞生时的口号——“Instruction Sets Want to be Free!”


图2. 不同领域均存在开放标准,以及相应的开源实现与商业实现。而在处理器领域,一直以来指令集规范/标准都是公司所有,没有开放标准


很少有人会问“操作系统Syscall标准会不会被卡”、“C语言语法会不会被卡”、“SQL语言标准会不会被卡”,因为大家理解了在这些领域里标准和实现的区别。而对于处理器指令集,还会需要一点时间来改变大家的传统的观念与认识。

关于RISC-V的起源以及理念,推荐阅读Krste Asanovic和David Patterson在2014年8月发表的一篇观点文章。2015年2月的《中国计算机学会通讯》上全文刊发了中文版《指令系统应该免费:RISC-V的案例》


图3. RISC-V观点文章的中文版


三、RISC-V的潜在风险点


(1)生态尚不够成熟,可能带来投资风险


RISC-V从诞生到现在已经有10年,得到了很大的关注。但是,10岁的RISC-V也到了一个平台期,缺少标志性事件展现RISC-V的能力上限。这涉及到多方面原因,其中很重要的一个原因是指令集标准化工作在过去几年推进相对缓慢了,需要加快步伐。


可以对比这一轮深度学习热潮,Hinton在2006年发表Science论文,并没有受到关注,一直到2012年ImageNet竞赛夺冠才引起学术界关注而真正引爆点是2016年AlphaGo战胜李世石,向全世界展现了深度学习能力的上限。而且这种程碑式突破还不断出现,比如前段时间的有1700亿参数的GPT-3模型,这两天DeepMind的AlphaFold成功解析复杂蛋白质结构,这些都是在不断地向世界展现AI能力的上限,给整个领域信心


RISC-V的能力上限在哪里?总的来说,RISC-V还是缺少像“AlphaGo战胜李世石”这样的标杆进展。虽然很多人看好RISC-V在IoT领域的应用,但IoT场景因为很碎片化,在技术层面很难产生标杆性事件(当然商业上如果出现一个数亿美元的投资案例,也可以作为一个标杆事件)。这里我们主要从技术层面梳理RISC-V领域可能的三种标杆事件:


  1. 用RISC-V研制一台超级计算机,进入Top500前十,甚至更高的排名(目前欧洲启动了EPI项目,用RV做E级超级计算机);


  2. 用RISC-V做服务器芯片,在一些头部企业得到规模应用,并呈现较好的效果;


  3. 用RISC-V做一款手机芯片,解决手机生态问题,实现发货量达到百万级甚至千万级。


因为RISC-V的开放性,所以全世界范围内已经有多方力量都在这三方面积极推进,这里面存在着竞争。但是这种竞争正是构建生态过程中需要存在的积极要素,是正常的、合理的,也应该鼓励的, 就如David Patterson教授在一个采访中提到:


“因为RISC-V是开放的,我们将看到所有这些竞争。也许是由于所有竞争,我们开始在设计领域看到一些真正有趣的创新想法。”
事实上,Linux发展过程中其实也存在群雄逐鹿的阶段,这可以从一个侧面来反应。例如2000年左右,仅Intel就投资了6个Linux初创公司
  • 1998年:Red Hat、VA Linux Sytems

  • 1999年:eSoft、SuSE

  • 2000年:TurboLinux

  • 2002年:Scali


因此,从构建整个生态角度来看,应该很高兴看到有更多力量参与到RISC-V的竞争与合作中来,尤其是来自中国的力量。


(2)处理器实现层面的知识产权保护


RISC-V作为一种指令集规范是开放免费的,不属于任何一个公司。RISC-V指令集规范的定义由国际基金会共同管理与维护。但是,基于RISC-V指令集的具体实现,是可以申请专利的。这比较像5G领域,3GPP定义的5G标准规范是所有成员共享的,各个成员可以有自己的具体实现,并申请各自的专利,相互授权。如今也开始有开源的5G实现,比如OpenRAN。

再次强调,指令集规范与处理器实现是独立的、不同层面的概念。因此,处理器实现层面的专利是独立于指令集的,也就是说一个专利所保护的技术(比如一种新的分支预测技术)可以用在Intel的X86处理器中,也可以用在采用了自主定义的LoongArch的龙芯处理器中,也可以用于采用ARM的苹果处理器中。


因此,未来有可能会出现商业纠纷,会是在处理器实现层面上的专利,而不是指令集本身。事实上,哪怕完全自己定义一个全新的指令集,如果在处理器设计层面不做好专利规避,仍然会面临侵犯知识产权诉讼的风险。产业发展过程中出现商业纠纷其实也很正常,我们需要从提高自身实力、加强知识产权保护的角度去应对。


那我们该如何应对?中国在5G领域的发展思路具有很好的借鉴意义。5G标准是全世界一起制定,有一些是中国企业提出,有一些是国外企业提出,但中国并没有因为5G标准中有一部分是美国提出来就放弃参与5G。相反,华为、中兴等企业更加积极地参与标准制定,更加积极地投入研发技术、申请专利,从而在5G专利方面处于国际领先位置。


对于处理器生态的构建和发展,也可以秉持和5G同样的思路。在开放共享的框架下,我们可以通过提高自己的能力来增大话语权,提高自主能力


四、一点感想:如何处理好开放和自主的关系?


(1)两条关于“开放与自主”关系的新闻


国家在制定十四五与2035远景目标,同时也在积极推动一些国际合作框架,比如RCEP。从国家高层在多个场合的发言来看,是强调要在开放环境下去提高自主能力。先看两个新闻:


  • 2020年11月3日发布的《关于<中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议>的说明》中提到了五条原则,第三条便是开放和自主的关系:

一是处理好继承和创新的关系,做好“两个一百年”奋斗目标有机衔接。
二是处理好政府和市场的关系,更好发挥我国制度优势。
三是处理好开放和自主的关系,更好统筹国内国际两个大局
四是处理好发展和安全的关系,有效防范和应对可能影响现代化进程的系统性风险。
五是处理好战略和战术的关系,制定出一个高瞻远瞩、务实管用的规划建议。
  • 2020年11月19日,亚太经合组织工商领导人对话会又进一步明确指出,开放是国家进步的前提,封闭必然导致落后。中国早已同世界经济和国际体系深度融合。我们绝不会走历史回头路,不会谋求“脱钩”或是搞封闭排他的“小圈子”


从国家层面来看,一方面要需要自主,另一方面希望开放,不谋求“脱钩”、不搞封闭排他的“小圈子”。那么对于这两个看似矛盾的目标,如何能统筹?如何能在不搞封闭排他的“小圈子”的同时,还能达到自主的效果?

(2)实现自主的两种思路


对于自主,国内不少人认为是应该自己另搞一套,应该实现与美国完全脱钩,这是一种思路。而国内的产业界很多支持融入到国际开放竞争环境中,在开放框架下去争取主导权,这是另一种思路。在当前的中国,两种思路都有成功案例:北斗属于第一种思路,5G则属于第二种思路

具体到指令集,应该采取哪一种思路?因为每个人对信息的收集与获取、事物发展规律的认识不尽相同,因此不同的人会有不同的判断,做出不同的决策,选择不同的思路,这是很正常的现象。根据中国的当前现状,会在一段时间内两种思路并存,比如龙芯在努力推动LoongArch指令集生态的构建(第一种思路),很多企业参与到RISC-V指令集生态的发展(第二种思路)。

第二种思路有时会受到不少质疑(包括知乎上的这个提问),很大原因还是因为对指令集规范与处理器实现概念的不了解。需要肯定的一点是,两种思路最终目标都是为了实现提高处理器生态的自主能力,都是希望能让中国发展得更好

(3)酌古御今,重温中国计算机事业的创业史


分享一些中科院计算所筹建过程中的史料,来重温1950年代中国计算机事业的开拓者们如何处理“仿制”与“创新”这对矛盾。总结来说,两点决策:


  1. 先仿制后创新,仿制为了创新。

  2. 在中国本土仿制,而不是送人去苏联仿制。


可以说中国计算机事业的先驱们综合考虑了中国当时的学科基础、长远目标、经费开销等因素,做出了非常务实的决策,实现了中国计算机事业从零到一的突破。在我看来,老一辈先驱们的决策思路与理念,对于今天中国如何应对处理器芯片卡脖子问题,依然有重要的借鉴意义


图4. 来源:博士论文《“以任务带学科”与中科院计算技术研究所的建立和早期发展研究》p45


图5. 来源:博士论文《“以任务带学科”与中科院计算技术研究所的建立和早期发展研究》p46

扩展阅读:

RISC-V不是开源的?它真的是!| 包云岗
破解“中国开源拿来主义”的几点分析 | 包云岗
CCCF卷首语 :伯克利科研模式的启发 | 包云岗
从台积电两个数据看国内芯片制造企业的机会 | 包云岗

背景简介:文章2020年12月4日发表于知乎https://www.zhihu.com/question/425542531/answer/1607862976,风云之声获授权转载。
责任编辑孙远

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

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