硬件内存模型

news2024/12/23 14:52:41

Hardware Memory Models

这是Go语言作者之一的rsc语言内存模型相关博文之一;硬件内存模型的笔记。硬件内存模型对应的是汇编指令的执行,可以认为每一条指令原子执行。

Sequential Consistency 顺序一致性模型

多个进程的操作按照一定顺序执行,同一个进程的操作按顺序执行,不同进程操作可以交叉进行。

image-20221206200417678

litmus test:

image-20221206200907939

x86 Total Store Order Model (x86-TSO)

该模型和顺序模型一样采用共享内存,不同之处在于有一个每个进程有一个FIFO写入队列,写操作会先写入队列,适时执行。而读取时会先查询自己的写队列,再查询Shared Memory。

image-20221206201256852

litmus test:

验证写队列:

image-20221206203736927

各进程视角内写入顺序一致

image-20221206203750342

ARM/POWER Relaxed Memory Model 宽松内存模型

ARM架构采用宽松的内存模型。各进程 不再共享内存,而是保有自己的内存副本,读写操作都操作自己的副本。

image-20221206202527825

写操作的扩散(从一个副本到另一个副本)是无序的,这意味着不同进程副本所看到的写顺序可能是不一致的。

image-20221206203430886

另外对于一个进程内操作而言,读操作可以被推迟到写操作之后。

image-20221206203522561

Weak Ordering and Data-Race-Free Sequential Consistency

硬件内存模型是复杂且微妙的,如果每次编程都要考虑这些,心智负担就太重了。如果遵循一定的规则编程就可以做到顺序一致的执行就太好了,以下就是一个方法。

“weak ordered"出自论文“Weak Ordering – A New Definition”, 定义如下:

定义同步模型为一组内存访问约束,这些约束指定了如何,何时进行同步。硬件相对于同步模型是弱序的,当且仅当对于一切遵守同步模型的软件在硬件上运行满足顺序一致性。

”Data-Race-Free(DRF)“是 Adve和Hill提出的一个同步模型。该模型假设硬件有常规读写的内存同步操作。同步操作间的常规读写也许会打乱顺序,带却不允许跨越同步操作(类似内存屏障)。如果对于所有理想化的顺序一致执行,不同进程对同一个位置的内存操作,要么两者都是读,要么由同步操作规定先后发生顺序。那么程序被认为是data-race-free的。

示例:

image-20221206210502100

image-20221206210516322

原论文中有给出相关证明。这为硬件和软件开发提供准则。

小结

阅读rsc的博文对硬件内存模型有了一定的了解,这篇文章是基于汇编指令访存写的,对高级语言而言又有不同,这就是下一篇文章了。

参考

rsc. Hardware Memory Models[EB/OL]. [2022.12.06]. https://research.swtch.com/hwmm#drf.
Memory Models[EB/OL]. [2022.12.06]. https://research.swtch.com/hwmm#drf.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(附源码)ssm小米购物网站 毕业设计 261624

基于ssm小米购物网站 摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越…

[附源码]计算机毕业设计宁财二手物品交易网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据结构(13)最小生成树JAVA版:prim算法、kruskal算法

目录 13.1.概述 13.2.prim算法 13.2.1.概述 13.2.2.代码实现 13.3.kruskal算法 13.3.1.概述 13.3.2.代码实现 13.1.概述 最小生成树,包含图的所有顶点的一棵树,树的边采用包含在图中的原有边中权重和最小的边。翻译成人话就是遍历一遍全图所有顶点…

Java基于J2EE的流浪动物收容与领养管理系统

随着城市饲养宠物日益增加,流浪动物也越来越多,本文对流浪动物出现的原因,引发的社会问题以及流浪动物的保护等方面进行思考阐述,以期唤醒人们对动物福利的关注和对生命的珍爱。 通过以上的调研研究发现,如此多的流浪动物是如此的…

肠道菌群代谢组学之粪便微生物移植治疗原发性硬化性胆管炎

​ The American Journal of GASTROENTEROLOGY (IF10.241) 10位原发性硬化性胆管炎患者的粪便微生物移植:一个试点的临床试验 研究背景 百趣代谢组学分享,原发性硬化性胆管炎(Primary sclerosing cholangitis,PSC)是…

【Java语言】— 快速入门

Java背景知识 Java是美国sun公司在1995年推出的一门计算机高级编程语言。 Java早期称为Oak(橡树),后改为Java。 Java之父:詹姆斯高斯林。 2009年sun公司被Oracle公司收购。 为什么用Java 世界上最流行的编程语言之一,在国内使用…

