In an earlier paper [Topham, Omondi, and Ibbet 1988] we reviewed conventional approaches to the design of conventional pipelined architectures and concluded that the underlying limitations of these techniques necessitate radical alternatives. This paper discusses one such alternative, micromultiprogramming, and examines several implementation proposals based on this approach. The weaknesses of these proposals are highlighted, and it is argued that they can be eliminated within the unifying theory of context flow architectures. Implementations of uniprocessor and multiprocessor context flow architectures are considered.
MicromultiprogrammingFor many years multiprogramming has been used as a technique for optimizing the utilization of a shared CPU and for providing an interactive multiuser capability. To get reasonable utilization, the time slice allocated to each process must be large in comparison with the time taken to change context. Therefore, multiprogramming at the operating system level is useful only for reducing inefficiencies caused by relatively severe discontinuities, typically I/O and memory management.However, there are discontinuities with much finer levels of granularity than this [Topham, Omondi, and Ibbett 1988]. For example, when an instruction within a pipeline needs an operand from main store, a pipeline discontinuity normally occurs. The latency associated with this discontinuity is typically of the order of several clock periods, and frequent operand accesses result in poor performance. It is often impossible to continue processing instructions from the same instruction stream when this happens, and so an alternative strategy must be adopted.One strategy that has been suggested, and used in at least one commercial machine, is micromultiprogramming. This is based on a recognition of the fact that a highlatency memory cycle and a high-latency I/O operation are simply two examples of 29