< previous page page_157 next page >

Page 157
Back to the Future
Modern processor designers have been rapidly moving in ways to speed up processor performance. Unfortunately, these methods are largely based upon user state benchmarks and program behavior. At the same time, operating system designers have been moving toward speeding up their programs by creating distributed operating systems partitioned into fine grains of control called threads. Such systems require much more frequent context switching than earlier systems. The added processor state that the designers have included to improve user state performance serves to degenerate systems state performance. All of this has been observed best in a paper by Anderson et al. [20]. They conclude:
Operating systems are being decomposed into kernelized structures with independent servers executing in separate address spaces. These separate address spaces communicate with users and with each other using RPC. At the same time, architectures have made message-based communication (relatively) more expensive because system calls, interrupt handling, and byte copying are (relatively) more expensive.
Operating systems are requiring more use of memory management, at a time when handling memory management events has become more difficult.
Operating systems are moving towards support of fine-grained, multithreaded application programs. At the same time, architectures are adding more processor state, which makes fine-grained threads more expensive.
The net effect of all this can be summarized as follows:
1. Very large register sets such as register windows may limit the performance of a modern operating system (e.g., SPARC).
2. Ideas such as virtual caches, which must be flushed or whose contents are declared invalid on a context switch, can also have a negative effect on overall systems performance (e.g., SPARC implemented in SUN 4).
3. Other hardware ideas such as user-visible out-of-order instruction execution (imprecise interrupts) or software-managed pipeline control are probably equally bad ideas, since they significantly complicate the task of managing traps and context switches (e.g., early MIPS or Intel i860).
In an effort to move away from the slower, cumbersome, and complex instruction set baggage of systems such as VAX and Intel 432, some designers may have lost sight of the value that these instruction sets provided for at least some of the systems support constructs. As the operating system becomes increasingly important in modern systems, and time spent in the system increases as a fraction of total time, these designers may find that they have ''thrown the baby out with the bath water"the performance gained in the user state has been lost in the system state.

 
< previous page page_157 next page >