【发布时间】:2021-09-15 09:59:14
【问题描述】:
我了解,除了编译器之外,处理器还可以对指令重新排序。
我有几个想不通的问题。
假设我们有三个指令:
节目顺序
S1 S2 S3
在处理器重新排序后,顺序变为(无论出于何种原因):
S3 S2 S1
- 那么当处理器执行 S1(按程序顺序)时,程序计数器的值是多少?
- 如果是 windows(或其他操作系统),上下文切换线程并将其调度到另一个处理器中,另一个处理器如何知道接下来要执行哪条指令? (是否保证重新订购相同的产品?)
- 一个处理器上的内存栅栏(例如,由原子比较和交换指令创建的完整栅栏)在线程被调度到另一个线程后是否有效?
对此的任何想法都非常感谢。
【问题讨论】:
标签: windows assembly x86-64 cpu-architecture memory-barriers