《中无通讯》第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,支持更大容量内存