相关疑难解决方法(0)

为什么 Ice Lake 没有像 tremont 那样的 MOVDIRx?他们已经有更好的了吗?

我注意到英特尔Tremont有 64 字节的存储指令,带有MOVDIRIMOVDIR64B
这些保证原子写入内存,而不保证加载原子性。此外,写入是弱排序的,可能需要紧跟其后的防护。
MOVDIRx在 IceLake 中找不到。

为什么冰湖不需要这样的指令MOVDIRx

(在第 15 页底部)
英特尔® 架构指令集扩展和未来功能编程参考
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference .pdf#page=15

x86 assembly intel instruction-set cpu-architecture

6
推荐指数
1
解决办法
624
查看次数

系统崩溃时 clflush 或 clflushopt 是原子的吗?

通常,缓存行是 64B,但非易失性内存的原子性是 8B。

例如:

x[1]=100;
x[2]=100;
clflush(x);
Run Code Online (Sandbox Code Playgroud)

x缓存行对齐,并且最初设置为0

系统崩溃 clflush();

是否有可能x[1]=0x[2]=100重新启动后?

c x86-64 intel atomicity persistent-memory

5
推荐指数
2
解决办法
286
查看次数

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

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

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

x86 cpu-architecture memory-barriers persistent-memory

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