传说中的ARM架构与X86架构

目录

1、指令集

1.1 CISC

1.2 RISC

 1.3 CISC优缺点

 1.4 RISC优缺点

2、ARM架构与X86架构


1、指令集

指令集可分为CISC(复杂指令集)与RISC(精简指令集)

1.1 CISC

计算机处理器包含有实现各种功能的指令或微指令,指令集越丰富,为微处理器编写程序就越容易,但是丰富的微指令集会影响其性能。复杂指令集计算机(CISC)体系结构的设计策略是使用大量的指令,包括复杂指令。与其他设计相比,在CISC中进行程序设计要比在其他设计中容易,因为每一项简单或复杂的任务都有一条对应的指令。程序设计者不需要写一大堆指令去完成一项复杂的任务。 但指令集的复杂性使得CPU和控制单元的电路非常复杂。

CISC包括一个丰富的微指令集,这些微指令简化了在处理器上运行的程序的创建。指令由汇编语言所组成,把一些原来由软件实现的常用的功能改用硬件的指令系统实现,编程者的工作因而减少许多,在每个指令期同时处理一些低阶的操作或运算,以提高计算机的执行速度,这种系统就被称为复杂指令系统。

在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。

1.2 RISC

RISC(精简指令集计算机) ,是一种执行较少类型计算机指令的微处理器,有一个简化的指令集,该指令集提高处理器的效率但是需要有更复杂的外部程序。RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来提高运算速度。

RISC设计方案是根据John Cocke在IBM所做的工作形成的。John Cocke发现大约20%的计算机指令完成大约80%的工作。因此,基于RISC的系统通常比CISC系统速度快

当然,和CISC架构相比较,尽管RISC架构有上述的优点,但不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一

综上,CISC是依靠增加机器的硬件结构来满足对计算机日益增加的性能要求。计算机结构的发展一直是被复杂性越来越高的处理机垄断着,为了减少计算机操作与高级语言的差别,为了改善机器的运行特性,机器指令越来越多,指令系统也越来越复杂。

RISC技术的基本出发点就是通过精减机器指令系统来减少硬件设计的复杂程度,提高指令执行速度。在RISC中,计算机实际上每一个机器周期里都执行指令,无论简单或复杂的操作,均由简单指令的程序块完成,具有较强的仿真能力。

