Computer Organization and Design

Computer Organization and Design

The Hardware / Software Interface

1st Edition - June 1, 1993

Write a review

  • Authors: John L. Hennessy, David A. Patterson
  • eBook ISBN: 9781483221182

Purchase options

Purchase options
DRM-free (PDF)
Sales tax will be calculated at check-out

Institutional Subscription

Free Global Shipping
No minimum order


Computer Organization and Design: The Hardware/Software Interface presents the interaction between hardware and software at a variety of levels, which offers a framework for understanding the fundamentals of computing. This book focuses on the concepts that are the basis for computers. Organized into nine chapters, this book begins with an overview of the computer revolution. This text then explains the concepts and algorithms used in modern computer arithmetic. Other chapters consider the abstractions and concepts in memory hierarchies by starting with the simplest possible cache. This book discusses as well the complete data path and control for a processor. The final chapter deals with the exploitation of parallel machines. This book is a valuable resource for students in computer science and engineering. Readers with backgrounds in assembly language and logic design who want to learn how to design a computer or understand how a system works will also find this book useful.

Table of Contents

  • Foreword


    The SPIM Simulator for the MIPS R2000/R3000

    Chapters 1 Computer Abstractions and Technology

    1.1 Introduction

    1.2 Below your Program

    1.3 Under the Covers

    1.4 Integrated Circuits: Fueling Innovation

    1.5 Fallacies and Pitfalls

    1.6 Concluding Remarks

    1.7 Historical Perspective and Further Reading

    1.8 Exercises

    2 The Role of Performance

    2.1 Introduction

    2.2 Measuring Performance

    2.3 Relating the Metrics

    2.4 Popular Performance Metrics

    2.5 Choosing Programs to Evaluate Performance

    2.6 Comparing and Summarizing Performance

    2.7 Fallacies and Pitfalls

    2.8 Concluding Remarks

    2.9 Historical Perspective and Further Reading

    2.10 Exercises

    3 Instructions: Language of the Machine

    3.1 Introduction

    3.2 Operations of the Computer Hardware

    3.3 Operands of the Computer Hardware

    3.4 Representing Instructions in the Computer

    3.5 Instructions for Making Decisions

    3.6 Supporting Procedures in Computer Hardware

    3.7 Other Styles of MIPS Addressing

    3.8 Alternatives to the MIPS Approach

    3.9 An Example to Put it All Together

    3.10 A Longer Example

    3.11 Arrays Versus Pointers

    3.12 Fallacies and Pitfalls

    3.13 Concluding Remarks

    3.14 Historical Perspective and Further Reading

    3.15 Exercises

    4 Arithmetic for Computers

    4.1 Introduction

    4.2 Negative Numbers

    4.3 Addition and Subtraction

    4.4 Logical Operations

    4.5 Constructing an Arithmetic Logic Unit

    4.6 Multiplication

    4.7 Division

    4.8 Floating Point

    4.9 Fallacies and Pitfalls

    4.10 Concluding Remarks

    4.11 Historical Perspective and Further Reading

    4.12 Exercises

    5 The Processor: Datapath and Control

    5.1 Introduction

    5.2 Building a Datapath

    5.3 A Simple Implementation Scheme

    5.4 A Multiple Clock Cycle Implementation

    5.5 Microprogramming: Simplifying Control Design

    5.6 Exceptions

    5.7 Fallacies and Pitfalls

    5.8 Concluding Remarks

    5.9 Historical Perspective and Further Reading

    5.10 Exercises

    6 Enhancing Performance with Pipelining

    6.1 Introduction

    6.2 A Pipelined Datapath

    6.3 Pipelined Control

    6.4 Data Hazards

    6.5 Control for Data Hazards: Stalls

    6.6 Reducing Data Hazards: Forwarding

    6.7 Branch Hazards

    6.8 Exceptions

    6.9 Performance of Pipelined Systems

    6.10 Fallacies and Pitfalls

    6.11 Concluding Remarks

    6.12 Historical Perspective and Further Reading

    6.13 Exercises

    7 Large and Fast: Exploiting Memory Hierarchy

    7.1 Introduction

    7.2 Caches

    7.3 Virtual Memory

    7.4 A Common Framework for Memory Hierarchies

    7.5 Fallacies and Pitfalls

    7.6 Concluding Remarks

    7.7 Historical Perspective and Further Reading

    7.8 Exercises

    8 Interfacing Processors and Peripherals

    8.1 Introduction

    8.2 I/O Performance Measures: Some Examples from Disk and File Systems

    8.3 Types and Characteristics of I/O Devices

    8.4 Buses: Connecting I/O Devices to Processor and Memory

    8.5 Interfacing I/O Devices to the Memory, Processor, and Operating System

    8.6 Fallacies and Pitfalls

    8.7 Concluding Remarks

    8.8 Historical Perspective and Further Reading

    8.9 Exercises

    9 Parallel Processors

    9.1 Introduction

    9.2 SIMD Computers—Single Instruction Stream, Multiple Data Streams

    9.3 MIMD Computers—Multiple Instruction Streams, Multiple Data Streams

    9.4 Programming MIMDs

    9.5 MIMDs Connected by a Single Bus

    9.6 MIMDs Connected by a Network

    9.7 Future Directions for Parallel Processors

    9.8 Fallacies and Pitfalls

    9.9 Concluding Remarks—Evolution Versus Revolution in Computer Architecture

    9.10 Historical Perspective and Further Reading

    9.11 Exercises


    A Assemblers, Linkers, and the SPIM Simulator

    A.1 Introduction

    A.2 Assemblers

    A.3 Linkers

    A.4 Loading

    A.5 Memory Usage

    A.6 Procedure Call Convention

    A.7 Exceptions and Interrupts

    A.8 Input and Output

    A.9 SPIM

    A.10 MIPS R2000 Assembly Language

    A.11 Concluding Remarks

    A.12 Exercises

    B The Basics of Logic Design

    B.1 Introduction

    B.2 Gates, Truth Tables, and Logic Equations

    B.3 Combinational Logic

    B.4 Clocks

    B.5 Memory Elements

    B.6 Finite State Machines

    B.7 Timing Methodologies

    B.8 Exercises

    C Mapping Control to Hardware

    C.1 Introduction

    C.2 Implementing Finite State Machine Control

    C.3 Implementing the Next-State Function with a Sequencer

    C.4 Translating a Microprogram to Hardware

    C.5 Concluding Remarks

    C.6 Exercises

    D Introducing C to Pascal Programmers

    D.1 Introduction

    D.2 Variable Declarations

    D.3 Assignment Statements

    D.4 Relational Expressions and Conditional Statements

    D.5 Loops

    D.6 Examples to Put it All Together

    D.7 Exercises

    E Another Approach to Instruction Set Architecture—VAX

    E.1 Introduction

    E.2 VAX Operands and Addressing Modes

    E.3 Encoding VAX Instructions

    E.4 VAX Operations

    E.5 An Example to Put it All Together: Swap

    E.6 A Longer Example: Sort

    E.7 Fallacies and Pitfalls

    E.8 Concluding Remarks

    E.9 Historical Perspective and Further Reading

    E.10 Exercises


Product details

  • No. of pages: 876
  • Language: English
  • Copyright: © Morgan Kaufmann 1994
  • Published: June 1, 1993
  • Imprint: Morgan Kaufmann
  • eBook ISBN: 9781483221182

About the Authors

John L. Hennessy

David A. Patterson

Ratings and Reviews

Write a review

There are currently no reviews for "Computer Organization and Design"