细说ARM和X86的江湖恩怨(三)

发布时间:2011-01-9 阅读量:1001 来源: 发布人:

200212月,ARM1136内核发布[91]2004719ARM1176内核发布[92]2005310ARM1156内核发布[93]。在此之前的ARM处理器虽然得到了广泛应用,但是从纯技术的角度上看这些处理器微不足道。

ARM11基于ARMv6指令集,之前ARM还开发了V1V2V2aV3V4V5指令集。ARM使用的内核与指令集并不一一对应。如 ARM9使用V4V5指令集,XScale使用V5指令集。ARM7最初使用V3,而后使用V4,最后升级到V5。在ARM指令集后还包含一些后缀如 ARMv5TEJ,其中T表示支持Thumb指令集,E表示支持Enhanced DSP指令,而J表示支持Jazelle DBX指令。

ARM v4指令集包含最基础的指令集;v5增强了ARMThumb指令间的交互同时增加了CLZ(Count Leading Zero)BKPT(Software Breakpoint)指令;ARMv5TE增加了一系列Enhanced DSP指令,如PLD(Preload Data)LDRD(Dual Word Load)STRD(Dual Word Store)64位的寄存器传送指令如MCRRMRRCARM v4v5在指令集上变化不大,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]

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

3 Barrel Shifter的使用

这些特殊的指令使得ARM内核有别于其他处理器内核,但这并不意味着也极大提高了执行效率。首先CMP指令,SUBGTSUBLE指令有较强的相关性,不能并发执行。此外现代处理器的条件预测单元也可以极大降低条件转移指令的命中率。一些处理器,如x86CMOV指令和PowerPCisel指令使用了更小的代价实现了ARM的条件执行功能。

ARM内核在条件执行指令时占用了4个状态位,也进一步影响了指令集和寄存器的扩展。绝大多数RISC处理器中具有32个通用寄存器,而ARM内核仅有16个通用寄存器[x]ARM的特殊移位操作,增加了指令的相关性,在有些情况下,不利于多发射流水线的实现,也增加了指令流水中预约站 RS(Reservation Station)的实现难度。

计算机体系结构是一个权衡的艺术,尺有所短,寸有所长。不同的内核都有自己最为合适的应用,不经过认真的量化分析不能轻易得出孰优孰劣的结论。不过仍有一个结论,在现阶段依然适用,处理器领域历经多年的优胜劣汰,所剩无几的处理器内核在激烈的竞争中日渐趋同。

ARM11内核使用了现代处理器中常用的一些提高IPC的技术,这是ARM处理器的一个重要里程碑。ARM11内核引起了计算机科学的两个泰山北斗,David A. PattersonJohn 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/MHzARM11增加了SIMD指令,与ARM9相比MPEG4的编解码算法实现速度提高了一倍,改变了Cache memory的结构,使用物理地址对Cache行进行索引[95]ARM11终于开始使用动态分支预测功能,设置了64Entry4个状态的 BTAC(Branch Target Address Cache)[95]

ARM11进一步优化了指令流水线对存储器系统的访问,特别是在Cache Miss的情况之下的存储器读写访问。在ARM11内核中,当前存储器读指令并不会阻塞后续不相关的指令执行,即便后续指令依然是存储器读指令,只有3个存储器读指令都发生Cache Miss的情况,才会阻塞指令流水线[95]

虽然ARM11没有使用RISC处理器常用的out-of-orderSuperscaler技术,在一个时钟周期之内仅能顺序发射一条指令,但是支持out-of-order completion功能,即在执行单元中的不相关的指令可以乱序结束,而不用等待之前的指令执行完毕。

ARM11的这些功能增强,相对于ARM9/10是一个不小的技术飞跃。但是与其他处于同一时代的x86PowerPCMIPS处理器相比,仍然有不小的差距。ARM11内核的存活之道依然是性能功耗比。

依靠着强大的性能功耗比,ARM11内核取得了巨大的商业成功。ARM11内核并不是一个性能很高的处理器,但是随着ARM处理器性能的不断提升,量变终于引发了质变。ARM11内核的出现,使得Smart Phone的出现成为可能。

在此之前,基于ARM9XScale处理器的手机只是在Feature Phone的基础上添加了少许智能部件。自ARM11的问世起,AppleHTC在智能手机领域异军突起,Motorola一蹶不振。ARM11之后,ARM迎来了爆发式增长,陆续发布了Cortex A8A9内核。

ARM处理器内核的快速更新,使得Nokia这个对新技术反应迟钝的公司,一步步走向衰退。在20109月底开始出货的Nokia N8[96],居然还在使用着680MHz主频的ARM11处理器[97],而这款产品却号称是Nokia最新的旗舰产品,它的竞争对手早已使用了 1GHz主频的Cortex A8处理器。

Cortex处理器是一个分水岭,从1983年开始的ARM内核,迎来了一颗真正意义的现代处理器。此时的ARM已经破茧成蝶,不再是低功耗伴随着低能的处理器。从这一刻起,ARM处理器具备了和Intel,一较高下的能力。201043AppleJobs正式发布iPadARM随之进入平板电脑领域[99]ARM已将战火烧到了Intel的后院。

