ARMV8 datasheet学习笔记1:预备知识】的更多相关文章

1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架构下IRQ 和Data Abort 异常处理流程图对比. 3.1 IRQ 路由 3.1.1.   AArch32 IRQ 路由 图 AArch32 IRQ 路由 3.1.2.    AArch64 IRQ 路由 图 AArch64 IRQ路由 图 AArch64 IRQ向量查找 3.2.     D…
1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30.SP.    PC. V0-V31. FPCR.   FPSR 可见的PSTATE位 NZCV DAIF 可见的系统寄存器 Cache ID registers Debug registers Performance Monitors registers Thread ID registers T…
1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集,另外还新增加了CRYPTO(加密)模块支持. 2. 相关术语 Items Notes PE Processing element,处理器单元可以理解成一个…
1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMSAv8-64 由运行AArch64的异常级别来管理 2.2 某些异常级别使用AArch32的ARMv8 VMSA EL3运行AArch32时的地址转换stages和转换regimes; EL3运行AArch64时任何运行AArch32的异常级别的的地址转换stages和转换regimes; 当EL0…
1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性   2. 存储系统体系结构 2.1.    地址空间 指令地址空间溢出 指令地址计算((address_of_current_instruction) + (size_of_executed_instruction))超过0xFFFF FFFF FFFF FFFF,PC变成不可知 2.2    Cache支持 Caches的一般行为 (1)Cache中已解锁的项不会一直驻留在cache; (2)Cache…
1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常,路由规则如下: (1)当前为EL1,则陷阱异常传递给EL1(HCR_EL2.TGE定义为1时,会路由到EL2); (2)当前为EL2,则陷阱异常传递给EL2; (3)当前为EL3,则陷阱异常传递给EL3; 3. 系统调用 SVC 默认情况下SVC产生supervisor call,同步异常目标级别…
1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有的逻辑,包括集成的debug功能 Warm reset:Reset PE所有的逻辑,不包括集成的debug功能 注:ARMV8也支持外部debug reset Reset时pe进入最高的异常级别 运行状态 (1)Reset后最高异常级别可以选用任何一种运行状态 (2)cold reset由输入信号配…
1. 前言 2. 指令运行与异常处理寄存器 ARM体系结构的寄存器分为两类: (1)系统控制和状态报告寄存器 (2)指令处理寄存器,如累加.异常处理 本部分将主要介绍如上第(2)部分的寄存器,分为AARCH64 state和AARCH32 state 2.1 AARCH64下指令运行与异常处理寄存器 寄存器类型 Bit 描述 X0-X30 64bit 通用寄存器,如果有需要可以当做32bit使用:W0-W30 V0-V31 128bit 32个浮点寄存器,用于标量的浮点操作和向量或标量的SIMD…
1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概述 ELx(x<4),x越大等级越高,执行特权越高 执行在EL0称为非特权执行 EL2 没有Secure state,只有Non-secure state EL3 只有Secure state,支持EL0/EL1的Secure 和Non-secure之间的切换 EL0 & EL1 必须要实现,E…
1.前言 本文主要介绍原子变量的实现原理,对原子变量的修改有一套特殊的机制 2. Local monitor和Global monitor UP时执行Load EX和Store EX时仅需关注Local Monitor的状态即可 图 UP时Local Monitor和Global Monitor SMP时执行Load EX和Store EX时需关注Local Monitor和Global Monitor的状态 图 SMP时Local Monitor和Global Monitor 3. Exclu…
1.前言 2.基本概念 Observer 可以发起对memory read/write访问的都是observer; Observability 是一种观察能力,通过read可以感知到别的observer的write,通过感知到别的observer的read而不能write的这种能力: observed write 观察到了某个observer的write动作: locally observed write 是限定在一个shareability domain内部,或者指定的一个observer的集…
1.前言 Atomicity是内存访问的一个属性,描述为原子性访问,包括single-copy atomicity和multi-copy atomicity 2.基本概念 observer 可以发起对memory read/write访问的都是observer Coherent order 全局一致性,即shareability domain中所有的observer观察到的对同个内存位置的全局的一致的写入动作(顺序): 注[1]:属于同一个shareability domain的observer…
1. 前言 本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说: ARM体系结构定义了PE的行为,不会定义具体的实现 ARM体系结构也定义了debug体系结构和trace体系结构 ARM体系结构采用RISC指令集 (1)长度一致的寄存器: (2)load/store架构,数据处理操作只能对寄存器内容进行处理,不会直接对内存的内容进行处理: (3)简单寻址方式,load/store地址来源于寄存器或指令域(如立即数) ARM体系结构定义了PE与存储系统的交互 ARMV8体系结构向后兼容,…
1.前言 2.generate timer 2.1 概述 提供了一个系统计数器,用来实时测量流逝的时间: 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间: 定时器,每隔一段时间会触发事件,支持正向计时和倒计时: 通用timer实现必须包含一个内存映射的系统组件:提供system counter; 2.2 完整的generic timer组件 System counter Generic timer的PE实现 (1)一个物理的counter,它访问system counter的计数值:…
1. 前言 2. 关于self-hosted debug Debugger调试器 是操作系统或系统软件的一部分,它会处理debug exception或修改debug system register,debugger运行在EL0,提供了用户debugger接口; Debugger异常 Debugger异常是在程序正常运行过程中由debugger编程PE来产生,满足如下两个条件,PE可以产生某个特定的异常: (1)当前的异常级别和安全状态下使能了debug异常: (2)Debugger使能了某个特…
1.前言 2. Memory类型和属性 memory分为normal memory和device memory,两种类型的Memory有各自的属性,除了下面介绍的几种属性外,还有其他一些杂项属性 2.1 Normal Memory Shareable  Normal Memory 可以被所有的PE访问, 包括:Inner Shareable, and Outer Shareable: Non-shareable Normal Memory 只能被唯一的PE访问; Cacheability属性 N…
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数据库连接池管理数据库. ☐ 将SQL语句硬编码到Java代码中,若SQL语句修改,需要重新编译Java代码,不利于系统维护. ☐ 将SQL语句配置在XML文件中,即使SQL变化,我们也不需要队Java代码进行重新编译. ☐ 向PreparedStatement中设置参数,对占位符号位置和设置参数值,…
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型——装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. ; Object obj = i; 三:将引用类型转换为值类型——拆箱 3.1…
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的方法得到的就是这个变量,更准确的说,是指向内存中变量的指针.所以方法内部对变量进行的任何改变在方法退出后仍然有效.而如果变量通过值传递给方法,被调用的方法得到的是变量的一个相同副本,也就是说方法退出后,对变量进行的修改会丢失. 2.2值类型的值传递:值类型的变量包含的是实际数据,作为参数传递的是数据…
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存储位置的不同会有不同的影响. 例如int类型是值类型:int x,y; x=10;y=x;y=20;前三个语句会在内存的两个地方存储值10.改变y的值不会影响x. 如果已经定义了一个类Test,Test是一个引用类型,有一个int类型的成员变量value,执行完如下代码后,只有一个Test对象.x和…
JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和Exception. 1.1.1 Error:一个Error对象表示一个程序错误,指的是底层的低级的不可恢复的严重错误 遇到Error,程序一定会退出,因为已经失去了运行所必须的物理环境. 对于Error我们无法进行处理,因为我们是通过程序来应对错误的,可是程序已经退出了. 1.1.2 Excepti…
Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Timer; import java.util.TimerTask; public class TimerTest { public static void main(String[] args) { Timer timer = new Timer(); long delay = 1000; //延时多少…
Linux学习笔记整理 上一篇博客中,我们详细地整理了如何从0部署一套Linux操作系统,那么这一篇就承接上篇文章,我们仔细地把Linux的一些基础知识以及常用指令(包括一小部分高级命令)做一个梳理,好了,现在开始吧! 1. Linux介绍 在介绍Linux之前,先要介绍一下Unix操作系统,说到两者之间的关系,"Unix是Linux的父亲"这个说法更为恰当,Unix是作为一款商业软件而存在的,主要运行在大型服务器和小型机上,不开源,不免费,大多与硬件配套,也就是说,大多数 UNIX…
一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基础: <?xml version="1.0" encoding="utf-8" ?> <books ISBN="9787544238212"> <title>xml学习笔记</title> <pr…
什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快,是因为它不直接操作DOM.React将DOM结构存储在内存中,然后同render()的返回内容进行比较,计算出需要改动的地方,最后才反映到DOM中.[为什么用react,它为什么快] 个人感觉: react通过虚拟DOM解决的数据频繁变化造成的DOM节点的频繁渲染.所以,适用于那些数据更新比较快的,…
一:枚举的含义 枚举是用户定义的整数类型.在声明一个枚举时,要指定该枚举的示例可以包含的一组可接受的值.还可以给值指定易于记忆的名称.个人理解就是为一组整数值赋予意义. 二:枚举的优势 2.1:枚举可以使代码更易于维护,有助于确保给变量指定合法的.期望的值. 2.2:枚举可以使代码清晰,用描述性的名称来表示整数值,增加代码可读性. 三:枚举的使用 /// <summary> /// 声明一个枚举,审核状态 /// </summary> public enum AduitStatus…
概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍docker的基础知识. DOCKER是什么 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 Gi…
本文介绍了Salesforce开发平台的基本知识, 包括如下内容: Salesforce平台介绍 Salesforce基本术语 定制和扩展Salesforce平台 创建一个简单的应用程序 Salesforce平台介绍 我们首先介绍一下什么是Salesforce平台, 这个平台提供哪些功能, 以及能够实现什么样的用户需求. Salesforce其核心是一个基于云计算和软件即服务(SaaS)的客户关系管理系统(CRM),该系统提供的功能覆盖了众多不同的业务领域, 例如客户资料存储, 销售业务管理,…
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) 表示把1 - 100的所有数字都给x这个变量 5.查看x的类型:>mode(x) 6.查看x的长度:>length(x) 7.将两个向量组成一个矩阵: >rbind(x1, x2)  注:r是row的意思,即行,按行组成矩阵. >cbind(x1, x2)  注c是column的意思,…
开始学习OC,时间不等人啊,要抓紧了. OC基本知识 新建一个以.m结尾的文件,这既是oc的程序文件.在oc程序中完全兼容C语言.编译好链接类似. oc包含头文件是使用#import <> import 和include 的区别: 1:import和include一样的包含功能 2:import可以自动防止文件被重复拷贝 #import <Foundation/NSObjCRuntime.h>//NSLog头文件 //import 1:和include一样 // 2:可以自动防止文…