Stack Computers: The New Wave
Published in 1989, this was the first book to explore the new breed of stack computers led by the introduction of the Novix NC4016 chip. 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 descriptions, 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 future development.
Some readers may incorrectly associate any reference to stack computers with the Burroughs or HP stack machine families. The focus of this book is quite different. These new stack computers encompass an entirely different set of technology and application area tradeoffs, resulting in machines that are quite unlike the older generations of stack computers.
This book covers a wide variety of topics so that these new stack machines may be understood not only for their technical merits, but also within the context of how they can be used to solve problems, and where they fit in the overall computer architecture picture Chapter 1 is a review of stacks and their usage, as well as an introduction to the rest of the book.
Chapter 2 presents a taxonomy of hardware support for stacks, categorized in terms of the number of stacks, size of stack buffers, and the number of operands in the instruction format. This taxonomy points out the tradeoffs that are made by different classes of machines, and shows where the stack machines discussed in the remainder of the book fit in.
Chapter 3 focuses on the part of the stack computer design space that employs multiple stacks with 0-operand addressing. This set of design tradeoffs characterizes the new generation of stack machines described in the following chapters. This chapter also presents a detailed description of a generic stack machine as a point of departure for discussing the designs in subsequent chapters.
Chapter 4 describes four 16-bit stack machines in detail. The WISC CPU/16, MISC M17, Novix NC4016, and Harris RTX 2000 cover a wide spectrum of design decisions, exploring many of the options possible in stack machine design. Each of the four designs is described in terms of its block diagram, instruction set, architectural features, implementation technology, and intended application areas.
Chapter 5 continues the format of Chapter 4 with a discussion of three 32-bit stack machines. The machines included are the JHU/APL FRISC 3 (also known as the Silicon Composers SC32), Harris RTX 32P, and the Wright State University SF1.
Chapter 6 is a detailed discussion of the issues of stack machine design from a computer architect’s point of view. Stack machines differ from other machines in many important respects, including program size, processor complexity, system complexity, and processor performance on different kinds of programs. They can require different ways of thinking about program execution characteristics and resource management. Much of the ‘conventional wisdom’ about stack machines is incorrect. This chapter presents detailed discussions as well as experimental data to reveal how stack machines really work.
Chapter 7 discusses the software issues that arise when using stack computers. The concept of a fast subroutine call is central to using a stack machine effectively, as is the concept of uniformity of interface between all levels of hardware and software. This chapter also discusses the issue of choosing a programming language, and how stack machines can efficiently support many different languages.
Chapter 8 shows how stack machines can be used in a variety of application areas, especially real time embedded control. Important decisions must be made when selecting a stack computer to use in a commercial product. The alternatives include whether to use a 16-bit or 32-bit processor, and selecting an appropriate balance between system cost and performance.
Chapter 9 is filled with predictions and speculation on the future of stack machines and their place in the world of computers. Stack machine designers are beginning to address issues such as dedicated hardware support for conventional languages, memory management, and dealing with the limits of memory bandwidth.