Stack Computers: the new wave © Copyright 1989, Philip Koopman, All Rights Reserved.
Chapter 3. Multiple-stack, 0-operand Machines
Multiple stack, 0-operand machines have two inherent advantages over other machines: 0-operand addressing leads to a small instruction size, and multiple stacks allow concurrent subroutine calls and data manipulations. These features and others lead to small programs, low system complexity, and high system performance. The main difference between MS0 and ML0 machines is that MS0 machines give up some performance in order to reduce the CPU cost by minimizing the resources used for the stack buffers.
We shall examine the details behind how stack machines achieve their advantages in Chapter 6. For now, let us just summarize their benefits.
Stack machines support small program sizes by encouraging frequent use of subroutines to reduce code size, and by the fact that stack machines have can have short instructions. Small program sizes reduce memory costs, component count, and power requirements, and can improve system speed by allowing the cost effective use of smaller, higher speed memory chips. Additional benefits include better performance in a virtual memory environment, and a requirement for less cache memory to achieve a given hit ratio. 0-operand stack machines tend to have smaller code size than other machines.
Decreased system complexity decreases system development time and chip size. This decreased chip size leaves more room on-chip for semicustom features and program memory.
System performance includes not only raw execution speed, but also total system cost and system adaptability when used in real world applications. The execution speed component of system performance includes not only how many instructions can be performed per second on straight line code, but also speed in handling interrupts, context switches, and performance degradation due to factors such as conditional branches and procedure calls. In stack machines, the very same 0-operand addressing mode and frequent subroutine calls that reduce code size and system complexity actually result in improved system performance for application programs.
An additional benefit of the fact that stack processors support efficient procedure calls is that well structured code with many small procedures is encouraged by the architecture. This increases maintainability by encouraging better coding practices, and increases code reuse by allowing the use of small subroutines as building blocks.
Phil Koopman -- koopman@cmu.edu