转自:https://blog.csdn.net/willsun2017/article/details/83388990

源文地址:传送门

你知道iOSWindows PhoneAndroid这3大平台的手机共通点是什么吗?除了都可以打电话、传简讯、安装App之外,在硬件架构上最大的共同点,就是这些手机CPU全都是采用ARM架构。现在连Microsoft都相中这块逐渐成长中的市场大饼,下一代的微软视窗作业系统Windows 8也将会推出ARM版本,称为Windows RT。究竟ARM与行动装置的关系是什么?又如何在这竞争激烈的市场中存活下去,逐渐壮大在嵌入式产品的影响力?看下去就知道。

快速目录:

l ARM的开始、世界上首颗RISC处理器

开始大卖的ARM7、更换哈佛架构

被苹果相中的ARMv6、高中低阶Cortex

部分ARM处理器家族、架构对照表

1. 都是从不务正业开始

如同Intel并不是以CPU起家,而是从存储器跨足到IC设计,至今成为x86处理器的龙头。ARM也是一样,这一切都要从Hermann Hauser和Chris Curry所创立的Cambridge Processor Unit开始说起。

1978年,由物理学家Hermann Hauser和工程师Chris Curry一同在英国剑桥成立了一间公司,公司名称直接取作Cambridge Processor Unit(CPU),主要从事提供当地电子仪器设备的业务。第一份合约即是为ACE Coin Equipment公司开发一款水果盘,也就是拉霸的游戏机。

▲Cambridge Processor Unit为ACE Coin Equipment制造的水果盘游戏机。

1979年,公司营运渐上轨道,便改名为Acron Computer有限公司。Acorn的中文翻译为橡子,就是在冰原历险记电影里,那只「鼠奎特」一直在追的果实,Acron Computer也以橡子为公司的标志。

▲Acorn Computer Ltd把橡子图案运用在自己的商标之中。

2. 世界上首颗RISC处理器

随着时间过去,渐渐地发现原本的硬件设计已不符需求,Acorn想要升级机器内的CPU。当时处理器的发展潮流是由8位元转向16位元,一开始有考虑使用美国国家半导体以及Motorola新的16位元芯片,但是经过评估后,发现2个缺点。

执行上有点慢,中断的回应时间太长,而且太贵。

一台500英镑的计算机,CPU售价高达100英镑。

于是只好转向Intel,要求提供一些80286设计资料以及样品,但是却遭到Intel拒绝。这件事情后来直接导致Acorn决定设计自己需要的CPU,由于采用RISC架构的关系,名称就称为Acorn RISC Machine(ARM)。

2.1. RISC与CISC的差异

处理器的指令集可简单分为2种,CISC(complex instruction set computer)以及RISC(reduced instruction set computer)。一开始的处理器都是CISC架构,随着时间演进,有越来越多的指令集加入。由于当时编译器的技术并不纯熟,程序都会直接以机器码或是汇编语言写成,为了减少程序设计师的设计时间,逐渐开发出单一指令,复杂操作的程序码,设计师只需写下简单的指令,再交由CPU去执行。但是后来有人发现,整个指令集中,只有约20%的指令常常会被使用到,约占整个程序的80%;剩余80%的指令,只占整个程序的20%。于是1979年美国加州大学柏克莱分校的David Patterson教授提出了RISC的想法,主张硬件应该专心加速常用的指令,较为复杂的指令则利用常用的指令去组合。

RISC的优点列举如下:

指令长度固定,方便CPU译码,简化译码器设计。

尽量在CPU的暂存器(最快的存储器元件)里操作,避免额外的读取与载入时间。

由于指令长度固定,更能受益于执行线路管线化(pipeline)后所带来的效能提升。

处理器简化,晶体管数量少,易于提升运作时脉。比起同时脉的CISC处理器,耗电量较低。

RISC的缺点列举如下:

复杂指令需要由许多的小指令去完成,程序变得比较大,存储器也占用比较多,这在硬盘昂贵,常常使用磁带储存的时代来说,是个大缺点。

程序变长,代表着读取工作变得繁重,需要更多的时间将指令从存储器载入至处理器内。

