草庐IT

ARM v8处理器概述、架构及技术介绍

架构师技术联盟 2023-03-28 原文

ARMv8架构的概述

ARMv8架构包含32位和64位执行状态,其引入了使用 64 位宽寄存器执行执行的功能,并且提供了向后兼容性机制,使现有的 ARMv7 软件能够执行。

  • • AArch64 :ARMv8中64位的执行状态。
  • • AArch32:ARMv8中32位的执行状态,与ARMv7几乎相同。
在GNU和Linux的文档中(除了Redhat和Fedora外),有时会将AArch64称为ARM64。

Cortex-A 系列处理器现在包括在 ARMv8-A 和 ARMv7-A 中实现:

  • • Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A15以及Cortex-A17处理器全部由 ARMv7-A 架构实现。
  • • Cortex-A53,Cortex-A57 和Cortex-A73处理器由 ARMv8-A 架构实现。
ARMv8 处理器仍然支持为 ARMv7-A 处理器编写的软件(有一些例外)。这意味着,例如,为 ARMv7 Cortex-A 系列处理器编写的 32 位代码也可运行在 ARMv8 处理器(如 Cortex-A57)上。但是,仅当 ARMv8 处理器处于 AArch32 执行状态时,代码才会运行。

此外,A64 的64 位指令集不能在 ARMv7 处理器上运行,而只能在 ARMv8 处理器上运行。

从32位到64位的变化The changes from 32 bits to 64 bits

64位的处理器其性能上有很大的提升,其中包括以下改变:

1.Larger register pool(更大的寄存器池)

A64 指令集提供了一些显著的性能优势,其中包括一个更大的寄存器池。A64具有31个64bits通用寄存器和ARM Architecture Procedure Call Standard (AAPCS) 提供了性能上的加速,当用户在函数调用中需要传递四个以上参数(需要四个以上寄存器)时,在ARMv7中可能要使用栈,而在AArch64中,最多可以在寄存器中传递八个参数,因此可以增加性能,减少栈的使用。

2.Wider integer registers(具有更宽的整数寄存器)

更宽的整数寄存器使对 64 位数据运行的代码能够更高效地工作。32 位处理器可能需要多个操作才能对 64 位数据执行算术运算。64 位处理器可能能够在单个操作中执行相同的任务,速度通常和以同一处理器执行 32 位操作相同。因此,执行许多 64 位大小操作的代码速度明显更快。

3.Larger virtual address spac(更大的虚拟地址空间)

64 位操作使应用程序能够使用更大的虚拟地址空间。虽然大型物理地址扩展 (Large Physical Address Extension,LPAE) 将 32 位处理器的物理地址空间扩展到 40 位,但它不会扩展虚拟地址空间。这意味着即使使用 LPAE,单个应用程序也仅限于 32 位 (4GB) 地址空间。这是因为此地址空间中的某些空间是为操作系统保留的。

较大的虚拟地址空间还支持内存映射较大的文件。这是将文件内容映射到线程的内存映射。即使物理 RAM 可能不够大,无法包含整个文件,也可能发生这种情况。

32位地址空间

作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(2^32^字节), 可将该地址空间看作是大小为 2^32^ 个字节(8bit),这些字节的单元地址是一个无符号的32位数值,其取值范围为0~2^32-1^。ARM地址空间也可以看作是2^30^个32位的字(1 word = 4 bytes)单元。这些字单元的地址可以被4整除,也就是说该地址的低两位为00。地址为A的字数据,包括地址为A,A+1,A+2,A+3这4个字节单元的内容。

每执行一条指令,当前指令计数器加4个字节。

4.Larger physical address space(更大的物理地址空间)

在 32 位体系结构上运行的软件可能需要在执行时映射内存中的一些数据进行输入输出。具有更大的地址空间(使用 64 位指针)可避免此问题。

但是,使用 64 位指针确实会产生一些成本:同一段代码通常比使用 32 位指针使用更多的内存。

每个指针都存储在内存中,需要8个字节而不是4个字节。这听起来可能微不足道,但可能会造成重大负担。此外,与64 位相关的内存空间使用量的增加,可能会导致缓存中命中(hit)率下降,这反过来又会降低性能。

  • • 64-bit pointers: 8 bytes
  • • 32-bit pointers: 4 bytes

ARMv8-A 架构

ARM架构可以追溯到1985年,自早期的ARM内核以来,它已经得到了巨大的发展,在每一步都增加了特性和功能。

ARMv4 and earlier

这些早期的处理器仅使用 ARM 32 位指令集。

ARMv4T

ARMv4T 架构将 Thumb 16 位指令集添加到 ARM 32 位指令集中。这是第一个广泛许可的架构。它由ARM7TDMI®和ARM9TDMI®处理器实现。

ARMv5TE

ARMv5TE 架构为 DSP 类型操作、饱和算术以及 ARM 和 Thumb 互通增加了改进。ARM926EJ-S® 实现了这种架构。

ARMv6

ARMv6 进行了多项增强,包括对未对齐内存访问的支持、对内存体系结构的重大更改以及对多处理器的支持。此外,还包括对 32 位寄存器中的字节或半字操作的 SIMD 操作的一些支持。ARM1136JF-S® 实现了这种架构。ARMv6架构还提供了一些可选的扩展,特别是Thumb-2和安全扩展(TrustZone®)。Thumb-2 将 Thumb 扩展为混合长度的 16 位和 32 位指令集。

ARMv7-A

