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

来源: 风云之声

本文是对于知乎问题《从技术的角度来看,RISC-V 能对芯片发展、科技自主起到哪些作用?》的回答

(https://www.zhihu.com/question/425542531/answer/1607862976)。

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

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

图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

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ1159

这竟然是IOI虽然是2000年的&#xff0c;但其实也改变不了它水题的本质 我写了两种方法&#xff0c;这里都讲一下吧 考虑记忆化搜索&#xff0c;用f[i][j]表示当区间的左端为i&#xff0c;右端为j时最少要添加多少字符&#xff0c;所以ans就为f[1][n] 然后考虑一下&#xff0c;对…

c语言微信备份文件,文件保存后自动刷新微信小程序

微信开发者工具支持刷新和重建的快捷键&#xff0c;所以我们可以发送一段 apple script 脚本来达到刷新/重建项目的效果&#xff0c;从而免去手工切换再使用快捷键的麻烦。例如&#xff1a;tell application "wechatwebdevtools"activatedelay 0.2tell application &…

easyui 调用dialog中的方法_SolidWorks中标准件库的创建及调用方法

在使用SolidWorks进行产品设计时&#xff0c;常用的标准件&#xff08;如螺栓、螺母、垫圈等&#xff09;通常可以在安装了SolidWorksToolbox插件后调出使用&#xff0c;而许多标准件在Toolbox并不存在&#xff0c;不能从插件中直接调用。在用到这些零件时&#xff0c;设计人员…

牛客网--牛牛找工作

题目描述 为了找到自己满意的工作&#xff0c;牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下&#xff0c;牛牛选择报酬最高的工作。在牛牛选定了自己的工作后&#xff0c;牛牛的小伙伴们来找牛牛帮忙选工作&#xff0c;牛牛依然使用自己…

【测试设计】基于正交法的测试用例设计工具--PICT

前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法&#xff0c;但是实际工作过程中当成对组合量太大&#xff0c;我们往往很难做到有效的用例覆盖。 PICT是微软公司出品的一款成对组合命令行生成工具,它很好的解决了上述的难题。使用它我们可以有效地按照两两测试的…

Alpha fold: 人工智能在蛋白质结构预测上跑赢人类的启示

来自孙卫涛科学网博客2020年12月&#xff0c;Alpha Fold2在CASP14上 获得了惊人的进步&#xff0c;其蛋白质结构预测的能力已经达到了与实验方法相媲美的程度&#xff0c;国内外该领域的专家学者都为之惊叹&#xff0c;同时也都感受到巨大的压力&#xff0c;人工智能首次把一个…

nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

在前面写的一篇文章SpringMVC解决跨域问题&#xff0c;我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题&#xff0c;解决方式主要有如下三种方式:JSONPCORSWebSocket可是这几种方式都是基于服务器配置的&#xff0c;即对于自己的网站是可以通过这几种方式解决的&#x…

android view使用方法,android – 如何使用getView()方法,它在哪里被调用?

我是Android开发的新手&#xff0c;并且一直遵循Android网站上提供的教程。我目前在视图教程部分&#xff0c;特别是Grid Views&#xff1a;Hello, Grid View Tutorial的教程。我无法通过适配器了解视图的形式。我明白您必须覆盖适配器类中的getView()方法&#xff0c;并且在此…

牛客网--被3整除

题目描述 小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。 并且小Q对于能否被3整除这个性质很感兴趣。 小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。 输入描述: 输入包括两个整数l和r(1 < l < r < …

卷积神经网络爬虫实现新闻在线分类系统

卷积神经网络&&爬虫实现网易新闻自动爬取并分类 项目地址 采用THUCnews全部数据集进行训练&#xff0c;效果如下。 详细实现见./text_classification 部署步骤如下&#xff1a; 运行环境 服务器&#xff1a;Ubuntu 16.04 数据库&#xff1a;Mysql 5.6 python&#xf…

搞基础理论研究有什么用?

来源&#xff1a;数学中国人类文明的诞生是一个奇迹&#xff0c;构筑在现代科学技术基础之上的现代人类文明的诞生更是奇迹中的奇迹。这个奇迹中的奇迹的根基是现代技术及其广泛应用&#xff0c;而现代技术的根基则是现代科学&#xff0c;科学的根基是以数学为主要工具的基础科…

android传感器博客,Android实现接近传感器

本文实例为大家分享了Android实现接近传感器的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1.接近传感器检测物体与听筒(手机)的距离&#xff0c;单位是厘米。一些接近传感器只能返回远和近两个状态&#xff0c;如我的手机魅族E2只能识别到两个距离&#xff1a;0CM…

python 内存分析_python内存管理分析

本文较为详细的分析了python内存管理机制。分享给大家供大家参考。具体分析如下&#xff1a;内存管理&#xff0c;对于Python这样的动态语言&#xff0c;是至关重要的一部分&#xff0c;它在很大程度上甚至决定了Python的执行效率&#xff0c;因为在Python的运行中&#xff0c;…

牛客网--牛牛的闹钟

牛牛总是睡过头&#xff0c;所以他定了很多闹钟&#xff0c;只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室&#xff0c;上课时间为当天的A时B分&#xff0c;请问他最晚可以什么时间起床 输入描述: 每个输入包含一个测试用例。 每个测试用…

由内而外:大脑是如何形成感官记忆的

大数据文摘出品来源&#xff1a;sciencedaily编译&#xff1a;张大笔茹通常&#xff0c;大脑会对我们感官收集的信息进行编码。为了感知环境并与之进行建设性的互动&#xff0c;这些感官信号需要在以往的经验和当前目标的背景下进行解释。最新一期的《科学》杂志上&#xff0c;…

android设置大小能用小数,Android中关于保留小数点位数的处理

保留两位小数方法一&#xff1a;{double c 3.154215;java.text.DecimalFormat myformatnew java.text.DecimalFormat("0.00");String str myformat.format(c);}方式二&#xff1a;{java.text.DecimalFormat df new java.text.DecimalFormat("#.00");df.…

oracle clob截取_Oracle数据库设计规范建议

Oracle-数据库设计规范建议来源于项目资料目的本规范的主要目的是希望规范数据库设计&#xff0c;尽量提前避免由于数据库设计不当而产生的麻烦&#xff1b;同时好的规范&#xff0c;在执行的时候可以培养出好的习惯&#xff0c;好的习惯是软件质量的很好的保证。数据库设计是指…

牛客网--19校招--俄罗斯方块

题目描述 小易有一个古老的游戏机&#xff0c;上面有着经典的游戏俄罗斯方块。因为它比较古老&#xff0c;所以规则和一般的俄罗斯方块不同。 荧幕上一共有 n 列&#xff0c;每次都会有一个 1 x 1 的方块随机落下&#xff0c;在同一列中&#xff0c;后落下的方块会叠在先前的方…

揭秘美国空军如何用AI技术提升“战斗力”

以AI技术为基础&#xff0c;美国空军正努力将自身转化为更强调协作性的组织。来源丨Forbes作者丨Kathleen Walch编译丨科技行者通过增加数据规模与相关素养提升&#xff0c;美国空军各部门及人员&#xff0c;将建立起更强的决策、战略、任务执行以及网络安全保障效率与能力。以…

android 查询wifi信息的类,Android 获取wifi信息

在androi中WIFI信息的获取可以通过系统提供的WIFI Service获取。WifiManager wifi_service (WifiManager)getSystemService(WIFI_SERVICE);WifiInfo wifiInfo wifi_service.getConnectionInfo();其中WifiInfo 中比较常用的信息有&#xff1a;/*info.getBSSID()&#xf…