在 x86-64 上,“movnti”指令是原子指令吗?

2024-04-13

在 x86-64 CPU(Intel 或 AMD)上,将 4/8 字节写入 32/64 位对齐地址的“movnti”指令是原子的吗?


Yes, movnti在自然对齐的地址上是原子的,就像 x86 上所有其他自然对齐的 8/16/32/64b 存储(和加载)一样 https://stackoverflow.com/questions/36624881/why-is-integer-assignment-on-a-naturally-aligned-variable-atomic/36685056#36685056。无论内存类型如何(写回、写组合、不可缓存等),这都适用。请参阅该链接以了解 Intel x86 手册中的保证措辞。

请注意,原子性与内存排序是分开的。普通的 x86 存储是发布商店 https://stackoverflow.com/questions/12346487/what-do-each-memory-order-mean运营方面,movnt店却“轻松”。

有趣的事实:32 位代码可以使用 x87 (fild/fistp) 或 SSE/MMXmovq执行原子 64 位加载/存储。海湾合作委员会的std::atomic实施实际上就是这样做的。只有 SSE 访问大于 8B(例如movaps or movntps16B/32B/64B 向量存储)不保证原子性。 (即使 16B 操作在某些硬件上也是原子操作,但没有标准方法来检测这一点)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 x86-64 上,“movnti”指令是原子指令吗? 的相关文章

