ARM 处理器的 64位元革命,新款处理器 Cortex回顾2012年,ARM 业界发生2件处理器大事,其一推出了不少新款应用处理器,其次则是发表 ARMv8 架构。这两件事意味着 ARM 的新时代到来,那对于我们又有甚幺影响?我要如何了解它呢?让我们来一探究竟吧。

快速浏览:Cortex-A50设计现身,最快2014年实体化 / 跨入64位元的6大特色新一代 ARMv8 运作状态分2种Cortex-A57:32位元效能3倍强 / Cortex-A53:最娇小64位元CPU了解 big.LITTLE 架构Cortex-A50设计现身,最快2014年实体化

ARM 处理器的 64位元革命,新款处理器 Cortex

回顾2012年,ARM业界发生2件处理器大事,其一推出了不少新款应用处理器,其次则是发表ARMv8架构。新款处理器方面代表是Cortex-A15,首款搭载Cortex-A15的是Samsung Exynos 5250,具备有1.7GHz双核心,并内建在Samsung后来推出的Chromebook当中。

另外Exynos 5250还应用在Google Nexus 10上,面板解析度高达2560 x 1600。当然,大家最关心的就是效能到底如何,从目前网路上释出的测试成绩来看,的确具有双核(Cortex-A15)打四核(Cortex-A9)的实力。就连Exynos 5250内建的Mali-T604 GPU也比目前Mali-400和Adreno 320效能再高出一截,但尚不及Apple A6X内建的PowerVR SGX554MP4。四核版Exynos 5450传出将使用在新一代的 Galaxy S4 上,製程也将由Exynos 5250的32nm更换成28nm。

ARMv8 现身

ARMv8是ARM业界第二件大事,这件事情也延宕1年多。ARM终于推出2款处理器设计,分别为Cortex-A53和Cortex-A57,由数字就可观察到是2款效能不同的产品。在此同时,与ARMv8架构一并推出的big.LITTLE处理器设计概念再次被提及。而ARMv8和Cortex-A50系列处理器又会如何改变我们手中的行动装置,皆在之后的文章中细细说明。

目前的市售产品中,无论是Apple设计的A6X应用处理器,还是NVIDIA红透半边天的Tegra 3,亦或是最近常被提及的Qualcomm APQ8064,皆相容ARMv7的指令集架构,只是在硬体线路实做方面有所差异。这其中的差别,读者可以理解成Intel、AMD、VIA三者製造的处理器皆可以安装Windows,但是三者的效能却大异其趣。

了解ARMv8架构

ARMv8目标接替ARMv7成为下一代ARM处理器的架构,目前只单一释出ARMv8-A,没有像ARMv7再细分为针对应用处理器的ARMv7-A,微控制器的ARMv7-M,和适合即时处理的ARMv7-R。

ARMv8最大的改变就是开始支援64位元,记忆体容量限制一举突破4GB。这在目前手持式行动装置上的迫切性并不大,直到今年才有2GB RAM的手机出现,在未来的1、2年内,受到半导体製程的影响,手机内建记忆体或许可以微幅调升至3GB或是4GB。

但别忘了除了消费性市场以外,许多伺服器製造商也一直在觊觎ARM的省电性,这或许才是ARM支援64位元的主因,準备大举进攻伺服器市场。Intel则是为了防堵ARM的步步进逼,于是去年底推出最低TDP只要6.3W的Atom S1200系列。

跨入64位元的6大特色

新架构一定有些过去没有的优势,跨入64位元领域后,较明显差异可分成6个层面,包括LPAE记忆体定址、最佳化的暂存器、A32与A64模式、2大资料模型、强化浮点数运算,最后则是简化的处理器状态。

定址扩大支援LPAE

跨入64位元之后,最大优点就是记忆体定址範围扩大,而在ARMv8之中支援LPAE(Large Physical Address Extension),可定址超过4GB的实体记忆体。目前ARMv7架构的Cortex-A15已支援LPAE,虽说虚拟记忆体空间最多还是32bit,但已可支援到40bit的实体记忆体定址,最大支援128GB记忆体。

