Stack Computers: the new wave © Copyright 1989, Philip Koopman, All Rights Reserved.
The stack machines reviewed in the earlier chapters represent the first generation of commercially available stack processors. As these machines come into wide use, the designs will be refined to meet market requirements and improve efficiency. The questions addressed in this chapter are: what kinds of refinements are we likely to see, and how will they affect stack machine architectures and applications?
It is too soon to answer all the questions about how stack machines will perform in many different circumstances. There are, however, a number of important topics upon which we can speculate. The opinions and reasoning presented herein may form the basis for further exploration of stack machine concepts. Ideas in this chapter should be taken as speculations, not as proven facts.
Section 9.1 discusses some areas that need to be examined when providing support for conventional programming languages on stack machines. As it turns out, existing stack machine designs handle most of the problems well already.
Section 9.2 discusses the issue of virtual memory and memory protection. Virtual memory support is not found on current stack machines because it is not needed for most of their application areas. Memory protection is also not supported, but will be needed for some applications in the future.
Section 9.3 examines the need for a third stack, and proposes that a memory-resident stack frame can meet the need for a third stack and conventional language support at the same time.
Section 9.4 discusses the impending limits of memory bandwidth, and the history behind the use of memory hierarchies in computers. Stack machines offer a solution to the memory bandwidth problem which is well suited to their important application areas.
Section 9.5 introduces two ideas for stack machine design that are intriguing, but not used in current designs. One idea involves the elimination of conditional branches by using conditional subroutine returns instead. The other idea involves using a stack to hold temporarily assembled programs.
Section 9.6 offers some speculation on the impact of stack machines on computing.
Phil Koopman -- koopman@cmu.edu