gpt4 book ai didi

multithreading - 多核处理器的关键部分

转载 作者:行者123 更新时间:2023-12-03 11:23:40 26 4
gpt4 key购买 nike

使用单核处理器,其中所有线程都从一个 CPU 运行,使用原子测试和设置操作对内存中的某些互斥锁(或信号量等)实现临界区的想法似乎很简单;因为您的处理器正在从程序中的一个位置执行测试和设置,所以它必然不能从程序中伪装成其他线程的另一个位置执行测试和设置。

但是,当您确实拥有多个物理处理器时会发生什么?似乎简单的指令级原子性是不够的,b/c 有两个处理器可能同时执行它们的测试和设置操作,你真正需要保持原子性的是访问共享内存位置互斥体。 (如果共享内存位置被加载到缓存中,那么整个缓存一致性问题也需要处理......)

这似乎比单核案例会产生更多的开销,所以这里是问题的核心:它有多糟糕?情况更糟吗?我们只是忍受它吗?或者通过强制执行一个进程组中的所有线程必须位于同一个物理核心上的策略来回避它?

最佳答案

多核/SMP 系统不仅仅是将几个 CPU 粘合在一起。明确支持并行处理。所有同步原语都是在硬件的帮助下按照 atomic CAS 实现的。 .该指令要么锁定 CPU 和内存 Controller (以及执行 DMA 的设备)共享的总线并更新内存,要么仅更新依赖于 cache snooping 的内存。 .这反过来导致 cache coherency强制所有相关方刷新他们的缓存的算法。免责声明 - 这是非常基本的描述,这里有更多有趣的东西,如虚拟与物理缓存、缓存回写策略、内存模型、围栏等。

如果您想了解有关操作系统如何使用这些硬件设施的更多信息 - 这里是 an excellent book就此主题而言。

关于multithreading - 多核处理器的关键部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/980521/

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