ARMv8的记忆体定址则成长到了48bit,无论是虚拟或是实体定址皆然,代表着ARMv8最多支援32TB的实体记忆体空间,这对想要进攻伺服器市场的ARM来说是个不错的加分优点。

ARMv8支援2个48bit虚拟记忆体空间,一般程式记忆体空间从2^0往上延伸,核心记忆体空间则是由2^64往下减少,其中32位元程式码只能运作在前4GB空间。记忆体可以採用常见的4KB做为分页,也可以使用新的64KB分页;64KB分页的好处是效能高,但若是填入的资料少于64KB则容易造成记忆体空间的浪费。

x86-64处理器允许4KB或是2MB记忆体分页,ARMv8採用4KB和64KB分页,浪费的记忆体空间会比x64来的更少。

记忆体空间浪费有2种

在记忆体管理中,2种状况下会导致记忆体空间的浪费,没有办法使用这些空间。第一种称为外部碎片(external fragmentation),主要是记忆体分配给不同行程时,在2个分配空间中存在着一小段未被分配的记忆体区块,但这记忆体区块却又不够大到能够分配给其它行程,造成有空闲的记忆体区域却无法使用。

第二种浪费就是採用分页式记忆体管理所造成,称为内部碎片(internal fragmentation)。由于将记忆体区域切割成固定大小的「页」,所以会造成某些「页」中无法完全被资料填满,而这没有被填满的区域又无法分配给其他行程,造成内部碎片。

读者可以利用杂誌来理解,每一页都是由某个专题部分独佔(真测队、技研堂……),如果我们写的专题在尾端字数不足1页,我们还是要分配1页给它,并不会发生上半部页是真测队,下半页为另一篇专题开头的状况。

暂存器效能最佳化

在AArch64部分,CPU内部暂存器的部分也有所增加。ARM在Cortex-A9中已导入硬体直接实作的虚拟暂存器重命名功能,但对于软体来说,可用的暂存器还是只有那几个而已。AArch64直接内建31个64位元的通用暂存器(第31个暂存器多数时间拿来当作Procedure Link Register),比起之前16个32位元的暂存器来说,在将来更複杂的运算中(如演算法),避免重複读取载入资料的时间,运作效率更高、效能更好。

暂存器是什幺?

暂存器的英文为register,是整台电脑里运作速度最快的记忆体元件,在CPU的运算阶段,处理单元能够直接存取、修改这部分的数值,但由于造价昂贵,仅在CPU内部安排数bit~byte不等的暂存器。若是以一般电脑记忆体元件的存取速度来排列,由快至慢为暂存器>L1快取>L2快取>L3快取>系统记忆体>硬碟快取>硬碟。

ARM 处理器的 64位元革命,新款处理器 Cortex

▲ARMv5进化到ARMv8的历程,ARMv8藉由AArch32支援ARMv7的功能,同时再加入有关加密的指令(点图可看大图)。

延伸阅读:

完全看懂 ARM 处理器:RISC 与 CISC 是什幺?历史、架构一次看透

4大名牌 ARM 处理器特色说分明,买授权自己开发,各家硬体差在哪?

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

HTC UltraPixel 、Nokia Pureview 相机技术大战开打,技术详解、谁更创新?

(后面还有:ARMv8运作分2种等更多详细介绍唷!)

ARMv8 运作分2种

架构更新为64位元之后,ARMv8的运作状态包含2个部分,64位元称为AArch64(ARM Architecture 64),指令集称为A64,之前的32位元的指令集则包含在AArch32(ARM Architecture 32)之下,包含32位元的ARM指令(A32)和16/32位元均有的Thumb-2指令(T32)。

而且AArch64和Arch32是互斥的指令集,这点也与x86的世界不同;但ARMv8的处理器允许在这2种执行状态下切换,也就是说,ARMv8允许执行ARMv7的程式,只要把执行状态切换成Arch32模式即可。

读者可别认为转换到64位元之后,指令也增肥到64位元这幺长。A64的指令还是延32位元的长度。日益重要的加密演算法,在ARMv8中也新增专门对应的指令,在AArch32或AArch64中皆可执行,像是AES或SHA-1和SHA-256都有支援。藉由128bit的SIMD暂存器实作,代表每一个指令可以同时对128bit的资料进行运算操作。