这里也提供一个小小的概念,CISC是在RISC出现之后才出现的相对名词,并不是从一开始就有CISC、RISC这2种处理器架构。

3. 首颗RISC架构CPU

于1985年,Acorn设计出了第一代处理器芯片,称为ARM1,由Sophie Wilson设计出类似于6502的指令集,因为当时Acorn为英国国家广播公司BBC所制造的BBC Micro计算机采用MOS 6502处理器,使用类似的指令集有助于缩短开发时间以及技术转移。Steve Furber则是负责设计硬件实作。ARM1以第二颗处理器的身分,安装在BBC Micro内部。

ARM1在晶圆设计部分,规格为3微米制程、2层金属层、总计2万5千个晶体管、6MHz运作时脉、消耗功率120mW、芯片面积50mm2。当时Intel的80286使用1.5微米制程、13万4千个晶体管、6~12Mhz运作时脉,同时这2款处理器都不包含快取。

同年10月,Intel发表80386处理器,与之相比,ARM1显得功能简单、能源消耗较少,在效能上不是80386的对手。这一差异导致ARM系列处理器往后的设计路线明显与Intel不同,Intel持续迈向x86高效能设计,ARM专注于低成本、低功耗的研发方向。

▲这是由VLSI制造的ARM1处理器,最外层那一圈不是CPU本体,而是必须焊在电路板上的连接座。

4. 渐入佳境、架构变更

真正商业化的处理器为ARM2,ARM1处理器架构为ARMv1,到了ARM2更新到ARMv2,这一代新增乘法器在核心之中。ARMv2的进阶版ARMv2a则是多包了存储器管理核心、绘图及I/O处理器。接下来的ARM3,处理器架构ARMv2a,是第一次于CPU里内建了4KB快取。1990年,Acorn开始与苹果计算机合作发展新一代的ARM芯片,特地还为此设立了一间公司,称为Advanced RISC Machines公司。最初财务吃紧,办公室仅为一个谷仓,成员也仅有12人。原本ARM所代表的Acorn RISC Machine,也在此时更换为Advanced RISC Machine。

1991年发展出的ARM6,处理器架构更新为ARMv3,主要扩展存储器定址线。之前的ARM产品都只有26bit的存储器定址线,最大可支援64MB的存储器。从ARM6开始,完整支援32位元存储器定址,最大支援到4GB。在此离题一下,ARM6处理器家族下的ARM610处理器,曾经用在苹果计算机的Newton Message Pad上头,Newton也被视为现今PDA与Smart Phone的始祖。

▲Apple Newton Message Pad。

延伸阅读:

智能型手机拆光看清楚:24个重要元件解说,认识手机的内涵

(后面还有开始大卖的ARM7)

5. 开始大卖的ARM7

1993年推出的ARM7延续着ARMv3核心,但是由于制程的进步,快取加大至8KB,时脉也一举拉高至40MHz。

ARM7TDMI(处理器架构ARMv4T),除了原本的32位元指令集外,还新增了Thumb,也就是精简过的16位元指令集,让编译出来的程序可以缩小程序码体积,官方表示与标准的ARM指令集相比,可以缩小35%的程序码体积,又能享受32位元架构所带来的效能提升。Thumb指令在执行时会通过处理器内一个叫做Thumb译码器的东西,及时解压成32位元ARM指令,同时也可受惠于32bit的存储器总线,加速指令与资料的载入。

但之后的ARM8家族和Digital Equipment Corporation向ARM买授权自行制作的处理器StrongARM,都不支援Thumb。

ARM7EJ的处理器架构为ARMv5TEJ,直接加入称为Jazelle DBX的运算电路,能够以硬件加速大部分的Java bytecode,提升Java程序的执行效率;同时也新增适合处理DSP的指令,如饱和运算(saturated arithmetic)可以加速多媒体应用。

5.1. Java的执行方式

程序设计师以Java语言写出程序后,经过编译器编译成Java bytecode档,执行时便把这个Java bytecode丢入一个称作JVM(Java Virtual Machine)的模拟器里执行,在各种平台上都有不同的JVM,所以编译过后的Java bytecode能够跨平台执行。

5.2. 饱和运算(saturated arithmetic)

