gpt4 book ai didi

c++ - 如何将 Intel TSX 与 C++ 内存模型一起使用?

转载 作者:行者123 更新时间:2023-12-01 12:46:27 34 4
gpt4 key购买 nike

我认为 C++ 还没有涵盖任何类型的事务内存,但 TSX 仍然可以以某种方式将“好像规则”用于由 C++ 内存模型管理的东西。

那么,成功的 HLE 操作或成功的 RTM 事务会发生什么?

说“存在数据竞争,但没关系”并没有多大帮助,因为它没有阐明“正常”的含义。

使用 HLE 可能可以将其视为“前一个操作发生在后续操作之前。好像该部分仍然由被省略的锁保护”。

RTM 是什么?由于甚至没有省略锁,只有(可能是非原子的)内存操作,可能是加载、存储、两者或无操作。什么与什么同步?在什么之前会发生什么?

最佳答案

显然,在进入规范或询问之前,我应该仔细阅读“概述”页面:

Hardware Lock Elision Overview

The hardware ensures program order of operations on the lock, even though the eliding processor did not perform external write operations to the lock. If the eliding processor itself reads the value of the lock in the critical section, it will appear as if the processor had acquired the lock (the read will return the non-elided value). This behavior makes an HLE execution functionally equivalent to an execution without the HLE prefixes.



Restricted Transactional Memory Overview

RTM Memory Ordering

A successful RTM commit causes all memory operations in the RTM region to appear to execute atomically. A successfully committed RTM region consisting of an XBEGIN followed by an XEND, even with no memory operations in the RTM region, has the same ordering semantics as a LOCK prefixed instruction. The XBEGIN instruction does not have fencing semantics. However, if an RTM execution aborts, all memory updates from within the RTM region are discarded and never made visible to any other logical processor.



要完成答案:
LOCK前缀指令映射到 C++ std::memory_order::seq_cst .这涵盖了所有成功的 RTM 交易(就像单个 LOCK 前缀指令)。它还涵盖了大多数 HLE 案例。具体来说:
  • LOCK前缀指令的执行就像它们被执行一样,这意味着 seq_cst
  • XACQUIRE XCHG 也一样/XRELEASE XCHG ,就好像它被执行一样,这意味着 seq_cst
  • 最后,XRELEASE MOV [mem], op好像MOV [mem], op ,所以它只是 release (在 C++ 内存模型的通常实现中,顺序一致存储具有内存栅栏,而不是加载)

  • (文档链接适用于英特尔编译器。然而,它们记录了硬件行为,因此该信息应该适用于其他编译器。编译器可能引入的唯一变量是编译时重新排序。但是,我希望如果编译器实现了固有的,它也实现了正确的重新排序禁止,如果仍然不确定,放置编译器障碍。直接汇编应该相应地标记汇编代码)

    关于c++ - 如何将 Intel TSX 与 C++ 内存模型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61336070/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com