查看: 774|回复: 0
收起左侧

处理器指令集,不是一本武功秘籍

[复制链接]

  离线 

  • TA的每日心情
    慵懒
    2021-7-23 17:16
  • 签到天数: 17 天

    [LV.4]

    发表于 2021-6-9 16:15:16 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 草帽王子 于 2021-6-9 16:15 编辑

    01

    如果一个江湖侠客功夫很菜,不用问,肯定缺少一本武功秘籍。

    《倚天屠龙记》中,张无忌开场也很菜,被玄冥二老虐,被何太冲虐,甚至被殷离虐,但是自从被朱长龄逼的跳下山崖,意外在白猿身上获得的《九阳神功》,依靠这本武功秘籍,张无忌修炼成绝世武功,从此独步武林,成为明教的霸道总裁,迎娶白富美郡主,成为人生赢家。

    武功秘籍获得前,主角备受欺辱,获得后,英雄谁属,非我莫属。

    这个就是武功秘籍的魅力。

    没有一本武林秘籍解决不了的问题,如果有,就再来一本。

    张无忌就先获得了《九阳真经》,又获得《乾坤大挪移》,凭此解决了六大派和明教的冲突。

    但是,江湖中,普通人很难像张无忌一样直接获得武功秘籍,多数的时候,就像周星驰在《功夫》买到的如来神掌一样,大概率是假的。

    在武侠中,真的武功秘籍极少,且只有主角光环才能得到。

    张无忌光明顶密道里面得到乾坤大挪移;。

    段誉在无量山获得北冥神功,凌波微步。

    郭靖被老顽童哄骗背诵九阴真经。

    这些武功秘籍是主角的专享,如果是路人甲或者NPC,根本与武功秘籍绝缘;通常修炼多年,只是给主角试招。

    江湖中的工具人而已。

    江湖是大侠的江湖,不是NPC的江湖。


    02

    而处理器的指令集也经常被人误会是武功秘籍;以为有了指令集就能笑傲处理器芯片江湖。

    其实作为一个处理器芯片,能否笑傲江湖,和指令集的关系不那么大。

    与武林秘籍不同的是,任何一种CPU的指令集全部是公开的。

    所有技术人员都能看到,不论是行业大牛还是入行小白,均可一睹芳容。

    获取CPU的指令集,不需要主角光环;不需要掉悬崖,进山洞,甚至不需要高人指点。

    上网就能找到,如果找不到,说明这个指令集用的人不多。

    那如果找不到,怎么办?

    找不到也不要紧,软件工程师直接反汇编一下,就能完全看到运行在这个CPU的每条汇编的二进制码,可以得到这个CPU采用的每条详细指令集。

    没有任何的保密需要。

    也保密不了。

    指令集是公开的,但是指令集本身是有主之地。

    虽然公开,但是用这个指令集来设计商用CPU,要交钱,这个叫做指令集授权,我国很多做CPU的公司就获得了指令集授权,从而光明正大的使用这些指令集设计CPU。

    有一些不用指令集授权,例如RISC-V,而这也开启了一个先河,就是指令集开源。

    所以世界上有两种指令集,私有指令集和开源指令集。

    私有指令集,就是你能够知道指令集所有细节,但是不能设计基于此指令集的商用处理器。

    开源指令集,就是你能够知道指令集所有细节,但也可以设计基于此指令集的商用处理器。

    前者代表如ARM,后者代表如RISC-V。

    所以看起来,知道指令集细节没有什么用。

    所有指令集都有办法获取细节。

    关键是否允许所有人基于此指令集设计相应的商用处理器。

    随着risc-v的开源,很多日子过得不如意的指令集也选择了开源,如mips power等都搞了开源联盟,唯一的缺点就是搞得太晚了。

    还有一些不如意的指令集没有选择开源,是因为已经死掉了,如sparc  alpha等。

    这些指令集变成了历史的一部分。


    03

    如果指令这个东西不是“武功秘籍”,那是什么?

    是硬件架构和软件生态之间的一座桥。

    桥的一头是各种CPU处理器微结构设计,桥的另一头是软件及生态。

    这个换成“房产领域”,叫做小区及其配套。河的一边是一个新建小区(处理器),而河的另一边是是一个商超,地铁,医院等综合配套(软件及生态)。

    现在有一条河将二者隔离开。

    而指令集就是连接小区和配套之间的那座桥。

    使用某个指令集,就是要复用这些配套的基础设施(软件生态),就类似开发一个新盘,能有好的配套就会被疯狂抢购。

    否则没有好的配套,房子就无人问津。

    开发建筑容易,而配套却是很长时间的积累。

    说这么多,硬核高科技的处理器和卖房子也区别不大。

    一个服务器处理器跑分再厉害,没有各种生产力工具和EDA工具支持,也很难被服务器厂商选用。

    一个手机处理器跑分再厉害,如果装不了APP和玩各种游戏,也少有用户来买。

    买房子,是地段和配套。

    处理器,除了性能,功耗,价格。

    软件和生态则是一个更重要的评价维度;


    04

    根据同一个指令集,但是设计出来的处理器却是千差万别。

    可以设计的很简洁,也可以很复杂。

    包括:通常一个处理器的设计包括,取指令,译码,执行,写回,访问存储等等,这些都是每个处理器都有的部分。根据对处理器的应用需求不同,一个处理器的架构设计千差万别。

    1、流水线的级数:一般级数越多,在同一个制程下,处理器可以运行的频率越高。高性能处理器的流水线可以到十几级,例如玄铁910就有12级流水线。

    2、并行发射宽度:并行发射的宽度越宽,则同时可以参与计算的单元就越多,计算的效率就会越高,但是如果指令之间存在依赖关系,那么多余的资源就闲着用不上,只能串行执行。比如,即使有两路逻辑运算单元,如果下一次的计算需要用到上一条指令的结果,也只能串行运行;

    3、cache的设计:抛开组相联、全相连等等那些概念不谈,cache就是越大,对于处理器的IO操作越有利,LOAD指令越省周期。正常的一个处理器核,CACHE占用的面积比处理器的那些逻辑的面积还要大,CACHE的就是能够缓存外部存储区的内容;同样数据和指令的获取是否需要CACHE需要根据设计设计。

    4、MMU的设计:如果支持OS,那么MMU就是一个省不了的单元,需要把虚拟地址转换成物理地址。

    5、多核的架构:一个核能力有限,就堆核来搞,这就容易出现一核有难,八核围观的现象,如何把任务分配到多个核上,让所有核都动起来,这是多核设计的一个关键之处。

    上面说了这么多处理器设计方面,和指令集相关的不多。任何一个处理器架构都是需要考虑这些设计方面,和哪种指令集关系不大;

    国外芯片技术交流-处理器指令集,不是一本武功秘籍risc-v单片机中文社区(1)

    上图是西数RISC-V的实现,9级流水线,双发射;开源指令集,IP代码也是开源。

    按照这个架构,如果要是换成其他的指令集,例如ARM/MIPS,也同样可以设计成这个架构。

    所以有人说指令集是语言,处理器是论文,用哪种语言都可以写成高质量论文,这样看来,还是有一些道理;

    架构和指令集是两回事。设计者如果拥有设计处理器的能力,用什么指令集都可以。

    架构是架构,指令集是指令集;

    相互依存又相互独立;


    05

    华山之巅,觉远大师来讲“九阳真经”,张三丰听了部分,演化为“武当九阳功”,郭襄记了一部分,就是“峨眉九阳功”,无色禅师听了一部分,就变成“少林九阳功”;

    武功同宗同源;

    如果我们来看待RISC指令集的时候,我们就会发现,他们之间也是同宗同源

    一个通用的RISC的指令,通常指令通常包括下面几种:
    • 算数运算:加减乘除;
    • 逻辑运算:与或非,左移右移;
    • 跳转指令:实现程序的循环和跳转;
    • 比较指令:大于,小于,等于;
    • 内存读写:LOAD、STORE;
    • 特殊寄存器操作:读写特殊寄存器;

    除了通用指令之外,还有特殊指令,例如浮点指令,向量指令,特殊定制指令等等

    下面是三种指令集为例,是不是看起来很相似?

    国外芯片技术交流-处理器指令集,不是一本武功秘籍risc-v单片机中文社区(2)

    特别是MIPS和RISC-V指令集相似程度就更高了,像是兄弟。

    以这三种指令集为例,编译后,都是32bit的0/1的二进制码;

    CPU设计就是根据这些0或者1进行译码和运行,得到预期的结果。

    不论多高级的软件,最终编译出来,就是这一系列0和1 的二进制码的组合;

    软件工程师的工作,则是把写好高级语言,翻译成“0”和“1”。

    指令集作为软件和硬件的接口。

    这些接口就体现在这些0或者1之间。

    一种沟通软件和硬件的编码方式。

    “有效沟通”是衡量一个工程师能力的方面之一。

    而指令集就是软件和处理器硬件核心的沟通方式,没有之一;


    06

    天下武功出少林。

    天下的RISC的指令集也是极其类似,

    指令集同宗同源,但是又不断与时俱进;

    如果一个大侠定义了一套武功(指令集),降龙十七掌,这十七掌有十七个招式,就是加,减,乘,除,左移,右移等等

    实际行走江湖时,很多时候,一招是解决不了大的boss,这个时候就需要用到前面的十七招组合,才能最大限度的提升掌法的威力;

    大侠就给定制一项新的招式(指令),降龙第十八掌,叫做“亢龙有悔”

    这个深得指令集设计的真髓。

    如果不定义第十八掌“亢龙有悔”,则前面“十七掌”需要运行17个周期。

    现在我们定义了一条新的指令“亢龙有悔”。一个周期就解决问题。效率提升了17倍。

    国外芯片技术交流-处理器指令集,不是一本武功秘籍risc-v单片机中文社区(3)

    电影《苏乞儿》中,周星驰扮演的主人公苏乞儿最后一掌“亢龙有悔”解决掉大boss,悟到了第十八掌是前十七掌的组合。苏乞儿通过这些基本招式的组合成额外的一招,提升了掌法的威力,是我国古代优秀的指令集设计者。

    但是,作为CPU设计来说,增加这一条指令也是有代价的,代价就是增加了更多的晶体管,造成了面积、成本及功耗增加。

    应用需求推动指令集的升级和扩展是指令集发展中最常见的扩展。

    例如为了加速AES加密的效率;ARMv8 推出了 cryptographic extention,不但是AES,其他每种加密算法都有相应的扩展指令;X86同样也做了类似的事情:做了AES-NI指令;

    目前 AI比较火,所以ARM V9 在ARM V8的基础上添加了一些AI的加速指令,虽然细节未知,通过SIMD的指令扩展,应该会有类似矩阵乘法加速指令。intel AVX512也做了类似的事情,支持AI的加速。

    这些指令是有助于CPU来有效的应对AI的应用挑战,但还是被很多体系结构领域的大神认为是“鸡肋”,这个就是见人见智的事情了。

    新的指令能否加速AI的应用是有疑问的。

    但新的指令带了更多开销却毋庸置疑,这些额外的扩展指令会额外增加很多的晶体管,也就是会增加面积,成本,功耗。

    而这些额外增加的晶体管在很多常用场景下并不发挥作用,代价增加还可能不带来性能的增加因为用不上。

    需要解决新的问题,就需要新的指令的出现。这个就是新的指令的由来。

    从这个意义上说,目前的好多AI专用处理器,都是自己定义了一套适合AI处理的指令集,例如,矩阵乘,卷积等操作。

    指令集不但是同源的,而且是不断发展的。


    07

    处理器面对的场景越来越多,新的指令也就是层出不穷。

    原有指令固然需要继续兼容,新推出的也不一定得到广泛的支持;对于同一个指令集,一个处理器也不需要支持全部完备的指令集,而是根据需要选择来支持;

    指令集的发展从来没有结束,也没有尽头。

    处理器想要更高效,就需要不断添加新的指令来解决新的问题。

    新的指令的支持带来了新的面积,功耗,成本,软件等代价。

    而处理器设计本身,就是tradeoff的艺术。

    效率和开销之间的平衡。

    这个就是宿命。

    和指令集相关又无关的宿命。

    而如何打破这些宿命。

    则需要处理器设计工程师自身的能力和智慧。






    上一篇:RISC-V理事会,80%的最高级别会员被中国企业申请了?
    下一篇:RISC-V的杀手级应用即将到来
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-24 20:50 , Processed in 1.106383 second(s), 47 queries .

    快速回复 返回顶部 返回列表