正常以二进制表示为11111111(255)+00000001(1)=100000000(256),但是一个8bit的加法器,当输入255+1的指令后,计算出来的结果将会是0。因为处理器只有8bit,最高位会产生数值溢位,实际交由8bit加法器运算将变成11111111(255)+00000001(1)=00000000(0)。但是当处理器支援饱和运算后,255+1的结果将变成255,经计算后的数值资料只会顶天立地(该资料类型的最大值或最小值),不会产生overflow或是underflow。

6. 更换为哈佛架构

ARM9处理器家族内部处理器架构为ARMv5TE,导入了相当重要的架构更新,以往ARM和x86处理器都是采用冯?纽曼架构,意即中央处理器和储存装置是分开的,中央处理器到储存装置中读取一段程序码执行,而不同程序码可以造成不同的执行结果。相较于古早时代的计算机,一旦要执行不同的程序码时,必须更动硬件设计,重新接线。约翰?冯?纽曼在1945年的论文中提出这个处理单元和储存单元分离的概念,对于后来计算机发展有相当重大的影响。

哈佛架构则是冯?纽曼架构的延伸,哈佛架构更进一步定义了程序和资料是由两个独立的空间储存,同时也有两个存储器控制单元分别操作。读取程序后译码便得到资料位址,再到资料存储器中读取资料。此种架构好处在于指令和资料的存储器操作能够同时进行,当处理器在运算资料时,便可以先行撷取下一道指令。

▲冯?纽曼架构,程序和资料储存在同一个存储器中。

▲哈佛架构,程序和资料分开储存至不同的存储器中。

在ARM10E的处理器架构升级为ARMv5TE,加入了VFP(矢量浮点架构)的协同处理器,提升浮点数运算能力。

(后面还有智能型手机应用大爆发)

7. 智能型手机应用大爆发

被苹果相中的ARMv6

在2007年的Macworld发生了一件大事,划时代的iPhone诞生了,直觉的使用者操作立刻席卷全球,App Store的商业模式解决以往PDA程序太少的窘况。而第一代的iPhone和其后的iPhone 3G便是采用ARMv6处理器架构,也是第一次让人感受到,原来ARM可以做到这么好的使用者体验。

ARMv6架构在2001提出,对应ARM11处理器家族。新增SIMD处理功能,相当适合影片处理加速使用。同时也提出ARM11MPCore,首次将多核心的概念导入ARM处理器中。Thumb指令集也升级到第2代Thumb-2,将原先16bit的指令集部分扩展到32bit,变成同时拥有16bit和32bit指令长度的指令集。

不过这个ARMv6架构有点短命,还没看到几颗多核的ARM11处理器(NVIDIATegra即为ARM11MPCore),就被ARM紧接而来的Cortex处理器给盖过去。

7.1. 划分高中低阶的Cortex

在ARM11之后的处理器家族,改采Cortex命名,并针对高、中、低阶分别划分为A、R、M三大处理器。象是高阶手机用的Coretex-A系列,或者是微控制器所使用的Coretex-M系列,需要较高性能、或是实时处理的系统则改用Coretex-R系列。

除了Cortex-M0、Cortex-M1为ARMv6-M,冯?纽曼架构之外,其他Cortex的处理器架构更新到ARMv7,一样由高至低分成ARMv7-A、ARMv7-R、ARMv7-M三种,其中ARMv7-M不支援最原始的ARM指令集,仅支援16bit的Thumb指令集,却加入NVIC(Nested Vectored Interrupt Controller),提供更快的中断处理、还有负责CPU在深层睡眠时的中断处理WIC(Wake-up Interrupt Controller)。

Cortex-A(ARMv7-A)和 Coretex-R(ARMv7-R)2种架构基本上是相同的,都支援更新的进阶型SIMD处理,称为NEON,ARM宣称效能至少是上一代处理器架构ARMv6的2倍。NVIDIA的Tegra 2处理器较为特殊,虽是采用Cortex-A的CPU,但没有包含NEON,反而使用自家的技术,内建专门的音讯处理器和视讯处理器。

