Ethan869
作者Ethan869课题专家组·2022-04-29 09:22
数据库架构师·某证券公司

ARM CPU架构,你了解多少?

字数 4972阅读 855评论 0赞 2

【引言】

最近有个需求:要求安装一个MySQL8.0在ARM架构上;CPU的ARM架构听说过,但没实际部署过;且这个ARM CPU架构又是一个什么东东,只是脑子有这么个名字,具体不是很了解。故今日集中学习下,有了此文。
大家都知道,随着linux开源操作系统的推广使用,很多企业级Linux都是部署在cpu架构为x86的服务器上,这是大家都知道的事;但如果有人问CPU的ARM架构,很多都说不清楚了,今天就来聊一聊 CPU的ARM架构。

此篇文章自己对 x86和ARMcpu架构的了解是:

通常大家说的 linux 指的是 X86 linux , ARM 是不同于 X86 的 CPU 架构, 对应的 指令集不同, 故 软件编译环境不同, 软件代码 一般不能互用,一般需要进行兼容性移植。

X86 是经典的 CISC 指令集,指令集复杂,功能多,串行执行,意味着执行效率低下, 但 性价比突出,被认 为是民用终端的主流处理器内置指令集。 Intel 和 AMD 的家用处理器都是 X86 指令集 ,用的 以 X86 为代表的 CISC 指令集。

要 想 了解透,就要先溯源 CPU是个嘛?

CPU(Central Processing Unit)主要由 运算器、控制器、寄存器 三部分组成;
运算器起着运算作用,控制器负责发出CPU每条指令所需要的信息,寄存器保存运算或指令的一些临时文件/结果,以保证更高的速度。

CPU有着 处理指令、执行操作、控制时间、处理数据 四大作用。
指令集 是存储在 CPU内部,对CPU运算进行指导和优化的 硬程序 。拥有这些指令集, CPU就可以更高效地运行。Intel主要有x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集。AMD主要是x86,x86-64,3D-Now!指令集。

CPU指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一

现阶段主流体系结构讲,指令集可分为复杂指令集(CISC)和精简指令集 (RISC) 两部分。

中央处理器 CPU 也可分为 CISC(Complex Instruction Set Computers ,复杂指令集计算集 ) 和 RISC(Reduced Instruction Set Computers) 两大主流 CPU 指令集类型。

CISC 以 Intel , AMD 的 X86 CPU 为代表; RISC 以 ARM , IBM Power 为代表。

要了解 CPU ARM 架构,又要先了解啥是复杂指令集 (CISC) 和精简指令集 (RISC) ?

和大家学习数据库,从 share-everything/share-disk/share-nothing 三种设计思路出发开始学习一样。

要想了解CISC 和 RISC ,首先了解一下两者的设计理念。

**

CISC设计理念

早期的 CPU 全部是 CISC 架构, 设计理念是要用最少最精炼的机器语言指令来完成所需的计算任务。 为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编 址 方式。 甚至某些指令可支持高级语言语句归类后的复杂操作,但硬件 设计 也越来越复杂,造价也越来越高。

为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外。还通过存于只读存贮器 (ROM) 中的微程序来实现其极强功能 ,处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能; 此设计 形式 被称为复杂指令集计算机 (Complex Instruction Set Computer-CISC) 结构.一般 CISC 计算机所含的指令数目至少 300 条以上,有的甚至超过 500 条。

CISC架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。

**

RISC设计理念

采用 CISC 复杂指令集合的 cpu 有较强处理高级语言的能力,对提高计算机的性能有益。但也发现 CISC 指令系统太复杂不易实现,且还可能降低系统性能。长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器。同时,复杂的指令系统必然带来结构的复杂性。不但增加了设计的时间与成本还容易造成设计失误。实际计算中一个典型程序的运算过程所使用的 80 %指令,只占一个处理器指令系统的 20 %,事实上最频繁使用的指令是取、存和加这些最简单的指令;

顺着这个思路,精简指令的设想初衷也有了: 即指令系统应当只包含那些使用频率很高的少量指令集,并提供一些必要的指令以支持操作系统和高级语言 。按照这个理念发展而成的计算机被称为精简指令集计算机 (Reduced Instruction Set Computer-RISC) 结构,简称 RISC 。

**

简单来讲:

CISC 通过操作内存、寄存器、运算器来完成复杂指令的,在实现时,是将复杂指令转换成了一个微程序, 微程序 在制造 CPU 时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时, 实际上是在执行一个微程序。

**

RISC 的设计初衷针对 CISC CPU 复杂的弊端,选择一些可以在单个 CPU 周期完成的指令,以降低 CPU 的复杂度,将复杂性交给编译器, RISC 架构要求软件来指定各个操作步骤。

RISC架构可降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。

这时大家很自然的得出一个直观结论:

CISC 这种微程序的执行作为一个原子操作,是不可被打断的;

RISC指令之间是一些可以在单个 CPU 周期完成的指令,可以被打断,所以理论上 RISC 可更快响应中断。

理解了 设计 理念,再从软硬件角度对比CISC 和 RISC

1.硬件角度看

CISC 处理的是不等长指令集,必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。

