gpt4 book ai didi

windows - 程序计数器、栅栏和处理器重新排序

转载 作者:行者123 更新时间:2023-12-05 09:04:46 25 4
gpt4 key购买 nike

我了解除了编译器之外,处理器还可以对指令进行重新排序。

我有几个问题想不通。

假设我们有三个指令:

程序顺序

S1S2S3

在处理器重新排序后,顺序变为(无论出于何种原因):

S3S2S1

  • 那么当处理器执行 S1(按程序顺序)时,程序计数器的值是多少?
  • 如果 Windows(或其他操作系统)上下文切换线程并将其调度到另一个处理器中,另一个处理器如何知道接下来要执行哪条指令? (是否保证进行相同的重新排序?)
  • 一个处理器上的内存栅栏(例如,由原子比较和交换指令创建的完整栅栏)在一个线程被调度到另一个线程后是否有效?

非常感谢任何关于此的想法。

最佳答案

  1. 每条指令都有一个指令指针。

  2. 尽管指令可能会乱序执行,但它们总是按顺序完成。当发生中断或故障时,保存的IP地址之前的所有指令都已完成。任何后续指令的结果都将被丢弃。当执行恢复时,它从保存的地址开始。

  3. 操作系统在另一个处理器上安排线程所采取的步骤包括在两个处理器上进行隔离操作,因此当线程在新处理器上恢复时,所有之前的操作都被完全隔离(无论是否存在任何显式隔离在线程的代码中)。

关于windows - 程序计数器、栅栏和处理器重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68242264/

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