ARM, X86/Atom, MIPS, PowerPC
Contents
ARM, X86/Atom, MIPS, PowerPC
http://blog.csdn.net/wangjianno2/article/details/52140936
四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC
转载 2016年08月07日 02:54:10 6375
RISC (reduced instruction set computer,精简指令集计算机) 是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机 (即RISC机) ,RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作 (每秒执行更多百万条指令,即MIPS) 。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。
性能特点一: 由于指令集简化后,流水线以及常用指令均可用硬件执行;
性能特点二: 采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度;
性能特点三: 采用缓存—主机—外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的工作,且不因从存储器存取信息而放慢处理速度。
其中ARM/MIPS/PowerPC均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版。
根据各种新闻,Android在支持各种处理器的现状:
ARM+Android最早发展、完善的支持,主要在手机市场、上网本、智能等市场;
X86+Android 有比较完善的发展。有atom+Android的上网本,且支持Atom+Android 和 Atom+Window7双系统;
MIPS+Android目前在移植、完善过程中;
Powpc+Android目前在移植、完善过程中。
1.ARM
ARM架构,过去称作进阶精简指令集机器 (Advanced RISC Machine,更早称作: Acorn RISC Machine) ,是一个32位精简指令集 (RISC) 处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。
在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置 (PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机) 到电脑外设 (硬盘、桌上型路由器) 甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。
优势: 价格低;能耗低;
ARM 授权方式: ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具 (编译器、debugger、SDK) ,以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的智财核心技术 (IP Core) 认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商 (IDM) 和晶圆厂家,就选择可合成的RTL (暂存器转移层级,如 Verilog) 形式来取得处理器的智财权 (IP) 。借着可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标 (如高震荡频率、低能量耗损、指令集延伸等) 而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品 (如芯片元件、评估板、完整系统等) 。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。
生产厂商: TI (德州仪器) /Samsung (三星) /Freescale (飞思卡尔) /Marvell (马维尔) /Nvidia (英伟达)
(2)x86系列/Atom处理器
xx86或80x86是英代尔Intel首先开发制造的一种微处理器体系结构的泛称。x86架构是重要地可变指令长度的CISC (复杂指令集电脑,Complex Instruction Set Computer) 。
Intel Atom (中文: 凌动,开发代号: Silverthorne) 是Intel的一个超低电压处理器系列。处理器采用45纳米工艺制造,集成4700万个晶体管。L2缓存为512KB,支持SSE3指令集,和VT虚拟化技术 (部份型号) 。
现时,Atom处理器系列有6个型号,全部都是属于Z500系列。它们分别是Z500、Z510、Z520、Z530、Z540和Z550。最低端的Z500内核频率是800MHz,FSB则是400MHz。而最高速的Z550,内核频率则有2.0GHz,FSB则是533MHz。从Z520开始,所有的处理器都支持超线程技术,但只增加了不到10%的耗电。双内核版本为N系列,依然采用945GC芯片组。双内核版本仍会支持超线程技术,所以系统会显示出有4个逻辑处理器。这个版本的两个内核并非采用本地设计,只是简单的将两个单内核封装起来。
(3)MIPS系列
MIPS是世界上很流行的一种RISC处理器。MIPS的意思是"无内部互锁流水级的微处理器"(Microprocessor without interlockedpipedstages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。
MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。MIPS自己只进行CPU的设计,之后把设计方案授权给客户,使得客户能够制造出高性能的CPU。
1984年,MIPS计算机公司成立,开始设计RISC处理器;
1986年推出R2000处理器。
1992年,SGI收购了MIPS计算机公司。
1988年推R3000处理器。
1991年推出第一款64位商用微处器R4000;之后又陆续推出R8000 (于1994年) 、R10000 (于1996年) 和R12000 (于1997年) 等型号。
1998年,MIPS脱离SGI,成为MIPS技术公司;随后,MIPS公司的战略发生变化,把重点放在嵌入式系统;1998年-MIPS科技股票在美国纳斯达克股票交易所公开上市。
1999年,MIPS公司发布MIPS32和MIPS64架构标准,为未来MIPS处理器的开发奠定了基础。新的架构集成了所有原来NIPS指令集,并且增加了许多更强大的功能。MIPS公司陆续开发了高性能、低功耗的32位处理器内核 (core) MIPS324Kc与高性能64位处理器内核MIPS645Kc。
2000年,MIPS公司发布了针对MIPS32 4Kc的版本以及64位MIPS 64 20Kc处理器内核。
2007年8月16日-MIPS科技宣布,中科院计算机研究所的龙芯中央处理器获得其处理器IP的全部专利和总线、指令集授权。
2007年12月20日-MIPS科技宣布,扬智科技已取得其针对先进多媒体所设计的可定制化系统单芯片 (SoC) 核心"MIPS32 24KEcPro"授权。
(4)PowerPC系列
PowerPC 是一种精简指令集 (RISC) 架构的中央处理器 (CPU) ,其基本的设计源自IBM (国际商用机器公司) 的IBMPowerPC 601 微处理器POWER (PerformanceOptimized With Enhanced RISC;《IBM Connect 电子报》2007年8月号译为"增强RISC性能优化") 架构。二十世纪九十年代,IBM(国际商用机器公司)、Apple (苹果公司) 和Motorola (摩托罗拉) 公司开发PowerPC芯片成功,并制造出基于PowerPC的多处理器计算机。PowerPC架构的特点是可伸缩性好、方便灵活。
PowerPC 处理器有广泛的实现范围,包括从诸如 Power4 那样的高端服务器CPU 到嵌入式 CPU 市场 (任天堂Gamecube 使用了 PowerPC) 。PowerPC处理器有非常强的嵌入式表现,因为它具有优异的性能、较低的能量损耗以及较低的散热量。除了象串行和以太网控制器那样的集成 I/O,该嵌入式处理器与"台式机"CPU 存在非常显著的区别。
关于x86、x86_64/x64、amd64和 arm64/aarch64
为什么叫x86和x86_64和AMD64?
为什么大家叫x86为32位系统?
为什么软件版本会注明 for amd64 版本,不是 intel64 呢?
x86 是指 intel 的开发的一种 32 位指令集, 从 386 开始时代开始的, 一直沿用至今, 是一种 cisc 指令集, 所有 intel 早期的 cpu, amd 早期的 cpu 都支持这种指令集, intel 官方文档里面称为 “IA-32”
x84_64 是 x86 CPU 开始迈向 64 位的时候, 有 2 选择:
- 向下兼容x86。
- 完全重新设计指令集,不兼容x86。
AMD 抢跑了, 比 Intel 率先制造出了商用的兼容 x86 的 CPU, AMD 称之为 AMD64, 抢了 64 位 PC 的第一桶金, 得到了用户的认同。
Intel 选择了设计一种不兼容 x86 的全新 64 为指令集, 称之为 IA-64 (这玩意似乎就是安腾), 但是比 amd 晚了一步, 而且 IA-64 也挺惨淡的, 因为是全新设计的 CPU, 没有编译器, 也不支持 windows (微软把 intel 给忽悠了, 承诺了会出安腾版 windows server 版, 但是迟迟拿不出东西) 。 后来不得不在时机落后的情况下也开始支持 AMD64 的指令集, 但是换了个名字, 叫 x86_64, 表示是 x86 指令集的 64 扩展, 大概是不愿意承认这玩意是 AMD 设计出来的。
实际上, x86_64, x64, AMD64 基本上是同一个东西, 我们现在用的 intel/amd 的桌面级 CPU 基本上都是 x86_64, 与之相对的 arm, ppc 等都不是 x86_64。
x86、x86_64 主要的区别就是 32位和 64位的问题, x86中只有 8个32位通用寄存器, eax,ebx,ecx, edx, ebp, esp, esi, edi。
x86_64 把这 8个通用寄存器扩展成了 64位的, 并且比 x86增加了若干个寄存器 (好像增加了8个,变成了总共16个通用寄存器) 。 同样的 MMX的寄存器的位数和数量也进行了扩展。此外cpu扩展到64位后也能支持更多的内存了,等等许多好处。
对于普通程序来说,CPU位数的扩展、寄存器数量的增加不会带来明显的性能提升,比如IE浏览器、Office办公这类的软件。特定的程序很能够充分利用64位CPU、 更多的寄存器带来的优势,比如MMX除了能提升多媒体程序的性能,对矩阵、多项式、向量计算都能带来提升,更多的MMX寄存器、 更大的寄存器字长都有利于SIMD指令的执行,能够提升CPU对数据的吞吐量 (RISC指令集的CPU动不动就有数百个寄存器,可以有效的缓存中间计算结果, 不需要把中间结果写入内存,从而减少内存访问次数,显著提升性能)
x86
x86架构 (The x86 architecture) 是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
1978年6月8日,Intel发布了新款16位微处理器"8086”,也同时开创了一个新时代: x86架构诞生了。
在40年的发展史中,x86家族不断壮大,从桌面转战笔记本、服务器、超级计算机、编写设备,期间还挫败或者限制了很多竞争对手的发展, 让不少处理器厂商及其架构技术成为历史名字,即使有些封闭发展的也难以为继,比如苹果就已经放弃PowerPC了。
AMD64/x86-64
x86-64有时会简称为"x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品。
“x86-64"1999由AMD设计,AMD 首次公开 64 位集以扩充给 IA-32,称为 x86-64 (后来改名为 AMD64) 。 AMD64架构在IA-32上新增了64位寄存器, 并兼容早期的16位和32位软件,可使现有以x86为对象的编译器容易转为AMD64版本。
由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇来表明它们对两种架构的同时兼容。出于这个目的, AMD对这种CPU架构的原始称呼 - “x86-64"被不时地使用,还有变体"x86_64”。其他公司如微软和Sun在营销资料中使用"x64"作为对"x86-64"的缩写。
许多操作系统及产品,尤其那些是在Intel进入这块市场之前就引入"x86-64"支持的,使用"AMD64"或"amd64"同时指代AMD64和Intel64。
现在的x86 CPU在位数上有32/64bit之分,在ARCH上有又x86/x86_64/x64/i386/IA32/IA64/amd64
最近又新出来一个x32,还好不是ARCH,只是ABI,没有那么混乱。
先说一下x86的这些arch,不要求很严格的话,基本上可以用下面的公式来表达:
x86=i386=IA32
amd64=x86_64=x64!=IA64
其实这两个等式里很多都是别名,严格说的话,x86的世界里只存在x86/x86_64/IA64三种架构。
当年AMD先于Intel推出向下兼容的amd64 CPU,而Intel推出的不兼容32位系统的IA64惨淡收场(被MS放了鸽子),后来Intel在指令上支持了amd64, 不过不愿意叫amd64,改了个名字x86_64。
再说64bit/32bit的兼容性问题:
现在的64bit CPU实际上都做了兼容32bit的特殊设计,所以64bit的CPU上运行32bit的软件(包括kernel/app, driver除外)是没有问题。反过来, 32bit的CPU上运行64bit的软件是不可以的。
最后说重点,64bit相比32bit的性能优势:
这里不考虑64bit硬件上运行32bit软件的这种过度方式。
从架构上来说,64bit拥有64bit 的register和64bit的bus,在数据传输效率上比32bit要高不少;另外,64bit地址总线的寻址空间突破了4G的限制。
所以,对于大内存,密集数据运算的应用场景,64bit的优势是非常明显的。网上有一些benchmark,这里不贴了。
但是,对于小内存系统,64bit的CPU在某些状况下可能比32bit CPU的效率更低。
因为64 bit的CPU的地址是64位的,指针是64位的,编译生成的二进制文件更大,运行时占用的内存更多;另一方面,因为64位地址的问题, cache中能存放的指令就更少,所以更容易导致cache的miss。
所以在某些应用场景,64 bitCPU的更大的寻址空间,更快的数据传递,更快的浮点运算的特性, 与其64 bit的地址/指针所导致的cache miss 的特性,始终并存。
为了充分利用64的优势,又避免64bit地址导致的cache miss的问题,Intel提出了x32 ABI的概念。
x32不是一个ARCH,是一个ABI。
x32可以充分的使用64 bit硬件的64 bit寄存器,64bit总线,以及64bit新增的指令,从而获得更快的数据处理速度。
同时x32又使用32bit的地址/pointer,32bit的C数据类型,因此cache miss并不会增加。
x32是一个ABI,其设计到的部分包括: kernel的support,toolchain的support,system lib的support。现在kernel(from 3.4)和toolchain的support都已经OK。
ARM,AMD,X86, AArch64 的概念
AMD,中文名 (超威) 超微半导体,是除了英特尔以外最大的x86架构微处理供应商,也是除了英伟达以外仅有的独立图形处理供应商。
x86泛指一系列由英特尔公司开发的处理器的架构,最早为1978年面世的"Intel 8086"CPU。早期的处理器均是以此格式来命名,如Intel 8086,80186,80286,80386,80486,这些架构被统称为x86。由于数字不能被注册成为商标,因此公司每当有新的处理器使用,均会采用可注册的名称,如Pentium。
基于x86的32位架构 (常被称为i386,x86) ,IA-32,而基于x86的64位架构,x86-64常称为AMD64或Intel64。最早是由AMD公司首先根据x86的架构生产出了64位的处理器,但是由于是竞争关系,Intel公司不愿意承认AMD64,近些年才推出了Intel64
ARM (英文为Advanced RISC Machine,或Acorn RISC Machine) 也是一个架构,非常适用于移动通信这种低成本,高性能,低耗电的领域。ARM的公司为安谋控股 (ARM Holding plc) ,又称为ARM公司,总部位于剑桥的设计与软件公司,现在已被日本的软银公司收购,后者同时也是国内互联网巨头阿里巴巴的最大股东。
AArch64
AArch64 是 ARMv8 的一种执行状态。
为了更广泛地向企业领域推进,需要引入 64 位构架, 同时也需要在 ARMv8 架构中引入新的 AArch64 执行状态。
AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。这些都源自于多年对现代构架设计的深入研究。 更重要的是, AArch64 作为一个分离出的执行状态, 意味着一些未来的处理器可能不支持旧的 AArch32 执行状态。
虽然最初的 64 位 ARM 处理器将会完全向后兼容, 但我们大胆且前瞻性地将 AArch64 作为在 ARMv8 处理器中唯一的执行状态。 我们在这些系统中将不支持 32 位执行状态, 这将使许多有益的实现得到权衡, 如默认情况下, 使用一个较大的 64K 大小的页面, 并会使得纯净的 64 位 ARM 服务器系统不受遗留代码的影响。立即进行这种划分是很重要的,因为有可能在未来几年内将出现仅支持 64 位的服务器系统。没有必要在新的 64 位架构中去实现一个完整的 32 位流水线,这将会提高未来 ARM 服务器系统的能效。
这样回想起来, AArch64 作为在 Fedora ARM 项目中被支持的 ARM 构架是一个很自然的过程: armv5tel、armv7hl、aarch64。新的架构被命名为: aarch64,这同 ARM 自己选择的主线命名方式保持一致,同时也考虑到了 ARM 架构名与 ARM 商标分开的期望。
ARMv8-A 将 64 位架构支持引入 ARM 架构中, 其中包括:
64 位通用寄存器、SP (堆栈指针) 和 PC (程序计数器) 64 位数据处理和扩展的虚拟寻址
两种主要执行状态:
AArch64 - 64 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
AArch32 — 32 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
这些执行状态支持三个主要指令集:
A32 (或 ARM) : 32 位固定长度指令集,通过不同架构变体增强部分 32 位架构执行环境现在称为 AArch32。
T32 (Thumb) 是以 16 位固定长度指令集的形式引入的,随后在引入 Thumb-2 技术时增强为 16 位和 32 位混合长度指令集。部分 32 位架构执行环境现在称为 AArch32。
A64: 提供与 ARM 和 Thumb 指令集类似功能的 32 位固定长度指令集。随 ARMv8-A 一起引入,它是一种 AArch64 指令集。
ARM ISA 不断改进,以满足前沿应用程序开发人员日益增长的要求,同时保留了必要的向后兼容性,以保护软件开发投资。在 ARMv8-A 中,对 A32 和 T32 进行了一些增补,以保持与 A64 指令集一致。
作者: 赏金Micheal 链接: https://www.jianshu.com/p/2753c45af9bf 来源: 简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Author -
LastMod 2018-03-03