包云岗教授科普:指令集与处理器
中国芯吧
全部回复
仅看楼主
吧务
level 12
hcdpz 楼主
近日,网络上出现对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核等)。(详见第三节)
2022年02月09日 11点02分 1
吧务
level 12
hcdpz 楼主
什么是指令集,指令集有什么作用?
指令集(ISA):指令集是软件和硬件之间的接口,是一套标准规范(以文档的形式发布),并不具备实体,我们可以根据这套规范去设计处理器芯片和对应的软件系统,并最终形成产品。常见指令集如x86(常见于桌面和服务器)、ARM(常见于移动嵌入式、手机平板等)、RISC-V(异军突起的开放指令集)等[4]。
软件和硬件的关系恰如螺母和螺钉。
把软件看做是螺母,硬件看做螺钉,那么指令集(ISA)就是螺母和螺钉之间对接的尺寸规范。螺母和螺钉都按照相同的尺寸(也就是同一个规范)去设计,即使是由不同的厂商来生产,也可以保证最终所有的螺母都能拧到螺钉上。
指令集向上承载的是整个软件生态,向下则规范了以处理器芯片为代表的整个硬件生态。
根据一份指令集规范,设计一款处理器,其上可以运行同样遵循该指令集规范所编写的软件代码。故而,我们在提到指令集的时候,有时候也指的是其背后的整个软硬件生态系统,包括外围芯片、操作系统、编译器和诸多应用软件(浏览器、游戏软件等)。事实证明,每一种芯片在市场竞争中要取得成功,很大程度上取决于其生态系统。
2022年02月09日 11点02分 2
吧务
level 12
hcdpz 楼主
一个处理器芯片包含了三个层次:指令集(ISA)、微结构设计、产品。
指令集(ISA),是规范标准(Specification),常用一本书或几张纸来记录描述;
微结构设计,也常被称为处理器实现(Implementation),是对具体实现,对应的是一种设计方法及其源代码;
产品,是微架构设计的实例化,比如华为基于ARM指令集和Cotex-A76微架构,设计了麒麟990这款芯片。
2022年02月09日 11点02分 3
吧务
level 12
hcdpz 楼主
指令集标准与架构设计都分为三类:
开放免费(Open & Free)、可授权(Licensiable)、封闭(Closed)。
Intel/AMD 就属于X86封闭指令集+封闭设计,
ARM属于可授权指令集+可授权设计,但要获得授权价格不菲。
RISC-V为全世界提供了开放免费指令集+开放免费设计的选择。
需要强调的是RISC-V本身是一种开放的标准规范,谁都可以基于这些标准来实现自己的处理器。
但 开放免费的指令集(RISC-V)也包含了三种模式的微架构设计[5]:
开源模式,Berkeley的Rocket Chip、剑桥大学的lowRISC、蜂鸟E203等RISC-V核将RTL级源码也开源 ;
授权模式,SiFive公司、晶心科技Andes、阿里平头哥的RISC-V核,是可以被授权给第三方使用,但不开源RTL级源码 ;
封闭模式,Google、NVIDIA等企业在内部大量使用RISC-V核作为MCU,但他们不对外开放IP以及源代码 。
2022年02月09日 12点02分 4
吧务
level 12
hcdpz 楼主