2种资料模型

ARMv8在64位元执行环境下,定义了2种资料模型,分别为LP64和LLP64(跟LP33没关係喔)。LP64的integer长度为32bit,long integer的长度为64bit,这种定义方式常使用于UNIX、Linux、OS X;而LLP64的integer或是long integer都定义为32bit长度,long long integer的长度才是64bit,常见于Windows作业系统之中。

强化浮点数处理

原始的ARM核心并不具备硬体浮点处理功能(但有专门的VFP协同处理器),如果想要计算浮点数只能呼叫fplib函式库来用,想当然耳以软体来模拟,效率较差。

ARMv8大幅强化浮点数处理能力,现在浮点数暂存器有32组,每一组有128bit宽,代表着每个暂存器可装入2个双精度浮点数,同时支援IEEE 754的浮点数处理,也能够处理一些奇怪的例外状况,比如说除以0或是非数字数值无穷大。

简化的处理器状态

在Cortex-A15的时候,处理器状态分为8种,分别为User、System、Supervisor、Abort、Undefined、Interrupt、Fast Interrupt、Hyp。其中Hyp模式在Cortex-A15导入,为的是支援硬体虚拟化功能。

AArch64则是将CPU状态简化了,分别为EL0~3。EL0为User模式、EL1为Kernal模式、EL2为Hypervisor虚拟化之用、EL3为TrustZone安全监控之用。比起过往较为複杂的处理器模式,AArch64不但将模式简化为4种,模式也更向x86 CPU靠拢。在这複习一下x86处理器的3种模式,分别是Real、Protected、System Management,若是x86-64处理器还会再多出1种Long模式。

ARMv8 Cortex-A50发表

2012年10月30号,在美国加州举办的ARM TechCon 2012上宣布,基于最新一代ARMv8架构设计的处理器核心Cortex-A53和Cortex-A57正式推出。Cortex-A53和Cortex-A57就是目前的Cortex-A7和Cortex-A15的64位元升级版,不管是内部架构、目标市场都极为类似。

ARM 处理器的 64位元革命,新款处理器 Cortex

▲藉由big.LITTLE架构和製程的演进,在持续冲高效能的同时,还能够保持低耗电量(点图可看大图)。

(后面还有Cortex-A57:32位元效能3倍强的介绍唷)

Cortex-A57:32位元效能3倍强

Cortex-A57为下一代ARMv8 64位元处理器中的高效能代表,开发代号为Atlas,在ARM TechCon 2012中,表示效能为现今Superphone的整整3倍,而且还不是64位元打32位元的灌水数值,全都是在32位元模式下的执行结果。

有关于加密的执行效率方面,大会上也宣称加密速度可比现有产品高达10倍以上的能力。在企业端支援方面,浮点数运算新增IEEE754-2008的处理能力,单晶片核心数至少可以冲到16核心以上。

记忆体44bit定址

虽说ARMv8可以支援到48bit的虚拟记忆体位址,但ARM没有把全部的能力下放在Cortex-A57身上,仅支援44bit的虚拟记忆体位址,同时也支援44bit定址/16Tb容量的实体记忆体空间,目前预计支援LPDDR3以及DDR4这2种记忆体规格。

在L1快取的部分,指令与资料快取容量不对称。L1指令快取内建48KB,L1资料快取则为32KB,皆有除错功能;L2快取则不再区分为资料或指令,皆在同一区域内,同时L2快取容量是可以客制化的,可在512KB、1MB、2MB範围中选择,L2快取的延迟也较Cortex-A15短。

issue是什幺?

在指令解码器解出指令后,会把解出来的指令先存放在1个叫做issue queue的伫列(缓冲)中,等到某个指令所需的资源準备好,或是等到后端执行部分空闲时,再把指令丢入后端执行单元。而1个指令正式进入执行管线,就叫做建立1个issue。

处理器连结汇流排更新

Cortex-A15多核架构中,各个核心的快取资料一致性,以及与其它周边装置的连结部分,採用CCI-400 Cache Coherent Interconnect相互连接起来,存取系统记忆体之前也需要经过它。

