https://www.elecfans.com/emb/dsp/202208291886182.html

众所周知,ARM是一家设计并授权处理器和相应IP(比如互连总线,中断处理器,图像处理器等等)的公司,目前其处理器产品分为三类:

 

Cortex-A系列:这个系列主要是应用(Application)处理器,这类处理器的特点是高性能,一般支持高速缓存,乱序执行,分支预测,指令多发射等等技术。

Cortex-R系列:这个系列主要是实时(Real-time)处理器,这类处理器的特点是对于外部事件的响应时间在可控范围,这里的实时并不是说处理器的速度快,而是对外部事件的响应时间可预测。

Cortex-M系列:这个系列主要是微控制(Micro-controller)处理器,这类处理器一般设计相对简单,芯片规模小,功耗值低,一般作为低成本芯片的控制器使用。

这三个系列的代表字母加起来刚好是ARM,所以这应该是ARM公司故意为之的。其实ARM公司的处理器产品在很早的时候并不是这么命名的,比如很早之前的ARM9,ARM11。现在ARM的处理器产品又增加了Neoverse系列,与A系列的处理器区分开来,不过这都是后话,暂时不用管它,还是认为是三个系列好了。

再返回来说Armv8.x-A,前缀Arm不用解释了;v表示的是版本(version);8表示的是大版本号;x表示的是扩展版本号,也称为小版本号,比如8.4就是大版本是8,扩展版本是4,Armv8-A的基础版本是Armv8.0-A;最后的A表示的是A系列,所以一定还有R和M对不?不过本人对于R和M了解很少,就不介绍了,后面的内容都是以A为基础。

Armv8-A的执行状态有两种,AArch64和AArch32。相应的Armv8-A支持两种指令集:AArch64(A64)和AArch32,其中AArch32又分为A32和T32。A64是固定长度指令集,指令编码32-bit;A32同样是固定长度指令集,32-bit指令编码;T32是变长指令集,16-bit和32-bit指令编码。由于A32和T32主要是为了向前兼容,在Armv8-A中实际应用较少,后面内容基本都是介绍AArch64的相关内容。

AArch64中扩展了一些寄存器,包括以下:31个通用的64位寄存器 (X0-X30),处理器状态寄存器PSTATE及相关的若干寄存器,堆栈寄存器SP等等。以后会找时间专门分析一下这些寄存器。

Armv8-A中定义了四种异常等级(Exception Level),这在前面的文章中重复过很多次了。

Armv8-A支持GICv3,GICv4,SMMU3。

对于其处理器具体实现的指令集,ARM有一个约定,比如某个处理器实现了Armv8.1-A,那么该处理器:

必须实现Armv8.0-A和Armv8.1-A强制要求的功能

可以实现某些Armv8.2-A中扩展的功能

不允许实现Armv8.3-A和更高版本扩展的功能

对于Armv8.0-A要求的功能,以后有机会慢慢分析。这不是一朝一夕能完成的,毕竟单其架构文档已经上万页了。今天先简单列一下Armv8.0-A以后的版本所扩展的功能,后面我们再慢慢分析Armv8.0-A的基础功能和这些扩展功能。

1. Armv8.1-A

Atomic memory access instructions (AArch64)

Limited Order regions (AArch64)

Increased Virtual Machine Identifier (VMID) size, and VirtualizationHost Extensions (AArch64)

Privileged Access Never (PAN) (AArch32 and AArch64)

2. Armv8.2-A

Support for 52-bit addresses (AArch64)

The ability for PEs to share Translation Lookaside Buffer (TLB)entries (AArch32 and AArch64)

FP16 data processing instructions (AArch32 and AArch64)

Statistical profiling (AArch64)

Reliability Availability Serviceability (RAS) support becomesmandatory (AArch32 and AArch64)

3. Armv8.3-A

Pointer authentication (AArch64)

Nested virtualization (AArch64)

Advanced Single Instruction Multiple Data (SIMD) complex numbersupport (AArch32 and AArch64)

Improved JavaScript data type conversion support (AArch32 andAArch64)

A change to the memory consistency model (AArch64)

ID mechanism support for larger system-visible caches (AArch32 andAArch64)

4. Armv8.4-A

Secure virtualization (AArch64)

Nested virtualization enhancements (AArch64)

Small translation table support (AArch64)

Relaxed alignment restrictions (AArch32 and AArch64)

Memory Partitioning and Monitoring (MPAM) (AArch32 and AArch64)

Additional crypto support (AArch32 and AArch64)

Generic counter scaling (AArch32 and AArch64)

Instructions to accelerate SHA

5. Armv8.5-A and Armv9.0-A

Memory Tagging (AArch64)

Branch Target Identification (AArch64)

Random Number Generator instructions (AArch64)

Cache Clean to Point of Deep Persistence (AArch64)

6. Armv8.6-A and Armv9.1-A

General Matrix Multiply (GEMM) instructions (AArch64)

Fine grained traps for virtualization (AArch64)

High precision Generic Timer

Data Gathering Hint (AArch64)

7. Armv8.7-A and Armv9.2-A

Enhanced support for PCIe hot plug (AArch64)

Atomic 64-byte load and stores to accelerators (AArch64)

Wait For Instruction (WFI) and Wait For Event (WFE) with timeout(AArch64)

Branch-Record recording (Armv9.2 only)

5.8 Armv8.8-A and Armv9.3-A

