ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory order
1.前言
2.基本概念
- Observer
可以发起对memory read/write访问的都是observer;
- Observability
是一种观察能力,通过read可以感知到别的observer的write,通过感知到别的observer的read而不能write的这种能力;
- observed write
观察到了某个observer的write动作;
- locally observed write
是限定在一个shareability domain内部,或者指定的一个observer的集合都观察到了某个observer的write动作;
- observed read
当某个observer无法通过write操作来影响另一个observer的read操作的时候,我们就认为该observer已经感知到了另一个observer的read操作;
- globally observed read
就是一个shareability domain内所有的observers都观察到了一个observer的read操作;
- completion
内存访问指令完成
3. 访存指令完成的条件
内存访问指令完成,需满足如下条件:
(1)该内存访问操作被特定的shareability domain内的所有的observer globally observed
(2)和该内存访问指令相关的translation table walks(也会引发内存访问操作)必须执行完毕,即:
a)这个translation table walks而引起的内存访问操作被该shareability domain内的所有的observer globally observed
b)TLB已经完成更新
4. 内存屏障
按照严格程度从低到高排列:DMB < DSB < ISB
- DMB:数据存储器隔离
DMB 指令保证仅当所有在它前面的存储器访问操作都执行完毕后,才提交(commit)在它后面的存储器访问操作;
- DSB:数据同步隔离。
比 DMB 严格,仅当所有在它前面的存储器访问操作都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访问操作——译者注);
- ISB:指令同步隔离
最严格,它会清洗流水线,以保证所有它前面的指令都执行完毕之后,才执行它后面的指令.
5. 参考文档
[1] DDI0487A_k_armv8_arm_iss10775.pdf
[2] ARMv8之Atomicity
ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory order的更多相关文章
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构
1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...
- ARMV8 datasheet学习笔记5:异常模型
1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...
- ARMV8 datasheet学习笔记1:预备知识
1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA
1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMS ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(4)- 其它
1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常 ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常
1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2. RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST
1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概 ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Generic timer
1.前言 2.generate timer 2.1 概述 提供了一个系统计数器,用来实时测量流逝的时间: 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间: 定时器,每隔一段时间会触发事件,支 ...
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之存储模型
1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性 2. 存储系统体系结构 2.1. 地址空间 指令地址空间溢出 指令地址计算((address_of ...
随机推荐
- 【Luogu4931】情侣?给我烧了! 加强版(组合计数)
[Luogu4931]情侣?给我烧了! 加强版(组合计数) 题面 洛谷 题解 戳这里 忽然发现我自己推的方法是做这题的,也许后面写的那个才是做原题的QwQ. #include<iostream& ...
- [hgoi#2019/2/17t1]million
题目描述 面对格鲁的入侵,小黄人们要组建一支队伍,来抵御进攻,现在有编号为1 至n 的小黄人,任命编号为n 的队长,由其挑选队员,当然编号不是随便编的,每一个编号里都包含一个小黄人的个人信息,现在队长 ...
- 【转】用宏定义代替printf函数
问题提出 有时候我们想用宏定义来决定是编译debug版本的代码还是release的代码,dubug版本的代码会通过printf打印调试信息,release版本的代码则不会.我们总不能对每一条print ...
- 二分插入、bisect
在一个有序序列(从小到大)中查找一个元素 每次将元素与序列中间位置的元素进行比较 如果大于中点,则在后半段.如果小于中点,则在前半段.以此类推 时间复杂度为O(logn) 有一个无序序列[37, 99 ...
- 【51Nod1405】树上距离和 二次扫描与换根法
题目大意:给定一棵 N 个点的边权均为 1 的树,依次输出每个点到其他各个点的距离和. 题解:首先任意选定一个节点为根节点,比如 1,第一遍 dfs 遍历树求出子树大小.树上前缀和.第二遍 dfs 遍 ...
- 百度地图API 循环向 marker 添加 click事件
使用百度地图API,循环向marker添加InfoWindow时,所有的marker点击弹出的inforwindow为最后一个添加的infowindow,百度后,使用js闭包解决此问题,直接贴代码: ...
- pyglet----画一个矩形
这里列出一种在窗口Window中画图的程序框架.......... #-*- coding:utf-8 -*- from pyglet.gl import * def draw_rect(x, y, ...
- JavaScript模板代码总结
//中文input框对非中文的校验 var reg=/[^\u4E00-\u9FA5]/g; if (reg.test($("#jgqc").val())){ alert(&quo ...
- JavaScript中的栈和堆内存,作用域
1.栈 stack”和“堆 heap” 简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里.stack一般是静态 ...
- CodeBblock 常用快捷键 (最常用)
==日常编辑== • 按住Ctrl滚滚轮,代码的字体会随你心意变大变小. • 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦:相关设置:Mouse Drag Scrolling. • C ...