当地时间10月25-27日,ARM在美国加州圣克拉拉举行了一场技术大会“ARM TechCon 2011”,正式宣布了自己的第一款64位处理器架构“ARMv8”。ARM公司院士、首席架构师Richard Grisenthwaite随即对新架构做了比较深入的技术讲解。
ARM表示,ARMv8 ISA(指令集架构)的引入只是其64位产品发展途中的第一步,计划今年提供GNU工具和64位Linux系统内核,并发布新的标准规范和模型,然后2012年着重开发完善生态系统,2013年及以后陆续放出原型系统。
ARMv8完全向下兼容现有的32位ARMv7软件,而且运行于ARMv8上的64位操作系统也可以简单、高效地支持现有的32位软件。但愿向下兼容不会成为ARM的累赘。
ARMv8是下一个版本的ARM处理器架构,在32位指令的基础上增加64位操作能力,拥有AArch32、AArch64两种执行状态,而且都专注于ARM最擅长、最让人喜欢的高能效。
ARM处理器架构历史演化图:ARMv8集成了之前的各种技术特性,尤其是兼容ARMv7-A的关键特性。
AArch32、AArch64分别采用A32+T32、A64指令集,均包含标量浮点单元和高级SIMD。
ARMv8现在还只是个概念,ARM自己还没有宣布任何时机产品,仅仅给开发人员提供了一个预览,需要很长的时间去开发、去构筑整个生态系统,包括ARM自己及其合作伙伴的共同努力,因此ARMv7-A架构仍然有着广阔的发展天地。ARMv8的完整规范将在2012年下半年公布。
ARM透露说,早在2007年他们就已经开始了64位架构的开发工作,而之所以到现在才正式宣布,是因为需要考虑的因素太多太多,包括解决超大虚拟寻址空间的支持、预测ARM传统市场的未来需求、拓展ARM的市场空间等等。
AArch64是一套新的指令集,支持ARMv7架构中的所有功能,包括TrustZone、虚拟化等等,而且内存翻译系统也是基于ARMv7而来的,采用LPAE表格式,翻译表寄存器最高支持48位虚拟寻址。
AArch64指令集的长度固定为32-bit,在语法上也和AArch32基本一样,只在必要的地方做了修改,此外随时都可以访问31个通用寄存器,而且宽度都是64-bit的。
A64、A32不同之处在于,新指令都支持64-bit操作,条件指令要少得多,没有任意长度的载入/存储多重指令。
A64的高级SIMD和浮点指令集与A32基本类似,高级SIMD同样共享浮点寄存器文件,并有三处重要改进:32个128-bit宽度寄存器、支持双精度浮点执行、完整支持IEEE754标准。
A64的通用寄存器文件和媒体寄存器文件。
指令级支持加密AES、SHA-1、SHA-256。
意外模型。有四种意外级别,EL3到EL0。
分组寄存器。
意外模型结构图。
意外模型命名规则。
MMU内存管理单元支持:最高48位虚拟寻址,最大16EB容量。
页面表信息。
AArch64/AArch32架构关系。
ARM特别强调说,ARMv8新架构并不意味着AArch32的终结,事实上后者还有所增强,带来了多项与寄存器宽度无关的新功能。