生成式AI结合3D、XR怎么玩?NVIDIA、Niantic等公司已入局

最近生成式AI风头有点大,这种技术只需要用文字就能作画,而且效果惊艳,堪比专业画师的作品。其中一些热门的方案包括DALL-E 2、Midjourney、BariumAI、D-ID AI、Stable Diffusion等等,这些工具简单、好玩,已经被无数网友…

BYD精制项目除铜工艺去除铜离子

某精细化工公司BYD精制项目 工艺选择 过滤系统螯合树脂除铜系统合格品回收箱 工艺原理 在不应该1,4丁炔二醇的情况下去除铜离子 项目背景 1,4-丁炔二醇BYD(but-2-yne-1,4-diol)是一种重要的中间体化工原料,广泛应用于生产丁二醇及其下游产…

2022CTF培训(五)字符串混淆进阶代码自解密

附件下载链接 复杂的字符串混淆 原理 之前的字符串混淆是一次性解密的,找到解密函数即可获得所有字符串,同时执行解密函数后内存中也可直接获得所有字符串。 因此对抗人员升级了混淆技术,使得解密仅在使用时发生,从而避免了全部…

微机原理不挂科

微机原理1.计算机基础1.1数制码值转换1.2码制1.3微机组成2.8088/8086微处理器2.1CPU内部结构2.2寄存器2.3存储器分段和地址空间2.4堆栈2.5 8086/8088CPU引脚2.6 时序与总线操作3.指令系统3.2寻址方式3.3语法规则3.4数据传送指令3.5算术运算指令3.6逻辑运算与移位指令3.7串操作指…

(二十) 共享模型之工具【JUC】【线程安全集合类】

一、线程安全集合类概述 线程安全集合类可以分为三大类:(1)遗留的线程安全集合如 Hashtable , Vector(2)使用 Collections 装饰的线程安全集合,如: 1️⃣Collections.synchronizedCo…

[附源码]计算机毕业设计JAVA游戏账号交易平台

[附源码]计算机毕业设计JAVA游戏账号交易平台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

Redis单机集群

先放张图 上图就是典型的哨兵模式 salve:从服务器,需要进行同步主服务器的数据 master:主服务器,负责执行客户端的请求,将数据更新信息发送给从服务器,保持数据一致 哨兵:接受客户端请求&…

【前端】前端监控体系

文章目录一、所需的数据1.1、生命周期数据1.2、HTTP测速数据1.3、系统异常数据1.4、用户行为数据1.5、用户日志二、埋点与收集2.1、数据埋点2.1、数据上报2.3、数据监控对于一个应用来说,除了前期的开发和设计,在项目上线后端维护很重要,其中…

Docker 讲解与基本操作

哈喽~大家好,这篇来看看Docker 讲解与基本操作。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【微服务】 🥉与这篇相关的文章: SpringCloud Sentinel 使用Spr…

最优化方法——QR分解

目录 系列文章目录 一、问题 二、实验思路综述 1.实验工具及算法 2.实验数据 3.实验目标 4.实验步骤 三、相关线性代数知识导入 1.线性无关与基 2.标准正交 3.Gram-Schmidt(正交化)算法 四、QR分解 1.Gram-Schmidt QR 1.1 算法原理 1.2 算法流程 1.3 复杂度分析…

JSP连接MySQL数据库

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

Allegro如何设置走线禁布区操作指导

Allegro如何设置走线禁布区操作指导 Allegro可以任意设置走线的禁布区,以下图为例,需要在两个pin中间设置一个所有层都不能走线的禁布区域 具体操作如下 选择shape Add Rect命令 Option选择画在Route keepout-All层,type选择Static solid 鼠标移动到器件pad附近,右击会…

JavaScript -- Map对象及常用方法介绍

文章目录Map1 Map介绍2 创建一个Map3 常用方法介绍4 将Map转换为数组5 从数组构建Map6 遍历MapMap 1 Map介绍 Map用来存储键值对结构的数据**(key-value)**Object中存储的数据就可以认为是一种键值对结构Map和Object的主要区别: Object中的…

在vue3项目中使用新版高德地图

高德开发平台 : 高德开放平台 | 高德地图API (amap.com) 1. 首先你要注册好账号登录 2. 获取key和密钥 自2021年12月02日升级,升级之后所申请的 key 必须配备安全密钥 jscode 一起使用 NPM方式安装和使用(基础版): 按 NPM 方式安装使用 Loader : npm i amap/amap…