vergil wang


Hi, i'm vergilw, i'm a iOS developer from China, i'm living in Hubei,Wuhan.


iOS Developer

CPU架构ARM与X86介绍

做移动端开发的时候,编译器设置里会遇到Architectures配置,使用第三方库的时候也经常会遇到Architectures的报错。所以作为开发者应该了解常用的CPU架构。

CPU架构的发展

Inter与AMD

在IBM发明了PC成为霸主的年代,Inter(英特尔)还只是一个小公司。曾经IBM采购Intel的X86处理器来生产自家PC,但Intel一家无法满足IBM的订单,于是IBM要求Intel找伙伴公司代工生产X86处理器,同时IBM为了规避将来可能出现的采购风险,要求英特尔将x86专利授权给代工的公司,而AMD就是这个幸运的小伙伴之一。后来Intel做大后不愿意再分享X86,于是一方面规定被授权公司被收购后授权失效,一方面大打专利官司阻碍其他公司生产,一方面不断推出专利接口的产品阻止仿冒行为,加上Intel处理器性能的不断升级,其他公司纷纷跟不上脚步倒闭了事。唯独只有AMD,通过自行研发的K6架构苟延残喘下来,并且逐步站稳脚跟。

ARM

ARM成立于1991年,是一家出售IP(技术知识产权)的公司。ARM的架构是采用RISC架构,如同它的名称一样,Advanced RISC Machines,RISC架构在当初的PC架构争霸战虽然败给Intel所主导的x86处理器架构,却默默在另外的领域成长壮大;小从硬盘转速控制、电信基地台的计算、汽车喷射引擎的控制、音响系统、相机引擎,大到电动机具的控制等等,都能够看见采用ARM授权架构处理器的身影。

iPhone的出现也间接带起市场对于ARM架构应用处理器的需求,不过光是苹果也无法带起市场对于ARM处理器的需求,如WM(WP7)手机与Symbian也纷纷加入新一代智能手机战局,但是真正成为关键的,是Google Android宣布参战后,其它手机厂商取得一个相较过去成熟的通用智能手机平台,而各厂商又为了进行产品差异化,开始针对ARM架构应用处理器的效能以及硬件支持要求,使得过去发展缓速的ARM架构一下子热络起来,也让ARM架构一夕之间成为火热话题。

X86与ARM

X86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称,包括Intel8086、80186、80286、80386以及80486以86结尾系列,英特尔统治整个CPU产业链长达数十年。但是,Intel以增加处理器本身复杂度作为代价,去换取更高的性能,但集成的指令集数量越来越多,给硬件带来的负荷也就越来越大,无形中增加了功耗和设计难度。

ARM(Advanced RISC Machines)公司是苹果、Acorn、VLSI、Technology等公司的合资企业。ARM采用将芯片的设计方案授权(licensing)给其他公司生产的模式,在世界范围结成了超过100个的合作伙伴(Partners),将封闭设计的Intel公司变成全民公敌。ARM处理器非常适用于移动通信领域,具有低成本、高性能和低耗电的特性,ARM的高性价比和低耗能在移动市场比英特尔更具优势。

CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大.

X86架构采用CISC,而ARM采用RISC。

为什么移动开发还需要支持X86

应用程序的语言最终都需要编译成为机器码才能运行,而不同的CPU架构的接口是不一致的,所以相应的机器码也有差异。虽然现在的移动终端设备都是ARM结构,但是我们开发人员都是通过PC进行开发,而无论是WindowsPC还是Mac基本都是Inter处理器,因为Inter处理器在PC上的优势远远超过ARM。所以为了保证我们能在PC上通过模拟器调试应用程序,项目的架构一般都需要支持X86。有时候我们使用一些第三方库无法在PC的模拟器上运行调试,就是因为不支持X86架构。

参考

  1. ARM与X86对比
  2. 知乎 x86的Inter和AMD
  3. iOS Architectures
最近的文章

HTML DOM介绍

什么是DOM?DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。HTML DOM 定义了访问和操作 HTML 文档的标准方法。DOM 以树结构表达 HTML 文档。DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准:W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。W3C DOM 标准被分为 3 个不同的部分: 核心...…

继续阅读
更早的文章

AOT与JIT介绍

Flutter框架使用Dart语言开发,Dart有着很好的可移植性,这得益于Dart语言的AOT技术,本文介绍AOT和JIT编译。AOT与JIT编译AOT(Ahead of Time)即运行前编译,与之对应的是JIT(Just in Time)即运行时编译。众所周知,编程语言基本上都是人类可读的,但程序的源码并不能够被处理器直接执行,所以编译器或者解释器就需要将源代码转变为 CPU可以操作的指令。比如一个加法函数最终需要执行 addl 汇编指令对应的机器码。对于转变为机器码的时机,不同...…

继续阅读