Skip to main content
main-content
Top

About this book

The pillars of the bridge on the cover of this book date from the Roman Empire and they are in daily use today, an example of conventional engineering at its best. Modern commodity operating systems are examples of current system programming at its best, with bugs discovered and fixed on a weekly or monthly basis. This book addresses the question of whether it is possible to construct computer systems that are as stable as Roman designs.

The authors successively introduce and explain specifications, constructions and correctness proofs of a simple MIPS processor; a simple compiler for a C dialect; an extension of the compiler handling C with inline assembly, interrupts and devices; and the virtualization layer of a small operating system kernel. A theme of the book is presenting system architecture design as a formal discipline, and in keeping with this the authors rely on mathematics for conciseness and precision of arguments to an extent common in other engineering fields.

This textbook is based on the authors' teaching and practical experience, and it is appropriate for undergraduate students of electronics engineering and computer science. All chapters are supported with exercises and examples.

Table of Contents

Chapter 1. Introduction

Abstract
In this chapter the authors explain the context and motivation for the book, and they give a brief outline of its chapters.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 2. Understanding Decimal Addition

Abstract
In this chapter the authors use decimal addition to introduce important ideas relating to natural numbers, Peano’s axioms and computer arithmetic.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 3. Basic Mathematical Concepts

Abstract
In this chapter the authors introduce basic mathematical concepts, modulo computation, and graphs.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 4. Number Formats and Boolean Algebra

Abstract
In this chapter the authors introduce number formats and Boolean algebra, with sections explaining binary numbers, and two’s complement numbers.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 5. Hardware

Abstract
In this chapter the authors explain the basics of hardware, including gates and circuits, clocked circuits, and registers.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 6. Five Designs of Random Access Memory (RAM)

Abstract
In this chapter the authors introduce five designs of RAM: basic RAM, read-only memory (ROM), combining RAM and ROM, three-port RAM for general-purpose registers, and SPR-RAM.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 7. Arithmetic Circuits

Abstract
In this chapter the authors introduce arithmetic circuits, with sections that explain adders and incrementers, arithmetic units, arithmetic logic units (ALUs), shifters, and the branch condition evaluation unit.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 8. A Basic Sequential MIPS Machine

Abstract
In this chapter the authors introduce a basic sequential MIPS machine, with sections on tables, MIPS ISA, and a sequential processor design.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 9. Some Assembler Programs

Abstract
In this chapter the authors review some assembler programs, including the topics of MIPS programs and software multiplication and division.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 10. Context-Free Grammars

Abstract
In this chapter the authors introduce context-free grammars, and they explain grammars for expressions.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 11. The Language C0

Abstract
In this chapter the authors introduce language C0, with sections explaining its grammar, declarations, configurations, expression evaluation, statement execution, and proving correctness.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 12. A C0-Compiler

Abstract
In this chapter the authors introduce compiler consistency, translation of expressions, translation of statements, and translation of programs.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 13. Compiler Consistency Revisited

Abstract
In this chapter the authors show how to reconstruct a well-formed C0 configuration, they explain garbage collection, and they discuss C0 and assembly.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 14. Operating System Support for MIPS Processors and C0

Abstract
The authors explain interrupts, address translation, and disks.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz

Chapter 15. A Generic Operating System Kernel

Abstract
The authors explain physical and virtual machines, including the topics of communicating virtual machines, the concrete kernel, the runvm primitive, simulation of CVM steps, and page fault handling.
Wolfgang J. Paul, Christoph Baumann, Petro Lutsyk, Sabine Schmaltz
Additional information