Cortex-A和 Coretex-R最大的差异在于存储器管理单元部分,Cortex-A使用MMU(memory management unit)、Cortex-R使用MPU(memory protection unit)。前者的存储器管理单元提供虚拟存储器的支援,后者只能运作在存储器保护模式。

7.2. 存储器管理:real、protected、virtual

最初的CPU存储器管理只有real mode,在这个模式下,所有程序都可以直接存取存储器、I/O、计算机附加的硬件。但是在这种模式下的存储器空间少(1MB),程序无法多工(如果2个程序同时喂给打印机资料,印出来会是什么鬼啊!)。到了80286处理器后,导入了protected mode,将作业系统和程序的存储器区块分开,如果程序想要存取存储器,必须经由作业系统中介。从而提升系统安全性和稳定性。virtual memory则是在protected mode下的产物,允许硬盘之类非实体存储器的装置能够模拟成存储器。逻辑上来说,可以在不增加硬件花费的情况下,直接加大实体存储器容量。但硬盘的存取速度却远不如实体存储器,目前SATA 6Gb/s界面频宽为6Gb/s,DDR3-1600双通道的界面频宽却有25.6GB/s,两者相差约43倍。

8. 遍地开花的ARM

ARM一开始与苹果、VLSI所投资的资金下成立,初期营运状况不佳,而英国当地也没有什么晶圆厂,同时ARM也决心将自行发展的技术成为业界的标准。在这些条件的加总之下,ARM选择了以IP授权的方式经营。

IP(intellectual property智慧财产权)授权,即是把自己所创造的东西,以某种方式授权给其他人利用。例如我们在行人穿越线两旁所看到的小绿人走路灯号,当初的设计者便可以把此种想法授权给其它地区采用,借以收取授权费。而ARM也是透过此种方式营利,除了一开始的授权费之外,每卖出一颗芯片还需要付版权费。另一家较为知名采用IP授权营利的公司为MIPS,其产品常常可以在网络设备中见到。

这种授权方式使得每家公司都可以依据自身需求,设计出客制化芯片。比如说产品并不需要绘图的部分,便可以把绘图IP核心拿掉,亦或者也可以在芯片里塞入其他家厂商做出的IP核心,让功能更多元。相较于Intel近年强迫中奖的显示核心,ARM的作法弹性许多。

▲常见的ARM授权制造模式,ARM将设计授权给设计公司(如Qualcomm),制造授权给晶圆代工公司(如台积电),最后生产出来的芯片再卖给其他厂商做成实际产品(如HTC)。

▲众多的合作伙伴,这些公司都有ARM的IP授权,你能找出哪几个较令人熟悉的牌子呢?

9. 未来朝向64bit迈进

如同 x86迈向x64一般,ARM也需要更大的总线来增加效能。在下一代的ARMv8架构中,也将加入64bit的支援,但是一切都还在讨论中。但是现在也不急,暂时还有个Coretex-A15可以拿来填一下发展时程,至于会增加哪些指令集则尚未确定。

ARMv8处理器将有2个执行状态,AArch32和AArch64。前者将完全兼容ARMv7的指令集及架构,将原封不动地移植到ARMv8身上。后者AArch64则是全新的指令集与处理器架构。

ARM目前也在积极建立并等待64bit的生态链完备,就如同x86转换到x64一般,AMD的64位元处理器早在2003年问世,但是等到64位元作业系统、程序真正普及,却也只是近几年的事情而已。更别说一般人计算机C槽里那个Program Files x86资料夹,放在里面的程序应该比Program Files还要多。

最近开始身价上涨的硬件加解密功能,ARM也预计加入AES加解密的指令,利用进阶SIMD的128bit暂存器来实作,SHA-1和SHA-256也在支援中。

9.1. AES算法

Advanced Encryption Standard高级加密算法,是一种用来进行区块加密(将数值资料切割成等长,分别对个别区段分别加密)的技术,用以取代Data Encryption Standard(DES)的加密方式,目前DES已被SciEngines公司所制造的COPACOBANA RIVYERA硬件证实能够在1天的时间内被暴力破解完毕。

9.2. SHA算法

