gpt4 book ai didi

c++ - 什么是原子变量上下文中的总线锁定?

转载 作者:搜寻专家 更新时间:2023-10-31 00:55:01 25 4
gpt4 key购买 nike

我使用 C++ 很长时间了,现在我开始学习汇编和处理器的工作原理(不只是为了好玩,但我必须作为测试程序的一部分)。在学习汇编时,我开始听到一些在讨论多线程时在这里和那里听到的术语,因为我在科学计算中做了很多多线程。我正在努力了解全貌,如果能帮助我拓宽视野,我将不胜感激。

我了解到最简单形式的公共(public)汽车类似于 multiplexer followed by a demultiplexer .每个端点都将一个地址作为输入,以便将两端与某个外部组件连接起来。根据地址,两端可以指向内存、显卡、RAM、CPU 寄存器或任何其他内容。

现在开始我的问题:我一直听到人们争论是否使用互斥体或原子来保证线程安全(我知道没有最终答案,这不是我的问题,但我的问题是关于比较) . Here例如,有人声称原子非常糟糕,因为总线锁定,它们会阻止处理器完成正常工作。

有人可以详细解释一下什么是总线锁定,以及为什么它不像互斥体,而据我所知,互斥体至少需要两个原子操作来锁定和解锁。

最佳答案

来自英特尔® 64 位和 IA-32 架构软件开发人员手册:

Beginning with the P6 family processors, when the LOCK prefix is prefixed to an instruction and the memory area being accessed is cached internally in the processor, the LOCK# signal is generally not asserted. Instead, only the processor’s cache is locked. Here, the processor’s cache coherency mechanism ensures that the operation is carried out atomically with regards to memory.

有特殊的非临时存储指令可以绕过缓存。所有其他加载和存储通常都通过缓存,除非内存页面被标记为不可缓存(如 GPU 或 PCIe 设备内存)。

关于c++ - 什么是原子变量上下文中的总线锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43365382/

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