gpt4 book ai didi

cpu-architecture - 多处理器 CPU 可以避免上下文切换吗?

转载 作者:行者123 更新时间:2023-12-04 08:33:38 24 4
gpt4 key购买 nike

当今的计算机体系结构都在努力使寄存器的数量最大化。访问寄存器(它是cpu附近的集成内存电路)比访问一级缓存更快。问题是,每个上下文切换都必须将所有寄存器保存到缓存中,因为下一个线程需要其他寄存器值。现代 CPU 正在做的是在一秒内循环执行 100 个任务,每次它保存寄存器,并获取旧的直到任务可以开始。

恕我直言,将一个 CPU 用于一项任务会很好,并且不会发生上下文切换。这意味着我们有 100 个 CPU,每 1000 个寄存器必须永远不会被保存。这是可能的还是我忽略了一个重要的细节?

最佳答案

完全避免上下文切换的唯一方法是至少拥有与任务一样多的内核。通常,无法保证可以运行的最大任务数。当前的 GPU 和众核处理器以及协处理器包含数百个小内核。如果将这些东西中的多个放在同一个系统或系统集群中,则可以拥有数千个或更多的核心。尽管如此,即使您可以通过这种设计避免上下文切换,这些内核也比传统的高端 CPU 内核慢得多,因此最终效果可能是负面的。

但让我们退后一步。上下文切换的数量主要不是由任务和内核的数量决定的。任务不只是执行计算,它们还需要与 I/O 设备交互并等待其他任务或用户输入的结果等事情发生。所以有些任务会处于等待状态。上下文切换的开销不仅取决于任务的数量,还取决于这些任务的行为。

处理器架构师和操作系统开发人员都知道上下文切换开销,并采用各种技术来减轻它。例如,x86 提供了许多指令,这些指令被调整为保存当前任务的上下文(部分)。操作系统线程调度程序使用诸如优先级、抢占(服务器上可能有大量时间片)和优先级提升等技术。所有这些都有助于减少上下文切换的次数,从而减少它们的总体开销。此外,减少上下文切换的开销并不是唯一重要的事情。特别是,系统的响应能力也非常重要,这与开销不符。

关于cpu-architecture - 多处理器 CPU 可以避免上下文切换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49655845/

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