硬件内存模型
创始人
2024-03-22 09:13:54
0

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.

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
带头循环双向链表来咯!!! 前言:继上文,我们了解了结构最简单的一种链表---单链表那么我们今天就来...