CPU的架构学习理解——X86以及ARM

了解这个原因是之前在公司进行IM接入测试的时候,我的android studio 有点慢(现在使用的公司提供的MAC进行开发的)。大神说,你可以考虑下一个ARM的版本的试一下。但是我对于ARM并不是很了解,学习了解一下,随便回顾一下之前学习过的《计算机组成原理》的知识。

CPU是个啥?

CPU 中央处理器—— 主要包含三个部分:运算器,控制器,寄存器;

  1. 运算器:进行运算的作用,将一条条指令进行真正地落实。
  2. 控制器:负责将每一条指令所需要的信息收集并发出。
  3. 寄存器:保存指令和运算的临时文件,提高运算效率。
    一个好的cpu,我们当然希望它是高性能和低功耗相结合的高质量产品。

复杂指令化(CISC) 和 精简指令集(RISC)

Cpu的种类繁多,但是基本的逻辑就分为以上两类:复杂指令化和精简指令化。下面有一个例子有利于理解两者的不同:

比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了,多么简单。这就是“复杂指令集”和“精简指令集”的逻辑区别。

复杂指令化精简指令化之间的区别就在于指令的多少,Intel的X86是采用前者,而ARM采用的就是后者。这让就比较好理解为什么,大神推荐我用ARM的版本。原来我直接来一句“请给我打开studio”,经过多次训练后就直接可以完成很熟练地完成后,我直接简化“开”。这样就比较好理解整体的思路到底是怎么了。

多方面比较

这两种框架不单只有指令集的区别,还有其他的方面的区别。

制造工艺

ARM走的是低功耗这条路线,而Intel的主力放在了高性能。两者恰恰好对应我们最希望的Cpu的两个方向。当然,这个方向是相对来说的并不是绝对的。
功耗的一个标准就在于发热。Intel的i7的处理器的发热率就明显高于基于ARM的处理器如高通骁龙的805等等。这就迫使Intel在纳米数上进行突破,因为一般来说,制造工艺的纳米数越低那么使用效率也就越高。这一点上,ARM就可以采用较低一点的制造工艺以达到intel采用的高工艺所力求的温控效果。

64位计算

讲64位计算,肯定离不开相爱相杀的两家公司——AMD和Intel;AMD(虽然名字跟ARM架构很像,一开始我也弄混了,这里讲一个梗方便区分,AMD又名“农企”)在移动端上的采用AMD64——这个也是64位版本的x86处理器的标准。Intel也是基于这个标准进行自己的适应性发展,例如其中的安腾cpu;ARMv8 是 ARM架构的首个支持64位的指令集架构。

ARMv8使用了两种执行模式,AArch32和AArch64。顾名思义,一个运行32位代码,一个运行64位代码。ARM设计的巧妙之处,是处理器在运行中可以无缝地在两种模式间切换。这意味着64位指令的解码器是全新设计的,不用兼顾32位指令,而处理器依然可以向后兼容。

异构处理

一般情况下,我们所提及的双核四核乃至八核基本上都是一致的,提供一样的功耗一样的性能。而ARM架构在创新上暂时有一点Intel无法复制的领先(数据是2016年左右的),就是异构处理

ARM通过big.LITTLE向移动设备推出了异构计算。这意味着处理器中的核可以有不同的性能和功耗。当设备正常运行时,使用低功耗核,而当你运行一款复杂的游戏时,使用的是高性能的核。

两者的发展前景

毫无疑问,现在的cpu龙头框架是Intel下的X86。但是这并不意味着它一家独大。ARM也在不断冲击着Intel的x86的历史地位。这点不容置疑。对于我这些普通的使用者来说,更多是希望两者不断地技术竞争能够带来更好的产品面向用户。

2016年AMD终于推出了首个基于ARM架构的处理器——Opteron A1100。AMD希望能够凭借这一处理器挑战Intel在数据中心服务器市场的霸主地位。

以上的学习总结参考如下:ARM和X86的区别