参考文章:ARM官方文档 ARMv8架构概述、相关技术文档以及ARMv8处理器简介 ARMv8 架构编程探索 ARMv8 架构与指令集.学习笔记
ARM异常等级:
在 ARMv8 中,执行发生在四个异常级别之一。在 AArch64 中,异常级别决定了特权级别,类似于ARMv7中定义的特权级别。异常级别决定特权级别,因此在 ELn 执行对应于特权PLn。类似地,具有比另一个更大的n值的异常级别处于更高的异常级别。一个数字比另一个小的异常级别被描述为处于较低的异常级别。 这里也显示出来了与ARM-V7的差异点,可参考https://www.cnblogs.com/lethe1203/p/18077266 异常级别提供了适用于 ARMv8 架构的所有操作状态的软件执行权限的逻辑分离。它类似于并支持计算机科学中常见的分层保护域的概念。- EL0 Normal user applications.
- EL1 Operating system kernel typically described as privileged.
- EL2 Hypervisor.
- EL3 Low-level firmware, including the Secure Monitor.
ARM-V8新更改:
ARMv8 体系结构包括 32 位执行和 64 位执行。它引入了使用 64 位宽寄存器,同时保持了与现有 ARMv7 软件的向后兼容性:- 大物理地址(Large physical address),这使处理器能够访问超过 4GB 的物理内存。
- 64 位虚拟寻址(64-bit virtual addressing),这使虚拟内存超出 4GB 限制。这对于使用内存映射文件 I/O 或稀疏寻址的现代桌面和服务器软件很重要。
- 自动事件信号(Automatic event signaling),这可以实现节能、高性能的自旋锁
- 更大的寄存器文件(Larger register files),31 个 64 位通用寄存器可提高性能并减少堆栈使用。
- 高效的 64 位立即生成(Efficient 64-bit immediate generation),对文字池的需求较少
- 较大的 PC 相对寻址范围(Large PC-relative addressing range),一个 +/‑4GB 的寻址范围,用于在共享库和与位置无关的可执行文件中进行有效的数据寻址。
- 额外的 16KB 和 64KB 翻译颗粒(Additional 16KB and 64KB translation granules),这降低了翻译后备缓冲区(TLB) 未命中率和页面遍历深度。
- 新的异常模型(New exception model),这降低了操作系统和管理程序软件的复杂性。
- 高效的缓存管理理Efficient cache management),用户空间缓存操作提高了动态代码生成效率。使用数据缓存零指令快速清除数据缓存。
- 硬件加速密码学(Hardware-accelerated cryptography),提供 3 到 10 倍更好的软件加密性能。这对于小粒度解密和加密非常有用,因为太小而无法有效地卸载到硬件加速器,例如 https。
- 加载‑获取、存储‑释放指令(Load-Acquire, Store-Release instructions),专为 C++11、C11、Java 内存模型而设计。它们通过消除显式内存屏障指令来提高线程安全代码的性能。
- 有序的八级流水线。
- 通过使用分层时钟门控、电源域和高级保留模式来降低功耗。
- 通过重复执行资源和双指令解码器提高双发能力。
- 功耗优化的二级缓存设计可提供更低的延迟并在性能与效率之间取得平衡。