现代处理器的主要指令集架构(ISA)包括:x86指令集架构、RISC指令集架构。
其中,x86可以划分为x86-32(英特尔)、x86-64(英特尔)、AMD64(AMD)等三种。
RISC可以划分为ARM、MIPS、Alpha、RISC-V。国产CPU在信创市场已形成“四种技术路径(x86、ARM、MIPS、Alpha)、六大主要厂商(兆芯、海光、鲲鹏、飞腾、龙芯、申威)”的发展格局。
1、x86指令集为了保持二进制的兼容性,即:上一代芯片的应用程序仍然能运行在下一代芯片中,使之前后系列的芯片成为一个“系列机”,扩展了许多新的指令,导致x86指令集的规模不断膨胀。
2、x86指令集在设计时,采取了一种强指令的方式,即:一条指令可以完成非常强大的功能。例如,一条指令可以完成内存不同位置的整个运算过程,或将一块数据直接从内存的一个位置移动到另2一个位置,而且这种强大的操作是在1个时钟周期内完成的。
在将近40年的发展历史中,x86由不足200条指令到今天超过1600条指令。
上图列出了x86指令集的MOV指令种类,其可以跳过一系列底层的微操作,实现一个较为复杂的指令功能。基于以上的设计理念,x86指令集有以下的优点或缺点。注意,缺点也许是优点,优点也许是缺点,这是马克思辩证唯物主义的思想。
如今,x86指令集在笔记本、台式机、服务器等场景取得了近乎垄断的优势,和IBM有着紧密的联系。可以说,IBM的选择成就了x86指令集的今天,并成就了英特尔这家曾经名不见经传的小公司。
在上世纪80年代,计算机科学家们分析了大量的程序,发现80%的指令是很少用到的,处理器频繁地使用20%的那部分指令,比如Load指令、条件分支指令、Store指令、比较指令。
因此,早期的RISC指令集、MIPS指令集应运而生,它们砍掉了大量不常用的冗余指令,只保留了最基本、最常用、功能最简单的指令集合。
基于这种RISC指令集设计的处理器架构代表是ARM架构,为了便于不同客户进行定制化修改,其每代均会推出以下三个授权版本:
相比于x86指令集(CISC复杂指令集),ARM这种RISC精简指令集的变化主要是
1、原来大量的冗余指令,以及由于历史原因兼容的指令,都在统计结果的基础上予以删除。
2、原来的一条x86强指令,在ARM中被多条基本的简单指令替代。
举一个例子:CISC提供的乘法指令,调用时可完成内存a和内存b中的两个数相乘,结果存入内存a,需要多个CPU周期才可以完成;而RISC不提供“一站式”的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。
基于以上的设计理念,或者说,在这样的底层逻辑下,ARM指令集的处理器架构有如下优点或缺点:
2011 年 10 月,随着 ARM 公司第一款 64 位 ARMv8 架构的发布,标志这 ARM在 HPC 领域的“觉醒”。相比 ARMv7,ARMv8 是一个巨大的跨越:64 位通用计算器、128 位向量寄存器、专为高性能计算新开发的向量指令集 NEON,使 ARM 指令集兼容架构芯片有了更为广泛的应用场景,可以说 ARMv8 让 ARM 指令集兼容架构芯片从嵌入式或移动设备,进入了高性能计算领域。
2021 年,ARM 公司推出的全新 ARMv9 架构,针对高性能计算的计算负载特征进行了一系列改进,ARMv9 相比于 ARMv8 最主要的区别有三点:AI、改进矢量扩展指令集 SVE2 以及安全。机器学习成为ARMv9 架构的重要组成部分,ARM 公司认为未来 ML 工作负载将会越来越普遍,同时,矩阵乘法指令成为 ARMv9 架构的基础功能,也标志着 ARM 架构对 AI 工作负载支持的强化。
RISC架构随后经历了RISC-I(1981)、RISC-II(1983)、RISC-III(1984)到RISC-IV(1988)四代,却始终未能得到重视。但在这个过程中,RISC的设计理念催生一系列新架构如MIPS、IBM PowerPC以及现在统治移动边缘端的ARM。
21世纪初期,受当时开源运动在操作系统和应用软件领域取得了巨大成功(如Linux等)的影响,为开源芯片设计带来了崭新的前景。
大家认为,RISC-V有望创造继x86、Arm之后的第三波芯片浪潮。RISC-V的灵活性,对定制化、碎片化场景的支撑力度良好,因此目前主要应用于物联网等终端领域,但在电脑、服务器等领域也已经有了一些尝试。国内RISC-V发展重要事件有:
这两种指令集之间的关系就好比是两种不同的烹饪风格。有些厨房可能更偏向于复杂多样的烹饪方式,而有些厨房则更喜欢简单高效的烹饪方式。同样地,CPU的设计者可以根据不同的需求选择使用CISC或者RISC指令集来设计CPU,以满足不同的应用场景和性能要求。