为什么CPU指令集和微架构是江湖门派标志?

描述

以前的文章说过,芯片的分类方法很多,种类犹如夜空的繁星,多到无法枚举。本文把芯片的范围缩小,聚焦高端通用芯片CPU这一分支,我们会发现CPU芯片的种类也不少,而且“门派”林立,俨然像一个CPU芯片“江湖”,指令集和微架构就是这个江湖中的门派标志。什么是CPU指令集和微架构?为什么指令集和微架构是江湖门派标志?本文试图用通俗的语言加以说明。

CPU是中央处理器(Central Processing Unit)的英文简称,是一种高端通用芯。它在计算机(电脑)和智能设备中用来指挥各个部件协同高效地工作。它是电脑和智能设备的控制中枢,是电脑中的大脑。

电脑的部件需要CPU来指挥,而CPU内的部件也需要受到指挥协调才能工作,这个指挥官就是程序,由程序发出的指挥CPU内部电路协同工作的命令,简称为指令。例如,如果要让CPU完成一次A+B-》C的计算,就要发2条存取指令,从存储器把A和B取出来送到运算器中;再发1条加法指令,让运算器执行加法运算;最后发1条存取指令,把C存入存储器。这个例子中用到了两种指令:存取指令和加法指令。

实际上,一个通用CPU要完成各类计算、推理、判断和控制工作,它的指令种类少则几十种,多则数百种,CPU的各种指令的集合称为CPU的指令集。指令集确定了CPU的工作方式和与之相适应CPU内部的硬件架构,这种硬件架构称为CPU的微架构。指令集和微架构是一个公司研发出新款CPU后形成的核心知识产权。指令集是CPU的顶层设计规范,微架构是这个顶层规范的物理实现,这种实现可以有多种,实现方法可以有变化。一般说的CPU架构就包含了CPU指令集和微架构两个东西。

芯片

图1.新的指令集和微架构可以创立一个新的CPU芯片江湖门派

图1描述了指令集、微架构、CPU芯片和芯片用户群之间的关系。可以看到,研发一款新的指令集和微架构,就相当于在CPU芯片江湖中创立了一个门派。具体地讲,A公司开发了一款新的CPU,意味着创建了新的指令集和微架构,不但A公司的CPU芯片形成了用户群A,而且A公司还可以授权其他公司开发CPU芯片,并形成相应的用户群B、C、D等。新的指令集和微架构可以开发一个CPU芯片家族,可以产生一个芯片用户集群,就好像产生了一个江湖门派。指令集和微架构设计得好,CPU的性能就好,用户就多,追捧者就多,门派就兴旺发达。

芯片

图2.指令集是连接软件和硬件的纽带

图2表明,指令集是连接软件和硬件的纽带。如论是应用程序还是操作系统中的系统代码,最终都被编译成可以在CPU芯片内部执行的符合指令集规范的机器代码程序。机器代码程序中的指令控制着CPU内部部件协调高效工作,并实现CPU的整体功能,进而由CPU控制整机系统工作。指令集是系统软件和硬件工程师共同遵从的法条,只有遵守了这个法条,软件工程师编写的软件才能在不同型号的整机系统上运行。硬件工程师开发的整机系统才能运行现有的应用软件。

讲了这么多概念,也分析了这些概念的关系,如果还不好理解的话,让我们来看看三个代表性的CPU指令集和微架构的例子吧。第一个是代表单片机或微控制器(MCU)的MCS-51指令集。第二个是代表复杂指令集计算机(CISC)的x86指令集。第三个是代表精简指令集计算机(RISC)的ARM指令集。举例这些指令集和微架构的目的不是为了研究,只是为了展示,目的是使读者对CPU芯片江湖的门派标志——指令集和微架构有个宏观印象。

为什么要把MCU指令集拿来和CPU指令集一同展示?让我们先了解一下MCU、CPU和SoC三者的关系吧。MCU是微控制器(Micro ControllerUnit)的英文简称,是一种中低端的通用芯片,主要用于中小电子产品和系统的控制。SoC是系统级芯片(System on Chip)的英文简称,是一种包含低、中、高端处理功能的面向应用领域的专用芯片。MCU、CPU和SoC难以绝对划界,但是,如果研究了三者的特点后,您就可以对它们进行清晰的区分了。