Non-maskable interrupts (AArch64)

Instructions to optimize memcpy() and memset() style operations(AArch64)

Enhancements to PAC (AArch64)

Hinted conditional branches

Armv9-A是ARM公司最新的架构,但是目前还没有完全公开。

最后提一句,现在基于ARM处理器的多核服务器芯片设计正火,国内外玩家越来越多。ARM公司推出了Server Base SystemArchitecture(SBSA)规范,提出了服务器的硬件要求。下表总结了与Armv8.x-A相关的SBSA要求。

SBSA文档是公开的,感兴趣的朋友可以去官网下载。目前我看到的SBSA文档版本是7.0,在2021年1月发布。

其实SBSA中就是规定了一些规则(rule),对于不同等级有不同的要求。下图是SBSA的不同等级对处理器,SMMU和GIC的要求,可以与上一张图结合看。

审核编辑:汤梓红

[转帖]浅谈Armv8-A处理器的更多相关文章

  1. 浅谈Samsung Exynos4412处理器

    转载于:http://www.cnblogs.com/android210/archive/2013/01/16/2862349.html Topic:浅谈Samsung Exynos4412处理器( ...

  2. []转帖] 浅谈Linux下的五种I/O模型

    浅谈Linux下的五种I/O模型 https://www.cnblogs.com/chy2055/p/5220793.html  一.关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是 ...

  3. [转帖]浅谈P2P、P2C 、O2O 、B2C、B2B、 C2C的区别

    浅谈P2P.P2C .O2O .B2C.B2B. C2C的区别 https://www.cnblogs.com/zhuiluoyu/p/5481635.html 相信有很多人对P2P.P2C .O2O ...

  4. [转帖]浅谈分布式一致性与CAP/BASE/ACID理论

    浅谈分布式一致性与CAP/BASE/ACID理论 https://www.cnblogs.com/zhang-qc/p/6783657.html ##转载请注明 CAP理论(98年秋提出,99年正式发 ...

  5. [转帖]浅谈响应式编程(Reactive Programming)

    浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22 ...

  6. [转帖]浅谈IOC--说清楚IOC是什么

    浅谈IOC--说清楚IOC是什么 Need Study https://www.cnblogs.com/DebugLZQ/archive/2013/06/05/3107957.html 博文目录 1. ...

  7. [转帖]浅谈程序中的text段、data段和bss段

    作者:百问科技链接:https://zhuanlan.zhihu.com/p/28659560来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一般情况,一个程序本质上都 ...

  8. 浅谈 CSS 预处理器: 为什么要使用预处理器?

    CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...

  9. [转帖]Linux系统/dev/mapper目录浅谈

    Linux系统/dev/mapper目录浅谈   Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/ma ...

  10. 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

    本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)--requirejs + angular + a ...

随机推荐

  1. 【小白学YOLO】YOLOv3网络结构细致解析

    摘要:本文将详细介绍Yolov3的网络结构相关内容. Yolov3 网络结构 在博客"Yolo发展历史及网络结构"中我们已经详细的解释了Yolov1的网络结构,并简要的提到了Yol ...

  2. 动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏

    摘要:在本案例中,我们将展示如何基于A2C算法,训练一个LunarLander小游戏. 本文分享自华为云社区<使用A2C算法控制登月器着陆>,作者:HWCloudAI . LunarLan ...

  3. Spring Cache设计之美,你品,你细品…

    摘要:Spring Cache的功能很强大,设计也非常优雅,特别适合缓存控制没有那么细致的场景,比如门户首页,偏静态展示页面,榜单等等 本文分享自华为云社区<品味 spring cache设计之 ...

  4. GIS拓扑讲解点线面几何体的拓扑关系判断及运算分析_turf案例

    Turf.js简介 Turf.js是JavaScript  空间分析库,由Mapbox 提供,Turf 实现了 空间分析操作,例如生成缓冲区.计算等高线,建立 TIN 等: 空间几何对象关系的计算,点 ...

  5. Taro架构构析(1):多端框架分析,Taro WePY uni-app对比

    多端框架分类 全包型 这类框架最大的特点就是从底层的渲染引擎.布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter.这类框架优点非常明显:性能(的上限)高:各 ...

  6. 自然语言处理 Paddle NLP - 机器同传技术及应用-理论

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理Pad ...

  7. MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例

    LLM发展历史 - 2013年word2vec提出,但效果不好 - 2017年Transformer结构提出,降低网络复杂度 - 2018年BERT预训练语言模型效果显著提升 - 2019年GPT-3 ...

  8. Mysql--between

    between 用于where 表达式中,选取介于两个值之间的数据范围,同and一起搭配使用 语法: expr [NOT] BETWEEN begin_expr AND end_expr; 在整个表达 ...

  9. CVPR2022 前沿研究成果解读:基于生成对抗网络的深度感知人脸重演算法

    凭借在人脸生成领域的扎实积累和前沿创新,阿里云视频云与香港科技大学合作的最新研究成果<基于生成对抗网络的深度感知人脸重演算法 >(Depth-Aware Generative Advers ...

  10. 深挖 Python 元组 pt.2

    哈喽大家好,我是咸鱼 在<深挖 Python 元组 pt.1>中我们了解 Python 元组的一些概念(索引和切片等),以及如何创建元组,最重要的是我们还介绍了元组的不可变特性 那么今天我 ...