This thread is currently discussing the topic:
Performance boost of Speculative Execution: what's the speedup? (Spectre-related discussion)
-- additional details are in the post #16 --
Original Post:
Title: Speculative Execution and Branch Prediction
I'm starting this thread to discuss whether branch prediction must include speculative execution, and whether it is a form of speculative execution.
Post your opinions backed up by facts and explanations.
I'll start out with my opinion:
Branch prediction does not necessarily involve Speculative execution, as is demonstrated by the fact that Pentium and Pentium MMX series of CPUs have branch prediction, but they don't have speculative execution.
Furthermore, branch prediction is not a form of speculative execution. The word "execution" in speculative execution refers to the actual execution stage of the CPU. Branch prediction can be simply used to fill the pipeline UP TO the execution stage, and in that case the branch prediction is not a form of speculative execution. In such a case, the branch prediction is just like an enhanced instruction prefetcher.
Otherwise, we would need to also say that instruction prefetching is a form of speculative execution, because, well, the instruction prefetcher can also make a miss. But we don't say that instruction prefetching is a form of specualtive execution, therefore, the branch prediction is also not a form of speculative execution.
I'll add more facts and explanations as necessary.
What is your opinion?
Performance boost of Speculative Execution: what's the speedup? (Spectre-related discussion)
-- additional details are in the post #16 --
Original Post:
Title: Speculative Execution and Branch Prediction
I'm starting this thread to discuss whether branch prediction must include speculative execution, and whether it is a form of speculative execution.
Post your opinions backed up by facts and explanations.
I'll start out with my opinion:
Branch prediction does not necessarily involve Speculative execution, as is demonstrated by the fact that Pentium and Pentium MMX series of CPUs have branch prediction, but they don't have speculative execution.
Furthermore, branch prediction is not a form of speculative execution. The word "execution" in speculative execution refers to the actual execution stage of the CPU. Branch prediction can be simply used to fill the pipeline UP TO the execution stage, and in that case the branch prediction is not a form of speculative execution. In such a case, the branch prediction is just like an enhanced instruction prefetcher.
Otherwise, we would need to also say that instruction prefetching is a form of speculative execution, because, well, the instruction prefetcher can also make a miss. But we don't say that instruction prefetching is a form of specualtive execution, therefore, the branch prediction is also not a form of speculative execution.
I'll add more facts and explanations as necessary.
What is your opinion?
Last edited: