Software datapaths and pipelines - page 2 Suppose we want to do this computation in a loop on arrays of numbers, like this: for i = 1 to 1000, do: C = 10*sqrt( A + B ) + 17; i i i So now suppose we have three memories: A, B, and C, all 1000 words long. We could implement the WIZ code almost exactly as we did before, but with auto-incrementing memory indexes. First the setup: 1 => A index ; 1 => B index ; 1 => C index ; -999 => counter Then we would run this sequence: A , B => adder1 adder1 => squareRooter // wait here for adder1 (10) => multiplier squareRooter => multiplier // wait here for squareRooter (17) => adder2 multiplier => adder2 // wait here for multiplier adder2 => C // wait here for adder2 counter => repeat This is the exact same code as on the previous page, with the addition of the setup and the last line to repeat it. It will iterate 1000 times, and each iteration will take just as long as before, the sum of the delays of all four devices.