Difference between revisions of "Speculation"
(create) | |||
Line 4: | Line 4: | ||
Speculation is one of the few areas where the Mill favours higher energy consumption, because the performance gains are so great. Unneeded computation still costs energy, but since the Mill architecure is very wide issue and has a lot of functional units, it can exploit a lot of instrucion level parallelism. It saves time. In general purpose code the problem usually is to find that much <abbr title="Instruction Level Parallelism">ILP</abbr>, because there are so many branches. Most branches only exist to avoid unwanted side effects under certain circumstances. | Speculation is one of the few areas where the Mill favours higher energy consumption, because the performance gains are so great. Unneeded computation still costs energy, but since the Mill architecure is very wide issue and has a lot of functional units, it can exploit a lot of instrucion level parallelism. It saves time. In general purpose code the problem usually is to find that much <abbr title="Instruction Level Parallelism">ILP</abbr>, because there are so many branches. Most branches only exist to avoid unwanted side effects under certain circumstances. | ||
− | The Mill has devised a few ways to avoid the unwanted side effects, which means | + | The Mill has devised a few ways to avoid the unwanted side effects, which means far fewer of the branches in a program are hard barriers to <abbr title="Instruction Level Parallelism">ILP</abbr>. [[Phasing]] is one of the ways. Software [[Pipelining]] of loops also makes extensive use of the <abbr title="Not a Result">NaR</abbr> and the None [[Metadata]] tags for this purpose. |
Speculation increases <abbr title="Instruction Level Parallelism">ILP</abbr> across branch boundaries independently of loops. <abbr title="Not a Result">NaR</abbr> and None and [[Instruction_Set/Pick|pick]] enable if-conversion on a massive scale on the Mill, removing branches altogether from the code by utilizing (meta)data flow instead of control flow. And even without [[Instruction_Set/Pick|pick]] but with condition-coded parallel branches the ILP is massively increased. | Speculation increases <abbr title="Instruction Level Parallelism">ILP</abbr> across branch boundaries independently of loops. <abbr title="Not a Result">NaR</abbr> and None and [[Instruction_Set/Pick|pick]] enable if-conversion on a massive scale on the Mill, removing branches altogether from the code by utilizing (meta)data flow instead of control flow. And even without [[Instruction_Set/Pick|pick]] but with condition-coded parallel branches the ILP is massively increased. |
Revision as of 19:15, 5 August 2014
Rationale
Speculation is one of the few areas where the Mill favours higher energy consumption, because the performance gains are so great. Unneeded computation still costs energy, but since the Mill architecure is very wide issue and has a lot of functional units, it can exploit a lot of instrucion level parallelism. It saves time. In general purpose code the problem usually is to find that much ILP, because there are so many branches. Most branches only exist to avoid unwanted side effects under certain circumstances.
The Mill has devised a few ways to avoid the unwanted side effects, which means far fewer of the branches in a program are hard barriers to ILP. Phasing is one of the ways. Software Pipelining of loops also makes extensive use of the NaR and the None Metadata tags for this purpose.
Speculation increases ILP across branch boundaries independently of loops. NaR and None and pick enable if-conversion on a massive scale on the Mill, removing branches altogether from the code by utilizing (meta)data flow instead of control flow. And even without pick but with condition-coded parallel branches the ILP is massively increased.
Media
Presentation on Metadata and Speculation by Ivan Godard - Slides