POPPUR爱换
标题: 转老帖:ARM与x86之2--Atom的前生今世 [打印本页]
作者: 飞鸟真 时间: 2012-9-25 18:20
标题: 转老帖:ARM与x86之2--Atom的前生今世
本帖最后由 飞鸟真 于 2012-9-25 18:46 编辑
Atom的前生今世世间本没有PC处理器和嵌入式处理器。这两种处理器在同一天诞生。
1976年5月,Intel开始设计8086处理器。工程师没有想到这颗处理器将给后世带来如此深远的影响。如同许多改变人类命运的产品,设计者最初并没有太大的追求,诸多的不经意与偶然促成了一个伟大的产品[24]。1978年6月8日,Intel正式推出8086处理器[25]。1981年8月12日,基于8088处理器的IBM PC诞生[26]。PC很快席卷了整个世界。
嵌入式处理器这个称呼也随之出现。从广义的角度上讲,所有处理器都是嵌入式处理器,包括用于服务器,PC和嵌入式领域的处理器。PC的日益普及,使得PC处理器从广义的嵌入式领域中脱颖而出,成为单独的一个产业,也就有了PC处理器。
在不久的将来手机也将从广义的嵌入式领域中独立,也会有单独的手机处理器,而不再是嵌入式处理器在手机中的应用。ARM处理器在手机领域的强势地位使得越来越多的人将其贴上了手机处理器的标签。更多的人认为将来的PC是揣在兜里,而不是装在包里。这些猜测触动了Intel这个巨人的心,失去未来的PC是Intel无法承受之重。
巨人的行动并非永远迟缓。2004年,地处Texas州的Intel Austin研发队伍启动了代号为Silverthorne的项目,这个项目所研发的芯片将取代A100和A110这两个低功耗处理器(A100和A110处理器的项目代号为Stealey,基于90nm工艺,是Pentium M的派生芯片[27])。这颗芯片也将是第一颗Atom处理器。Silverthorne项目的启动为两年后Intel毅然抛弃XScale构架埋下了伏笔。拥有顶尖处理器设计能力的Intel绝不允许ARM在旁酣睡。
Austin的研发队伍在项目启动时收到了来自高层的三条指令。Atom处理器必须是一个低功耗芯片,TDP(Thermal Design Power)约为ULV(Ultra Low Volatage) Dothan(即Intel Celeron M ULV)内核的十分之一(Dothan的TDP约为21瓦)。这颗处理器必须有足够的性能可以快速地浏览网页,流畅地运行高端操作系统[34]。这两条指令虽然苛刻,毕竟合理,也是可以通过努力实现的。
Austin的研发人员为此热血沸腾,也许他们将有机会创造一个完全不同的处理器,也许他们将有机会再一次改变这个世界。最容易想到的是使用RISC架构。从Pentium Pro开始,x86处理器使用了RISC流水线,在这条流水线中运行的是μops,并不是程序员使用的CISC指令。在流水线的开始阶段,x86处理器将CISC指令转换为μops,之后进入指令流水线运行。
如果能够将μops作为指令集直接提供给程序员使用,Austin的研发人员可以抛掉所有包袱,创造一颗完全不同的处理器。这个处理器可以自由地使用Intel从Pentium Pro开始的,并经过若干次改进而调优的μops流水线。Intel引以为傲的PCI/PCIe局部总线架构也可抛弃,毕竟PCIe设备的耗电量远大于ARM的AMBA设备。
主推一个新的指令集ISA(Instruction Architecture)是一件异常困难的事情。对于Intel这并非不可实现的。使用μops作为新的ISA,不过是将原先由硬件进行的指令翻译过程(Instruction Transforming)转交给编辑器。基于x86处理器的程序只需要经过重新编译,就可以运行在新的处理器平台上。一旦抛弃了CISC指令集,Austin的工程师可以自由地使用Intel所有的技术积累,更重要的是这颗处理器可以借鉴整个处理器界的成果。在多数情况下,新设计的处理器总比之前的好些。
所有这一切不过是研发人员的一厢情愿。来自高层的指令坚定而且明确,这颗低功耗处理器必须严格实现x86向前兼容。这意味着具有30多年历史的x86指令集,必须要不打一丝折扣地在这颗芯片上实现。向前兼容是Intel巨大的利润来源,也是摆在这个星球上最顶级处理器设计人员面前的一个不可逾越的山峰。在Intel并不长的历史中,违背向前兼容的例子只有以惨败而告终的Itanium。
多少年来,Intel的领袖集团都很偏执,偏执的侧重各有不同。格罗夫偏执着改变,将Intel从一个存储器厂商塑造为处理器厂商,更多的偏执着使用了三十多年的x86指令集。
Intel处理器的开发史是工程师与向前兼容不断斗争的奋斗史。许多年之前,Intel凭借向前兼容这一利器,打败了所有RICS厂商,包括DEC,SUN,Motorola和IBM,一统PC与服务器领域。这并不意味着CISC处理器战胜了RISC处理器,x86处理器已经进化成为RISC处理器,只是依然披着CISC指令的外衣。
对CISC指令的向前兼容需要许多额外的晶体管,更为重要的是Intel从1978年使用至今的CISC指令绝非完美,PowerPC和ARM用区区两三百页就能描述清楚的指令集,x86处理器需要使用1千6百多页。x86处理器的指令不仅冗长,更糟糕的是并不等长。处理这些不等长引发的对界问题是众多IC程序员的技术噩梦。
Itanium处理器决定放弃向前兼容,却成了Intel的一场商业噩梦。Intel至今没有醒来,也不敢在Atom处理器上重新进行尝试。一次错误并不意味着下一次依然错误。也许Atom处理器已经错过了再次改变世界的良机。也许Intel错过了丢弃这个糟糕指令集的机会,失去了这个可能的伟大变革,也可能失去了整个世界。
变革不仅需要勇气,更多的是能力。放弃向前兼容的变革也许会使Intel再次获得历史赋予的机会,也许会毁掉Intel。这样的决定,是勇气,是梦想,是坚贞,是决别。这样的决定,诺伊斯可以做,摩尔可以做,格鲁夫可以做,贝瑞特不敢做,欧德宁不敢想。
Intel这样的大公司,只有创始人才敢做,也有能力做出一些伟大的变革,只有他们才有毁掉这个公司的勇气。领袖有了雄威之气,剩下的人才可能有雄威之气。贝瑞特和欧德宁们恐怕做梦都没有考虑过这些可能毁掉Intel的决定,虽然这个决定也可能是上天赐给Intel的机会。睡梦中的格罗夫也许曾无数次被怒火激醒,“再锋利的剑,到了你们手里只能是一把生锈的钝刀!”。
Intel使用了三十多年的CISC指令又一次被强加在Atom处理器中。失落的设计人员需要再一次为向前兼容付出惨重代价。Intel天才的工程师需要再一次直面这些为处理CISC指令而带来的古怪逻辑。Atom处理器再一次被套上枷锁。Intel再一次丧失了和ARM站在同一起跑线上的机会。
与RISC构架使用的定长指令集不同,Intel的CISC指令的长度从16b到120b不等[35]。变长的指令为指令译码部件带来了额外的负担,而且基于CISC指令的流水线很难进一步提高速度和并发指令条数。从Pentium Pro开始,Intel抛弃了CISC指令流水线,而使用μops流水线,为此在x86处理器中需要使用一个特别的指令译码部件,首先将CISC指令转换为内部指令流水线可以识别的μops[33] [36],然后再送入μops流水线中执行。
x86处理器的绝大多数CISC指令可以方便地翻译成一条或者多条μops指令,也可能是多条CISC指令被优化成为一条μops指令。仍有为数不多的过于复杂的CISC指令需要借助Microcode ROM进行查表译码,x86处理器处理这些指令的效率极低,但是这些指令出现的频率极低,并不会影响指令译码效率[33]。
Silverthorne处理器可以使用两种方法实现严格的向前兼容,或者使用μops流水线,或者使用CISC流水线。使用μops流水线也意味着Atom处理器必须保留将CISC指令转换为μops指令的逻辑,也必须保留在绝大多数时间可以安然入睡的Microcode ROM。对于已经集成了23亿个晶体管的Nehalem EX处理器,增加这些古怪的逻辑并不会极大地增加功耗。对于TDP的设计目标仅有2.1瓦的Atom处理器,这些逻辑是不可能被接受的,因为这些古怪逻辑本身使用的功耗已经超过了一些低端ARM处理器。
来自Austin的设计人员必须另辟蹊径。他们试图在Atom处理器中使用Intel最新的工艺,直接执行复杂的CISC指令,这也重新揭开了上世纪九十年代开始的RISC与CISC构架之争。在那场战争中,Intel打败了所有RISC厂商,这并不意味着CISC处理器战胜了RISC处理器。在PC服务器领域,Intel的x86处理器最终被RISC处理器同化,而在剩余的几乎所有领域中CISC构架被RISC构架屠杀。
面对CISC构架的举步维艰,Pentium Pro做出了折中选择。Atom处理器却要继续扛起CISC的大旗。所有这一切并不是因为CISC构架仍有可能优于RISC构架,而是Austin的工程师面对向前兼容的不得已。
也许使用第一流的工艺可以化腐朽为神奇,也许使用最顶尖的工程师可以将一个O(N2)算法实现得比普通工程师实现O(N×LogN)算法更为快速。也许这些“也许”永远都是“也许”。虽千万难,吾独往矣。帝国启动了赌局。
工程师首先改变的是Power设计理念。多年以来,Intel在PC和服务器上有关Power和Performance性能的设计理念是,处理器提升1%性能,Power可以提高2~3%。在Atom处理器中,这个比例是1比1,处理器每提升1%性能,相应的Power不能提高1%[37]。
Atom处理器抛弃了许多在Core 2和Nehalem处理器使用的高效设计,从零开始。与诸多传说并不一致,Atom不是削减版的Pentium M或者Core 2。Atom处理器是Intel自Pentium处理器以来最为简单的设计,也是一个全新的设计。这个设计使用了Intel最为古老的CISC流水线。
无奈的工程师面对由来已久的向前兼容,剩下的选择除了无奈,还是无奈。没有人愿意直面x86处理器这些乖张,谬妄,怪僻,荒诞的CISC指令,也没有人敢甚至去说说挑战“向前兼容”的不合理。
使用μops流水线无法越过Power的天堑,剩下的只有CISC流水线。无奈的设计人员第一个想到的是1989年发布的486处理器
[ii],这颗处理器使用了单发射(single-issue),顺序执行(in-order)的CISC流水线。
即便在当年486也不是一个顶级处理器,Atom处理器必须对此加以补充。多发射技术仍是必须的,Atom处理器支持双发射。现代高端处理器常用的乱序执行(Out-of-Order Execute)对于追求低功耗的Atom处理器是奢侈的,Austin的设计人员暂时放弃了乱序执行这个已经被广泛验证,可以显著提高流水线执行效率的功能。486处理器使用的5级流水线并不利于处理器主频的提升,Atom处理器将其提高到16级,如图1所示。
图1Atom处理器的流水线[34]
这不是Atom处理器流水线的全部。Atom处理器还含有两级预先译码部件(Predecoder)。传统的x86指令并不等长,而是16b~120b,Predecoder部件的作用是划分指令边界,然后将其导入L1指令Cache。Atom处理器L1指令Cache的大小为36KB,实际可利用大小仅为32KB,剩余的4KB存放SOI(Start of Instruction),EOI(End of Instruction),等信息[34]。
Atom处理器可以直接处理多数CISC指令,但是仍然有一些过于复杂的CISC指令被分解为若干个μops,再进入指令流水线。Atom处理器的流水线并非没有可取之处,这颗处理器可以直接执行ALU/Memory指令。这类指令首先被分解为ALU和Memory两个微操作,然后成对进入流水线。虽然Memory操作仍不能先于ALU操作执行完毕,也明显提高了这类指令的执行效率。
Atom的指令流水线不如RISC架构完美,但这是Intel的工程师在向前兼容的大前提下,为降低功耗而进行的一次大胆尝试。Atom使用按序执行流水线,这也使得HT(Hyper-Threading)技术的引入成为必然。HT技术是Intel对SMT(Simultaneous Multithreading)技术的一种称呼。在现代处理器的设计中,可以使用两种技术在节约整个设计成本的前提下大幅提高并行度,一种是提高ILP(Instruction Level Parallelism),一种是增强TLP(Thread Level Parallelism)[38]。
Superscalar技术是提高ILP最常用的方法,Superscalar技术是指在同一个时钟周期CPU可以发射多条指令。这一技术最早出现在1964年,Seymour Cray的CDC6600就使用了这一技术[39]。这一方法在绝大多数高端处理器中得到了广泛的应用。Intel的高端处理器可以并发执行3~4条指令。
TLP技术最常用的实现手段即为SMT。DEC的工程师准备在Alpha21464(EV8
[iii])上率先实现SMT技术。而Alpha21464还没有完成最终的Tape-Out,就需要为Itanium让路而被迫取消[40][41]。这是在学术领域无所不能的Alpha处理器的最后绝唱。DEC的这些工程师历经辗转,最终在Pentium IV上实现了HT技术。此后MIPS MT和Power5也支持SMT技术。
HT技术的本质是在同一个CPU中支持多个线程,每一个线程都具有独立的通用寄存器,Local APIC等其他资源,所有线程共享同一条流水线,可以是一个线程的指令处于流水线的译码阶段,而另一条线程的指令处于执行阶段。当某个线程因为需要执行一些耗时较长的指令时,流水线可以切换到另外一个线程继续执行以避免流水线的阻塞
[iv]。对于某些需要大量访问共享资源的应用,使用SMT技术不仅不能提高流水线效率,反而会降低。
Intel声称使用了HT技术的Atom处理器,可以提高36~47%的效率[34],也无法回避某些Benchmark的结果,使用HT的结果更加糟糕。有一点可以肯定,不支持乱序执行的Atom处理器如果还不支持HT,其执行效率不值得去评估。
体系结构上的缺陷很难用任何技术去弥补。Intel依然坚持,依然尝试。在Atom处理器的L1 Cache中一个Cell使用了8个晶体管,与使用6个晶体管的设计相比,这种设计显然将占用相对较大的die size,却可以使用更低的工作电压,最终降低功耗[28]。这些优化并不能弥补Atom为支持“向前兼容”而带来的,源自体系结构的先天缺陷。
第一代Atom处理器,Silverthorne和Diamondville早已问世。基于Atom处理器的Asus EeePC和AcerAspire One取得了不俗的战绩。第二代Atom处理器,Pineview也得到了帝国各个成员的拥戴。向前兼容持续着已有的成功。PC领域因此增加了两个新的成员,Netbook和Nettop。这两个新成员被赋予了一个新的名字,上网本。
Asus的第一个上网本EeePC预装着Linux操作系统[31]。起初这个产品并没有被Wintel帝国重视,EeePC的成功却出乎他们的意料之外,在2007年EeePC的销量达到300,000台[32],迅速地向百万台销售目标进军。Microsoft如梦初醒,迅速作出反应,在EeePC上预装WinXP,很快在EeePC上Linux与WinXP的预装比例达到了1:9。这个比例依然没有完全反映Linux在上网本中所占的比例,许多预装着Linux的上网本是销往中国的。随后比WinXP更加秀丽的Win7也出现在上网本中。
Wintel再一次统治了上网本市场,也亲手毁掉了这个市场。最初灵巧便携的EeePC已经成为历史,越来越多的人们看到的是上网本中Atom处理器的低速与Windows的臃肿。上网本的唯一优点只剩下价格。至此上网本成为廉价笔记本的简称。当Apple的Jobs拿出第一个iPad时,属于Wintel的上网本盛宴已经结束。一个新的名词平板电脑(Tablet)被万众瞩目。ARM处理器和Apple却是主角。
Wintel帝国并没有彻底失败。Intel需要的并不是上网本,不需要这样的产品去瓜分Laptop市场。帝国的终极目标依然是可以手持的PC。上网本是技术尚不成熟的临时产品。Intel很清楚的意识到初期的Atom并不能离开Windows,向前兼容依然重要。只是向前兼容这个紧箍咒套上容易脱离难。
Moorestown平台终于浮出水面。这是Intel为手持PC开发的第一款产品,与ARM的单芯片解决方案并不相同。Moorestown平台由两个芯片组成,分别是代号为Lincroft的处理器和代号为Langwell的芯片组。在Lincroft中包含一个Atom处理器、GPU和存储器控制器,用Intel的45nm工艺实现,在Langwell芯片组中包含手持PC中常用的外部设备,如摄像机接口、USB接口、1080p HDMI接口和NAND控制器等[29]。
为了更快的推出Langwell芯片组,Intel并没有使用自己的生产工艺,而是依靠TSMC的65nm工艺。这引发了人们无限的猜想,在诸多半导体厂商中,Intel始终坚持“in-house-design”的思路,一个芯片从设计到生产都在Intel内部完成,而且Intel有太多的工厂可以生产65nm的芯片。Intel究竟需要从TSMC获得什么?
Intel的Roadmap揭示Moorestown平台仅是一个权宜之计,在并不久远的将来,Medfield平台会将Lincroft和Langwell合二为一,这也将是Intel有史以来第一个单芯片处理器[29][30]。这颗芯片依然采用Intel的“in-house-design”的设计理念吗?
这一切并不重要,从体系结构的角度上看,Moorestown和Medfield平台使用的依然是Atom内核,并以某种方式连接手持PC使用的外部设备。从性能/功耗比的角度上,基于ARM AMBA总线的外部设备目前是最优的,胜过追求性能的PCIe设备。
Moorestown和Medfield平台与ARM处理器平台需要一决胜负的依然是处理器内核。与在SPECint_base_rate2006benchmark程序获得117高分的Nehalem处理器(在此之前没有任何一款处理器获得100以上的分数)不同[42],性能并不是Atom处理器的优势。并不出乎体系结构专家的意外,在许多Benchmark程序下,Atom处理器落后于Cortex A9处理器[43],如下表所示。而Atom处理器使用的功耗与ARM处理器目前并没有可比之处。
| CoreMark/MHz
| Dhrystone
| Max MHz
| Estimate CoreMark at MaxMHz
|
Cortex A8
| 2.4
| 2.0
| 1.0GHz (S5PC110)
| 2415
|
Cortex A9
| 2.9
| 2.5
| 1.0GHz (Tegra 2)
2.0GHz
| 2881
5762
|
MIPS 74K
| 2.5
| 2.0
| 1.6GHz
| 4000
|
N280
(1 thread)
| 1.8
| 2.4
| 1.67GHz(N280)
2.GHz(Z550)
| 3060
3673
|
N280
(2 threads)
| 2.8
| N.A.
| 1.67GHz(N280)
2.GHz(Z550)
| 4664
5600
|
Youtube上有一个流传已久的视频[44],一个1.6GHz的Atom处理器(很可能是N270)与一个双核500MHz的Cortex A9平台在相同的分辨率,相同的主存储器大小,相同的操作系统环境下,浏览网页的速度几乎不分上下。采用RISC架构的Cortex A9依然有非常大的潜力可以进一步提升性能,而在体系结构上强调向前兼容的Atom处理器早已被捆住手脚。
失去性能优势的ARM处理器,还有功耗。而失去了性能优势的Atom处理器,只剩下向前兼容。越来越多的人们开始发问,在手持式领域,向前兼容是不是如Intel所料那样重要?虽然Intel一再宣称x86处理器拥有最大的软件Ecosystem,又有多少x86兼容的程序可以不加修改地移植到手持式设备中,又有多少硬件IP可以与PCIe总线直接互连?
如果在手持式设备中,“向前兼容”也不再重要,Atom处理器剩下的只有Intel耗费重金打造的芯片生产工艺。多年以来IT技术被归于高科技领域,这并不是指架个微机编写软件。半导体芯片的制作使用了人类有史以来最复杂的工艺。
首先是硅的提炼,硅原料被投入一个巨大的硅熔炉中,然后再植入一个精度极高的硅种,被融化的硅原料将围绕这个硅种生长,最后形成一个纯度至少为99.9999%的单晶硅锭(圆柱体)。这个硅锭的直径一般为8英寸或者12英寸。之后这个硅锭被切割为一个个Wafer(硅晶片),Wafer再被切割为一个个正方形的Die。每一个Atom处理器将使用一个Die。
这些Die将被多次影印(Photolithography),蚀刻(Etching),最后形成一个多层3D结构。至此Foundry完全结束。经过Foundry处理后的Die,将经过封装,测试等流程,最终成为一个个半导体芯片。
所谓纳米工艺是发生在Etching阶段,Etching也是半导体工艺技术的重中之重。经过影印后,硅晶片将被涂上一层光敏抗蚀膜,之后使用极短的紫外线曝光光敏抗蚀膜,并用化学溶剂清除已曝光的光敏抗蚀膜连同其下的一层硅。曝光的硅最后将被原子轰击,以生成N井或者P井,最终实现门级电路。
45nm,32nm技术指MOS晶体管栅极的宽度。这个宽度越低,在相同大小的Die中就可以集成更多的晶体管。贝瑞特时代的Intel抓住了半导体工艺的发展启动机遇,在诸多半导体厂商中脱颖而出。但是这种领先很难持久。半导体成产工艺是材料科学,化学工业,光学技术和精工机械的集大成者,本质上是一门实验科学,需要大量的资金投入。
Intel取得了先机,也在以一隅敌全国。Intel率先在Westmere处理器上实现了32nm工艺,22nm将在2011年中期实现[45][46]。这种领先是一年,还是两年,并不重要仅是白驹过隙。ARM Cortex A9已经可以使用Global Foundry提供的28nm工艺。当22nm技术来临时,Intel在生产工艺上的领先优势将不复存在。
Intel率先推出45nm时,也是与其他半导体厂商差距最大的时刻,领先其他半导体厂商一代。而技术的革新与进步总是开头最难,中期发展阶段最快,至末期的举步维艰[v]。种种迹象表明硅晶片的制造工艺已日趋极限。 如果Atom处理器连工艺的领先都无法依靠,在技术上[vi]将没有优势可言。也许一个产品成败并不完全取决于技术也许二十年前Intel战胜所有RISC厂商的故事可能再次发生,也许偏执的力量可以战胜顶尖的技术。
只是Intel已无格鲁夫。
x86向前兼容至少需要使用1.65M个晶体管,比ARM7内核本身还复杂。
[ii] 如果程序员基于Atom处理器,进行程序优化,发现gcc编译器使用486的arch速度最快时,不要大惊小怪。
[iii]Alpha系列的处理器内部代号都是EV,EV是Extended VAX的缩写。VAX机曾是一个时代的经典。我书写的第一行程序就用VAX机下的行编译器的LET TEMP = A; LET B = A; LET A = TEMP。
[iv] 对于计算机体系结构较为熟悉的读者,可以将HT技术说得更简单一些,就是分属不同线程的指令之间没有相关性,只要有空余的执行单元,即可通过预约站,进入执行单元。
[v] 感谢“不懂工艺就不要乱说”在弯曲评论上的批评与指正。我本想修改部分内容,反复考虑后仍觉没有太大必要。留在这里也许更好,这能够提醒我,认真做事未必能做好。所知不多时,不该妄下结论。
弯曲评论的连接见http://www.tektalk.org/2010/11/27/atom的前生今世/。这些批评对我很有帮助。在此提醒读者,这部分与工艺相关的内容,尚有较大的争论。
[vi] 我一直在猜测也许Intel的以色列团队正在基于Sandy Bridge处理器做一个真正意义上的低功耗Atom。我所意识到的一切,在Intel一定有人更早的意识到。个人以为目前的Atom内核已经死去,替代品也许仍然叫Atom,但是这并不重要。
作者: 飞鸟真 时间: 2012-9-25 19:29
不少人疑惑过为啥intel要出atom,不把酷睿做成低功耗吧。
通过文章能看出,不是intel不为,是不能为,某人所说的影响甚微的解码器部分直接就毙掉了这种幻想。
atom为啥那么残废,因为它有正宗的x86血统,不像酷睿系列是x86解释器+类risc核心
作者: itany 时间: 2012-9-25 19:36
飞鸟真 发表于 2012-9-25 19:29 
不少人疑惑过为啥intel要出atom,不把酷睿做成低功耗吧。
通过文章能看出,不是intel不为,是不能为,某 ...
这篇文章就是纯搞笑的。基本上就是假话堆砌起来的。
用来愚民正合适
作者: qwased 时间: 2012-9-25 20:49
itany 发表于 2012-9-25 19:36
这篇文章就是纯搞笑的。基本上就是假话堆砌起来的。
用来愚民正合适
愿闻其详?
作者: Prescott 时间: 2012-9-25 21:12
扯蛋的地方太多了。
作者: 飞鸟真 时间: 2012-9-25 22:03
itany 发表于 2012-9-25 19:36 
这篇文章就是纯搞笑的。基本上就是假话堆砌起来的。
用来愚民正合适
人家作者的水平不是你和@Prescott 可以污蔑的
再转一篇:ARM与x86之3--蝶变ARM
蝶变ARM
1929年开始的经济大萧条,改变了世界格局。前苏联的风景独好,使得相当多的人选择了马克思。惧怕布尔什维克红色力量的人投入了法西斯的怀抱,剩余的人选择了妥协与折中。整个世界的迅速分解使得第二次世界大战成为必然。
1933年,罗斯福成为美国第三十二任总统,开始实施新政。这些新政使美国摆脱了危机,也决定了二战的走向。罗斯福的背后站着的是凯恩斯,凯恩斯的国家资本主义化解了整个资本主义阵营有史以来最大的一次危机。“妥协与折中”得以持续。
战后的世界是属于巨型公司的,这些公司借助国家资本的力量,持续着垄断。垄断的初衷并非都是恶意的,在美国却是一个早在1890年就立法防止的。1911年,美国烟草公司被分拆。1982年,美国电报电话公司被分拆。
这些分拆却很难抵达IT业。1975年成立的Microsoft虽然多次被推入拆分的风口浪尖,却从未被拆分。IBM和Intel多次遭到分拆的威胁,也安然无恙。这些公司的支持者都注意到一个事实,这些公司没有依靠国家资本而获得垄断地位,而是依靠多年苦心积攒的知识产权坚持到现在。
这类垄断之忧不在颛臾而在萧墙之内。在这些巨型IT公司中,最低层的工作人员需要经过多达十几级的汇报关系,才能到达首席执行官。在这十几级汇报链中,向上所传递最多的就是如何粉饰太平。
一些微不足道的小问题在这些大公司中往往也能引发无休止的讨论。为解决某个问题而举行的会议,经常被无休止地扩大,从一个会议扩展为多个会议,从几个人参与变为几十人参与。这个问题变得已不再重要时,内部并无统一意见。
西方巨型公司的弊端在于 欧美所倡导的民主代价过于昂贵。撒切尔夫人是欧洲第一个深刻认识到这些问题的最高执政官。历史上,英国并不重视中小企业的发展,在凯恩斯主义盛行的二十世 纪五十年代,英国经历了三次大规模的企业兼并,至撒切尔夫人执政,巨型企业大行其道。更多的人发现这些大型企业并不能提高生产效率,大范围的垄断与集中, 已使英国经济举步维艰。
上世纪八十年代,撒切尔夫人开始变革,剑锋所指,巨型公司纷纷解体,中小企业如雨后春笋般涌现。撒切尔的私有化,货币控制,削减福利与抑制工党的四项举措,客观上拯救了英国经济,也使这位值得尊敬的女士誉满天下,谤满天下。
ARM在这样的大背景之下诞生,这也注定了这些创始人不会也不愿意使ARM成为巨型公司,这也是取得如此成就的ARM,截至今天人数尚不过两千的最重要原因。ARM最初的简称是Acorn RISC Machine。Acorn Computer创立于1978年,总部位于剑桥,由Andy Hopper(剑桥大学), Chris Curry(Sinclair Research)和Herman Hauser(剑桥大学)创建[48]。
Acorn最初使用MOS Technology 6502处理器搭建处理器系统。MOS Technology 6502处理器是一个8位处理器,设计这颗处理器的工程师来自摩托罗拉的MC6800设计团队[48]。基于6502处理器,Acorn开发了最令其自豪的处理器系统BBC Micro[49]。
在上世纪80年代至90年代,BBC Micro处理器系统主宰英国的教育市场。当时还有另外一个基于6502处理器的系统,Apple II[50]。从这时起,Acorn和Apple这两个设计理念及产品形态类似的公司结下了不解之缘,有些人将Acorn公司称呼为“The British Apple”[51]。也是在这个时候,Acorn迎来了一生中的对手Intel。基于Intel x86构架的PC对同时代的处理器厂商是一场噩梦,很少有公司能够醒来。或者服从,或者消亡,别无选择。Acorn首先选择服从,向Intel申请80286处理器样片,Intel拒绝了这个请求[52]。
工程师对剩余的处理器,进行了充分的评估。结果令人失望。此时的Acorn没有选择,开始认真地考虑是否需要研制一颗属于自己的处理器。他们没有任何处理器设计经验,为数不多的工程师们除了才华,只有梦想。才华与梦想恰能改变整个世界。
1983年10月,Acorn启动了代号为Acorn RISC的项目,由VLSI Technology负责生产。1985年4月26日,VLSI成产出第一颗Acorn RISC处理器,ARM1。ARM1的结构非常简单,仅有个25,000晶体管,甚至没有乘法部件[52]。当时并没有人留意这颗芯片,更多的人关注Intel在1985年10月17日发布的80386处理器[36]。
没有人认为这颗略显寒酸的ARM1更给80386带来任何冲击,甚至包括研发这颗芯片的Acorn工程师。做为处理器厂商,与Intel活在同一个时代是一场悲剧,无论是Acorn,IBM亦或是不可一世的DEC。Intel并不是不犯错误,只是有限的几个错误都能被及时修复。才华横溢的Intel工程师将处理器的故事演绎至巅峰,他们的竞争对手也因此步入地狱。
Acorn不得不选择回避,这也决定了ARM处理器的设计理念是low-cost, low-power和high-performance。这个理念与21世纪智能手机的需求不谋而合,却是Intel强加给ARM的。Intel在不经意间为自己树立了一个强大的对手,这个对手在Intel的庇护之下一步步长大。并不夸张的说,没有Intel就没有ARM的今天。
因为对low-cost和low-power的追求,Acorn选择了RISC,而不是CISC,在上世纪80年代,RISC与CISC孰优孰劣尚无定论。在当时采用RISC技术可以看得到的优势是可以用更少的芯片资源,更少的开发人员实现一个性能相对较高的处理器芯片[53]。Intel使用了CISC架构,很大程度上也决定了Acorn选择了RISC。刘备的“每与操相反,事乃可成”,对于Acorn就是“与Intel不同,便有机会”。
ARM的成长步伐仍然是缓慢的,陆续发布的ARM2与ARM3并没有激起波澜。为数不多的公司选择ARM3处理器开发产品。一些公司将ARM3处理器用于研发,最有名的公司就是Apple[53]。在当时,Apple也是为数不多的对ARM友善的公司。
Acorn很快遭遇瓶颈,无论是在财务上还是在技术上。销售量达到150万台的BBC Micro并没有给Acorn带来足够多的财富,与席卷天下的PC相比微不足道[54]。ARM3与Intel在1989年发布的80486也没有太多可比性。危机最终降临到Acorn这个年轻的公司,1985年2月,当时的IT巨头Olivetti出资12M英镑收购Acorn 49.3%的股份[55]。Olivetti的庇护并没有给Acorn带来机遇。
Olivetti创建于上世纪初,对智慧与品质近于苛刻的执着使得他们的产品可以在纽约的现代艺术博物馆中陈列,出现在许多经典的影片中。这些产品并没有改变这个公司的最终命运。Olivetti最终涉足PC领域,使用Zilog的Z8000,去挑战在这个领域所向无敌的Intel。
Olivetti收购Acorn后,更多地将ARM处理器用于研发,而真正的产品使用Zilog系列。这段时间是Acorn最艰难的日子。Acorn的创始人Andy Hopper最终选择从Olivetti独立。出乎意料之外,Olivetti支持了Andy的决定。
1990年11月,Acorn(事实上是Olivetti Research Lab),Apple和VLSI共同出资创建了ARM。Acorn RISC Machine也正式更名为Advanced RISC Machine[55]。在1996年,Olivetti在其最困难的时候将所持有的14.7%的Acorn股份出售给了雷曼兄弟[56]。
Apple当时正在为代号为Newton的项目寻找低功耗处理器。Newton项目的终极目标是实现地球上第一个Tablet。Apple对Tablet的前景寄予厚望,他们直接将公司Logo上的Isaac Newton作为项目的名称。Apple最初的Logo是在苹果树和深思的牛顿。两个Steve将公司命名为Apple,与喜欢吃苹果没有什么联系,是因为苹果而不是鸭梨砸到了牛顿头上。
Newton Tablet的想法过于超前,最糟糕的是Jobs当时并不在Apple。Apple用并不太短的时间证明了一条真理,没有Jobs的Apple和没有乔丹的公牛没有太大区别。1996年3月,Steve Jobs再次回到Apple,两年后取消了这个并不成功的项目[57]。等到Jobs再次推出iPad Newton,已是十几年之后的事情了[58]。
Apple投入3百万美金拥有了ARM公司43%的股份[60],但是并没有完全押宝在ARM公司,Apple真正关注的是在1991年与IBM和Motorola组建的AIM[59]。在1998年,ARM公司在英国和美国同时上市后,Apple逐渐卖出了这些股份。在2010年,Apple即便准备好了80亿美金,却也无法收购ARM。
1990年的ARM公司,财务依然十分拮据,12个员工只能挤在谷仓[ii]中办公,廉价License的商业模式更不被人看好。依靠Apple的鼎力相助,ARM6[iii]得以问世,却没有改变Apple和ARM的命运。Newton项目设计的是本应该属于下一个世纪的Tablet,ARM6被PC处理器和当时多如牛毛的RISC处理器笼罩,无所作为。
上世纪90年代属于PC领域。AMD的异军突起,及其与Intel的竞争,构建了上世纪九十年代处理器领域一道最炫目的风景线,而服务器领域属于DEC。1992年2月25日,DEC发布的Alpha21064处理器,主频达到150MHz[61],Intel在第二年发布的Pentium处理器,主频仅有66MHz[62]。
整个90年代,处理器世界都在惊叹着Alpha处理器所创造的奇迹。DEC陆续发布的Alpha系列处理器既是放到二十一世纪的今天,设计理念依然并不落后。DEC工程师就是在为二十一世纪设计处理器芯片。在Alpha21×64系列处理器的编号中,’21’代表二十一世纪,而’64’代表64位处理器[63]。
上帝并不青睐DEC公司,科技与商业的严重背离终于酿成了巨大的灾难。Alpha处理器的技术尚未抵达巅峰,DEC的财务已捉襟见肘。1994~1998年,DEC不断地向世界各地兜售资产。至1997年,DEC出售的资产已遍及五大洲,二十多个国家[64]。1998年1月26日,DEC正式被Compaq收购[65]。在DEC解体的最后一段日子里两个公司最为受益,一个是Intel,另一个就是ARM。
在ARM的起步阶段,鼎力相助的是Apple,最先License ARM内核的是英国本土的GEC半导体公司。在1993年因为Apple的引荐,ARM处理器跋山涉水来到日本,与Sharp建立了合作关系。在此之前Sharp与Apple一直在合作开发Newton项目。
这些合作并没有缓解ARM的财务危机,ARM一直在追寻真正属于自己的客户。1993年,Cirrus Logic[iv]和德州仪器公司TI(Texas Instruments)先后加入ARM阵营。TI给予了ARM雪中送炭的帮助。TI正在说服当时一家并不知名的芬兰公司Nokia与他们一道进入通信移动市场。TI在DSP领域已经取得了领袖地位,但并不熟悉CPU业务,在屈指可数的可以被操控的公司中,他们最终选择了ARM[67]。
ARM迎来了上天赐予的机会。通过与Nokia和TI的密切合作,ARM发明了16位的Thumb指令集,也真正意义上创建了基于ARM/Thumb的SoC商业模式[67]。ARM已经逐渐摆脱了财务危机,业务不断扩大。至1993年底,ARM已有50个员工,销售额达到10M英镑。
同年ARM迎来了公司成立以来最重要的一颗处理器内核,ARM7[67]。ARM7使用的Die尺寸是Intel 80486的十六分之一,售价仅为50美金[v]左右。较小的Die尺寸,使得ARM7处理器获得了较的功耗,适合手持式应用[67]。
ARM7处理器引起了当时的处理器巨头DEC的关注。1995年,DEC开始研发StrongARM。与其他License ARM内核的半导体厂商不同。DEC获得了ARM架构的完整授权,DEC可以使用ARM的指令集,设计新的处理器架构,这个特权后来被Intel和Marvell陆续继承。第二年的2月5日,DEC正式发布SA110处理器,并开始提供样片[68]。SA110处理器迅速得到了业界的认可,Apple正式使用SA110处理器开发MessagePAD 2000 [69]。
StrongARM处理器在设计中注入了Alpha处理器的一些元素。StrongARM使用5级顺序执行的流水线,分离了指令和数据Cache,添加了DMMU和IMMU功能部件,每个MMU中包含32个全互连结构的TLB,添加了16级深度的WB(Write Buffer)[70]。至此ARM处理器更像是一颗微处理器,而不再是微控制器。
DEC的帮助使ARM处理器达到了前所未有的高度。更为重要的是,这颗160MHz,DMIPS为185的处理器,功耗低于500mW[70]。这不仅引起了工业界的浓厚兴趣,学术界也开始真正关注ARM处理器。1997年,DEC如期发布了第二颗StrongARM芯片,SA1100。SA1100在SA110的基础上增加了一些外部设计。第二年Intel为SA1100提供了一个伴侣芯片SA1101,SA1100+SA1101也成为了许多PDA厂商的首选。1999年,Intel发布了最后一颗StrongARM处理器SA1110[vi],和对应的伴侣芯片SA1111。
StrongARM的发布并没有使DEC摆脱财务危机。而DEC却找到了一个更容易赚钱的途径。1997年5月,DEC正式起诉Intel,宣称Intel在设计Pentium,Pentium Pro和Pentium II处理器时侵犯了DEC的10条专利。1997年9月,Intel反诉DEC在设计Alpha系列处理器时侵犯了Intel多达14条专利[72]。
在IT界,这样的官司大多不了了之。1997年11月27日,DEC和Intel选择和解。DEC向Intel提供除Alpha处理器之外的所有硬件设计授权,并进一步支持Intel开发IA64处理器。而Intel花费了625M美金购买DEC在Hudson的工厂,Israel Jerusalem和Texas Austin的芯片设计中心。另外这两个公司还签署了长达十年的交叉授权协议[72]。
DEC的技术注入使Intel的x86处理器迈入新的时代,很快Intel具备了向所有RISC处理器同时宣战的能力,最终一统PC和服务器领域。此外Intel还从DEC获得了StrongARM。克雷格·贝瑞特认为这是上天赐予Intel的机会,x86处理器与StrongARM的组合,将使Intel的处理器遍及世界上任何需要处理器的领域。
为了迎接StrongARM的到来,贝瑞特放弃了Intel自己的RICS处理器,i860和i960。Intel为StrongARM起了一个炫目的名字XScale,动用了积蓄已久史上最为强大的Ecosystem,强势进军嵌入式领域。
一时间,XScale处理器遍及嵌入式应用的每一个领域,用于手持终端的PXA系列,用于消费类电子的IXC/Intel CE系列,用于存储的IOP系列,用于通信的IXP系列。Intel的处理器技术极大地促进了ARM内核的发展,借用PC帝国的Ecosystem使ARM处理器从生产到设计一步领先于所有嵌入式行业的竞争者。成为XScale处理器试金石的是摩托罗拉半导体的68K处理器。
在XScale系列处理器诞生之前,68K处理器主宰嵌入式领域,Apple Macintosh最初也使用68K处理器。在1997年,摩托罗拉销售了79M片68K处理器,而Intel的x86处理器一共卖出了75M片[73]。这是68K处理器最后的辉煌。Intel和TI主导的ARM处理器终结了68K处理器。摩托罗拉半导体面对ARM的强势出击毫无准备。ARM处理器不断地蚕食68K的市场份额,直到完全占有。
1995年,摩托罗拉半导体的香港设计中心发布第一颗用于手持式设备的DragonBall处理器,MC68328(EZ/VZ/SZ)[74],这是香港半导体界最好的时代。而StrongARM/XScale很快结束了香港设计中心的幸福生活。面对ARM的挑战,DragonBall最终屈服,DragonBall MX(Freescale i.MX)系列处理器开始使用ARM9。使用ARM内核并没有改变摩托罗拉香港设计中心的命运,这个设计中心最终不复存在。
在工业控制领域,68K内核进化为ColdFire[vii]。ColdFire在HP的中低端打印机中取得的成就几乎是最后的绝唱。在通信领域,摩托罗拉半导体抛弃了基于68K内核的MC68360,研发出基于PowerPC架构的MPC860处理器。这颗处理器是通信时代的经典之作,摩托罗拉半导体陆续推出了一系列基于PowerPC内核的通信处理器,却再也没有重现MPC860时代的君临天下。近期推出的QorIQ[viii]系列处理器面对多核MIPS处理器总是滞后一拍。
摩托罗拉半导体,昔日的王者优雅地没落。摩托罗拉半导体于1955年推出第一个锗晶体管,开创了半导体集成电路产业,在整个60年代一骑绝尘,70年代末迎来了68K的辉煌。即使在1985年,摩托罗拉还是全球第三大半导体公司。而怀抱通吃整个产业链的野心,对封闭式系统的挚爱,使摩托罗拉连同半导体部门在同一棵石头上跌到了一次又一次。至21世纪,摩托罗拉半导体(Freescale)的排名在十名左右,2009年的排名仅为第17位。
击败了摩托罗拉半导体的Intel没有感到一丝喜悦,更多的是寒气。2006年,Intel的业绩跌入低谷,这也使得当时的CEO贝瑞特作出了一个艰难的选择,2006年6月27日,Intel将PXA系列处理器出售给了Marvell[12]。
Intel虽然保留了ARM处理器的授权,事实上却已彻底退出了ARM阵营。这是Intel一个非常谨慎而且坚决的选择。Intel需要扑灭后院的熊熊烈火。在PC领域,AMD率先推出了64位的K8处理器[75],并在2005的Computex 上,发布双核处理器Athlon 64。Intel x86最引以为豪的性能优势已不复存在。
这段时间Intel只能依靠工艺与强大的商务能力与AMD的Athlon64处理器周旋。2008年11月,Intel正式发布基于Nehalem内核,用于台式机的Core i7处理器[76],用于服务器的Xeon处理器,Core i3/i5也如期而至。Nehalem内核使Intel彻底战胜了AMD。这颗处理器也是Intel开始研发x86处理器以来,第三个具有里程碑意义的产品,之前的两个里程碑分别是80386和Pentium Pro。从这时起AMD处理器在性能上再也没有超过Intel。Intel解决了最大的隐患后,却发现ARM处理器已非吴下阿蒙。
ARM7之后,ARM8内核于1996年发布。ARM8内核生不逢时。与ARM7相比,AMR8在没有显著提高功耗的前提下,性能提高了一倍,依然无法和DEC的StrongARM抗衡[77][78]。仅有少量手机在原型设计中考虑过使用ARM8内核,ARM也仅为用户提供了CPU样板。
ARM8的失败并没有阻碍ARM内核的进一步发展,与StrongARM的竞争没有消减ARM阵营的实力,反而激发了ARM处理器不断向前的动力。1997年ARM9正式发布,DMIPS指标首次超过了1.0大关。ARM9是一个重要的里程碑产品。这个产品标志着ARM处理器正式进入微处理器领域,而不再是简单的微控制器。
ARM9将ARM7的3级指令流水线提高到5级,与StrongARM使用的流水线结构较为相似。进一步细化的流水线使得ARM9最高的时钟频率达到220MHz,而ARM8仅为72MHz[78]。ARM9进一步优化了Load和Store指令的效率,ARM9不再使用普林斯顿结构,而转向哈佛结构,使用了独立的指令与数据Cache。
ARM9的指令执行部件分离了Memory和Write Back阶段,这两个阶段分别用于访问存储器和将结果回写到寄存器。这些技术的应用使得ARM9可以在一个周期内完成Load和Store指令,而在ARM7中,Load指令需要使用3拍,而Store指令需要使用2拍。
此外ARM9可以通过增强的编译器调整指令顺序来解决RAW(Read-after-Write)[ix]类相关。ARM9的这些功能增强,使得在相同的工艺下,其执行性能是ARM7的一倍左右[79]。ARM7并没有被淘汰,简练的设计极大降低了功耗,Apple在2001年10月23日[80]发布的iPod依然使用了ARM7处理器[81]。
ARM7与ARM9的合理布局,使得ARM阵营迅猛发展。基于ARM7和ARM9内核的SoC处理器迅速遍及世界的每一个角落。ARM内核依然在前进。1998年的EPF(Embedded Processor Forum) ARM10内核正式推出。2000年4月12日,Lucent发布了第一颗基于ARM10的处理器芯片[83]。
ARM10内核的设计目标依然是在相同的工艺下,双倍提升ARM9的性能。而提高性能的第一步是提高指令流水线的时钟频率,而流水线中最慢的逻辑单元决定了时钟频率。ARM10使用了6级流水线结构,但并不是在ARM9的5级流水线的基础上增加了一级,而是进行了细致取舍而调优。最终的结果是在使用相同的工艺时,ARM10内核可使用时钟频率为ARM9内核的1.5倍[82] [84]。
ARM10内核重新使用了ARM8内核的系统总线,将ARM9的32位系统总线提高到64位。这也使得ARM10可以在一个时钟周期内完成两条寄存器与存储器之间的数据传递,大幅提高了Load Multiple和Store Multiple指令的效率[84]。
另外ARM10改动了Cache Memory系统,与ARM9相比提高了存储器系统的效率。ARM10的指令与数据Cache使用虚拟地址,64路组相连结构,引入了高端处理器中流水线与Cache交换数据的Streaming Buffer和Cache Line filling部件[84]。
ARM10内核优化了存储器读指令。实现了最为简单的乱序执行机制。当一条存储器读指令没有执行完毕,其后不相关的指令可以继续执行。ARM10对乘法指令进行了特别的优化,设置了一个新型的16×32的乘法和乘加部件外,同时设置了两级乘法指令流水,使得每一个时钟周期可以执行一条乘法指令[84]。最后ARM10内核增加了对浮点运算的支持。
从技术的角度上看,ARM10远胜过ARM9,但是没有办法在商业上与ARM9一较高下。ARM10的命运与ARM8惊人的一致。生不逢时的ARM8与StrongARM不期而遇,ARM10与XScale生活在同一年代。
Intel的工程师面对ARM的指令流水线耐不住技痒,ARM10的指令流水线与之前的ARM内核相比,可以说是一个飞跃,而与同年代的高端处理器相比只是一个玩具。Intel的帮助极大促进了ARM处理器的发展。
Intel在保证XScale架构低功耗的同时,引入已经在Pentium Pro系列处理器上非常成熟的Superpipelined RISC技术[85],借助Intel的工艺优势,使得XScale处理器的最高运行频率达到了1.25GHz[86]。此时Intel开发的处理器步入了高频低能的陷阱,1.25GHz的PXA3XX性能仅比624MHz的PXA270的执行效率高25%[86]。
XScale架构并没有使Intel盈利。ICG(Intel Communication Group)部门和WCCG(Wireless Communications and Computing Group)部门给Intel带来的是巨额亏损,ICG在2002~2004年的亏损分别为$817M, $824M和$791M[87]。2003年12月11日,Intel宣布将WCCG合并到ICG中,并在2004年1月1日生效。
这次合并没有挽救XScale的命运。在2006年,AMD的步步紧逼使Intel迎来了20年以来最糟糕的一季财务报表。Intel开始了有史以来最大规模的裁员。2006年7月13日,Intel宣布取消1000个经理职务[89],2006年9月5日,Intel裁员10%[90]。
在此之前Intel将XScale处理器中Marvell还愿意接收的部分出售[12]。Marvell需要的并不是XScale内核,而是Intel从DEC获得的对ARM指令集的完整授权,很快Marvell推出了基于标准ARM v5/v6/v7的处理器,而不再单独依靠XScale。XScale,这个几乎耗尽Intel全部心血的架构,已经走到了最后尽头。
Intel退出ARM阵营,不是因为缺少$600M现金。和许多人预料的并不相同,Intel并不是为了主推ATOM处理器,而放弃XScale。而是因为Intel用长达八年的时间发现了一个事实,ARM的廉价License策略并不能使之获利,而必须做Atom。
ARM的廉价License的获益者是ARM自身,随着处理器厂商的不断加入, ARM阵营获得了迅猛发展,这也加速了处理器厂商的优胜劣汰。但是Intel发现的事实依然适用于所有正在使用ARM授权的半导体厂商。
最令ARM内核尴尬的是,依靠这个号称最为开放的处理器内核,获取暴利的是一些做着史上最为封闭系统的公司。凭借ARM内核,Qualcomm为3G专利找到了最佳载体,Apple不断兜售着各类新奇的电子设备。来自通信领域的Cisco,华为陆续加入ARM阵营。ARM,这个来自半导体领域的处理器,并没有使这个领域受益。ARM的出现,极大降低了处理器的设计门槛,使得单纯依靠半导体技术,为做处理器而做处理器的厂商举步维艰。
Intel首当其冲。Intel的错误在十几年前已然犯下。贝瑞特本应该做出对Intel最为有利选择,从DEC那里获得StrongARM后,再亲手终结StrongARM。贝瑞特不经意的失误为Intel的未来树立了一个强大的对手,也使整个处理器世界更加精彩。ARM已经从XScale处理器中获得了足够的能量,已经可以不依赖任何厂商。他们的命运已经牢牢地掌握在自己手中。
2002年12月,ARM1136内核发布[91]。2004年7月19日,ARM1176内核发布[92]。2005年3月10日,ARM1156内核发布[93]。在此之前的ARM处理器虽然得到了广泛应用,但是从纯技术的角度上看这些处理器微不足道。
ARM11基于ARMv6指令集,之前ARM还开发了V1,V2,V2a,V3,V4和V5指令集。ARM使用的内核与指令集并不一一对应。如ARM9使用V4和V5指令集,XScale使用V5指令集。ARM7最初使用V3,而后使用V4,最后升级到V5。在ARM指令集后还包含一些后缀如ARMv5TEJ,其中T表示支持Thumb指令集,E表示支持Enhanced DSP指令,而J表示支持Jazelle DBX指令。
ARM v4指令集包含最基础的指令集;v5增强了ARM与Thumb指令间的交互同时增加了CLZ(Count Leading Zero)和BKPT(Software Breakpoint)指令;ARMv5TE增加了一系列Enhanced DSP指令,如PLD(Preload Data),LDRD(Dual Word Load),STRD(Dual Word Store)和64位的寄存器传送指令如MCRR和MRRC。ARM v4和v5在指令集上变化不大,v5也可以向前兼容v4指令集[94]。
而v6指令集并不能100%向前兼容v5的指令集。由于ARMv6对存储器访问模型的大规模更改,完全的向前兼容不再可能。从x86处理器苛求的向前兼容的角度上看,这些改动并不完美,也正是这些不完美使得ARM内核轻装前进。
ARM的指令集使用RISC架构,但是在ARM指令集中包含许多CISC元素。与PowerPC指令集相比,ARM的指令集凌乱得多,这为指令流水线的译码部件制造了不小的麻烦。在ARM内核包含三类指令集,一个是32b长度的ARM指令,一个是16b长度的Thumb指令,还有一类由8位组成的变长Jazelle DBX(Direct Bytecode eXecution)指令集。在ARM架构为数不多的指令集中,有两类指令值得特别关注,一个是Conditional Execution指令,另一个是移位指令。
绝大多数ARM的数据访问指令都支持条件执行功能。所谓条件执行是指指令可以根据状态位,有选择地执行。使用这种方式可以在一定程度上降低条件转移指令预测失败时所带来的系统延时。在计算GCD(Greatest Common Divisor)时,ARM的条件执行指令发挥了巨大的作用,如图2所示。

