Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59890
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-12 21:41
个人简介

路人甲

文章分类

全部博文(5)

文章存档

2015年(5)

我的朋友

分类: Android平台

2015-03-03 15:15:08


1 ARM64的历史

早在2007年,ARM公司已经开始了64位架构的研发;2011ARM官方公布了第一套64位处理器架构“ARMv8”,并于当年11月签署了第一份授权协议。201210月,ARM公司发布了第一款基于64位架构的处理器核心“Cortex-A50”系列,该系列首批包括Cortex-A57Cortex-A53两款型号,而这两款可以单独工作,也可以以big.LITTLE的形式协同工作。今年2月,ARM公司又发布了Cortex-A57的升级型号Cortex-A72,性能再次提升接近1倍,同样可以与Cortex-A53搭配形成big.LITTLE双架构组合。


ARM公司提出64位处理器战略之初,各方人士均预测ARM准备抢占Intel的服务器市场,但随着智能终端设备的高速发展,ARM64却成为了高性能智能设备的主流选择,包括苹果与绝大多数Android设备厂商。目前为止,智能手机处理器前十大厂商已经全部购买ARM64授权,并且Intel开始代工生产ARM64芯片。可以预见,未来的智能终端一定是ARM64的天下。

当然,并不排除ARM64Intel抢占服务器市场的可能性,尤其是“微服务器”市场。ARM64在注重功耗、网络能力的“微服务器”市场具有一定优势,DELL等厂商已经推出了基于ARM64的微型服务器。

2 ARM64的优势

首次实现ARM64ARMv8-A架构在功能和性能上都有着32ARMARMv7及更早)无可比拟的优势,同时ARMv8完全兼容32位的ARMv7

从上图可以看出,基于ARMv8Cortex-A53最高性能可以达到A71.7倍,Cortex-A53可以达到A15的近2倍。即使是运行原来相同的32位程序,ARM64处理器也远超过之前的32位处理器。

性能提升的同时,功耗并没有增加,反而有一定下降,如下图所示

3 ARM64新增特性

ARMv8引入了64位架构,新增64位指令集,完全兼容ARMv7架构,同时对原有的功能进行了改进。

3.1 新增A64指令集

ARM64引入“Execution State”的概念,用以区分64位架构模式和兼容的32位架构模式,分别是AArch64AArch32两种模式。其中AArch64模式可以执行64位指令集A64AArch32模式可以执行32位指令集A32T32。

  • A32(或ARM):32位固定长度指令集,通过不同架构变体增强部分32位架构执行环境现在称为AArch32
  • T32 (Thumb) 是以16位固定长度指令集的形式引入的,随后在引入Thumb-2技术时增强为16位和32位混合长度指令集。
  • A64:提供与ARMThumb指令集类似功能的32位固定长度指令集。随ARMv8-A一起引入,它是一种AArch64指令集。 


A64是一种支持AArch64执行状态的全新32位固定长度指令集,主要有以下特点:

  • 基于5位寄存器说明符的简洁解码表
  • 指令语义与AArch32中大致相同
  • 31个随时可供访问的通用64位寄存器
  • 无模式GP寄存器组 - 改进的性能和能耗
  • 程序计数器(PC)和堆栈指针(SP)非通用寄存器
  • 可用于大多数指令的专用零寄存器


A64A32的主要差异有:

  • 支持 64 位操作数的新指令  大多数指令可具有 32 位或 64 位参数
  • 地址假定为 64 位大小L P64LLP64是主要目标数据模型
  • 条件指令远少于 AArch32  条件 {跳转、比较、选择}
  • 无任意长度的加载/存储多重指令  增加了用于处理寄存器对的 LD/ST 'P'


 


3.2 增强的SIMD和浮点指令集

A64 高级 SIMD 和标量浮点支持在语义上类似于 A32 支持;它们共享浮点/向量寄存器文件(V0 V31)。A64 提供了 3 项主要功能增强:
  • 更多 128 位寄存器:32 x 128 位宽寄存器;可视为 64 位宽寄存器
  • 高级 SIMD 支持 DP 浮点执行
  • 高级 SIMD 支持完全 IEEE 754 执行;舍入模式、非规范化数字、NaN 处理


有一些针对 IEEE754-2008 的附加浮点指令:

  • MaxNum/MinNum 指令
  • 使用 RoundTiesAway 的浮点到整数转换


A64 中的寄存器封装模型也不同于 A32,所有向量寄存器均为 128 位宽,Vx[127:0]

  • 双精度标量浮点使用 Vx[63:0]
  • 单精度标量浮点使用 Vx[31:0]


 

3.3 指令级支持加解密算法

支持AES2个加密和2个解密指令。基于增强的SIMD 128位寄存器,2条加密/解密指令完成一轮AES算法。

支持SHA-1 and SHA-256。哈希算法持续在2128位寄存器中进行,1条指令完成4个字的数据哈希,key的生成也可以通过指令加速。

 

3.4 处理器特权级别模型Exception Level

与以往的处理器模式和特权级别定义不同,ARM64定义了EL0~EL3四个特权等级,级别从低到高。一个典型的应用如下图所示:

不同EL级别之间的转换必须遵循以下准则:


  • AArch64模式下,EL转换只会发生在异常发生或者异常返回时;
  • 异常发生时,EL级别只能提升或者保持不变;
  • 异常返回时,EL级别只能下降或者保持不变;
  • EL转换的目标级别成为“目标异常级别”,只能由异常自身特征或者配置系统控制寄存器决定;
  • 目标异常级别不能是EL0
  • 不同的EL级别访问的保留寄存器不同:


3.5 MMU支持AArch64模式

AArch64模式下,处理能够访问更大范围的地址空间,不再仅仅是2^32B,地址可以用64位表示,但其中有效位是48位。也就是可以访问256T字节范围的物理地址。

在不同的EL级别下,MMU使用的地址转换机制不同,进而使用的地址转换控制寄存器也不同。MMU最关键的寄存器是TTBR(Translation Table Base Register)TCR(Translation Control Register)

在EL1,根据TCR配置的不同,MMU访问的地址范围也有所不同,使用不同的基址寄存器进行地址转换。通常情况下,用户程序使用TTBR0,内核空间使用TTBR1。如下图:
AArch64模式有3个不同的地址转换粒度,4KB、16KB和64KB,不同的粒度大小定义了不同的内存页大小和各级页表大小:
以4K页和64K页为例,在这两种粒度下的虚拟地址使用方式如下:




阅读(14393) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:arm与arm64调用栈

给主人留下些什么吧!~~