在Cortex-A50系列中,则是採取了更为先进的CCN-504 Cache Coherent Network(注意英文用字的不同),原先CCI-400最多支援四核,CCN-504在同一硅晶圆上最多支援十六核心。CCN-504还可内建L3快取,最高达16MB,让存取系统记忆体的时间变少,效率更高。

执行效率快25%

以上零零总总的改进加起来,在同时脉下Cortex-A57的效能可比Cortex-A15快上25%(32bit模式下)。如果与Atom N570比较,在SPECINT2000中可达2倍以上的效能(根据ARM TechCon释出的简报内容)。

ARM 处理器的 64位元革命,新款处理器 Cortex

▲这是Cortex-A15的功能方块图,Cortex-A57的详细图片尚未放出,预估应该是以Cortex-A15为蓝图,加上64位元的支援能力(点图可看大图)。

Cortex-A53:最娇小64位元CPU

ARM宣称,Cortex-A53是世界上具有64位元处理能力的CPU中,最为娇小的一款。Cortex-A53能够自行组合成多核处理器,或是和大哥Cortex-A57组合成稍后即将说明的big.LITTLE架构。

顺序执行的Cortex-A53

x86处理器进入乱序(Out-of-order)执行已经多年,ARM的处理器一直到Cortex-A9才具备有乱序执行的功能。其原由为乱序执行需要处理器内,新增指令等待的伫列(当指令所需运算资料,或资源準备完成就可跳出伫列执行),执行完的结果也需要排列回原始指令进入的顺序;虽说CPU的执行效率会提高,但也需付出功耗与晶片面积的代价。一直到半导体製程进步,足以消弥额外的功耗损失,Cortex-A9才出现这项功能(世界对于手持式装置效能的渴望也是推手之一)。

Cortex-A53(开发代号Apollo)相较于大哥Cortex-A57的乱序执行架构,Cortex-A53保持着顺序执行的作法,减少电晶体的数量就是减少额外的耗电量。ARM表示,在同样的製程下(32nm),Cortex-A53能够提供与Cortex-A9相同的效能,但多了64bit的支援能力,晶圆面积却小了40%以上,若是未来使用20nm製程製造,将会是现今CPU的25%面积而已。特别的是在ARM TechCon的简报上,并未详细注明单一晶片可以装入几颗Cortex-A53核心,反而是以sea(海洋)来形容,似乎可以装入数量庞大的核心群,对于低功耗伺服器或是基地台应用方面是个利多。

定址能力缩减

Cortex-A53的记忆体定址能力又比Cortex-A57弱了一些,只有40bit的定址能力,虚拟与实体皆是,实体记忆体最大支援128GB,但是64K记忆体分页管理能力保留下来,没有删减。

而Cortex-A53的L1指令与资料快取也是分开的,但容量部分则是选配,从8~64KB任君选择,因此有可能比Cortex-A57还要大。L2的指令和资料快取在同一区域,容量部分也是能够客製化,从128KB~2MB之中做选择。

ARM 处理器的 64位元革命,新款处理器 Cortex

▲(点图可看大图)

(后面还有:了解big.LITTLE架构跟ARM 64位元之路唷!)

了解big.LITTLE架构

在2011年底,除了ARMv8之外,尚推出了Cortex-A15、Cortex-A7、Mali-T658,其中更发表了big.LITTLE架构,让ARM处理器在效能竞赛中,依然保持其省电的优势。

小小省电、大大效能

Cortex-A7本身具有多核心的设计,另外透过更短的流水线、更高的频率、较为先进的製程、以及改进后的分支预测能力,希望尽量保持在Cortex-A8相同效能的状况下,并加强省电性。

Cortex-A7除了独立打造单核或多核处理器之外,ARM更希望它能够与Cortex-A15放在同1颗应用处理器之中。由于Cortex-A15不只导入了乱序执行,执行管线也加深,NEON也增加到128bit,相较于之前的Cortex系列,怎幺看都是个高效能核心,省电性自然就打了点折扣。Cortex-A7虽然在命名上比Cortex-A8还要落后,但是在技术支援方面与Cortex-A15看齐,皆支援VFPv4、硬体虚拟化、LPAE。

