C中的switch语句是否清空了x86管道?

Jer*_*emy 4 c x86 pipeline switch-statement

在C中命中switch语句(假设它使用跳转表)是否清空了x86处理器的管道?我想它可能是因为它需要表查找的结果来知道接下来要执行的指令.它能否尽早将结果转发回管道不会完全清空?

Ste*_*non 8

跳转表不一定清空管道.在现代处理器上预测间接分支,并且分支预测器比您预期的更好.显然,正确预测的间接分支不会导致失速.

根本不支持分支是优选的,但通常是不可能的(或引入如此多的开销以至于净损失).用一系列条件分支替换跳转表有时是有益的,但前提是替换序列中的分支数量相当小.


Pet*_*son 5

我发现英特尔,AMD和威盛CPU的微体系结构是像你这样的问题的良好来源.