三者的共同特点:它们都是智能电子产品和系统的控制中枢,都有要遵循的指令集和微架构。三者的差别:MCU一般是4位、8位和16位微架构,工作频率不会太高。控制性任务较多,计算和信息处理性工作较少。与CPU相比,单芯片上集成了一些外部接口和功能部件。CPU一般是16位、32位和64位微架构,工作频率很高,更重视处理速度和运算能力,单芯片上很少集成外部接口和功能部件。SoC更加重视单芯片的系统集成度,各种位宽微架构、工作频率、集成度的SoC都可以有,单芯片上包含多种外部接口和功能部件。

MCU与CPU的区别是处理能力小与大,偏向控制与偏向计算的区别。SoC处理能力可小可大,如果在MCU或者CPU芯片上集成更多的外部接口和功能部件,这个MCU或者CPU芯片就变成了SoC芯片。

一、指令集与微架构的三个代表

基于上述原因,以及ARM CPU通常被嵌入到SoC芯片中,本文选择了MCS-51作为MCU指令集的代表,x86既作为CISC指令集的代表也作为了CPU指令集的代表,ARM既作为RISC指令集的代表也作为了SoC指令集的代表,下文对它们做简要介绍和展示。

1.MCS-51指令集和微架构

MCS-51指令集是Intel公司1980年前后开发的单片机指令集,该指令集包含数据传送、位操作、逻辑运算及转移、算术运算、控制转移5个大类共计111条指令(图3)。该指令集对应的单片机微架构如图4所示。

通过对该微架构硬件的增、减、改变,Intel先后开发了兼容MCS-51指令集的系列单片机芯片,共计16个型号(图3)。另外Intel也向许多公司开放MCS-51指令集和微架构,允许他们生产兼容MCS-51指令集的单片机。这些公司包括ATMEL、PHILIPS、NXP、OKI等,以及日本、台湾和国内的一些公司。因此,MCS-51单片机在全球应用十分普及。MCS-51开辟了一个规模庞大、应用甚广的单片机大家族。

芯片

图3.MCS-51单片机指令集(来源:无忧文档)

芯片

图4. MCS-51单片机内部的微架构(来源:百度百科)

芯片

图5. MCS-51单片机家族(来源:参考资料5)

2. x86指令集和微架构

1978年,Intel公司开发出了16位的CPU,并命名为i8086,同时还开发出与之相配合的数学协处理器i8087,这两种芯片使用相互兼容的指令集,再加上i8087用于对数、指数和三角函数等数学计算的指令集,就形成了今天人们常说的x86指令集。随后的40年间,Intel陆续研制出i80286、i80386、i80486、奔腾(Pentium)系列、酷睿(Core)系列等后续CPU型号。研制这些CPU芯片时,为了保持向前软件兼容,Intel所有CPU继续使用x86指令集,并根据CPU功能提升和性能增强的需要,增加了286、386、486、Pentium、Pentium Ⅱ等扩展类指令。“新三年旧三年,修修补补又三年”,可以说x86指令集是与时俱进,不断生长和变复杂的典范,因而x86指令集成了名副其实的复杂指令集(CISC)。

x86指令集包括数据传送、逻辑运算、移位运算、程序控制、算术运算、串操作、处理器控制、286扩展、386扩展、486扩展、Pentium扩展、Pentium Ⅱ扩展12个大类共计190多条指令(图7)。图8分别是Intel Core和AMD K8的CPU微架构。

Intel和AMD是全球最大的两家x86指令集CPU芯片开发商。Intel多达上百个型号的CPU都属于x86系列。另外,加上AMD多达80多个型号的兼容x86 CPU,x86指令集CPU芯片家族的阵容可谓是十分壮观(图10)。两家公司的CPU芯片不断迭代升级,相互竞争,型号品种繁多,形成了令世人瞩目的CPU产品发展轨迹。

芯片

图7. x86 CPU指令集(来源:参考资料1)

芯片

图8. x86 CPU的两种微架构举例(来源:参考资料3)

3. ARM指令集和微架构

ARM公司成立于1990年,是全球领先的CPU IP(Intellectual Property)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构处理器。ARM公司自己不设计和销售CPU芯片,只向其他公司销售和授权使用ARM架构的系列CPU IP。ARM授权从高到低大体分为三种,包括架构授权、内核授权和使用授权,本文只关心前两种。架构授权对设计团队的要求很高,许可费用也很昂贵,只适合有实力的大公司,中小企业一般选择购买内核授权。