抛弃了XScale架构的Intel,并没有放弃手机处理器。2009123NokiaIntel在手机领域建立长期合作伙伴关系 [103]200964Intel收购Windriver[102]201054Intel正式发布用于智能手机和平板电脑,代号为 Moorestown的处理器[100]2010829Intel收购Infinion的无线部门[104]。在2011年左右,Intel将发布用于智能手机,代号为Medfield的处理器[101]。一系列的合作与收购,使Intel具备了进入手机领域的能力。

至此ARM之于PC领域,x86之于手机领域的野心,已昭然若揭。201099ARM正式发布代号为Eagle5ARM9架构的 Cortex A15内核,这颗处理器所关注的应用是高端手机,家庭娱乐,无线架构,还有低端服务器[98]Cortex A15向世人宣布除了PC,他们还要向Server进军。

ARM,这个曾被Intel鄙视,被其扶植,被其抛弃的处理器,开始直面挑战Intelx86处理器。这场较量是今后处理器领域510年的主旋律。最终结果将影响处理器领域今后20年的格局。不要认为ARM处理器没有进入PC领域的可能,也不要认为ARM处理器可以继续在手机领域中所向披靡。

--------------------------------------------------------------------------------

[i] 苹果公司的两个创始人都叫Steve,一个是Steve Wozniak,另一个是众所周知的Steve JobsSteven WozniakApple IApple II的发明者。两个Steve19764月,在一个车库中成立众所周知的Apple

[ii] 英国的谷仓文化与美国的车库文化相近,都是新技术的摇篮。

[iii] ARM公司从ARM3直接升级到ARM6

[iv] 我最初评估的ARM芯片就是Cirrus LogicEP7312。当时我还在使用AlteraEPLD,名称是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 ExpressUSB总线,后来把网络协议部分和USB总线部分删掉了。

[ix] 在处理器体系结构中,重点关注的有三类相关问题,RAWWARWAW。使用寄存器重命名技术可以解决WARWAW相关。

[x] 考虑到ARMARM11内核之前都不支持动态分支预测,和多发射,使用条件执行指令还是能够提高ARM7/9内核的执行效率。

更多相关信息请参阅:

细说ARM和X86的江湖恩怨(一)


细说ARM和X86的江湖恩怨(二)

CES2011

本站CES专题


相关资讯
汽车继电器选型指南

继电器是一种当输入量(电、磁、声、光、热)达到一定值时,输出量将发生跳跃式变化的自动控制器件。而汽车继电器是汽车中使用的继电器,该类继电器切换负载功率大,抗冲、抗振性高。汽车中的电源多用12V,线圈电压大都设计为12V。由于是蓄电池供电、电压不稳定; 环境条件恶劣,吸动电压V≤60%VH(定额工作电压);线圈过电压允许达1.5VH。线圈功耗较大,一般为1.6~2W,温升较高。环境要求相当苛刻:在发动机舱,环境温度范围要求为-40℃~125℃,其他位置环境温度范围为-40℃~85℃;在发动机舱里使用的继电器要能经受砂尘、水、盐、油的侵害;振动、冲击相当苛刻。

电位器的选型技巧与关键技术参数

电位器具有一系列优势,包括设计简单、价格低廉、电阻范围大、操作简便和技术成熟。它们作为可靠的器件,在电子和电气系统中对线性或旋转运动进行电压控制、测量和精确感应。在实际应用中,我们需要了解电位器的技术参数,以便正确选型和使用,确保电路的正常运行。

Transphorm与伟诠电子合作推出新款集成型SiP氮化镓器件

该SiP系列现已增至三款器件,均使用了Transphorm的SuperGaN,为支持新一代适配器和充电器拓展了功率等级

血氧仪无缝替代的元器件选型方案

全球性公共卫生事件呈现多发态势,引发了社会各界对个人健康及公共卫生问题的深度反思和广泛关注。如何迅速、高效地了解人体健康状况,以确保个人身体健康,成为一大焦点问题。家庭医疗电子设备,以其便捷的操作和智能化的检测手段,使人们能迅速直观地判断自身健康状况,因此受到了大众的青睐。血氧仪采用非介入的方式测量或连续监测动脉血液中的氧饱和度,以确保血液中存在足够的氧,这种设备常用于处在麻醉状态的呼吸道疾病患者、新生儿以及重症患者。

低功耗智能燃气表实战方案:华大电子,龙芯和小华半导体套件汇总

随着中国城市化进程的加快、“煤改气”工程的持续推进等因素的加持,我国智能燃气表行业正迎来全面放量的时期,智能燃气表的市场需求快速增长。智能燃气表是在普通燃气表的基础上,增加了通信和计量技术,使得燃气表具备了自动抄表、数据传输、智能监测等多种新功能。作为燃气计量和结算的重要依据,燃气表计量数据采集及抄收的准确性、及时性至关重要,由于燃气的特殊性,要求燃气表有防爆的需求,同时还需要长时间高可靠工作,所以对MCU的稳定性、可靠性都有很高的要求。针对智能燃气表的需求特点,快包分析师推荐华大、龙芯、小华的智能燃气表主控方案。