gpt4 book ai didi

multithreading - 原子操作是否总是在同一个 CPU 周期内按顺序执行?

转载 作者:行者123 更新时间:2023-12-04 06:52:01 26 4
gpt4 key购买 nike

如果我有一些像这样的简单非原子代码:

a++;

可以分解为如下机器指令:

MOV EAX, [a]
INC EAX
MOV [a], EAX

我不熟悉机器代码,如果不正确请原谅,但基本上假设它们是自动执行的

我认为 CPU 可以执行第一个 Action ,然后运行多个循环,然后执行下一个 Action ,更多的循环,最后是机器代码的最后一部分,我的想法是否正确?

相对于在同一周期内按顺序彼此执行机器代码的每一位。

最佳答案

在现代 x86/x64 处理器上,您甚至不能假设单个架构指令映射到单个 CPU(机器)指令。现代 CPU 通常在内部将 x86/x64 指令实现为一系列特定于体系结构的微码指令。由于乱序执行、推测执行等原因,这些执行的顺序不会以任何简单的方式映射到它们在可执行文件中出现的顺序。CPU 时钟周期和执行的指令数之间也没有简单的映射.

最重要的是,对于多线程代码,您的线程可能会随时进行上下文切换,因此在执行的任何两条指令之间可能会发生任意长的延迟和任意其他操作。

在现代多线程环境中获得逻辑原子性的唯一方法是使用架构提供的适当的原子和同步指令,这些指令不仅在指令级别而且在整个内存层次结构(L1、L2、L3 缓存)中保证原子行为和主内存,加上存储缓冲区等)。

关于multithreading - 原子操作是否总是在同一个 CPU 周期内按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601701/

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