相关疑难解决方法(0)

为什么在x86上对自然对齐的变量进行整数赋值?

我一直在读这篇关于原子操作的文章,它提到了32位整数赋值在x86上是原子的,只要该变量是自然对齐的.

为什么自然对齐确保原子性?

c c++ concurrency x86 atomic

28
推荐指数
2
解决办法
5386
查看次数

在 x86-64 上,系统崩溃时“movnti”或“movntdq”指令是原子的吗?

当使用像 Intel optane DCPMM 这样的持久内存时,如果在执行 movnt 指令时系统崩溃(断电),是否可以在重新启动后看到部分结果?

为了:

  • 4 或 8 字节movntix86 保证原子用于其他目的?
  • 16 字节 SSE movntdq/movntps不保证原子性,但实际上可能在支持持久内存的 CPU 上。
  • 32 字节 AVX vmovntdq/vmovntps
  • 64 字节 AVX512 vmovntdq/vmovntps全线商店
  • 奖励问题:MOVDIR64B在支持它和 DC-PM 的未来 CPU 上保证了 64 字节写入原子性。例如Sapphire Rapids Xeon / Tiger Lake / Tremont

movntpd假定与 相同movntps


相关问题:

sse x86-64 atomic cpu-architecture persistent-memory

5
推荐指数
1
解决办法
243
查看次数

(持久性)将英特尔非临时存储排序到同一缓存行

由同一线程发出的对同一缓存行的非临时存储(例如 movnti)是否按程序顺序到达内存?

那么,对于具有 NVRAM 的系统(例如具有 Intel 3D XPoint NVRAM 的 Intel Cascade Lake 处理器),在崩溃的情况下,缺乏重新排序可以保证写入同一缓存行的前缀优先吗?

x86 cpu-architecture memory-barriers persistent-memory

5
推荐指数
1
解决办法
336
查看次数