设为首页收藏本站优领域

优领域

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
优领域 优领域 电子领域 嵌入式 ARM 查看内容

不一样的ARM64位处理器

2014-7-19 22:49| 发布者: dzly| 查看: 1110| 评论: 0|原作者: 侯景昆;

摘要: 目前ARM 64 位处理器已经面世, 本文阐述了它与传统的ARM 32 位处 理器所不一样的地方,其所具有的一 些特性。
  1 背景介绍
  自2013 年9 月14 日, 苹果公司新品发布会上首次推出了iPhone 5s 这款搭载了64 位ARMv8 架构的A7 处理器的手机以来,64 位处理器正式进入了手持移动设备领域。据称,新的A7 处理器的性能是A6 处理器的两倍,优越的表现不由让人眼前一亮。那么它究竟和以往处理器有哪些不一样呢?下文我们就来进行一些介绍和探讨。
  2 新的ARM 架构版本(ARMv8-A)
  我们知道ARM 的处理器架构一直在进行着更迭换代,下图是ARM 官方的架构演进示意图,从图上我们可以看到,从ARMv6 开始,ARM 架构中加入了Thumb指令和SIMD 指令,以及TrustZone 技术。
  ARMv7 在ARMv6 的基础上不仅对原有的指令集进行了更新增强,同时加入了VFPv3/v4 浮点单元,以及主要应用于多媒体数据处理的NEON 指令集。
  ARM 处理器架构演进示意图ARMv8 的推出则又是ARM 发展历史上一个重大的里程碑,它包括ARMv8-A 和ARMv8-R 两个版本,其中ARMv8-R 应用于实时处理器,这里暂不讨论,ARMv8-A 则是ARM 为推出64 位应用处理器而量身打造的架构,不仅可用于移动处理器领域,也可应用于高性能的服务器领域。在ARMv8-A 架构下,处理器不仅可以兼容以往的32 位程序指令,运行在AArch32 模式(ARM 32-bit executionmode),也可以运行在AArch64 模式(ARM64-bit execution mode),达到更高的处理性能。它引入了4 种权限的运行模式,能够使用64 位通用寄存器和64 位虚拟地址寻址(实际上支持到的是48 位的物理地址)。此外它也增强和改进了ARMv7 下原有的VFP 和NEON,SIMD 指令,引入了CRYPTO 指令(可用于加解密算法)等。
  下面我们逐步来介绍这些变化。
  3 两种运行模式和三种指令集
  ARMv8-A 包括AArch32 和AArch64两种主要的运行模式。AArch32 模式下可兼容以前的32 位指令,AArch64 才是真正意义上的64 位处理器运行模式,苹果官方也将其简称为ARM64。两种模式下的异常模型、内存模型、程序模型和指令集支持等特性如下:  4 ARMv8 的运行权限级别
  4.1 四种权限级别
  ARMv8-A 的运行权限级别一共有4 级,从权限由低到高分为EL0-EL3,分别是应用层级、OS 级、Hypervisor 级、TrustZone 级。除了引入了EL2 级别用来实现hypervisor 功能,达到可虚拟化运行多OS 系统的目的外,其他级别和ARMv7大体类似。需要注意的是,运行于AArch32和AArch64 两种不同的运行模式时,可以进入的权限级别各不一样,在安全模式和非安全模式下,可以进入的权限级别又不一样,示例如下:
  各种运行模式下可运行的权限级别另外还有一个非常重要的限制是:低权限级别切到高权限级别,寄存器位宽不能变小。比如EL3 如果为AArch32,则下面的EL0/1/2 都不能为AArch64。一个典型的例子是当OS 运行在AArch32 时,应用程序是不能够运行在AArch64 模式的。
  5 内存管理
  64 位处理器区别于32 位处理器的一个显著的特征便是它支持64 位地址的寻址。虽然ARM 推出A15 处理器的时候,就已经实现了通过IPA(intermediate physicaladdress) 进行一次转换来达到可访问48-bits 物理地址的效果,但是真正能够使用到64-bits 虚拟地址,并可实际访问到48-bits 物理地址,只有在AArch64 模式下才能做到。目前我们其实远远用不到64-bits 这么大的空间范围,因此其虚拟地址被分为了两部分:高16 位被置为0xFFFF的48-bits 地址范围(0xffff000000000000– 0xffffffffffffffff)被作为内核空间的地址,而高16 位被置为0x0000 的地址范围(0x0000000000000000 – 0x0000ffffffffffff)被作为用户空间的地址。


  6 寄存器和数据模型
  我们通常称“×× 位”CPU,虽然没有严格统一的定义,但是通常来说指的是两个部分的宽度:整数寄存器的宽度和指针的宽度。因此,拥有了64 位的通用寄存器和64 位的指针宽度,才可以名正言顺地称之为64 位处理器。AArch64 模式下,有X0-X30 共31 个通用寄存器, 宽度为64bit。其中,X30 为Linker Register。如果要使用32bit 寄存器,则可使用W0-W30,其实是使用了X0-X30 的低32bit。另有读出始终为0 的XZR 寄存器,单独的PC/SP寄存器等。此外,还有32 个128bit NEON寄存器(向量寄存器)。
  对于使用C 语言的程序员,特别是要编写跨平台编译运行的程序员来说,需要特别注意的是AArch64 模式下的数据模型。现今所有64 位的类Unix 平台(包括Linux)均使用LP64 数据模型,而64 位Windows 使用LLP64 数据模型,在64 位模式下,指针均为64 位。
  7 Cortex-A5x 系列基于ARMv8-A 架构,ARM 官方推出了两款64 位处理器核心,分别是高性能低功耗的Cortex-A53 和超高性能的Cortex-A57,下面我们看看它们的基本特征。
  另外,为了兼顾性能和效率,Cortex-A53 和Cortex-57 也可以类似像Cortex-A7 和Cortex-A15 一样,组合成Big.Little 模式,根据应用场景进行大小核的切换。
  8 总结与应用前景展望
  伴随着iPhone 5s 的推出,苹果在其iOS 系统和芯片架构设计上都为64 位处理器进行了优化(比如引入Objective-CRuntime 中的标签指针)。再看看Android阵营。Linux 内核自3.7 版开始,已经支持ARM 64 位处理器,Google 官方也正在紧锣密鼓地开发基于64 位处理器的Android 版本。在真正64 位的Android 版本出来之前,64 位的Linux 内核搭载32位的Android 系统也是一种选择。
  从长远来讲,64 位移动处理器是发展趋势,尤其借助苹果的推动,手机的软硬件也都会逐渐向64 位过渡。就像我们在PC 领域所看到的那样,32 位的移动处理器也会慢慢地走向历史,64 位的移动处理器会成为市场的主流。
  【参考文献】
  [1]http://www.arm.com/
  [2]http://infocenter.arm.com/
  
  

网站统计|优领域|优领域 ( 粤ICP备12011853号-1 )  

GMT+8, 2019-3-21 05:54 , Processed in 0.040846 second(s), 12 queries .

Copyright © 2008-2014 优领域

回顶部