ARMv7-A 体系结构强制使用 Thumb-2 扩展,并添加了高级 SIMD 扩展 (NEON)。在 ARMv7 之前,所有内核都遵循基本相同的架构或功能集。为了帮助解决越来越多的不同应用,ARM 引入了一组架构配置:

  • • ARMv7-A提供了支持Linux等平台操作系统所需的所有功能
  • • ARMv7-R 提供可预测的实时高性能。
  • • ARMv7-M 面向深度嵌入式微控制器。ARMv6 体系结构中还添加了 M 配置,以启用旧体系结构的功能。ARMv6M 配置由低功耗的低成本微处理器使用。

ARMv8-A

ARMv8 体系结构包括 32 位执行和 64 位执行。它引入了使用 64 位宽寄存器,同时保持了与现有 ARMv7 软件的向后兼容性。

Development of the ARMv8 architecture

ARMv8-A 架构引入了许多更改,从而可以设计出性能更高的处理器实现:

较大的物理地址

这使处理器能够访问超过 4GB 的物理内存。

64 位虚拟寻址

这允许超过 4GB 限制的虚拟内存。这对于使用内存映射文件 I/O 或稀疏寻址的现代桌面和服务器软件非常重要。

自动事件信号

这可实现高能效、高性能的自旋锁。

更大的寄存器文件

31 个 64 位通用寄存器可提高性能并减少堆栈使用。

高效的 64 位立即数生成

对文本池的需求较少。

较大的 PC 相对寻址范围

一个 +/-4GB 的寻址范围,可在共享库和位置独立的可执行文件中实现高效的数据寻址。

额外的 16KB 和 64KB 转换粒度

这降低了Translation Lookaside Buffer (TLB)的未命中率和页面浏览深度。

新的异常模型

这降低了操作系统和虚拟机管理程序软件的复杂性。

高效的缓存管理

用户空间缓存操作可提高动态代码生成效率。使用数据缓存零指令清除快速数据缓存(DC)。

硬件加速加密

提供 3× 到 10×的软件加密性能提升。这对于小粒度解密和加密非常有用,这些小颗粒解密和加密太小而无法有效地装载到硬件加速器,例如https。

Load-Acquire,Store-Release 指令

专为 C++11、C11、Java 内存模型而设计。它们通过消除显式内存屏障指令来提高线程安全代码的性能。

NEON 双精度浮点高级 SIMD

这使得 SIMD 矢量化能够应用于更广泛的算法集,例如科学计算、高性能计算 (High Performance Computing,HPC) 和超级计算机。

ARMv8-A 处理器:A53,A57和A73

Comparison of A53 and A73

A73:

Cortex-A73 processor implementation options

A73所有内核共享一个公共 L2 缓存,并且每个内核对所有参数具有相同的配置。

Cortex-A53 处理器

Cortex-A53 处理器是一款中档低功耗(mid-range, low-power)处理器,在单个cluster中具有1到4个内核,每个内核都有一个 L1 缓存子系统、一个可选的集成 GICv3/4 接口和一个可选的 L2 缓存控制器。Cortex-A53 处理器是一款高能效极高的处理器,能够支持 32 位和 64 位代码。它提供的性能明显高于大获成功的 Cortex-A7 处理器。它能够部署为独立的应用处理器,或与Cortex-A57处理器配对,使用big.LITTLE 配置即可实现最佳性能、可扩展性和能效。

Cortex-A53 processor

Cortex-A53 处理器具有以下特点:

  • • 按顺序排列,八级流水线。
  • • 通过使用分层时钟门控、电源域和高级保持模式,降低功耗。
  • • 通过重复执行资源和双指令解码器,增强了dual-issue capability 。
  • • 功耗优化的 L2 高速缓存设计可提供更低的延迟,并在性能与效率之间取得平衡。

Cortex-A57 处理器

Cortex-A57 处理器面向移动和企业计算应用,包括计算密集型 64 位应用,如高端计算机、平板电脑和服务器产品。它可以与Cortex-A53处理器一起使用ARM big.LITTLE 配置,即可实现可扩展的性能和更高效的能源使用。

Cortex-A57 处理器具有与其他处理器(包括用于 GPU 计算的 ARM Mali™ 系列图形处理单元 (GPU))的缓存一致互操作性,并为高性能企业应用提供可选的可靠性和可扩展性功能。它提供比 ARMv7 Cortex-A15 处理器更高的性能,具有更高的能效。与上一代处理器相比,包含加密扩展可将加密算法的性能提高 10 倍。

Cortex-A57 processor core

Cortex-A57 处理器完全实现了 ARMv8-A 架构。它支持多核操作,在单个集群中具有一到四个内核的多处理。通过 AMBA5 CHI 或 AMBA 4 ACE 技术,可以实现多个相干的 SMP 集群。调试和跟踪可通过 CoreSight 技术获得。

Cortex-A57 处理器具有以下特点:

  • • 无序的15 个以上的流水线。
  • • 节能功能包括way预测、tag减少和缓存查找抑制。
  • • 通过重复执行资源提高峰值指令吞吐量。功耗优化的指令解码,具有本地化解码,3-wide解码带宽。
  • • 性能优化的 L2 高速缓存设计使cluster中的多个内核能够同时访问 L2。

Cortex-A73 处理器

 这是ARM 2016年发布的最新A系列处理器,Cortex-A73支持全尺寸ARMv8-A构架,包括128位 AMBR 4 ACE接口和ARM的big.LITTLE系统一体化接口,采用了目前最先进的10nm技术制造,可以提供比Cortex-A72高出30%的持续处理能力,非常适合移动设备和消费级设备使用。

Cortex-A73

Example Cortex-A73 processor configuration

有关ARM v8处理器概述、架构及技术介绍的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  3. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  4. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  5. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  6. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

  7. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  8. ruby - 如何使用 Ruby HTTP::Net 处理 404 错误? - 2

    我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。

  9. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  10. ruby-on-rails - 用于门户的 Ruby 技术 - 2

    我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它

随机推荐