Secure Hash Algorithm安全杂凑算法,不同的资料数值,经过特定算法所运算出来的SHA值也不同,这个固定长度的值可视为这个资料的指纹,具有专一性。目前SHA算法用来检查档案完整性与否,是否经过有心人士的篡改;也用来检查从网络上下载回来的档案是否正确,特别是那些动辄几GB的档案。

10. 附录

(后面还有ARM处理器家族、架构对照表)

10.1. 部分ARM处理器家族、架构对照表

(资料来源:维基百科、ARM)

10.2. ARM年度大事纪

ARM 处理器:RISC与CISC 是什么?【转】的更多相关文章

  1. ARM处理器:开放者的逆袭

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 1981年,英国BBC电视台策划了一系列关于计算机的电视节目.但导演发现一个问题:怎么给没见过电脑的观众画 ...

  2. RISC与CISC比较

    1.RISC与CISC的差异 处理器的指令集可简单分为2种,CISC(complex instruction set computer)以及RISC(reduced instruction set c ...

  3. risc与cisc

    RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法. 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成 ...

  4. ARM的体系结构与编程系列博客——ARM处理器系列介绍

    ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...

  5. ARM 处理器架构【转】

    ARM 处理器架构 转自:http://www.arm.com/zh/products/processors/instruction-set-architectures/index.php ARM 架 ...

  6. DSP处理器和ARM处理器的区别以及各自应用在那些领域

    由于工作经常接触到各种多核的处理器,如TI的达芬奇系列芯片拥有1个DSP核3个ARM核.那么DSP处理器和ARM处理器各自有什么区别,各自适合那些领域? DSP:digital signal proc ...

  7. 一文解读RISC与CISC (转)

    RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法. 早期的CPU全部是CISC架构,它的设计目的是要用最少的机器语言指令来完成 ...

  8. 基于ARM处理器的反汇编器软件简单设计及实现

    写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...

  9. ARM处理器解析

    按图分析: ARM处理器有七种工作模式,为的是形成不同的使用级别,以防造成对系统的破坏.不同模式可以访问的寄存器不同,可以运行的指令不同. (1)user(10000):普通应用程序运行的模式(应用程 ...

随机推荐

  1. NetSec2019 20165327 Exp7 网络欺诈防范

    NetSec2019 Exp7 网络欺诈防范 一.本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (1分) (2)ette ...

  2. 读书笔记---<<图解HTTP>>(一)

    一.了解Web及网络基础 1. 网络基础TCP/IP 通常使用的网络包括互联网都是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集. 1.1 TCP/IP协议族 像这样吧与互联网关联 ...

  3. iOS开发基础-九宫格坐标(2)之模型

    在iOS开发基础-九宫格(1)中,属性变量 apps 是从plist文件中加载数据的,在 viewDidLoad 方法中的第20行.26行中,直接通过字典的键名来获取相应的信息,使得 ViewCont ...

  4. Each path can be reduced to a simple path

    Recently, I made a small conclusion, but I found it is found and well-founded in some textbook. So I ...

  5. ThreadLocal的一些总结

    ThreadLocal.class /** * Sets the current thread's copy of this thread-local variable * to the specif ...

  6. mysql-笔记-命名、索引规范

    1 命名规范 所有数据库对象名称必须使用小写字母并用下划线分割 禁止使用mysql保留关键字 ---如果表名中包含关键字查询时,需要将其有单引号括起来 见名识意,并且最后不要超过32个字符 临时库表以 ...

  7. Python——Pycharm打包exe文件

    一.安装pyinstraller    pip install  PyInstaller 二.打包程序   pyinstaller.py -F -w -i tubiao.ico 文件名.py -F 表 ...

  8. [模板] 虚树 && bzoj2286-[Sdoi2011]消耗战

    简介 虚树可以解决一些关于树上一部分节点的问题. 对于一棵树 \(T\) 的一个子集 \(S\), 可以在 \(O(|S| \log |S|)\) 的时间复杂度内求出 \(S\) 的虚树. 虚树包括根 ...

  9. Java 找出四位数的所有吸血鬼数字 基础代码实例

    /**  * 找出四位数的所有吸血鬼数字  * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.  * 以两个 ...

  10. 题解:[APIO/CTSC 2007]数据备份

    你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已 ...