When you encounter a biased-taken branch that isn't currently being tracked by the machine, you're always condemned to pay the cost of a misprediction because the default prediction is "not-taken". The hinting here is supposed to indicate "when encountering this branch, don't predict not-taken by default."
Were there a lot of idle/no-op stages for simple instructions? Or did most instructions, even simple ones, actually get some useful work done for each of those 32ish stages?
One of the things that the BOLT post-link optimizer does is rearrange basic blocks to reduce taken forward branches, based on the profiles.
I have absolutely no idea how important that it. But there exist that bit of extra complication on the real world.
That is, the stuff that will go into a retry of something likely has far more setup than your typical hot loop.
Same for branch delays slots.
[1]: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index...
https://en.cppreference.com/w/cpp/language/attributes/likely
Now the execution of both sides of a branch is basis for the 'Specter' side-channel attack. Access restricted data in the false branch, data access still happen even though it was restricted.
That is essentially impossible to prevent and disabling it killed a lot of cpu performance, branch hints might be the next best thing.
By all accounts of Spectre I've seen, the processor never tries to speculate both sides of the branch. Instead, it always predicts one side of the branch, and speculatively executes that side only: when it later turns out to have been a misprediction, it rolls back the speculative execution, and proceeds to execute the other side from scratch. Both sides are executed at some point, but not simultaneously.
Also, I don’t think executing both sides of a branch ever took off on any mainstream CPUs (unless Itanium counts). It wastes power to spend half your execution units on things that won’t be committed, why not use them on the other hyperthread instead?
Now, everyone gets five fingers and a thumb, as requested.
The article points out specific use of specific techniques to probe cache and other efficiencies, which is valuable.
It's a fun play on the idea of a productivity enhancer. AI - the extra fingers or hand - does well to spare me effort, I just think productivity may not be the right way to look at things
Huh? Who?