一点补充,重要的事情再说三遍:
指令集 规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!
指令集 规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!
指令集 规范(Specification)与处理器实现(Implementation)是两个不同层面的概念!
下面可以做几道判断题来检验一下是否理解上述概念:
X86是一种指令集规范?
苹果M1牛是因为采用了ARM指令集?
国产处理器的实现和国外还有差距?
几个月就可以定义一个新指令集?
根据指令集规范实现一个处理器不容易?
给定一个指令集只有一种处理器实现?
可以给一个处理器实现换一个指令集?
答案:Yes、No、Yes、Yes、Yes、No、Yes
关于最后一个问题,多说几句。当具备了处理器实现能力,换一个指令集其实是很容易的事。比如龙芯最近能在很短的时间内就从MIPS切换到自定义的LoongArch指令集。
因此,处理器芯片领域的核心竞争力是处理器设计与实现能力!
指令集的重要性体现在生态上。
指令集向上承载的是整个软件生态,向下则规范了以处理器芯片为代表的整个硬件生态。
定义一个新指令集本身并不是一件难事,但更重要的是如何能吸引整个业界乃至全世界一起来共同建设生态,这需要一种开放共享的理念作为基底。
2022年02月09日 12点02分 5
吧务
level 12
hcdpz 楼主
作者:包云岗
来源:知乎
2022年02月09日 12点02分 6
吧务
level 12
hcdpz 楼主
补充一句:
正规的用法:
架构(architecture)是 指令集架构的简称(ISA: instruction system architecture)。
主要内容 是指令集的定义,还包括访存模型、 编程模型、 中断、寄存器定义等规范的定义。是一种标准、规范。
微架构(microarchitecture)是ISA的具体实现。一般对应硬件设计代码(RTL)。
2022年02月09日 12点02分 7
吧务
level 15
这个问题要分开来看,当龙芯还在用MIPS指令集时,指令集就是没有技术含量的,处理器实现都是核心技术。当龙芯弃用MIPS改用Loongarch时,指令集就是核心技术,是CPU是否自主的根本,采用ARM,X86,RISC-V等指令集的国产CPU都是买办。
2022年02月09日 12点02分 8
[滑稽][滑稽]
2022年02月09日 12点02分
有一说一确实[滑稽]
2022年02月09日 13点02分
吧务
level 12
hcdpz 楼主
很少有人会问“操作系统Syscall标准会不会被卡”、“C语言语法会不会被卡”、“SQL语言标准会不会被卡”,因为大家理解了在这些领域里标准和实现的区别。
而对于处理器指令集,还会需要一点时间来纠正大家的观念与认识。
2022年02月09日 12点02分 9
level 1
RISC-V指令集规范,并不是指导如何造芯的细节,它只是指令集规范说明而已。
你只要遵守这个规范,就可以加入这个生态圈,大量的这个圈子的软件就可以运行。
就如大家都用HTML5规范,大家都可以用,但能造出解析HTML5的引擎的,现在主力的,只有谷歌与火狐。你也可以造一个用HTML5规范的浏览器,没人会处罚你,因为HTML5标准是公开的,开源的,随便用。
但是,HTML5规范,你没有权利修改,它有一个审核单位,只有会员?才有资格讨论修改。
围绕着HTML5就会产生一个生态圈,
那我自己造一个XML99规范,可以不可以?可以,但没人会用它,没人会用,
你造出来,浪费钱,没人用,一个玩具,有何意义?
计算机世界,有很多规划协议,大部分是开源的,随便用,但你不一定有修改权。
RV也是一样的。指令接口规范随便用,连私有指令也可以添加,但总的规范修改权你没有。
但你可以参考与修改RV,用它造芯,但你这个新规范,就不能称为RV了。
正因为RV有一个规范,所以,也不会产生所谓的碎片化问题。
X86或ARM指令却不能随便用,因为它的版权是私有的,不是开源的。
指令集是软件生态的载体。
龙芯想造一个LA生态,可行,但需要时间,没十年二十年长期的投入与坚持是不可能的。
仅靠什么二进制虚拟翻译,是不行的。
2022年02月09日 13点02分 10
@艮其身 你显然没有理解碎片化是怎么产生的。自己扩展的指令当然要自己负责相应的软件支持,有实力的厂家当然可以自己扩展自己做,最后就是形成各自的山头,整个RV并没有一个有强势的主心骨,山头多了碎片化是必然的。
2022年02月09日 14点02分
RV只有一个基本指令集是标准的,使用者可以自己扩展指令,私有扩展的多了,自然就碎片化了。
2022年02月09日 13点02分
@hcdpz 那是你没看懂标准,能通用的自然是规范,你私添的,我根本不支持。难道我开发软件,还得用你私有的指令?人家也不会做这种无助功。就如谷歌给HTML5添加规范,有些可以接受,有些不能,是同一道理,不存在碎片化。因为规范是严格的。
2022年02月09日 14点02分
现在想造一个面向桌面等通用计算领域的LA生态,基本没有可能性。生态的关键是要有人用,LA所谓的生态要从已经是蓝海的桌面、 通用服务器领域 自立山头,但它既没有性能优势,更没有号召力,除了自己没别人用,更不会有几人来捧场丰富生态。如此圈地自嗨,最后的结局只能是猴子唱戏 -胡闹台。[滑稽]
2022年02月09日 14点02分
吧务
level 15
这个帖子比较客观,比隔壁动不动以指令集划分自主阵营不知高到哪里去了
2022年02月09日 13点02分 11
arm和x86怎么就不自主可控的了。肤浅。
2022年02月10日 00点02分
隔壁喜欢自打脸,龙芯MIPS的产品还在大量出货吧
2022年02月10日 01点02分
level 1
龙芯官方从来没有说过指令集没有技术含量。龙芯最初对于这个问题的解释是因为网上一群人认为龙芯用了MIPS是不自主可控(这一点在还希望各位认识到x86和MIPS这两个指令集在授权使用上有很大的不同,x86可能还要吃官司),龙芯对这的解释和包教授的基本是差不多,即指令集是一种规范。
2022年02月10日 05点02分 13
结果是用x86的没吃官司,用mips的某家吃了,够戏剧性吗
2022年02月10日 16点02分
@inmark 你是说芯联芯在北就被龙芯给告了?,对于x86吃官司的事请你好好了解一下,了解一下全美达,了解下VIA
2022年02月11日 01点02分
@inmark 你是说芯联芯在北就被龙芯给告了?,对于x86吃官司的事请你好好了解一下,了解一下全美达,了解下VIA
2022年02月11日 01点02分
@smallfoxdxz 所以兆芯海光吃官司了没?拿陈年旧事掩盖龙芯现在吃官司有用?
2022年02月11日 05点02分
level 1
关于指令集还和微架构问题的争论网上已经讨论的够多的了。基于国外的指令集,自主设计微架构是有一定的自主性的,但程度上比不上现在的申威和龙芯。这一点上我想不会有人否定吧。在使用国外指令集里,使用x86是最有问题的,x86控制在两个美国私企手上,三方修改的可能性很低,并且指令集在一定程度上是会影响到微架构的设计思想的,第三方设计公司很难跳出这个无形的框框。就好比当兆新的工程师在一定程度的理解后,发现要增加一个更高效操作指令时,intel会同意吗?,增加的这个指令会得到微软的支持吗?这两可都是美国的公司。这几年的斗争美国公司占哪边不需要细说了吧。
2022年02月10日 05点02分 14
@smallfoxdxz 谁告诉你X86不能扩展指令集的?AMD,intel,兆芯都扩展过自己的X86的指令集。自己扩展自己用,别人愿不愿意用管不着。倒是MIPS,芯联芯指出来了龙芯不能扩展指令集。
2022年02月10日 15点02分
@smallfoxdxz 最后再说一下,龙芯的loongarch有什么生态?龙芯能干的事情你觉得其他国产CPU干不了?龙芯天赋异禀?
2022年02月11日 02点02分
X86的授权和ARM/MIPS的授权在这方面正相反,不限制改什么。X86指令扩展的历史反复证明这点。
2022年02月10日 09点02分
问题是:之前20年用美国人授权MIPS的时候龙芯宣称自己最自主,现在自己搞了个指令集,别人的指令集授权就不自主了,就是锁链了。[滑稽]
2022年02月10日 12点02分
吧务
level 15
包老师,实事求是
2022年02月11日 15点02分 17
不像hu老师,总是以自己为标准,双标别的国产CPU。
2023年02月26日 02点02分
level 1
新闻上讲RV是ARM强劲的对手,
评论顶的最多的是一条:RV很危险,会被美国封,与ARM一样,大家都用LA,如何如何。
====
很多人的认识就是这样,根本不懂,美国人封不封的,与你用什么指令集有何相干。
你就是用上LA,它照样封你,它禁止的是产品,根本不跟你讲道理。
就如美国人封华为,华为换鸿蒙,华为用上鸿蒙,华为就能在美国上市卖?
美国人管控的是谷歌公司,谷歌能管控的是谷歌服务,不是开源的安卓。
产品硬件可以不卖给你,我们得按一定的规格自己造,这才是国产芯片。
而开源的,源代码或规范,或标准,怎么封?怎么禁?
硬要将硬件与软的规范混在一起,怕美国人封?
真是搞笑,RV能被封?美国人一封,中国人就不能用了?
照这个逻辑,linux也能封,gcc也能封,llvm也能封,
你看LA还向它们推补丁呢,LA这不是资敌吗,哈哈。
头难发热,都没有思考能力,倪光南,工程院院士都说可以,你们不想用大脑思考,
那你们也可以让有思考能力的大佬来决定好了。
至于说,与其给RV添加砖瓦,我们不如自己搞LA,
这两个不矛盾,要是这么容易,我们早就解决了。
事实是不行呀,不行的话,那就先参与。
2022年02月13日 11点02分 19
说的非常有道理
2022年02月13日 13点02分
看自嗨吧那几个人,感觉就是猪鼻子插大葱,装象。
2022年02月13日 13点02分
[真棒]
2022年02月20日 01点02分
1 2 尾页