架构授权(也称为指令集授权)是指用户购买了架构级的ARM处理器设计、制造的许可权后,可以从整个指令集和微架构入手,对ARM架构进行改造,甚至可以对ARM指令集进行裁减或扩展,实现更适合自用、更高性能、更低功耗、更低成本的目的。拥有ARM架构授权的公司包括高通、苹果、三星、微软、海思等。

内核授权(也可称为方案授权)是指用户可以将其所购买的ARM核心(IP核)应用到自己设计的芯片中,但用户不得对ARM核心进行修改。拥有内核授权的公司多如牛毛,国际上包括德州仪器、博通、飞思卡尔、富士通以及Calxeda等,国内中小芯片设计公司也很多,不胜枚举。

图10展示了ARM指令集。ARM指令集包括跳转指令、数据处理、乘加指令、PSR访问、加载/存储指令、数据交换、移位指令、协处理器8个大类共计50条指令(其中,ARM指令16条,Thumb指令18条,Thumb-2 16条)。加上15条控制伪指令合计65条指令。图11展示了一款可内核授权的ARM核心微架构,它的型号命名为ARM Cortex A9。

全球1500多家企业获得了ARM公司授权,可以研发和生产ARM架构的处理器芯片和包括含ARM内核的SoC芯片。图12是全球采用ARM架构处理器技术的用户、工具商、合作伙伴的Logo图谱。ARM CPU门派在移动通信领域一家独大,并正在向其它领域渗透,包括物联网、台式电脑、服务器等,让x86 CPU门派老大Intel公司十分不安。

1. MCU类的指令集

MCU作为缩减版的CPU和SoC,它也有指令集和微架构,同样是智能电子产品和系统的控制中心。因此,它可以作为CPU芯片江湖的一员,被写入到这一部分来,让读者看看MCU指令集门派都有哪些种类。

这个门派下的指令集包括:Zilog公司的Z80指令集、Intel的MCS-51指令集、MicroChip的PIC指令集、ATMEL的AVR指令集、TI的MSP430指令集、Motorola的68K、ARM公司的ARM-Thumb等等。

2.CISC类的指令集

CISC类指令集也可称为复杂指令集。CISC是复杂指令集计算机(Complex Instruction SetComputer)的英文缩写。在CISC指令处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度较慢。

这个门派下的指令集包括:Intel的x86指令集(x86、x86-64、IA-32、IA-64等)、AMD的兼容x86指令集(x86、AMD64等)、威盛VIA的兼容x86指令集(x86、AIS等)。

3.RISC类的指令集

RISC类指令集也可称为精简指令集。RISC是精简指令集计算机(Reduced Instruction SetComputing)的英文缩写。它是在CISC指令系统基础上发展起来的,CISC各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂指令系统必然增加微处理器的复杂性,并且指令解码执行过程复杂并且费时,必然会降低计算机的速度。20世纪80年代诞生了RISC型CPU。相对于CISC型CPU,RISC型CPU不仅精简了指令集,还采用了超标量和超流水线结构,大大增加了并行处理能力。RISC指令集是高性能CPU的发展方向。RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高了很多。

这个门派下的指令集包括:DEC公司的Alpha指令集、MIPS公司的MIPS指令集、Sun公司的SPARC指令集、IBM联合Apple与Motorola开发的PowerPC指令集、IBM的POWER服务器CPU 指令集、ARM公司的ARM32和ARM64指令集、开源RISC-V指令集等。

4.EPIC类的指令集

EPIC类指令集也称为精确并行指令集。EPIC是精确并行指令计算机(Explicitly ParallelInstruction Computers)的英文缩写。EPIC是否是RISC和CISC体系的继承者的争论不少,单以EPIC体系来说,它更像Intel的处理器迈向RISC体系的重要步骤。EPIC体系设计的CPU,在相同的主机配置下,处理Windows的应用软件比基于Unix下的应用软件要好很多。

Intel采用EPIC技术的服务器CPU是安腾Itanium(开发代号Merced)。它是64位处理器,也是IA-64系列中的第一款。

芯片

图13. 全球流行的CPU指令集的分类

三、实现CPU自主可控的梦想

