x86_64 有一条指令movdir64b
,据我了解,它是 64 字节(缓存行)的非临时副本(嗯,至少存储是)。AArch64 似乎有一个类似的指令st64b
,它执行相同大小的原子存储。但是,官方 ARMv9 文档并不清楚 是否st64b
也是非临时存储。
英特尔的指令集参考文档movdir64b
要详细得多,但我的研究还远远不够,无法完全理解每种内存类型协议代表什么。
从到目前为止我可以推断出的, x86_64 指令movntdq
大致相当于stnp
,并且是写组合。从那看来,似乎movdir64b
就像一个原子商店中的四个,因此我猜测st64b
.
这几乎可以肯定是对实际情况的过度简化(当然,可能是错误的/不准确的),但这是迄今为止可以推断的。
以这种方式可以st64b
将其用作四个stnp
指令的原子序列作为缓存行的非临时写入吗?