图2 gcd算法的实现[94]
通过上图可以发现由于SUBGT和SUBLE指令可以根据CMP指令产生的状态决定是否执行,采用该类指令可以显著降低代码长度。ARM指令集还对移位操作进行了特别的处理,事实上ARM不含有单独的移位指令,而使用了Barrel Shifter技术,与其他指令联合实现移位操作。使用这种方法可以有效提高某些运算的效率,如图3所示。

图3 Barrel Shifter的使用
这些特殊的指令使得ARM内核有别于其他处理器内核,但这并不意味着也极大提高了执行效率。首先CMP指令,SUBGT和SUBLE指令有较强的相关性,不能并发执行。此外现代处理器的条件预测单元也可以极大降低条件转移指令的命中率。一些处理器,如x86的CMOV指令和PowerPC的isel指令使用了更小的代价实现了ARM的条件执行功能。
ARM内核在条件执行指令时占用了4个状态位,也进一步影响了指令集和寄存器的扩展。绝大多数RISC处理器中具有32个通用寄存器,而ARM内核仅有16个通用寄存器[x]。ARM的特殊移位操作,增加了指令的相关性,在有些情况下,不利于多发射流水线的实现,也增加了指令流水中预约站RS(Reservation Station)的实现难度。
计算机体系结构是一个权衡的艺术,尺有所短,寸有所长。不同的内核都有自己最为合适的应用,不经过认真的量化分析不能轻易得出孰优孰劣的结论。不过仍有一个结论,在现阶段依然适用,处理器领域历经多年的优胜劣汰,所剩无几的处理器内核在激烈的竞争中日渐趋同。
ARM11内核使用了现代处理器中常用的一些提高IPC的技术,这是ARM处理器的一个重要里程碑。ARM11内核引起了计算机科学的两个泰山北斗,David A. Patterson和John L. Hennessy的注意。他们以ARM11内核为主体,而不再是MIPS,书写了计算机体系结构的权威著作,《Computer Organization and Design, Fourth Edition: The Hardware/Software Interface》。这也是学术界对ARM处理器有史以来的最大认可。
ARM11可以支持多核,采用了8级流水线结构,率先发布的内核其主频在350~500MHz之间,最高主频可达1GHz。在使用0.13μm工艺,工作电压为1.2V时,ARM11处理器的功耗主频之比仅为0.4mW/MHz。ARM11增加了SIMD指令,与ARM9相比MPEG4的编解码算法实现速度提高了一倍,改变了Cache memory的结构,使用物理地址对Cache行进行索引[95]。ARM11终于开始使用动态分支预测功能,设置了64个Entry,4个状态的BTAC(Branch Target Address Cache)[95]。
ARM11进一步优化了指令流水线对存储器系统的访问,特别是在Cache Miss的情况之下的存储器读写访问。在ARM11内核中,当前存储器读指令并不会阻塞后续不相关的指令执行,即便后续指令依然是存储器读指令,只有3个存储器读指令都发生Cache Miss的情况,才会阻塞指令流水线[95]。
虽然ARM11没有使用RISC处理器常用的out-of-order加Superscaler技术,在一个时钟周期之内仅能顺序发射一条指令,但是支持out-of-order completion功能,即在执行单元中的不相关的指令可以乱序结束,而不用等待之前的指令执行完毕。
ARM11的这些功能增强,相对于ARM9/10是一个不小的技术飞跃。但是与其他处于同一时代的x86,PowerPC和MIPS处理器相比,仍然有不小的差距。ARM11内核的存活之道依然是性能功耗比。
依靠着强大的性能功耗比,ARM11内核取得了巨大的商业成功。ARM11内核并不是一个性能很高的处理器,但是随着ARM处理器性能的不断提升,量变终于引发了质变。ARM11内核的出现,使得Smart Phone的出现成为可能。
在此之前,基于ARM9,XScale处理器的手机只是在Feature Phone的基础上添加了少许智能部件。自ARM11的问世起,Apple,HTC在智能手机领域异军突起,Motorola一蹶不振。ARM11之后,ARM迎来了爆发式增长,陆续发布了Cortex A8和A9内核。
ARM处理器内核的快速更新,使得Nokia这个对新技术反应迟钝的公司,一步步走向衰退。在2010年9月底开始出货的Nokia N8[96],居然还在使用着680MHz主频的ARM11处理器[97],而这款产品却号称是Nokia最新的旗舰产品,它的竞争对手早已使用了1GHz主频的Cortex A8处理器。
Cortex处理器是一个分水岭,从1983年开始的ARM内核,迎来了一颗真正意义的现代处理器。此时的ARM已经破茧成蝶,不再是低功耗伴随着低能的处理器。从这一刻起,ARM处理器具备了和Intel,一较高下的能力。2010年4月3日,Apple的Jobs正式发布iPad,ARM随之进入平板电脑领域[99]。ARM已将战火烧到了Intel的后院。
抛弃了XScale架构的Intel,并没有放弃手机处理器。2009年1月23日,Nokia与Intel在手机领域建立长期合作伙伴关系[103]。2009年6月4日,Intel收购Windriver[102]。2010年5月4日,Intel正式发布用于智能手机和平板电脑,代号为Moorestown的处理器[100]。2010年8月29日,Intel收购Infinion的无线部门[104]。在2011年左右,Intel将发布用于智能手机,代号为Medfield的处理器[101]。一系列的合作与收购,使Intel具备了进入手机领域的能力。
至此ARM之于PC领域,x86之于手机领域的野心,已昭然若揭。2010年9月9日,ARM正式发布代号为Eagle,5倍ARM9架构的Cortex A15内核,这颗处理器所关注的应用是高端手机,家庭娱乐,无线架构,还有低端服务器[98]。Cortex A15向世人宣布除了PC,他们还要向Server进军。
苹果公司的两个创始人都叫Steve,一个是Steve Wozniak,另一个是众所周知的Steve Jobs。Steven Wozniak是Apple I和Apple II的发明者。两个Steve在1976年4月,在一个车库中成立众所周知的Apple。
[ii] 英国的谷仓文化与美国的车库文化相近,都是新技术的摇篮。
[iii] ARM公司从ARM3直接升级到ARM6。
[iv] 我最初评估的ARM芯片就是Cirrus Logic的EP7312。当时我还在使用Altera的EPLD,名称是EP7132,我经常混淆这两个名字。在一个机缘巧合之下,粗心的采购将我需要购买的EP7132买成了EP7312,这颗芯片也是我不经意购买的第一颗ARM处理器。
[v] 当时的处理器价格高得离谱,50美金已经是很廉价了。
[vi] 我从SA1110开始接触ARM处理器,那是一个永远值得回忆的时代。
[vii] 我在摩托罗拉半导体部门第一次接触的就是Coldfire处理器,目前这颗处理器仍然在不断发展中,这颗芯片与68K在汇编语言层面兼容,但是目标代码并不兼容。
[viii] QorIQ系列处理器基于E500 mc内核,与E500 v2有些微小差异。我的第一本著作是基于E500内核的《Linux PowerPC详解—核心篇》,当时准备写一套丛书,包括核心篇和应用篇。应用篇主要写外部设备,后来的《PCI Express体系结构导读》源自《Linux PowerPC详解—应用篇》,应用篇应该包含网络协议,PCI Express和USB总线,后来把网络协议部分和USB总线部分删掉了。
[ix] 在处理器体系结构中,重点关注的有三类相关问题,RAW,WAR和WAW。使用寄存器重命名技术可以解决WAR和WAW相关。
[x] 考虑到ARM在ARM11内核之前都不支持动态分支预测,和多发射,使用条件执行指令还是能够提高ARM7/9内核的执行效率。
作者: CC9K 时间: 2012-9-25 23:34
本帖最后由 CC9K 于 2012-9-25 23:35 编辑
飞鸟真 发表于 2012-9-25 22:03 
人家作者的水平不是你和@Prescott 可以污蔑的
换到06年之间,坛子里他们也是这么说的
同样今天护着X86的人,当年喊着X86如何如何差,64位是终结X86更换新架构的最佳时期
[attach]2036614[/attach]
恩,这一危害的结果是64位让X86从服务器的小份额上升到吞并了绝大部分服务器市场,而Intel是最大的受益者
作者: raini 时间: 2012-9-25 23:37
CC9K 发表于 2012-9-25 23:34 
换到06年之间,坛子里他们也是这么说的
同样今天护着X86的人,当年喊着X86如何如何差,64位是终结X86更 ...
逻辑上不同,今天护着x86的人,是因为x86相对于arm还是高性能的平台,这和当年骂x86的内容是不一样的。
这样说,逻辑上是犯了偷换概念的错误。
作者: Tempestglen 时间: 2012-9-26 07:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: eternal0 时间: 2012-9-26 08:02
本帖最后由 eternal0 于 2012-9-26 08:12 编辑
Tempestglen 发表于 2012-9-26 07:51 
你怎么就知道arm的高能耗高频率桌面版-丹佛芯片,性能就不如i7?
x86和arm,同样在严格限制功耗的条 ...
你怎么就知道一个造高性能CPU的新手出了个新品,就能把i7干掉?
在产品出来之前就大吹特吹,要么让人怀疑你的工作,要么让人怀疑你的智商。
作者: frankincense 时间: 2012-9-26 08:09
Denver就是个用ARM核作为线程调度的GPGPU,靠堆GPU核堆出来的理论浮点运算性能如果不能秒杀现在的i7就算失败了。这种异构架构用在桌面会让n多开发者抓狂的。
作者: Tempestglen 时间: 2012-9-26 08:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 飞鸟真 时间: 2012-9-26 08:26
本帖最后由 飞鸟真 于 2012-9-26 08:36 编辑
frankincense 发表于 2012-9-26 08:09 
Denver就是个用ARM核作为线程调度的GPGPU,靠堆GPU核堆出来的理论浮点运算性能如果不能秒杀现在的i7就算失败 ...
不懂装懂,丹佛用在显卡中只能证明它的架构伸缩性很高。
丹佛这样的arm历史上出现过一次,就是StrongARM
别吃惊,请认真看6楼 蝶变arm
srongarm是当年的技术明星dec搞出的,(如同今天的技术明星nv,可惜dec的商业水准就没法望nv项背了),后来被intel收购
那个u是当年手持设备的代名词,arm自己arm在它面前如同废物,还不如今天的atom,不过不能满足intel对利润的追求 当时又被amd搞得灰头鼠脸就卖掉了
arm后来吸取它的精华 才有了现在的辉煌
丹佛正是另一种兼容arm u,不同的是它起点更高,现在的生态环境更好,nv更技术狂
还有一个不可忽视的优势就是nv图形技术的统治级表现(这个要被你硬说成劣势了)
针对服务器市场的nv 纯arm也会同时在14年面世
(一直以来受制于intel cpu低下的性能,无法发挥特斯拉计算卡的真正实力,老黄和nv终于忍无可忍,要改变这一切了)
作者: Tempestglen 时间: 2012-9-26 08:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: qwased 时间: 2012-9-26 09:00
Tempestglen 发表于 2012-9-26 08:34
苹果A6大大改善了A9时代的内存带宽,也就大大改善了arm的性能。而A6的8G/s所谓高带宽,在丹佛芯片面前就是 ...
把显存的高延迟算上
不然早就全面换gddr5了
作者: Episar 时间: 2012-9-26 09:20
转帖帝懂得真多~~骑驴看账本~~好东西是不用天天吹的~
作者: 飞鸟真 时间: 2012-9-26 09:32
Episar 发表于 2012-9-26 09:20 
转帖帝懂得真多~~骑驴看账本~~好东西是不用天天吹的~
啥话,你也想像原创帝itany 一样,原创出好多"技术"和"理论"?
或者为不浪费时间,老兄还是去打游戏吧,无主2或者火炬2,什么都好
作者: divx001 时间: 2012-9-26 09:37
其实intel和微软都很清楚,兼容X86所需要的功耗代价,所以win8RT和WP8只支持ARM
作者: the_god_of_pig 时间: 2012-9-26 09:41
Tempestglen 发表于 2012-9-26 07:51 
你怎么就知道arm的高能耗高频率桌面版-丹佛芯片,性能就不如i7?
x86和arm,同样在严格限制功耗的条 ...
atom的架构是哪年的东西了,一个为低端穷人准备的阉割型架构被T神当成了x86的最高水平了?
作者: itany 时间: 2012-9-26 09:42
飞鸟真 发表于 2012-9-26 08:26 
不懂装懂,丹佛用在显卡中只能证明它的架构伸缩性很高。
少来扯淡了。
是Intel一直不满Tesla的拙劣性能决定单干罢了。
从Physx显卡表现不比CPU单线程性能好,到OpenCL GF680比不上i7,显卡数据好,但是实际效率渣的惊人
作者: itany 时间: 2012-9-26 09:44
CC9K 发表于 2012-9-25 23:34 
换到06年之间,坛子里他们也是这么说的
同样今天护着X86的人,当年喊着X86如何如何差,64位是终结X86更 ...
只能说明你们的水平还停留在我6年前。
6年前我刚毕业,完全是学而不思的状态。有各种错误的想法是正常的
作者: 飞鸟真 时间: 2012-9-26 09:45
itany 发表于 2012-9-26 09:42 
少来扯淡了。
是Intel一直不满Tesla的拙劣性能决定单干罢了。
那intel搞什么拉拉比还有什么东施效颦干什么,只增笑耳
光超级计算领域就够你们嫉妒的发狂了
作者: itany 时间: 2012-9-26 09:46
divx001 发表于 2012-9-26 09:37 
其实intel和微软都很清楚,兼容X86所需要的功耗代价,所以win8RT和WP8只支持ARM
真搞笑,那Google支持x86上手机,还专门出内核编译版本又是咋回事?
作者: itany 时间: 2012-9-26 09:47
飞鸟真 发表于 2012-9-26 09:45 
那intel搞什么拉拉比还有什么东施效颦干什么,只增笑耳
光超级计算领域就够你们嫉妒的发狂了
据手头有Larrabee的人士说,实际效能高于Tesla
作者: Prescott 时间: 2012-9-26 09:49
飞鸟真 发表于 2012-9-25 22:03 
人家作者的水平不是你和@Prescott 可以污蔑的
写得多就是水平高啊,哈哈。
只不过是趋炎附势,人云亦云之徒而已,完全没有自己的思想。
作者: the_god_of_pig 时间: 2012-9-26 09:51
ARM粉搞错了一件事,Atom的微架构不是为手机/平板设计的,而是为上网本准备的
Intel随手捏了个烂货改改电源管理弄个SOC就直接拿来砸ARM的手机市场,ARM还是在silvermont出来前多赚点钱以便破产前多点现金转型吧
再提醒某些人,Intel真正为手机从头开发的x86芯片还没发布
作者: itany 时间: 2012-9-26 09:57
Tempestglen 发表于 2012-9-26 08:34 
苹果A6大大改善了A9时代的内存带宽,也就大大改善了arm的性能。而A6的8G/s所谓高带宽,在丹佛芯片面前就是 ...
别美了,Intel的MIC(Larrabee) 512bit GDDR5已经用上了。
你光想着带宽,却想不起来要在这种情况下你能装多少容量,可扩展性如何。
作者: divx001 时间: 2012-9-26 10:01
itany 发表于 2012-9-26 09:46 
真搞笑,那Google支持x86上手机,还专门出内核编译版本又是咋回事?
google还有mips编译内核呢,你看有几个手机用?
4.1到现在google都没有编译版本,而且SDK中大量关于ARM源生代码和NEON优化内容,X86连一句空屁都没有。
现在只要利用到ARM源生编译的APP在非ARM平台上兼容性差的离谱,就这样的东西你还想有多人花钱买?
作者: itany 时间: 2012-9-26 10:22
divx001 发表于 2012-9-26 10:01 
google还有mips编译内核呢,你看有几个手机用?
4.1到现在google都没有编译版本,而且SDK中大量关于AR ...
那你要看有多少手机是用MIPS的了。没有MIPS手机怎么用MIPS Android?
众所周知现在x86版在完善4.0.
只是因为Arm版的出的早罢了
作者: qwased 时间: 2012-9-26 10:38
Prescott 发表于 2012-9-26 09:49
写得多就是水平高啊,哈哈。
只不过是趋炎附势,人云亦云之徒而已,完全没有自己的思想。
我很想听听你的想法,能不能具体指出这篇文章的错误之处?
作者: divx001 时间: 2012-9-26 10:49
itany 发表于 2012-9-26 10:22 
那你要看有多少手机是用MIPS的了。没有MIPS手机怎么用MIPS Android?
众所周知现在x86版在完善4.0.
只 ...
就是说吗,现在X86手机有几家在用有几个型号?所谓完善也就是靠intel自己慢慢搞什么时候能出来能搞到什么样子谁知道?
现在ARM阵营是N家公司软硬件配合google一起搞,X86就intel自己一家,intel能力再强能搞的过全世界手机厂商?
作者: Tempestglen 时间: 2012-9-26 10:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: the_god_of_pig 时间: 2012-9-26 11:15
"飞鸟真 atom和酷睿不同,不是阉割,是完全不同架构。酷睿内核是类似arm的risc,atom是x86. 发表于 2012-9-26 11:01
飞鸟真 而且他可怜到死守无知,酷睿再好也不可能做到手持功耗,不然intel吃饱了撑的开发atom。 发表于 2012-9-26 11:00"
你哪只眼睛看见我说Atom是拿core阉割的了?说atom是阉割货是因为是个OoO都没有的烂货
还"酷睿再好也不可能做到手持功耗,不然intel吃饱了撑的开发atom",智力能再低点么?当初Atom是给手持设备开发的?
Atom除了降低功耗以外还有一个重要目标是降低成本,说白了就是个低价低功耗产品,按理说和手机上的高端低功耗芯片定位是两回事
BTW:丧家犬的表演很好看
作者: 飞鸟真 时间: 2012-9-26 11:20
the_god_of_pig 发表于 2012-9-26 11:15 
"飞鸟真 atom和酷睿不同,不是阉割,是完全不同架构。酷睿内核是类似arm的risc,atom是x86. 发表于 2012- ...
专攻上网本?intel如你智商早倒闭了,人家又不是没开发过手持,atom是intel想用x86统一世界重要的一环。
消耗了intel无数精力,根本不是某些无知af所说随便搞的,懂技术的都知道开发x86内核有多苦逼。
只是初期太差,只能用在上网本上。
作者: the_god_of_pig 时间: 2012-9-26 11:24
Tempestglen 发表于 2012-9-26 10:57 
最新的arm是atlas和apolo,2011年发布,和nv合作,64位。目前nv在自家实验室正热火朝天研发arm v8的丹佛芯 ...
T神还不明白么,Atom不是x86的最高水平,当初Intel为了卖低价是通过阉割而非提高能效比做出低功耗Atom的,说白了Atom的效能并不怎么样,你拿Atom的性能表现说明x86效能低是可笑得很的
当然了,尽管如此现在Z2460也已经在sunspider和browsermark秒了A6外的所有ARM双核
作者: the_god_of_pig 时间: 2012-9-26 11:31
飞鸟真 发表于 2012-9-26 11:20 
专攻上网本?intel如你智商早倒闭了,人家又不是没开发过手持,atom是intel想用x86统一世界重要的一环。
...
逻辑混乱
你以为我不知道Atom是Intel低功耗道路上的一步?但只是一步而已——上网本这一步,而不是手机这一步?明白?
所以现在Intel在拿着不是为手机开发的微架构和ARM 手机芯片PK?明白?
所以现在Atom不能反映Intel专为手机开发的微架构的水平?明白?
和你讲话很费劲
作者: the_god_of_pig 时间: 2012-9-26 11:35
"飞鸟真 atom确实是x86最高水平和最高工艺,因为从奔腾pro开始 的x86就不是真正的x86了,说是x86硬件模拟器都不为过。 发表于 2012-9-26 11:30"
x86的最高水平是连OoO都没有的Atom?
还是你想说x86就应该是in order的?Core系列不是x86?
作者: 飞鸟真 时间: 2012-9-26 11:36
the_god_of_pig 发表于 2012-9-26 11:35 
"飞鸟真 atom确实是x86最高水平和最高工艺,因为从奔腾pro开始 的x86就不是真正的x86了,说是x86硬件模拟器 ...
Core系列是x86翻译器 加risc内核
你继续无知吧,不和你浪费时间了。
作者: the_god_of_pig 时间: 2012-9-26 11:38
“飞鸟真 你牛,那个也要循序渐进,怕造出功耗太低的吓死几个if,先造个不高不低的? intel卖掉stongarm后开发atom架构就是认识到需要回归移动领域,做不好就成了if口中的一步步走了。 发表于 2012-9-26 11:34”
那麻烦您不要让ARM开发A15了,直接开发个I7水平的U直接干翻Intel多好
作者: the_god_of_pig 时间: 2012-9-26 11:42
飞鸟真 发表于 2012-9-26 11:36 
Core系列是x86翻译器 加risc内核
你继续无知吧,不和你浪费时间了。
你没完没了地强调这个有什么意义?
还是只剩下悲嚎之气力了?~~
作者: daniel_k 时间: 2012-9-26 12:16
飞鸟真 发表于 2012-9-26 11:20 
专攻上网本?intel如你智商早倒闭了,人家又不是没开发过手持,atom是intel想用x86统一世界重要的一环。
...
别黑酷睿了,酷睿全家都带ooo的,不是arm能比的
作者: Prescott 时间: 2012-9-26 12:18
qwased 发表于 2012-9-26 10:38 
我很想听听你的想法,能不能具体指出这篇文章的错误之处?
具体的错误之处实在太多,懒得一一指出了。
但是写了这么多,其实没什么干货,唯一的立论点就是:
X86是CISC,ARM是RISC,CISC比RISC复杂,所以X86永远没办法做到比ARM高效。这简直就是搞笑。除了这点以及一大堆废话之外?这篇文章还说了什么?没有了吧。
不错,RISC的优势在于指令简单,相关度低,在设计超标量OOO核心的时候,这是必须的。处理器内部执行单元都是用来执行最简单的操作,比如,从内存Load一个数据,对两个数据做简单的算数操作,跳转等等。RISC和这些操作基本上是一一对应的。这就是为什么RISC的兴起是和超标量/OOO提出基本处于同一个时代,因为拿着当时流行的CISC指令,架构师们根本没办法做复杂的超标量和OOO,只能把指令设计得更简单,种类更少,这样执行核心逻辑的复杂程度可以控制,通过提高流水线的长度宽度,乱序执行的深度来大幅度的提高性能。这就是为什么那个时代,几乎所有的教科书和文献都认为RISC比CISC“先进”,因为RISC很容易超标量/OOO,CISC只能干瞪眼,能做个2-issue已经惊世骇俗了。
但是,历史是螺旋式发展的,现在的X86处理器,从执行核心上来说完全是一个RISC核心,X86指令解码成为Intel/AMD内部定义的一个uops指令,然后交给流水线执行(AMD和Intel的uops完全不一样,所以两家出的CPU本质上是把几乎完全一样的X86指令转换成两个完全不一样的RISC指令集,然后交给两个完全不同的RISC CPU来执行)。这也就是为什么文章中居然提出直接把uops作为指令集,暴露给程序员(简直TMD脑残,估计他根本不知道uops有多宽)。
X86处理器和RISC处理器的区别就在于前端解码部分了,那个in-order的x86 frontend到底需要增加多大的开销呢?在整个处理器只有几百万个晶体管的时代,这个开销确实是大的惊人,需要差不多2百万个。但是你看看现在的处理器,晶体管数目都是10亿量级,1%都不到。RISC指令集凭着这1%的先天优势就想把X86踩在脚下?随着工艺的提高,这个先天优势还要不断的指数减小。现在的问题根本不是晶体管不够用,而是晶体管多到不知道该用来干什么!看看AMD的山猫核心,x86解码部分花了多大地方吧。

