11 ms·
It was also kinda awesome because, as long as you were willing to spend days to optimize one page of code, you could get so much performance out of it. Things
by londons_explore 2y ago
It was also kinda awesome because, as long as you were willing to spend days to optimize one page of code, you could get so much performance out of it.
Things like deliberately using the fact that multiplies only write the results into a register ~6 cycles later, means you can use that register for a bunch of other stuff in the meantime, and then on the 6th cycle the results would magically appear.
Basically, for those 6 cycles, you had no registers in-use for either the source operands or destination of the multiplication.
Obviously this is also pipelinable - you can start more multiplies while the first is running, using the same source and destination registers, but meanwhile you've used other instructions to load more data into the inputs and do something else with the outputs.