3 ms·
Cool, I love weird architectures. This one has attributes in common with an exposed pipeline - the sort of thing where one instruction writes to a register, the
by JonChesterfield 3y ago
Cool, I love weird architectures. This one has attributes in common with an exposed pipeline - the sort of thing where one instruction writes to a register, then the next 10 cycles can read the stale version from that register, and then the 11th will finally see that value. That's cute from a hardware perspective and deeply confusing to program against. It looks like a register in "straight" is a circular buffer which ticks on instruction execution and a register in "clockhands" is a circular buffer which ticks on writes to the register, which would indeed be a substantial improvement.
This is another variant of statically schedule lots of code ahead of time, moving work from the hardware into the compiler. Works really well if basic blocks contain many instructions and memory latency is known in advance, at least to within tight bounds, and you put enough effort into the compiler.
Traditionally basic blocks are short and memory latency is all over the place, at which point you really want to schedule things at runtime. Hence CPUs and GPUs - both do a load of nominally avoidable work at program runtime. DSP chips and derivatives can sometimes fix memory latency, at which point this sort of static scheduling can be useful, though there's still the ratio of branch to arithmetic to deal with.
As an aside, I'm not convinced by their motivating claim that current processors are power-inefficient. x64 / aarch64 / amdgpu seem to get a lot of maths done per watt.
- formerly_proven 3y ago> As an aside, I'm not convinced by their motivating claim that current processors are power-inefficient. x64 / aarch64 / amdgpu seem to get a lot of maths done per watt. Inefficient in the sense that in a general-purpose high-performance CPU the actual work performed by instructions is practically inconsequential compared to the work performed to manage it's execution.
- vlovich123 3y ago> As an aside, I'm not convinced by their motivating claim that current processors are power-inefficient. x64 / aarch64 / amdgpu seem to get a lot of maths done per watt. Why does getting a lot of math done per watt preclude the possibility of a more efficient design? For example, aarch64 is generally more efficient than x64 from a perf/watt metric and GPUs are more efficient for a subset of problems. It’s not hard to believe that existing CPU architectures do not represent the Pareto frontier. For example, x86’s variable length encoding is known to be substandard from an efficiency perspective because the decode frontend can’t extract as much parallelism as a fixed length / aligned instruction set and in today’s machines that would be more impactful to fix than the memory bandwidth saved by a relatively inefficient compression scheme.