Fig. 10. Control part to compute weighted averages with multiply subroutine of Fig. 4.
make this design alternative easily available, since in general when the subsystem is large or used in many different places, subroutining is preferred. The Ksubroutine permits the nesting of subroutines to any level. However, it does not permit recursive subroutines, that is, subroutines that call themselves or call other subroutines that call them. In this respect the Ksubroutine is exactly parallel to its software counterpart in some programming languages, the conventional subroutine-call instruction, differing only in that its control is in unique hardware and that the subroutine is hardware rather than a program.
We used subroutines above in response to a concern with using too much hardware, giving up a small amount of operating speed. But our concern might not be with hardware cost at all. Instead, we might wish the algorithm of Figure 7 to run as fast as possible and are prepared to use additional hardware. One choice, of course, is simply not to use the subroutines, but to use the original implementation with macros (Figure 9). However, as we just noticed, this helps only a little.
121