←back to thread

170 points judicious | 3 comments | | HN request time: 0.001s | source
Show context
adrianmonk ◴[] No.45406878[source]
I've always wondered if any CPUs have tried to reduce the branch penalty by speculatively executing both ways at once in parallel. You'd have two of everything (two pipelines, two ALUs, two sets of registers, etc.) and when you hit a conditional branch, instead of guessing which way to go, you'd essentially fork.

Obviously that requires a lot of extra transistors and you are doing computation that will be thrown away, so it's not free in terms of space or power/heat/energy. But perhaps it could handle cases that other approaches can't.

Even more of a wild idea is to pair up two cores and have them work together this way. When you have a core that would have been idle anyway, it can shadow an active core and be its doppelganger that takes the other branch. You'd need to have very fast communication between cores so the shadow core can spring into action instantly when you hit a branch.

My gut instinct is it's not worth it overall, but I'm curious whether it's been tried in the real world.

replies(8): >>45406919 #>>45406924 #>>45406951 #>>45407369 #>>45407535 #>>45409791 #>>45410325 #>>45418414 #
1. jasonwatkinspdx ◴[] No.45407535[source]
Yes, it's been looked at. If you wanna skim the research use "Eager Execution" and "Disjoint Eager Execution" as jumping off points.

It doesn't require duplicating everything. You just need to add some additional bookkeeping of dependencies and what to retire vs kill at the end of the pipeline.

In practice branch predictors are so good that speculating off the "spine" of most likely path just isn't worth it.

In fact there were a lot of interesting microarchitectural ideas from the late 90s to early 00s that just ended up being moot because the combination of OoO speculation, branch predictors, and big caches proved so effective.

replies(1): >>45410526 #
2. adastra22 ◴[] No.45410526[source]
I think you’re missing the context: that good branch prediction is what causes these security holes. “Wasteful” multi path execution is a security feature.
replies(1): >>45433489 #
3. jasonwatkinspdx ◴[] No.45433489[source]
No, security vulnerabilities are orthogonal. There's nothing about branch prediction that necessitates leaking information, as demonstrated by the fixes shipped in current processors.