By: ook (ook.delete@this.oook.com), December 11, 2014 3:31 am
Room: Moderated Discussions
Linus Torvalds (torvalds.delete@this.linux-foundation.org) on December 8, 2014 1:34 pm wrote:
> You won't get scaling for much longer, and current trends are actually for lower power anyway. So what's the
> upside of pushing the whole parallelism snake-oil? We know that we need fairly complex OoO CPU's anyway, because
> people want reasonable performance and it turns out OoO is actually more efficient than slow in-order.
>
I agree in most parts but OoO can be made even more efficient. Future CPUs will likely still be based on OoO but my take would be that increasingly clever compilers add additional hints to the executables that allow the CPU to save power.
Among others I'm thinking of these types of hints:
* resize the (active) instruction window dynamically. If there is not much ILP to gain, don't waste energy searching for it in vain.
* define independent code strands. Present parallel work on the silver tablet.
* define how an efficient loop schedule would look like. Don't waste a couple of loop iterations with a bad schedule.
* flag that a piece of code is not on the critical path to a barrier. Don't waste power for no gain.
Without those hints the CPU would run just as well as today.
Also it might be a good idea to let the CPU evaluate if the hints were worthwhile and ignore them if not. Otherwise old hints in legacy code might actually decrease performance.
Or a versioning system for the hints makes sense and let the CPU decide whether hints originally written for microarchitecture A still make sense on microarchitecture B.
> You won't get scaling for much longer, and current trends are actually for lower power anyway. So what's the
> upside of pushing the whole parallelism snake-oil? We know that we need fairly complex OoO CPU's anyway, because
> people want reasonable performance and it turns out OoO is actually more efficient than slow in-order.
>
I agree in most parts but OoO can be made even more efficient. Future CPUs will likely still be based on OoO but my take would be that increasingly clever compilers add additional hints to the executables that allow the CPU to save power.
Among others I'm thinking of these types of hints:
* resize the (active) instruction window dynamically. If there is not much ILP to gain, don't waste energy searching for it in vain.
* define independent code strands. Present parallel work on the silver tablet.
* define how an efficient loop schedule would look like. Don't waste a couple of loop iterations with a bad schedule.
* flag that a piece of code is not on the critical path to a barrier. Don't waste power for no gain.
Without those hints the CPU would run just as well as today.
Also it might be a good idea to let the CPU evaluate if the hints were worthwhile and ignore them if not. Otherwise old hints in legacy code might actually decrease performance.
Or a versioning system for the hints makes sense and let the CPU decide whether hints originally written for microarchitecture A still make sense on microarchitecture B.