分支预测会导致非法指令吗?

mto*_*ssi 11 assembly x86-64 cpu-architecture branch-prediction

在以下伪代码中:

if (rdtscp supported by hardware) {
    Invoke "rdtscp" instruction
} else {
    Invoke "rdtsc" instruction
}
Run Code Online (Sandbox Code Playgroud)

假设CPU不支持该rdtscp指令,因此我们回退到else语句.

如果CPU错误预测分支,指令管道是否可能尝试执行rdtscp并抛出Illgal Instruction错误?

Han*_*ant 15

在英特尔处理器手册第3A卷第6.15章中明确记录了#UD陷阱(无效操作码执行):

在实现无序执行微体系结构的Intel 64和IA-32处理器中,在尝试退出执行无效指令的结果之前,不会生成此异常.也就是说,解码和推测性地尝试执行无效操作码不会产生此异常.同样,在奔腾处理器和早期的IA-32处理器中,由于对无效指令进行预取和初步解码,因此不会生成此异常.