这点应该就有读者明白big.LITTLE架构是怎幺一回事,ARM期待能将Cortex-A15和Cortex-A7处理核心包在一起,当执行较为繁重的工作时,像是游戏或上网时,使用高效能的Cortex-A15核心。当执行较为轻鬆的工作时,像是听音乐或看影片时,就使用低耗电的Cortex-A7核心。由于Cortex-A15和Cortex-A7的指令集架构大致相同,在不同的核心转换时也不会发生问题。

big.LITTLE今年见

此次ARM同时发表Cortex-A57和Cortex-A53也是同样的情形,Cortex-A57的效能较好,Cortex-A53的省电性较佳,根据负载的不同自动将工作分配到两者之一。

big.LITTLE听起来很像NVIDIA为Tegra 3加入的4 PLUS 1协同核心,但是做法略有差异。Tegra 3的协同核心应该与其它4颗核心架构相同,差别在于这颗协同核心使用低功耗製程,运作时脉也比较低;big.LITTLE则是使用多颗架构不同,但指令集架构却类似的核心包装而成。

近期传出Samsung将在2013年2月份的国际固态电子电路大会上展示1款8核的ARM处理器,分别由四核Cortex-A15和四核Cortex-A7组合而成,预计Cortex-A15和Cortex-A7分别为2组处理器丛集,且在同一时间下只会开启1组,并不会有八核全上的状况。

採用ARM Cortex-A50的处理器目前预计在2014年初有望问世,比起以往从发表到产品问世需要2年的速度来说,已经快了许多,代表未来大众对于手持式行动运算装置效能需求日益增加,至于未来能否打败Intel还很难说,但日益崛起的ARM已俨然成为Intel在市场上不可轻视的对手。

ARM 处理器的 64位元革命,新款处理器 Cortex

▲Big.LITTLE的架构图,工作负担可以在Cortex-A15(big)和Cortex-A7(LITTLE)切换,兼顾效能与省电性(点图可看大图)。

混沌不明的ARM 64位元之路

若是我们把64位元Windows作业系统里的C槽打开来看,我们会发现有2个名称非常相似的Program Files和Program Files(x86)资料夹,前者就是摆放「真‧64位元软体」的安装预设资料夹,后者则是摆放32位元程式的预设资料夹。读者不妨数一数里面的程式个数,笔者敢保证,绝大多数使用者的Program Files(x86)资料夹的程式比Program Files还多。

在x86转换到x86-64的时期,厂商总是打着64位元处理较快的口号,藉此吸引使用者购买。但事实上,若只是将程式单纯编译成64位元版本,其实运作速度反而会比较慢,其中最主要的差异是记忆体位址从32bit换成64bit,增加了记忆体位址转译和查找的时间。

ARM发展有待观察

回头看看ARM的生态链,其实与x86大不同,大部分ARM装置都是一整组的成套销售,你没有办法在消费市场上买到主机板、ARM处理器,回家自己装一装就变成1台手机或电脑。

再加上现在手机机王每年数度更换,几乎每季都有新的机王推出,在此种状况下淘汰率相当高,如果想将市面上的高阶手机全面更换为ARMv8架构,1年的时间绰绰有余,中低阶手机的状况可能因为厂商的策略因素,ARMv7和ARMv8可能有几年的时间和平共存。

笔者大胆的推测,ARM转换至64位元应该能够比x86世界顺利,毕竟对现代人而言,换手机比换电脑频繁多了。就像我们现在所使用的智慧型手机,绝大部分都是使用ARMv7架构,但是谁又知道Android先驱HTC Hero、Acer Liquid mini、Asus Garmin nuvifone A50、Motorola Backflip、Samsung Galaxy、Sony Ericsson Xperia X10 Mini这些大家耳熟能详的手机,都是使用ARMv6架构呢。

 

本文同步刊载于电脑王杂誌
  ARM 处理器的 64位元革命,新款处理器 Cortex
欢迎加入电脑王杂誌粉丝团
上一篇: 下一篇:
随机文章Random article
图文排行Image & Text rank