而 RISC 执行的是等长精简指令集, CPU 在执行指令的时候速度较快且性能稳定。因此在并行处理方面 RISC 明显优于 CISC , RISC 可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于 RISC 执行的是精简指令集,故 制造工艺简单且成本低廉。

  1. 从软件角度看

CISC 由于发展早成熟,软件厂商代理多基于 CISC 体系结构的 PC 及其服务,像 doc/ Microsoft 应用程序;

RISC 后期发力、势单力薄。应用程序生态环境显得不如 CISC 丰富多样;而应用程序经过那么多年的人力和资源的投入,惰性较大,各大应用商在已有 CISC 类应用满足市场需求的前提,再让其投入大量的人力物力去研究运行在 RISC 上的应用程序,阻力可想而知。

好了,到了这里,大家可以稍微扩展性思维,预测下国内CPU 的发力点

国产 cpu 制作工艺被光刻机技术限制。为了降低 cpu 的复杂度,可能会向 RISC 架构重点发力;但 RISC 架构制作难度的降低,是以提升了编译器软件和应用生态程序的复杂性为代价,后果是开发成本的激增,上游应用供应商不愿意跟风投入。但考虑到目前国际紧张趋势,在民生国防领域, RISC 架构的 CPU 研发具有重要意义。

对于企业服务器来说, 应了那句老话: RISC 买着便宜用着贵(代码兼容性、周期研发贵), CISC 买着贵用着便宜(微程序做了预先集成优化)。

再来系统看下CISC 和 RISC 的优缺点:

**

CISC 体系的指令特征

1) 使用微代码。指令集可以直接在微代码存储器 ( 比主存储器的速度快很多 ) 里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程序。

2) 庞大的指令集。可以减少编程所需要的代码行数,减轻程序员的负担。高级语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到存储器以及存储器到寄存器的指令。

CISC 体系的优缺点

1) 优点:能够有效缩短新指令的微代码设计时间,允许设计师实现 CISC 体系机器的向上兼容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软件。另外微程序指令的格式与高级语言相匹配,因而编译器并不一定要重新编写。

2) 缺点:指令集以及芯片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

RISC 体系的指令特征

1) 精简指令集:包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令。

2) 同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。

3) 单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。

RISC 体系的优缺点

1) 优点:在使用相同的芯片技术和相同运行时钟下, RISC 系统的运行速度将是 CISC 的 2 ~ 4 倍。由于 RISC 处理器的指令集是精简的,它的内存管理单元、浮点单元等都能设计在同一块芯片上。 RISC 处理器比相对应的 CISC 处理器设计更简单,所需要的时间将变得更短,并可以比 CISC 处理器应用更多先进的技术,开发更快的下一代处理器。

2) 缺点:多指令的操作使得程序开发者必须小心地选用合适的编译器, 而且编写的代码量会变得非常大。 另外就是 RISC 体系的处理器需要更快的存储器,这通常都集成于处理器内部,即 L1 Cache( 一级缓存 ) 。

综合上面所述,若要再进一步比较 CISC 与 RISC 之差异,可以由以下几点来进行分析:

  1. 指令的形成: CISC 因指令复杂,故采用微指令码控制单元的设计,而 RISC 的指令 90% 是由硬件直接完成,只有 10% 的指令是由软件以组合的方式完成,因此指令执行时间上 RISC 较短,但 RISC 所须 ROM 空间相对的比较大,至于 RAM 使用大小应该与程序的应用比较有关系。
  2. 寻址模式: CISC 的需要较多的寻址模式,而 RISC 只有少数的寻址模式,因此 CPU 在计算存储器有效位址时, CISC 占用的汇流排周期较多。
  3. 指令的执行: CISC 指令的格式长短不一,执行时的周期次数也不统一,而 RISC 结构刚好相反,故适合采用流水线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。

小结:

显然,在设计上 RISC 较 CISC 简单,同时因为 CISC 的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言 RISC 较 CISC 占上风,但 RISC 因指令精简化后造成应用程式码变大,需要较大的存储器空间,且存在指令种类较多等缺点,很是限制 RISC 的推广使用。

文章开始说了, CISC 以 Intel , AMD 的 X86 CPU 为代表,而 RISC 以 ARM , IBM Power 为代表。

接下来再看具体一些应用场景。

ARM 架构 CPU基于精简指令 (RISC) ,特点有指令长度固定,执行效率高,低成本,定位于嵌入式平台,简化了硬件逻辑的设计,减少了晶体管,从而降低功耗,流水线等控制并不复杂,进一步降低了晶体管数量,主要是面对轻量级的、目标明确单一的程序,所以主要都是移动端使用;

以 Intel , AMD 为代表的x86CPU基于复杂指令集 CISC ,硬件逻辑 设计 复杂,流水线指令集并行、超线程、虚拟化等,复杂度很高,晶体管数量庞大,主要定位计算密集场景,如多媒体编辑、科研计算场景等。

简单一句话:

ARM 是为了低功耗, x86 是为了高性能。

作者:杨磊,某金融公司、数据库架构师;一直在数据库领域坚持耕耘10+年,从事数据架构设计和部署,对开源数据库、国产数据库、NoSQL、NewSQL、大数据、云计算、云原生等新技术有持续关注和极大兴趣。擅长领域:数据库、架构设计、信创改造。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关问题

X社区推广