ARMV8体系结构简介
armv8
1.前言
本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。包含如下的内容:
- 首先从背景谈起,讲述ARM的发展历程;
- 之后介绍ARMV8体系结构的基本特征;
- 介绍A64指令集
- 介绍异常级别
- 介绍内存管理单元
- 介绍编程寄存器
- 介绍DEBUG相关
- ARMV8生态系统的演化
2. 背景

- 从1995年,ARMV4(主要对应ARM7 family)开始到现在ARM RISC体系结构到现在已经演化了20多年。从设计一开始ARM就关注到了低功耗
- 到2011年,所有的ARM-Cotex family都被设计成使用ARMV7架构。
ARM7:采用ARMV4架构
ARM9:ARMV4的变体
ARM11:ARMV4的变体
Cotex-A8:为了匹配不同的市场,ARMV7从Cotex-A8开始被划分为三种属性:Application-Profile、RealTime-Profile、Microcontroller-Profile
Cotex-A9:引入了多核
Cotex-A5:引入低功耗、低成本的网络互联
Cotex-A7:引入了出色的能效管理,可以延长手机的续航时间
Cotex-A15:引入了很多可选的扩展,如LPAE、虚拟化、
- 为何要引入ARMV8?
(1)考虑到ARMV7被市场广泛接受,以及形成的成熟的生态,因此后续的体系结构升级需要做到向后兼容;
(2)另外要让厂商能够愿意将软件系统迁移到新的体系结构,新的体系结构一定要有原体系结构不具有的优势
(3)为了解决旧有架构遗留的问题,提供一种更加清晰的架构,同时考虑到将来的发展趋势,采用一种全新的架构来实现
3. ARMV8架构基本特性

- ARMV8目前只定义了Application profile
- ARMV8定义了48bit符号虚拟地址和达到48bit物理地址
- ARMV8采用了新的指令集A64
- ARMV8兼容ARMV7的指令
- A32和A64的转换只能发生在异常级别转换时
4. A64指令集
- A64下的每条指令被定义为固定32bit
- A32和A64分别解码,这样可以简化解码表,单独的解码表可以允许更多更先进的分支预测技术
- 通用目的寄存器增加到31个
- A64删除了LDM/STM指令,因为LDM/STM实现比较复杂
- 更少的条件指令,因为实现复杂,并且没有明显的好处
- 浮点单元硬件支持
- SIMD支持,针对A64做了专门修订,引入了双精度浮点支持
5.异常级别

- A32和A64之间的转换有一个严格的规则集合
- 异常级别增加,可以保持A32或升级到A64
- A64引入了专门的寄存器ELR,用于记录异常返回地址,在所有的异常入口会进行设置
- 在异常入口,中断mask会自动置位
- 每个异常级别都有自己的向量基址寄存器,每个向量被按照类型区分:synchronous,IRQ,FIQ或Error
- 关于异常的详细细节在syndrome register
6. 内存管理单元

- 支持48bit虚拟地址和物理地址,这样可以简化硬件,可以只支持到4级页表;
- 支持4K和64K页
- 提供了两种基地址,分别是内核空间和用户空间
- 用户空间虚拟地址到物理地址的转换需要经过两个阶段,分别是VA->IPA,IPA->PA
7.程序寄存器

- 30个通用寄存器(X0-X30),每个寄存器使64bits,其中X30是LR寄存器
- 只有一个SP寄存器和ELR寄存器
- SPSR
- Pstate
8. DEBUG
- 可以通过debugger调试器直接发送指令,处理器可以提取
- 两种类型的debug:self-host和halt mode debug
9.生态系统演变
ARMV8体系结构简介的更多相关文章
- ARM体系结构简介
ARM体系结构简介 新一代的ARM9处理器,能达到两倍ARM7的处理能力,它们的区别如下: ARM微处理器的工作状态(可切换): 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令 第二种为 ...
- oracle体系结构简介
oracle体系结构简介 一.物理存储结构 1.数据文件 存放数据库数据,以dbf为扩展名.将数据放在多个数据文件中, 再将数据文件分放在不同的硬盘中,可以提高存取速度. ...
- Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide
来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个“提供者”体系结构和一组用 ...
- Exchange 2016 体系结构简介
一.Exchange 2016简介 现在,CPU计算能力的成本显著降低,不再成为约束因素.随着此约束因素的消失,Exchange2016的主要设计目标是简化扩展.提高硬件利用率和实现故障隔离:在Exc ...
- oracle 体系结构简介
1.1.SGA(system global area) SGA是oracle Instance的基本组成部分,在示例启动是分配.是一组包含一个oracle实例的数据和控制信息的共享内存结构.主要用于存 ...
- TCP/IP协议体系结构简介
1.TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层.传输层.互联层和网络接口层. 网络接口层:模型的基层是网络接口层.负责数据帧的发送和接收,帧是独立的网络信息传输单 ...
- Spring Framework体系结构简介
说明:以下转自Spring官方文档,用的版本为4.3.11版本. 一.引用官方文档 2.2.1核心集装箱 所述核心容器由以下部分组成spring-core, spring-beans,spring-c ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常
1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2. RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构
1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...
随机推荐
- Deepin linux Compass.app安装
compass.app是集成了sass的工具,安装完Compass就能够使用sass. 首先,上官网 可以看到官网上推荐的两种sass使用方式,application&command line ...
- python的学习笔记01_1 python2和python3的区别和环境
1.python2 与 python3 区别: 关于这两个版本的区别,从宏观上来讲: python2:源码不标准,混乱(很多技术大佬写的都有自己语言的特点,看起来很不pythoner)由于python ...
- Android WebView 缓存
android很多情况是使用webView用来显示界面,但是webview的加载速度略慢,想让这个webview更快一些所以需要使用缓存,在没有更新的时候使用缓存技术来提高速度.总体来讲有两个方案可以 ...
- break、continue以及return的区别
break.continue以及return的区别如下: 1.break break用于完全结束一个循环,跳出循环体,不再执行下面的代码.对于多层循环嵌套,如果break语句出现在嵌套循环中的内循环时 ...
- 百度APP移动端网络深度优化实践分享(一):DNS优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<一>DNS优化>,感谢原作者的无私分享. 一.前言 网络优化是客户端几大技术方 ...
- 生产环境中学习Redis
摘要 看到这篇文章,很有借鉴意义,因此写个读书笔记,不算是翻译.想要深入了解,请看原文http://tech.trivago.com/2017/01/25/learn-redis-the-hard-w ...
- 配置中心框架IConfCenter
本篇和大家分享的是一个简易配置中心框架IConfCenter,框架是利用空余时间写的,主要以配置文件+redis存储方式作为数据同步驱动,目前支持的配置文件格式有 .properties 和 .con ...
- 【WebGIS系列】Typescript+WebGL+Webpack开发环境搭建
目前Web实现矢量渲染的主流技术包括SVG.VML和WebGL.相对而言,VML是一种较古老的技术,虽然未成为W3C标准,但被早期的IE浏览器(IE9以下)和微软Office广泛使用,目前已经远离了浏 ...
- ASP.NET Core中使用GraphQL - 第四章 GraphiQL
ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP ...
- FragmentTabHostUnderLineDemo【FragmentTabHost带下划线】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用FragmentTabHost实现顶部选项卡(带下划线效果)展现. 效果图 代码分析 1.该Demo中采用的是FragmentT ...