作者: Tempestglen 时间: 2012-9-26 12:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: the_god_of_pig 时间: 2012-9-26 12:42
Tempestglen 发表于 2012-9-26 12:36 
intel干嘛放弃i860和i960?是不是StrongArm比i860和i960好?Strongarm被intel买回去当宝贝,改名叫Xs ...
乱序atom PK A6??
Z2580笑了
作者: Tempestglen 时间: 2012-9-26 12:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: the_god_of_pig 时间: 2012-9-26 12:44
Tempestglen 发表于 2012-9-26 12:43 
Z2580?同频A6双核笑了,2C2T就可以K死你atom的2C4T。
有本事你同频一个啊?
说到同频,Haswell笑了
作者: Tempestglen 时间: 2012-9-26 12:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: the_god_of_pig 时间: 2012-9-26 12:46
Tempestglen 发表于 2012-9-26 12:43 
Z2580?同频A6双核笑了,2C2T就可以K死你atom的2C4T。
PS,敢问你确定了A6是几个核了吗?还认为是四核吗 ...
两核又如何,只是A5弱爆了而已
事实是苹果借ios掩饰了A5的残废
作者: Tempestglen 时间: 2012-9-26 12:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: the_god_of_pig 时间: 2012-9-26 12:50
本帖最后由 the_god_of_pig 于 2012-9-26 12:50 编辑
Tempestglen 发表于 2012-9-26 12:46 
有本事你1.8Ghz 2C4T放在手机上啊? 不敢吧,只敢放在平板上吧。你怎么就知道A6不能在平板上彪1.8Ghz?
z2580就是1.8G的手机芯片
作者: the_god_of_pig 时间: 2012-9-26 12:53
Tempestglen 发表于 2012-9-26 12:49 
A5(Coretx A9)单线程=atom单线程
确实,A5和atom都弱爆了。
http://news.mydrivers.com/1/242/242245.htm
ARM上演挣扎开机,哈哈哈,到了WIN RT就原形毕露
作者: Tempestglen 时间: 2012-9-26 12:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: Tempestglen 时间: 2012-9-26 12:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: Prescott 时间: 2012-9-26 13:10
Tempestglen 发表于 2012-9-26 12:36 
intel干嘛放弃i860和i960?是不是StrongArm比i860和i960好?Strongarm被intel买回去当宝贝,改名叫Xsca ...
真是YY得没边了,i960在内部竞争中输给X86,只能去做嵌入式的处理器。88年i960出来,之后就再没有过大改进。
89年486出来
93年Pentium出来
97年Pentium II出来
97年Intel收购StrongARM
脑残才会觉得intel是因为StrongARM放弃i960。
作者: itany 时间: 2012-9-26 13:25
飞鸟真 发表于 2012-9-26 11:36 
Core系列是x86翻译器 加risc内核
你继续无知吧,不和你浪费时间了。
x86要做的,Arm一样不少都要做。
你自己的文章中,还说道Arm的指令现在早就不是定长,统一格式的,而是变长的。
打自己的脸不要太急。
作者: itany 时间: 2012-9-26 13:28
Tempestglen 发表于 2012-9-26 12:36 
intel干嘛放弃i860和i960?是不是StrongArm比i860和i960好?Strongarm被intel买回去当宝贝,改名叫Xsca ...
DEC的牛人通过安腾项目到了Intel,剩下的只是渣罢了
作者: Tempestglen 时间: 2012-9-26 15:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: eternal0 时间: 2012-9-26 15:30
飞鸟真 发表于 2012-9-26 11:36 
Core系列是x86翻译器 加risc内核
你继续无知吧,不和你浪费时间了。
risc内核又如何了?用户最后看的是性能和兼容性,而不是里边用了什么技术。
不管你们这帮ARM粉怎么吹,几年内是见不到完整的ARM版Windows,捧着你那阉割版Windows RT继续YY去吧。
ARM进军桌面就和Atom进军手机一样困难,别以为有捷径可走。
作者: Tempestglen 时间: 2012-9-26 15:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: itany 时间: 2012-9-26 16:26
Tempestglen 发表于 2012-9-26 15:37 
最后还不得不说说那些在DEC工作多年,并且才华横溢的工程师们的去向。Derrick Meyer加入了AMD公司,设计K7; ...
哈哈,看到Dirk Meyer了,又想起他在AMD做官搞残AMD,非法交易中饱私囊。很多I fan亲切的叫他小梅,认为他是卧底呢。
Jim Keller前几天从苹果叛逃,与Arm决裂,投奔了AMD搞x86
Daniel Leibholz的UltraSPARC 5貌似研发失败,项目取消,人员滚蛋了。现在这货去做DSP,不趟浑水了。
Daniel Dobberpuhl貌似后来去做MIPS了吧~
您给出的这些人,还真是奇葩。
作者: 飞鸟真 时间: 2012-9-26 16:37
Prescott 发表于 2012-9-26 12:18 
具体的错误之处实在太多,懒得一一指出了。
但是写了这么多,其实没什么干货,唯一的立论点就是:
你也就会偷换概念浑水摸鱼,你看整数单元和浮点单元又多大?为啥酷睿解码好一点就把amd秒翻了,如过不用转又能提高多少?
大芯片是好造的吗,好造为啥为提高一点性能堆缓存玩,照你那么说intel是卖缓存的,核心是白送。
作者: sucKing 时间: 2012-9-26 16:44
专程从显卡区过来顶!
作者: Tempestglen 时间: 2012-9-26 17:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: Prescott 时间: 2012-9-26 17:27
飞鸟真 发表于 2012-9-26 16:37 
你也就会偷换概念浑水摸鱼,你看整数单元和浮点单元又多大?为啥酷睿解码好一点就把amd秒翻了,如过不用转 ...
笑死,Core秒翻AMD是靠解码?前端的吞吐量成为瓶颈的可能性微乎其微。连Core这种高效的执行核心在运行通常程序的时候都不到2inst/cycle。解码跟不上的唯一可能性就是分支预测太烂,解码器在做无用功,这个和解码单元本身一点关系都没有。
bobcat diesize也就是75平方毫米,看那个解码部分,有3平方毫米就不错了,这还是TSMC的废柴40nm工艺下。在Intel 22nm工艺下,1平方毫米都没有。相对于整个处理器,也就是多1%的消耗很大吗?
扯什么整数和浮点单元?现代处理器真正的运算单元能占多大比重?你自己去看看流水线,总共10-20级的流水线,execute占几级?一级!!加法器还是20年前那个加法器,浮点也还是20年前那个浮点,还能玩出花来?
作者: 飞鸟真 时间: 2012-9-26 17:35
Prescott 发表于 2012-9-26 17:27 
笑死,Core秒翻AMD是靠解码?前端的吞吐量成为瓶颈的可能性微乎其微。连Core这种高效的执行核心在运行通常 ...
酷睿微架构通过提高静态指令并行能力、优化动态指令两种措施实现高效运作,这两种方案在CPU硬件上有不同的实现——针对静态指令,处理器以提高指令并行执行能力应对,而针对动态指令,处理器引入了一项名为“宏操作融合(Macro-Op Fusion)”的指令优化技术,再加上从Pentium M继承而来的“微操作融合(Micro-Op Fusion)”技术,动态指令得以最大程度的精简化,最终让酷睿2双核处理器获得卓越的每瓦性能。
大家都知道,增强指令并行执行能力是提高CPU效率最有效的办法之一!而在CPU内部,一个指令的执行过程必须经过解码器解码后交给相应的运算单元加以执行,解码操作的实质就是将长度不一的x86指令分解为多个固定长度的微指令(类似RISC指令),以提高后续处理的效率。因此,要让CPU拥有尽可能高的并行处理能力,首先就要增加指令解码器的数量——每个解码器对应一个指令,解码器数量越多,并行执行能力就越强!但这并不是说解码器数量可以无限制增加,由于x86指令系统远比RISC指令系统来得复杂,指令长度、格式与定址模式都非常紊乱,受此制约处理器厂商一直都无法在自己的产品中设计三个以上的解码器,包括P6/Pentium M、Netburst、K7/K8架构产品都是采用三个解码器设计,也就是每个时钟周期最多只能对三条指令进行解码。
而在解码器设计方面,一直都有传统的“简单-复杂”专用解码器以及通用解码器两类设计方案,专用解码器要么只能对静态指令进行解码、要么只能对动态指令解码,具有较高的效率;通用解码器虽然能够同时处理两类指令,但它效率较差——英特尔的P6/Pentium M架构、AMD K7/K8架构都属于“简单-复杂”专用体系,三个解码器由一个复杂指令解码器(complex decoder)和两个简单指令解码器(simple decoder)构成的“4-1-1”结构;其中,复杂指令解码器可对包含2~4个微指令的复杂指令作解码处理,但若遇到更加复杂的指令,解码器就会呼叫微码循序器(Microcode Sequencer)、将复杂指令分解为多个微指令系列分别执行。到了Netburst架构出现,情况就发生了变化,英特尔改用通用解码器方案,每个解码器都能处理简单指令和复杂指令,当遇到动态指令较多的应用时,NetBurst架构具有较高的效率;可一旦遭遇简单指令较多的应用,Netburst的通用解码器效率平平,加之流水线过长,一旦分支预测代价巨大,就会使得Netburst架构整体性能不高。而在Netburst之后露面的Banias Pentium M架构则回复到P6架构的4-1-1经典方案,将复杂指令和简单指令重新分开,只是通过多方位改良来提高处理器性能!
酷睿2双核处理器同样采用专用解码器设计,即采用简单解码器和复杂解码器相互独立的方案,但不同之处在于它将简单解码器的数量提高到三个,复杂解码器仍为一个——由于后者最多可处理由四个微指令组成的动态指令,因此酷睿2双核处理器的解码器就变为4-1-1-1结构。显然,英特尔以某种机制成功克服了x86指令并行解码限制的困扰。
酷睿的革命性改进就被你面不改色心不跳的扯谎撤掉了,我想连if都没法理解。
作者: Prescott 时间: 2012-9-26 17:54
本帖最后由 Prescott 于 2012-9-26 17:56 编辑
飞鸟真 发表于 2012-9-26 17:35 
酷睿微架构通过提高静态指令并行能力、优化动态指令两种措施实现高效运作,这两种方案在CPU硬件上有不同 ...
垃圾文章。多加个解码器举手之劳。这个算在conroe的改进里边,根本排不上号。
作者: itany 时间: 2012-9-26 18:57
飞鸟真 发表于 2012-9-26 16:37 
你也就会偷换概念浑水摸鱼,你看整数单元和浮点单元又多大?为啥酷睿解码好一点就把amd秒翻了,如过不用转 ...
Core 2是解码比A64好? 真是搞笑了。
AMD 3个复杂解码器,Intel是3个简单+1个复杂吧。AMD取值带宽也比Intel大。很多人认为,解码的能力,AMD是强于Intel的。
Intel强的是分值预测、指令预读、推测执行。这个现代乱序处理器都有,Arm也一样
作者: itany 时间: 2012-9-26 19:04
飞鸟真 发表于 2012-9-26 17:35 
酷睿微架构通过提高静态指令并行能力、优化动态指令两种措施实现高效运作,这两种方案在CPU硬件上有不同 ...
Prescott是Intel的高级工程师,您那百度上忽悠国内小白的文章就别拿出来了。
4发射说实话在当时是没有用的。我当年也是傻逼逼的因为是更宽执行宽度的作用,其实是执行效率的问题。
很多服务器程序的ILP也就是1.x,好的程序也就是2.x
4发射是给超线程用的。
作者: itany 时间: 2012-9-26 19:07
本帖最后由 itany 于 2012-9-26 19:07 编辑
Tempestglen 发表于 2012-9-26 12:36 
intel干嘛放弃i860和i960?是不是StrongArm比i860和i960好?Strongarm被intel买回去当宝贝,改名叫Xsca ...
当年WinCE的时候,Xscale可没少被喷高频低能。
看看现在Marvell的Arm就知道了。
现在又当个宝了?
真要是StrongArm,Arm就等着和AMD一样走老路吧~ 啧啧
作者: itany 时间: 2012-9-26 19:11
Tempestglen 发表于 2012-9-26 17:19 
人家设计K7,技术水平高就行了,人品不等于技术。
Keller 貌似被一个更牛逼的人物顶替了,那人就是曾经 ...
你不是说K7是21264“稍加修改”的么,怎么现在又变成是小梅设计的呢?
反正小梅是Intel的大功臣,我不愿意黑他,不过您说话也靠谱点吧
连自己都卖了的,不见得是啥香饽饽。
作者: daniel_k 时间: 2012-9-26 19:22
itany 发表于 2012-9-26 19:04 
Prescott是Intel的高级工程师,您那百度上忽悠国内小白的文章就别拿出来了。
4发射说实话在当时是没有用 ...
这个ILP的数值从哪里来的?台式机多核多U这么多年了,不会还是这样子吧?
MCU上,那经常是几个周期才执行一个指令啊,用用AVR那是莫大的荣幸了,偶尔能偷油,把除法换成移位就偷笑了,还得感叹下没有硬件除法器局限太多。台式机发展这么多年了,九几年就开始双赛扬了,Win2000就支持双U了,十几年过去了并行代码还是老样子么?有明白的给讲解一下?
作者: daniel_k 时间: 2012-9-26 19:25
itany 发表于 2012-9-26 19:07 
当年WinCE的时候,Xscale可没少被喷高频低能。
看看现在Marvell的Arm就知道了。
现在又当个宝了?
当时感觉性能还过得去,就是功耗太渣
作者: sucKing 时间: 2012-9-26 19:46
daniel_k 发表于 2012-9-26 19:25
当时感觉性能还过得去,就是功耗太渣
手中的xsale312@806开这个网页都一顿一顿的
作者: daniel_k 时间: 2012-9-26 20:23
sucKing 发表于 2012-9-26 19:46 
手中的xsale312@806开这个网页都一顿一顿的
注意状语“当时”
作者: itany 时间: 2012-9-26 22:59
daniel_k 发表于 2012-9-26 19:22 
这个ILP的数值从哪里来的?台式机多核多U这么多年了,不会还是这样子吧?
MCU上,那经常是几个周期才执行 ...
ILP是有天花板的,而且是程序决定的啊。不是CPU微架构改进能解决的问题。
当年Netburst架构就只有一个解码器。
就是认为有不少应用就只能达到1.x的ILP,通过一个较大的微操作缓存,完全可以进行掩盖。
虽然这个结果就是很多时候执行效率低。
MCU上很多指令要执行几个周期是正常的吧。
作者: darkangel308 时间: 2012-9-27 00:11
话说Linpack测试可以用来对比x86处理器和arm处理器性能么
作者: daniel_k 时间: 2012-9-27 13:26
itany 发表于 2012-9-26 22:59 
ILP是有天花板的,而且是程序决定的啊。不是CPU微架构改进能解决的问题。
当年Netburst架构就只有一个解 ...
8bit,十几Mhz的MCU,几个时钟执行一个指令的确很正常,不过连AVR PIC这些东西都能做到单周期一指令,这么多年多核的X86没理由指令并行还那么差吧,就算每个核心只能做single issue,四核心也有不少了,何况还有intel的超线程?超标量早都用烂熟了,加上这么多核心,如果ILP只有2.x,那是不是三核心以上的CPU都是浪费的了?但实际应用又不是这样,何解
作者: acqwer 时间: 2012-9-27 13:35
daniel_k 发表于 2012-9-27 13:26 
8bit,十几Mhz的MCU,几个时钟执行一个指令的确很正常,不过连AVR PIC这些东西都能做到单周期一指令,这么 ...
ILP是一个核的事,论ILP,安腾应该是最高的吧。
作者: itany 时间: 2012-9-27 13:50
daniel_k 发表于 2012-9-27 13:26 
8bit,十几Mhz的MCU,几个时钟执行一个指令的确很正常,不过连AVR PIC这些东西都能做到单周期一指令,这么 ...
哈?
您理解错了。
ILP是指令级并行度,指的是一个线程在执行的时候能同时并发几条指令,和多线程是没关系的
作者: daniel_k 时间: 2012-9-27 13:55
itany 发表于 2012-9-27 13:50 
哈?
您理解错了。
ILP是指令级并行度,指的是一个线程在执行的时候能同时并发几条指令,和多线程是没关 ...
原来说的是线程内的事情,大环境搞错了
作者: itany 时间: 2012-10-7 02:57
acqwer 发表于 2012-9-27 13:35 
ILP是一个核的事,论ILP,安腾应该是最高的吧。
那只是理论上
而实际上,poulson还是换了微架构
| 欢迎光临 POPPUR爱换 (https://we.poppur.com/) |
Powered by Discuz! X3.4 |