随机推荐

  • 垂直对齐:基线在 Chrome 中不起作用

    老实说 我有一个非常愚蠢的问题 不管怎样 就到这里吧 我一直在尝试使用垂直对齐 基线 这本身就起作用 问题是它可以在 IE 和 Firefox 中运行 我的问题是 由于某些奇怪的原因 它在 Chrome 中不起作用 chrome 中问题的屏
  • 正则表达式用标签包装文本[重复]

    这个问题在这里已经有答案了 我需要一个 JavaScript 正则表达式来包装 hashtags span tags Example 之前 我需要 help 请 Thanks 之后 我需要 span help span 请 span Tha
  • Spring Boot 注解 @GetMapping 无法解析为类型

    我第一次尝试在本地计算机上从 Spring Initializr 创建 Spring 项目 但我收到这些错误 GetMapping 无法解析为类型 我的 pom xml 文件
  • C++ 可变参数模板 匹配任何类型参数的模板实参

    我想知道是否可以编写一个模板函数 该函数可以将任何其他任意模板作为参数并正确匹配模板名称 即不仅仅是结果类 我所知道的工作是这样的 template
  • 如何围绕 WPF 中的特定点旋转、平移和缩放控制对象

    我有一个自定义的控件 它是一个矩形 里面有一些细节 但它是一个矩形 我有一个中心点 X Y 我称之为 重心 它 代表 该点 这意味着当我为对象设置新位置时 我希望该点位于设置的位置 当我旋转对象时 我需要它围绕该点旋转 当我缩放对象时 该点
  • 我应该在 MVP(或 VM)中对我的视图进行单元测试,或者如何将视图中的代码保持在最低限度?

    我在应用程序中使用模型 视图 表示模型 我想知道是否需要为视图创建单元测试 我使用的是 net 2 0 WinForms 现在 通常视图应该非常简单 以至于没有必要为其创建单元测试 至少这是我从视图与表示模型 PM 分离的目标中得到的想法
  • Ruby 中的大乘法输出结果为负

    我写了一些代码 应该对 1 sum 0 1 1000 each do n sum n n puts n n sum sum end 由于某种原因 在数字 28 之后输出为负值 n 29 sum 20154009777005735238923
  • 在表单视图中设置当前日期

    我想将当前日期放入表单视图 dateadded 中 但当我将其加载到浏览器中时它没有显示 我正在使用后台代码 但如何显示日期和时间 这是我后面的代码 using System using System Collections Generic
  • ShaderEffectItem 的奇怪 alpha 混合结果

    我正在尝试使用以下方法在 QML 项目上应用简单的 alpha 蒙版ShaderEffectItem 这是一个最小的 非 工作示例 我有一个从红到白的渐变作为背景 并且想要在其顶部绘制一个绿色的 200x200 正方形 该正方形的 alph
  • 使用 Java 通过访问者模式从 AST 构建控制流图

    我试图弄清楚如何实现我的 LEParserCfgVisitor 类 以便从已使用 JavaCC 生成的抽象语法树构建控制流图 我知道已经存在一些工具 但我正在尝试这样做 为我的编译器期末考试做准备 我知道我需要一个将图形保存在内存中的数据结
  • 重定向 stdio 时 Linux BASH 内存泄漏

    我有内存泄漏某处 但它似乎与我的程序无关 我做出这个大胆的声明是基于这样一个事实 一旦我的程序终止 无论是通过正常方式 段错误还是中止 内存都不会恢复 如果我的程序是罪魁祸首 我会认为 MMU 会恢复所有内容 但情况似乎并非如此 仅当我将
  • 如何在javascript中编写json文件

    好的 我正在使用 js 编写一个 Web 操作系统 我使用 JSON 作为文件系统 我已经在网上寻找有关 JSON 内容的教程大约一周了 但我找不到任何有关从网页编写 JSON 文件的内容 我需要在文件中创建新对象 而不是更改现有对象 到目
  • 缺少 mingwm10.dll

    我正在使用 Qt Creator 编写一个 C 项目 一切工作正常 调试 发布 但是当我直接运行编译后的 exe 转到 exe 文件并运行它 时 它说 mingwm10 dll 丢失 对于这个问题我能做什么 您可以执行以下操作 as cha
  • 本地主机上使用 DotNetOpenAuth 的 OpenID 提供程序

    我在本地运行 DotNetOpenAuth 示例提供程序 它似乎可以通过 Web 浏览器正确处理请求 我可以在调试器中单步执行授权处理程序 我有一个项目可以通过 Google 和其他提供商进行身份验证 但无法通过示例提供商进行身份验证 示例
  • 使用 VBA 将唯一编号添加到 Excel 数据表

    我有两列数字 它们在一起将是唯一的 复合键 我想创建一个唯一的 ID 号 第三列 类似于 MS Access 使用主键的方式 我想在 VBA 中执行此操作 但我不知道如何执行此操作 我的 Excel 中的 VBA 不太好 所以希望您能看到我
  • iOS NSBlock的NSMethodSignature(或编码)

    我需要一种方法来在运行时检查给定块的参数数量和参数类型 我当前正在编写的某些对象映射库需要这个 我将字符串格式的值映射到选择器 希望块也如此 我尝试了下面示例中的代码 但由于某种原因它对我不起作用并且返回 nil 字符串描述 你知道一种在运
  • 如何在 Ubuntu 中注册文件关联

    我正在创建 Ubuntu 安装程序 我需要注册自己的文件扩展名 但我找不到任何有关如何执行此操作的示例 人们可以为我提供一些关于如何执行此操作的脚本片段吗 注意 我正在使用安装干扰器 http www installjammer com 帮
  • 带有heredocs的Python子进程

    我正在使用 Python 的子进程模块 尝试了一些示例 但我似乎无法让 Heredoc 语句发挥作用 这是我正在玩的一个简单的例子 import subprocess a A String of Text p subprocess Pope
  • 转换回原始类时出现 ClassCastException 错误

    我有以下代码 public void doJob MyObj s for Object o MyObj all fetch s MyObj o ClassCastException here if s fileExists Do some
  • 在 x86-64 上,“movnti”指令是原子指令吗?

    在 x86 64 CPU Intel 或 AMD 上 将 4 8 字节写入 32 64 位对齐地址的 movnti 指令是原子的吗 Yes movnti在自然对齐的地址上是原子的 就像 x86 上所有其他自然对齐的 8 16 32 64b