A branch diverged in CPU, | |
And hardware could not follow both. | |
Wasted cycles, nearly fifty-two | |
If pipeline flushed and started anew | |
Thus wasting all the Moore's law growth. | 5 |
This branch is forward, a jump out there | |
Beyond the RAM this cacheline claimed | |
Into the void where pointers dare. | |
In contrast the fallthrough is fair; | |
Wanting to follow cannot be blamed. | 10 |
But a context switch recently gave | |
The predictor an untrained state. | |
Taking the branch could be too brave - | |
Only the compiler our skin can save - | |
With wise decisions so we will not wait. | 15 |
Hopefully seen as the right thing to do | |
Somewhere cycles and cycles hence: | |
A branch diverged, and the CPU | |
Predicted it not-taken | |
And that has made all the difference | 20 |
- at least on the SPECint benchmarks. |