这是一个纯粹的概念问题。为什么OS没有切换任何时候从未被占用的分支?动态分支预测仅适用于过去采用的分支,而静态分支预测在某些情况下才是正确的。如果分支上没有数据,则操作系统和处理器似乎应该开始将单独的任务放入流水线,而不是盲目猜测分支。然后,您可以计算分支的结果,并在原始任务再次计划时执行该分支。下次遇到分支时,处理器可以使用动态预测。每当发生未知分支时,操作系统为什么不安排新的任务?
这个方法没有被使用的原因吗?或者它被使用,我只是不知道?
这是一个纯粹的概念问题。为什么OS没有切换任何时候从未被占用的分支?动态分支预测仅适用于过去采用的分支,而静态分支预测在某些情况下才是正确的。如果分支上没有数据,则操作系统和处理器似乎应该开始将单独的任务放入流水线,而不是盲目猜测分支。然后,您可以计算分支的结果,并在原始任务再次计划时执行该分支。下次遇到分支时,处理器可以使用动态预测。每当发生未知分支时,操作系统为什么不安排新的任务?
这个方法没有被使用的原因吗?或者它被使用,我只是不知道?
与仅执行分支相比,上下文切换的开销非常高。
这就是为什么SMT - simultanions多线程被发明的原因,而一个线程与其分支错开预测,同一个核心上的其他线程可能会前进。
新的Power处理器,甚至对每个核心8个硬件线程,以确保在
我不太熟悉调度程序的工作原理。开销是否由于必须将处理器配置为正确的状态以恢复其他任务而产生? – master565
处理器必须保存进程(或线程)的完整状态,这意味着定义状态的所有寄存器。然后它必须为新任务加载寄存器。这相当于20-30个移动指令。 – user3344003
这很有道理。我想唯一可能的方式是值得的,如果你有一个疯狂的大型流水线,比上下文切换开销更大的清理开销。感谢你的回答! – master565