发展自主可控的国产CPU,首先要解决指令集和微架构的自主可控问题,其次是软件生态和生产的问题。图14列出了目前主要的国产CPU指令集及技术来源,这是我们发展自主可控国产CPU的基础,这些资源已得到业界的高度重视。希望政府能顶层规划和统一协调,加大资金支持力度,在业界共同努力下实现国产CPU自主可控的梦想。

芯片

图14.主要的国产CPU指令集及技术来源(来源:由参考资料9整理)

如何实现我国CPU芯片自主可控,公认途径归纳起来有以下几个方面,一是购买流行CPU架构授权,开发国产CPU产品;二是用好开源CPU指令集RISC-V,走国产CPU自强之路。三是用好已有可控CPU架构,加大投入和研发力度,补齐国产CPU短板。四是创立新的CPU架构,走自力更生的国产CPU发展之路。发展国产CPU,实现安全、自主和可控是最终目的,方法可以多样化,不一定什么都要靠自己从零做起,即未必一定要创立新CPU门派。

1.购买流行CPU架构授权,开发国产CPU产品。

目前,国内大部分国产MCU、CPU和SoC芯片研发都是走这个途径。之前这条路子走的很顺利,国内芯片设计销售额多年实现两位数增长,2020年有望超过3800亿元。大部分公司都以购买授权方式,在自研CPU芯片中采用国外流行的CPU架构,包括华为海思自研的多款SoC芯片,都是基于ARM架构的CPU。中美科技战以来,大家发现这是一种自主但不可控的CPU发展之路。

2.用好开源CPU指令集RISC-V,走国产CPU自强之路。

美国对我国芯片产业的打压和围堵,让业界把发展自主可控国产CPU的希望寄托在了开源指令集RISC-V上来,这可能是目前希望最大的一条途径。原因是RISC-V架构已比较成熟,性能也比较优异,已经过许多商业化应用验证。并且国内已具有一定的人才和技术积累。人们认为RISC-V最有希望改变当前由ARM和x86主导CPU芯片江湖的局面,它将对ARM在消费类、IoT等嵌入式CPU市场的优势地位造成巨大冲击。RISC-V是国产自主可控CPU的曙光。RISC-V目前的唯一短板还是软件生态不够完善,需要业界同仁奋发努力。

3.用好已有可控CPU架构,加大投入和研发力度,补齐国产CPU短板。

国内有些公司多年前陆续继承了一些国外老旧CPU架构的产权,有些公司也获得了国外较成熟CPU架构永久授权,也有些公司自创了CPU和GPU架构。例如阿里平头哥(收购中天微)、苏州国芯、中晟宏芯、深圳中微电等。华为海思也获得了ARM v8架构的永久授权,这些都是开发自主可控国产CPU的良好基础。建议政府和企业加大投入和研发力度,在这些CPU架构基础上创新发展,不断完善软件生态,抓住补短板和国产替代的良机,实现国产CPU产品的迭代升级和技术进步。

4.创立新的CPU架构,走自力更生的国产CPU发展之路。

这就相当于要设计一款新的CPU,建立新的CPU指令集和微架构。这是一条最困难的途径。最困难体现两方面,一是设计的新款CPU能否具备性能和功能的先进性、高效性和经济性;二是如何能快速搭建好新款CPU的软件生态,包括汇编和高级语言编程工具、系统开发验证工具等。软件生态建设需要时间,需要市场,也需要研发团队和用户的通力协作。而且,创立一个CPU行业门派后,要让这个门派发扬光大并不是一件容易的事情。因此,许多人对这条途径不太看好。

结语:1.指令集是软件和硬件的纽带,电子产品中的软件不论是高级语言还是汇编,最后都是转换为一条条的指令,指挥硬件各部件协调工作,硬件是为完成指令的任务而生的。2.指令集是软件和硬件工程师共同遵从的法条,只有遵守了这个法条,开发的软件才能在不同型号的硬件上兼容运行。3.指令集是CPU芯片江湖门派的标志,公司名和产品名不过是它的代名词罢了。只有指令集相同,产品才能兼容互换。只有大家都认可这个指令集,都愿意投入到这个门派之下,不断完善软件生态,才能使用户越来越多,门派越来越兴旺。4.发展自主可控的国产CPU,最困难的是搭建CPU的软件生态。如果把CPU指令集看作门派标志的话,搭建软件生态就是营造门派氛围,扩大门派影响力。

原文标题:【芯论语】科普:指令集——CPU芯片江湖中的门派标志

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分