Stack Computers: the new wave
Philip J. Koopman, Jr.
Ellis Horwood, 1989
ISBN: 0-7458-0418-7
Overview (written in 1989):
This is the first book to explore the new breed of stack
computers which was led by the introduction of the Novix
NC4016 chip. With the entry of the Harris Semiconductor
RTX family into the real time control market, the
importance of these machines has increased dramatically.
The author commences with an overview of how stacks
are used in computing, and a taxonomy of hardware stack
support which includes a survey of approximately 70
stack machines past and present. Detailed desciptions,
including block diagrams and instruction set summaries,
are given for seven new stack processors from Harris
Semiconductor, Novix, Johns Hopkins University/APL,
MISC, WISC Technologies, and Wright State University.
Major topics covered also include architectural analysis
of stack machines, software issues, application areas, and
potential for further development.
The book reflects the increasing need for a comprehensive
publication for engineers and programmers working
in such areas as computer architecture, real time control
systems, expert systems applied to control applications,
computer graphics, image procssing, military electronics,
and any applications requiring compact but
powerful hardware.
Contents
1. Introduction and Review
1.1 Overview
1.2 What is a stack?
1.2.1 Cafeteria tray example
1.2.2 Example software implementations
1.2.3 Example hardware implementations
1.3 Why are stack machines important?
1.4 Why are stacks used in computers?
1.4.1 Expression evaluation stack
1.4.2 The return address stack
1.4.3 The local variable stack
1.4.4 The parameter stack
1.4.5 Combination stacks
1.5 The new generation of stack computers
1.6 Highlights from the rest of the book
2. A Taxonomy of Hardware Stack Support
2.1 The three axis stack design space
2.1.1 Single vs. multiple stacks
2.1.2 Size of stack buffers
2.1.3 0-, 1-, and 2-operand addressing
2.2 Taxonomy notation and categories
2.2.1 Notation
2.2.2 List of the categories in the design space
2.3 Interesting points in the taxonomy.
3. Multiple Stack, 0-Operand Machines
3.1 Why these machines are interesting
3.2 A generic stack machine
3.2.1 Block diagram
3.2.2 Data operations
3.2.3 Instruction execution
3.2.4 State changing
3.3 Overview of the Forth programming language
3.3.1 Forth as a common thread
3.3.2 The Forth virtual machine
3.3.3 Emphasis on interactivity, flexibility
4. Architecture of 16-Bit Systems
4.1 Characteristics of 16-bit designs
4.1.1 Good fit with the traditional Forth model
4.1.2 Smallest interesting width
4.1.3 Small size allows integrated embedded system
4.2 Architecture of the WISC CPU/16
4.2.1 Introduction
4.2.2 Block diagram
4.2.3 Instruction set summary
4.2.4 Architectural features
4.2.5 Implementation and featured application areas
4.3 Architecture of the MISC M17
4.3.1 Introduction
4.3.2 Block diagram
4.3.3 Instruction set summary
4.3.4 Architectural features
4.3.5 Implementation and featured application areas
4.4 Architecture of the Novix NC4016
4.4.1 Introduction
4.4.2 Block diagram
4.4.3 Instruction set summary
4.4.4 Architectural features
4.4.5 Implementation and featured application areas
4.5 Architecture of the Harris RTX 2000
4.5.1 Introduction
4.5.2 Block diagram
4.5.3 Instruction set summary
4.5.4 Architectural features
4.5.5 Implementation and featured application areas
4.5.6 Standard cell designs
5. Architecture of 32-Bit Systems
5.1 Why 32-bit systems?
5.2 Architecture of the FRISC 3 (SC32)
5.2.1 Introduction
5.2.2 Block diagram
5.2.3 Instruction set summary
5.2.4 Architectural features
5.2.5 Implementation and featured application areas
5.3 Architecture of the RTX 32P
5.3.1 Introduction
5.3.2 Block diagram
5.3.3 Instruction set summary
5.3.4 Architectural features
5.3.5 Implementation and featured application areas
5.4 Architecture of the SF1
5.4.1 Introduction
5.4.2 Block diagram
5.4.3 Instruction set summary
5.4.4 Architectural features
5.4.5 Implementation and featured application areas
6. Understanding Stack Machines
6.1 An historical perspective
6.1.1 Register vs. non-register machines
6.1.2 High level language vs. RISC machines
6.2 Architectural differences from conventional machines
6.2.1 Program size
6.2.2 Processor and system complexity
6.2.3 Processor performance
6.2.4 Program execution consistency
6.3 A study of Forth instruction frequencies
6.3.1 Dynamic instruction frequencies
6.3.2 Static instruction frequencies
6.3.3 Instruction compression on the RTX-32P
6.4 Stack management issues
6.4.1 Estimating stack size: An experiment
6.4.2 Overflow handling
6.5 Interrupts and multi-tasking
6.5.1 Interrupt response latency
6.5.2 Lightweight interrupts
6.5.3 Context switches
7. Software Issues
7.1 The importance of fast subroutine calls
7.1.1 The importance of small procedures
7.1.2 The proper size for a procedure
7.1.3 Why programmers don't use small procedures
7.1.4 Architectural support for procedures
7.2 Language choice
7.2.1 Forth: strengths and weaknesses
7.2.2 C and other conventional languages
7.2.3 Rule-based systems and functional programming
7.3 Uniformity of software interfaces
8. Applications
8.1 Real time embedded control
8.1.1 Requirements of real time control
8.1.2 How stack machines meet these needs
8.2 16-Bit versus 32-bit hardware
8.2.1 16 bit hardware often best
8.2.2 32 bit hardware sometimes required
8.3 System implementation approaches
8.3.1 Hardwired systems vs. microcoded systems
8.3.2 Integration level and system cost/performance
8.4 Example application areas
9. The Future of Stack Computers
9.1 Support for conventional languages
9.1.1 Stack frames
9.1.2 Aliasing of registers and memory
9.1.3 A strategy for handling stack frames
9.1.4 Conventional language execution efficiency
9.2 Virtual memory and memory protection
9.2.1 Memory protection is sometimes important
9.2.2 Virtual memory is not used in controllers
9.3 The use of a third stack
9.4 The limits of memory bandwidth
9.4.1 The history of memory bandwidth problems
9.4.2 Current memory bandwidth concerns
9.4.3 The stack machine solution
9.5 Two ideas for stack machine design
9.5.1 Conditional subroutine returns
9.5.2 Use of the stack for holding code
9.6 The impact of stack machines on computing
Appendix A. A Survey of Computers with Hardware Stack Support
Appendix B. A Glossary of Forth Primitives
Appendix C. Unabridged Instruction Frequencies
Appendix D. Addresses for More Information
Phil Koopman --
koopman@cmu.edu