传说中的ARM架构与X86架构_第1张图片

 1.3 CISC优缺点

  1. CISC的指令特征
    1. 使用微代码。指令集可以直接在微代码存储器(比主存储器的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程序。
    2. 庞大的指令集。可以减少编程所需要的代码行数,减轻程序员的负担。高级语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到存储器以及存储器到寄存器的指令。
  2. CISC体系的优缺点
    1. 优点:能够有效缩短新指令的微代码设计时间,允许设计师实现 CISC 体系机器的向上兼容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软件。另外微程序指令的格式与高级语言相匹配,因而编译器并不一定要重新编写。
    2. 缺点:指令集以及芯片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

 1.4 RISC优缺点

  1. RISC体系的指令特征
    1. 精简指令集:包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令。
    2. 同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。
    3. 单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。
  2. RISC体系的优缺点
    1. 优点:在使用相同的芯片技术和相同运行时钟下,RISC 系统的运行速度将是 CISC 的2~4倍。由于RISC处理器的指令集是精简的,它的内存管理单元、浮点单元等都能设计在同一块芯片上。RISC 处理器比相对应的 CISC 处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术,开发更快的下一代处理器。
    2. 缺点:多指令的操作使得程序开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快的存储器,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。

2、ARM架构与X86架构

这一部分ARM与X86构架 - 百度文库写的很好,在此参考总结。

我们要明⽩CPU是⼀个执⾏部件,它之所以能执⾏,也是因为⼈们在⾥⾯制作了执⾏各种功能的硬件电路,然后再⽤⼀定的逻辑让它按照⼀定的顺序⼯作,这样就能完成⼈们给它的任务。也就是说,如果把CPU看作⼀个⼈,⾸先它要有正常的⼯作能⼒(既执⾏能⼒),然后⼜有⾜够的逻辑能⼒(能明⽩做事的顺序),最后还要听的懂别⼈的话(既指令集),才能正常⼯作。⽽这些集中在⼀起就构成了所谓的“架构”,它可以理解为⼀套“⼯具”、“⽅法”和“规范”的集合。不同的架构之间,⼯具可能不同,⽅法可能不同,规范也可能不同,这也造成了它们之间的不兼容——你给⼀个意⼤利泥⽡匠看⼀份中⽂写成的烹饪指南,他当然不知道应该⼲什么了。 

从CPU发明到现在,有⾮常多种架构,从我们熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它们之间的差距都⾮常⼤。但是如果从最基本的逻辑⾓度来分类的话,它们可以被分为两⼤类,即所谓的“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。

这两种类中的各种架构之间最⼤的区别,在于它们的设计者考虑问题⽅式的不同。举个例⼦,⽐如说我们要命令⼀个⼈吃饭,那么我们应该怎么命令呢?

1、我们可以直接对他下达“吃饭”的命令,

2、也可以命令他“先拿勺⼦,然后舀起⼀勺饭,然后张嘴,然后送到嘴⾥,最后咽下去”。

        从这⾥可以看到,对于命令别⼈做事这样⼀件事情,不同的⼈有不同的理解,有⼈认为,如果我⾸先给接受命令的⼈以⾜够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以⽤⾮常简单的命令让他去做很复杂的事情(CISC)——⽐如只要说⼀句“吃饭”,他就会吃饭。但是也有⼈认为这样会让事情变的太复杂,毕竟接受命令的⼈要做的事情很复杂,如果你这时候想让他吃菜怎么办?我们可以把事情分为许多⾮常基本的步骤,这样只需要接受命令的⼈懂得很少的基本技能,就可以完成同样的⼯作,⽆⾮是下达命令的⼈稍微累⼀点——⽐如现在我要他吃菜,只需要把刚刚吃饭命令⾥的“舀起⼀勺饭”改成“舀起⼀勺菜”,问题就解决了,多么简单。

这就是“复杂指令集”和“精简指令集”的逻辑区别。⽬前他们两种指令集都在蓬勃发展,X86是复杂指令集(CISC)的代表,⽽ARM则是精简指令集(RISC)的代表

CISC:更加专注于⾼性能但同时⾼功耗的实现,RISC:则专注于⼩尺⼨低功耗领域。

实际上也有很多事情CISC更加合适,⽽另外⼀些事情则是RISC更加合适,⽐如在执⾏⾼密度的运算任务的时候CISC就更具备优势,⽽在执⾏简单重复劳动的时候RISC就能占到上风,⽐如假设我们是在举办吃饭⼤赛,那么CISC只需要不停的喊“吃饭吃饭吃饭”就⾏了,⽽RISC则要⼀遍⼀遍重复吃饭流程,负责喊话的⼈如果嘴巴不够快(即内存带宽不够⼤),那么RISC就很难吃的过CISC。但是如果我们只是要两个⼈把饭舀出来,那么CISC就⿇烦得多,因为CISC⾥没有这么简单的舀饭动作,⽽RISC就只需要不停喊“舀饭舀饭舀饭”就OK。

如上所述,目前市面上CPU主要有两大类,一类是以x86为代表的的复杂指令集系统,一类是以ARM为代表的精简指令集系统,指令集方面x86架构的单条指令更长,表达的意义更多,功能更强,但各指令使用频率相差大,硬件要求更复杂,后来发展起来的ARM架构单条指令更短,表达的意义更少,但使用频率更高,硬件要求更简单

传说中的ARM架构与X86架构_第2张图片

 功耗方面,ARM相比于x86具有独特优势,ARM的设计从低功耗出发,节能效果更明显,这也意味着ARM架构的产品具有系统稳定性高、产品体积小、电源成本低等优势。

传说中的ARM架构与X86架构_第3张图片

 正因为两者在指令集、功耗上的不同特点,x86架构广泛应用于桌面端,如计算机、服务器等。而ARM架构多应用于手持设备,如平板、手机等。

你可能感兴趣的:(初学编译器,CPU)