Stack Computers: the new wave © Copyright 1989, Philip Koopman, All Rights Reserved.
Chapter 1. Introduction and Review
Hardware supported Last In First Out (LIFO) stacks have been used on computers since the late 1950's. Originally, these stacks were added to increase the execution efficiency of high level languages such as ALGOL. Since then they have fallen in and out of favor with hardware designers, eventually becoming incorporated as a secondary data handling structure in most computers. To many a stack advocate's dismay, computers that use hardware stacks as their primary data handling mechanism never really found the wide acceptance enjoyed by register-based machines.
With the introduction of Very Large Scale Integration (VLSI) processors, conventional methods of computer design are being questioned once again. Complex Instruction Set Computers (CISCs) have evolved into complicated processors with comprehensive instruction sets. Reduced Instruction Set Computers (RISCs) have challenged this approach by using simplified processing cores to achieve higher raw processing speeds for some applications.
Once more the time has come to consider stack machines as an alternative to other design styles. New stack machine designs based on VLSI design technology provide additional benefits not found on previous stack machines. These new stack computers use the synergy of their features to attain an impressive combination of speed, flexibility, and simplicity.
Stack machines offer processor complexity that is much lower than that of CISC machines, and overall system complexity that is lower than that of either RISC or CISC machines. They do this without requiring complicated compilers or cache control hardware for good performance. They also attain competitive raw performance, and superior performance for a given price in most programming environments. Their first successful application area has been in real time embedded control environments, where they outperform other system design approaches by a wide margin. Stack machines also show great promise in executing logic programming languages such as Prolog, functional programming languages such as Miranda and Scheme, and artificial intelligence research languages such as OPS-5 and Lisp.
The major difference between this new breed of stack machine and the older stack machines is that large, high speed dedicated stack memories are now cost effective. Where previously the stacks were kept mostly in program memory, newer stack machines maintain separate memory chips or even an area of on-chip memory for the stacks. These stack machines provide extremely fast subroutine calling capability and superior performance for interrupt handling and task switching. When put together, these traits create computer systems that are fast, nimble, and compact.
We shall start out in this chapter with a discussion of the role of stacks in computing. This will be followed in subsequent chapters by a taxonomy of hardware stack support in computer design, a discussion of an abstract stack machine and several commercially implemented stack machines, results of research into stack machine performance characteristics, hardware and software considerations, and some predictions about future directions that may be taken in stack machine design.
Phil Koopman -- koopman@cmu.edu