浅谈64bit ARM CPU 指令集及架构
《中无通讯》第67期 文︰ 世界网络 www.linkwan.com 林和安 小洛夫
64bit CPU并不是甚么新的事物,服务器/工作站早已是64bit的天下,即使桌面计算机也纷纷升级64bit CPU及64bit操作系统。作为移动设备市场的领导者,ARM也决定在2014年推出64bit ARM CPU架构,实现智能手机、平板计算机的一次性能飞跃,又会为市场带来多大的影响呢?
走向64bit的主因—支持更多内存
ARM架构一向以低功耗作主打,为此不惜把CPU架构尽量作出精简,取消作用不大的单元。早期ARMv4指令为求低功耗,没有FP浮点、复杂math指令及SIMD,十分简陋。随后ARM陆续加上以上的功能,而自Cortex-A9以后,用户要求更高性能的处理器,满足高清影片播放、浏览网页以至多任务工作环境,即在智能手机上同时打开3-4项应 用,占用大量的CPU及内存资源,尤以内存为甚。因为智能手机没有硬盘,大部份的数据都需要从内存中读取,使4GB的寻址上限显得足襟见肘,而且智能手机因为空间有限需要GPU及CPU共享地址空间,与PC的GPU及CPU拥有不同的地址空间不同,无形中增加内存资源的占用。在Cortex-A15发布时,ARM尝试引入Physical Address Extensions技术,把CPU可寻址的空间从32bit扩充至40bit,最大内存寻址从4GB扩充至1TB,暂缓了内存上限问题。不过引入Physical Address Extensions的做法治标不治本,因为Physical Address Extensions是以4KB page mapping即映像的方式支持4GB以上的内存,不但较为复杂而且不能支持单个4GB以上的应用,需把数据拆分处理。另一方面,ARM在引入Cortex-A15的同时加入Virtualization虚拟功能,这又增加对内存的需求,最终步x86后尘走上64bit之路,也十分合理。
在ARM架构的演进中,ARMv8A最大的改变是支持64bit。
并未真正64bit?
在IT的世界,功能是要付出成本的,所以厂商普遍采用能省便省的做法。ARM引入64bit主要目的是要支持更多内存,为进军服务器、工作站市场作准备。不过ARM也意识到用户未必需要用到64bit上限的16EB内存,所以选择了x86-64的做法,仅支持至48bit Virtual Memory,相当于256TB内存。对于ARM的做法,作为一名计算机爱好者难免有所失望,但考虑到目前主流内存容量在8-16GB左右,加上操作系统如Windows 7 Ultimate也仅支持至192GB,ARM的做法也无可厚非。
全新设计的A64指令集
ARM在2007年已着手设计工作,并于2011年11月公报ARMv8A 64bit指令集架构,耗用了4年的研发时间,时间可谓不过不失。
ARMv8A分为A64及A32两个部分,A64顾名思义属于64bit的部份,主要存在于AARCH64的状态。而A32又称AARCH32状态,用作支持现有A32 ARM指令集。ARM并没有采用AMD x86-64及Intel EM64T扩充32bit指令做法,而是选择全新开发专用的64bit指令。据ARM方面表示,这一做法与省电的考虑有关,当运行64bit ISA时,ARMv7电路可处于闲置状态,节省功耗。同A64 ISA也移除了作用不大的LDM/STM(load/store multiple)指令,改为LD/ST ’P’指令,以降低复杂性及功耗,与此同时,32bit到64bit状态转换采用Inter-processing的做法,确保32bit到64bit指令皆可顺利执行。
新增Registers及支援DP浮点
ARMv8A架构新增了31个64bit通用寄存器(General Purpose Registers),改进排程选项以针对复杂软件。同时,还新增32个128bit Registers,用作执行SIMD。ARMv8A除了可执行单精度(Single Precision)FP数据外,新增支持双精度(Double Precision)FP数据,而且新增了IEEE754-2008 FP指令,如MaxNum/MinNum等等。此外ARMv8A还把FPU及SIMD变成常设功能,软件不用检测是否有相关功能。提供Cryptography加密指令,而且是以128bit SIMD Registers执行,可在每周期同时执行2个AES encode/decode指令,或4个SHA-1/SHA-256 Hash。
最后,虽然ARMv8A以64bit为主,但对于32bit的AArch32状态也有所加强。如新增的Cryptography及IEEE754-2008 FP指令,Load acquire/store release`等等皆有帮提供32bit下的性能。
新增的31个64bit General Purpose Registers及32个128bit SIMD Registers。
提供Cryptography加密指令,且是在128bit SIMD Registers内进行。
ARMv8A强化了内存管理,Virtual Address及Physical Address从40bit增至48bit,支持更大容量内存。
率先登场的两款64bit ARM处理器
在完成了64bit指令集的定义后,ARM也随即在2012年推出了两款64bit ARM—Cortex-A57及A53产品。该两款产品自去年发布以外,不但获得ARM阵营的强烈支持,也吸引了AMD推出同时支持x86及ARM的64bit Server CPU,气势如日方中。踏入2013年4月,ARM与TSMC宣布成功流片(Tape Out)Cortex-A57处理器,标志着64bit ARM成品已离我们不远。
最多16个核心同时运算
相比于32bit ARM,64bit ARM定位更多在服务器市场,所以Cortex-A57及A53除了是可集成4个核心的SoC外,也支持多机以Clusters串连共16个核心工作,大大提升运算性能。另外,在64bit方面,Cortex-A57及A53皆拥有ARMv8架构的完整功能,如新增的31个64bit通用寄存器GPR及128bit SIMD,支持双精度浮点运算(Double Precision FP)等等,两者的分别在于设计理念的不同,表现为数据处理性能会的差别。
Cortex-A57及A53可用clusters的方法支持4机共16个核心。
以效能为主的Cortex-A57
Cortex-A57是一颗重效能的CPU,其设计主要沿自Cortex-A15,如3路译码器及15+ stage乱序执行管线(Out-of-Order Pipelines),不过借着ARM所作的优化,如数据预取及增加Registers等等,在处理32bit软件也比Cortex-A15快20-30%左右。
在数据处理方面,Cortex-A57提供远高于Cortex-A53的性能。首先是在管线的设计上,Cortex-A57管线stage较多(15+ vs 8),而且是乱序执行管线(Out-of-Order Pipelines),比Cortex-A53的简单按序执行管线(Simpe In-Order Pipelines)尤其适合处理大量数据的环境。另外,它拥有更多的L1&L2 Caceh,要求至少48KB I-Cache、32KB D-Cache及512KB L2 Cache,对比之下,Cortex-A53为8KB I-Cache、8KB D-Cache及128KB L2 Cache。而且在寻址能力方面,Cortex-A57为44b,相当于支持最多256GB内存。至于Cortex-A53为40b,相当于支持64GB内存。
Cortex-A57架构图。
强调比A9细的Cortex-A53
Cortex-A53是在提供足够的性能下,尽量缩小芯片面积及功耗的产品,所以它并没有采用Cortex-A57较耗电的乱序执行管线设计,改用简单按序执行管线设计。Cortex-A53提供目前主流Cortex-A9等级的效能,但芯片面积更小,可在同制程下比Cortex-A9细40%,如果使用20nm制程的话,面积仅为32nm Cortex-A9的1/4,有助降低成本同时也可降低功耗。
Cortex-A53架构图。
Cortex-A53设计强调较Cortex-A9小的核心面积。
第二代big.LITTLE
Cortex-A57 & A53也会沿用Cortex-A15 & A7的big.LITTLE技术,因应需要而决定使用高性能的big核心或使用高节能的LITTLE。不过在配置上,Cortex-A57 & A53较有弹性,除了可使用4(big) + 4(LITTLE)外,也可使用2(big) + 4(LITTLE)的配置。笔者认为,考虑到Cortex-A57与Cortex-A53性能差距明显,即使是4个Cortex-A53也远不及2个Cortex-A57的性能,所以增加LITTLE核心数目显得十分重要。
第二代big.LITTLE新增了2(big) + 4(LITTLE)的配置。
根据ARM公布的路线图,2014-2015年还有一款新的32bit ARM处理器—Cortex-A12推出。
结论︰ARM选择降低风险
进入64bit年代,ARM很大程度上在现有的架构下加上64bit ARMv8指令架构。所以Cortex-A57 & A53,很大程度上是现在Cortex-A15 & A7的延续。可见ARM首要的工作是确保64bit架构的成功,其余部分尽量采用现有的设计以降低风险。
与此同时,ARM也留了后路,2014-2015年还有一款新的32bit ARM处理器Cortex-A12。可见面对竞争激烈的IT市场,谁也没有必胜的把握,不得不小心应对。