PREFACE
Contents
CHAPTER
1 Introduction
1.1 OVERVIEW
1.2 THE MAIN COMPONENTS OF A COMPUTER
1.3 AN EXAMPLE SYSTEM: WADING THROUGH THE JARGON
1.4 STANDARDS ORGANIZATIONS
1.5 HISTORICAL DEVELOPMENT
1.5.1 Generation Zero: Mechanical Calculating Machines (1642–1945)
1.5.2 The First Generation: Vacuum Tube Computers (1945–1953)
1.5.3 The Second Generation: Transistorized Computers (1954–1965)
1.5.4 The Third Generation: Integrated Circuit Computers (1965–1980)
1.5.5 The Fourth Generation: VLSI Computers (1980–????)
1.5.6 Moore’s Law
1.6 THE COMPUTER LEVEL HIERARCHY
1.7 THE VON NEUMANN MODEL
1.8 NON–VON NEUMANN MODELS
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
2 Data Representation in
Computer Systems
2.1 INTRODUCTION
2.2 POSITIONAL NUMBERING SYSTEMS
2.3 DECIMAL TO BINARY CONVERSIONS
2.3.1 Converting Unsigned Whole Numbers
2.3.2 Converting Fractions
2.3.3 Converting between Power-of-Two Radices
2.4 SIGNED INTEGER REPRESENTATION
2.4.1 Signed Magnitude
2.4.2 Complement Systems
2.5 FLOATING-POINT REPRESENTATION
2.5.1 A Simple Model
2.5.2 Floating-Point Arithmetic
2.5.3 Floating-Point Errors
2.5.4 The IEEE-754 Floating-Point Standard
2.6 CHARACTER CODES
2.6.1 Binary-Coded Decimal
2.6.2 EBCDIC
2.6.3 ASCII
2.6.4 Unicode
2.7 CODES FOR DATA RECORDING AND TRANSMISSION
2.7.1 Non-Return-to-Zero Code
2.7.2 Non-Return-to-Zero-Invert Encoding
2.7.3 Phase Modulation (Manchester Coding)
2.7.4 Frequency Modulation
2.7.5 Run-Length-Limited Code
2.8 ERROR DETECTION AND CORRECTION
2.8.1 Cyclic Redundancy Check
2.8.2 Hamming Codes
2.8.3 Reed-Soloman
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
3 Boolean Algebra and
Digital Logic
3.1 INTRODUCTION
3.2 BOOLEAN ALGEBRA
3.2.1 Boolean Expressions
3.2.2 Boolean Identities
3.2.3 Simplification of Boolean Expressions
3.2.4 Complements
3.2.5 Representing Boolean Functions
3.3 LOGIC GATES
3.3.1 Symbols for Logic Gates
3.3.2 Universal Gates
3.3.3 Multiple Input Gates
3.4 DIGITAL COMPONENTS
3.4.1 Digital Circuits and Their Relationship to Boolean Algebra
3.4.2 Integrated Circuits
3.5 COMBINATIONAL CIRCUITS
3.5.1 Basic Concepts
3.5.2 Examples of Typical Combinational Circuits
3.6 SEQUENTIAL CIRCUITS
3.6.1 Basic Concepts
3.6.2 Clocks
3.6.3 Flip-Flops
3.6.4 Examples of Sequential Circuits
3.7 DESIGNING CIRCUITS
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
FOCUS ON KARNAUGH MAPS
3A.1 INTRODUCTION
3A.2 DESCRIPTION OF KMAPS AND TERMINOLOGY
3A.3 KMAP SIMPLIFICATION FOR TWO VARIABLES
3A.4 KMAP SIMPLIFICATION FOR THREE VARIABLES
3A.5 KMAP SIMPLIFICATION FOR FOUR VARIABLES
3A.6 DON’T CARE CONDITIONS
3A.7 SUMMARY
EXERCISES
CHAPTER
4 MARIE: An Introduction
to a Simple Computer
4.1 INTRODUCTION
4.1.1 CPU Basics and Organization
4.1.2 The Bus
4.1.3 Clocks
4.1.4 The Input/Output Subsystem
4.1.5 Memory Organization and Addressing
4.1.6 Interrupts
4.2 MARIE
4.2.1 The Architecture
4.2.2 Registers and Buses
4.2.3 The Instruction Set Architecture
4.2.4 Register Transfer Notation
4.3 INSTRUCTION PROCESSING
4.3.1 The Fetch-Decode-Execute Cycle
4.3.2 Interrupts and I/O
4.4 A SIMPLE PROGRAM
4.5 A DISCUSSION ON ASSEMBLERS
4.5.1 What Do Assemblers Do?
4.5.2 Why Use Assembly Language?
4.6 EXTENDING OUR INSTRUCTION SET
4.7 A DISCUSSION ON DECODING: HARDWIRED VS.
MICROPROGRAMMED CONTROL
4.8 REAL WORLD EXAMPLES OF COMPUTER ARCHITECTURES
4.8.1 Intel Architectures
4.8.2 MIPS Architectures
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
5 A Closer Look at
Instruction Set
Architectures
5.1 INTRODUCTION
5.2 INSTRUCTION FORMATS
5.2.1 Design Decisions for Instruction Sets
5.2.2 Little versus Big Endian
5.2.3 Internal Storage in the CPU: Stacks versus Registers
5.2.4 Number of Operands and Instruction Length
5.2.5 Expanding Opcodes
5.3 INSTRUCTION TYPES
5.4 ADDRESSING
5.4.1 Data Types
5.4.2 Address Modes
5.5 INSTRUCTION-LEVEL PIPELINING
5.6 REAL-WORLD EXAMPLES OF ISAs
5.6.1 Intel
5.6.2 MIPS
5.6.3 Java Virtual Machine
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
6 Memory
6.1 INTRODUCTION
6.2 TYPES OF MEMORY
6.3 THE MEMORY HIERARCHY
6.3.1 Locality of Reference
6.4 CACHE MEMORY
6.4.1 Cache Mapping Schemes
6.4.2 Replacement Policies
6.4.3 Effective Access Time and Hit Ratio
6.4.4 When Does Caching Break Down?
6.4.5 Cache Write Policies
6.5 VIRTUAL MEMORY
6.5.1 Paging
6.5.2 Effective Access Time Using Paging
6.5.3 Putting It All Together: Using Cache, TLBs, and Paging
6.5.4 Advantages and Disadvantages of Paging and Virtual Memory
6.5.5 Segmentation
6.5.6 Paging Combined with Segmentation
6.6 A REAL-WORLD EXAMPLE OF MEMORY MANAGEMENT
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
7 Input/Output and
Storage Systems
7.1 INTRODUCTION
7.2 AMDAHL’S LAW
7.3 I/O ARCHITECTURES
7.3.1 I/O Control Methods
7.3.2 I/O Bus Operation
7.3.3 Another Look at Interrupt-Driven I/O
7.4 MAGNETIC DISK TECHNOLOGY
7.4.1 Rigid Disk Drives
7.4.2 Flexible (Floppy) Disks
7.5 OPTICAL DISKS
7.5.1 CD-ROM
7.5.2 DVD
7.5.3 Optical Disk Recording Methods
7.6 MAGNETIC TAPE
7.7 RAID
7.7.1 RAID Level 0
7.7.2 RAID Level 1
7.7.3 RAID Level 2
7.7.4 RAID Level 3
7.7.5 RAID Level 4
7.7.6 RAID Level 5
7.7.7 RAID Level 6
7.7.8 Hybrid RAID Systems
7.8 DATA COMPRESSION
7.8.1 Statistical Coding
7.8.2 Ziv-Lempel (LZ) Dictionary Systems
7.8.3 GIF Compression
7.8.4 JPEG Compression
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
FOCUS ON SELECTED DISK STORAGE
IMPLEMENTATIONS
7A.1 INTRODUCTION
7A.2 DATA TRANSMISSION MODES
7A.2.1 Parallel Data Transmission
7A.2.2 Serial Data Transmission
7A.3 SCSI
7A.3.1 “Classic” Parallel SCSI
7A.3.2 The SCSI-3 Architecture Model
7A.4 STORAGE AREA NETWORKS
7A.5 OTHER I/O CONNECTIONS
7A.5.1 Parallel Buses: XT to ATA
7A.5.2 Peripheral Component Interconnect
7A.5.3 A Serial Interface: USB
7A.5.4 High Performance Peripheral Interface: HIPPI
7A.6 SUMMARY
EXERCISES
CHAPTER
8 System
Software
8.1 INTRODUCTION
8.2 OPERATING SYSTEMS
8.2.1 Operating Systems History
8.2.2 Operating System Design
8.2.3 Operating System Services
8.3 PROTECTED ENVIRONMENTS
8.3.1 Virtual Machines
8.3.2 Subsystems and Partitions
8.3.3 Protected Environments and the Evolution of
Systems Architectures
8.4 PROGRAMMING TOOLS
8.4.1 Assemblers and Assembly
8.4.2 Link Editors
8.4.3 Dynamic Link Libraries
8.4.4 Compilers
8.4.5 Interpreters
8.5 JAVA: ALL OF THE ABOVE
8.6 DATABASE SOFTWARE
8.7 TRANSACTION MANAGERS
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
9 Alternative
Architectures
9.1 INTRODUCTION
9.2 RISC MACHINES
9.3 FLYNN’S TAXONOMY
9.4 PARALLEL AND MULTIPROCESSOR ARCHITECTURES
9.4.1 Superscalar and VLIW
9.4.2 Vector Processors
9.4.3 Interconnection Networks
9.4.4 Shared Memory Multiprocessors
9.4.5 Distributed Computing
9.5 ALTERNATIVE PARALLEL PROCESSING APPROACHES
9.5.1 Dataflow Computing
9.5.2 Neural Networks
9.5.3 Systolic Arrays
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
10 Performance
Measurement
and Analysis
10.1 INTRODUCTION
10.2 THE BASIC COMPUTER PERFORMANCE EQUATION
10.3 MATHEMATICAL PRELIMINARIES
10.3.1 What the Means Mean
10.3.2 The Statistics and Semantics
10.4 BENCHMARKING
10.4.1 Clock Rate, MIPS, and FLOPS
10.4.2 Synthetic Benchmarks: Whetstone, Linpack, and Dhrystone
10.4.3 Standard Performance Evaluation Corporation Benchmarks
10.4.4 Transaction Performance Council Benchmarks
10.4.5 System Simulation
10.5 CPU PERFORMANCE OPTIMIZATION
10.5.1 Branch Optimization
10.5.2 Use of Good Algorithms and Simple Code
10.6 DISK PERFORMANCE
10.6.1 Understanding the Problem
10.6.2 Physical Considerations
10.6.3 Logical Considerations
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
CHAPTER
11 Network Organization
and Architecture
11.1 INTRODUCTION
11.2 EARLY BUSINESS COMPUTER NETWORKS
11.3 EARLY ACADEMIC AND SCIENTIFIC NETWORKS: THE
ROOTS AND ARCHITECTURE OF THE INTERNET
11.4 NETWORK PROTOCOLS I: ISO/OSI PROTOCOL UNIFICATION
11.4.1 A Parable
11.4.2 The OSI Reference Model
11.5 NETWORK PROTOCOLS II:
TCP/IP NETWORK ARCHITECTURE
11.5.1 The IP Layer for Version 4
11.5.2 The Trouble with IP Version 4
11.5.3 Transmission Control Protocol
11.5.4 The TCP Protocol at Work
11.5.5 IP Version 6
11.6 NETWORK ORGANIZATION
11.6.1 Physical Transmission Media
11.6.2 Interface Cards
11.6.3 Repeaters
11.6.4 Hubs
11.6.5 Switches
11.6.6 Bridges and Gateways
11.6.7 Routers and Routing
11.7 HIGH-CAPACITY DIGITAL LINKS
11.7.1 The Digital Hierarchy
11.7.2 ISDN
11.7.3 Asynchronous Transfer Mode
11.8 A LOOK AT THE INTERNET
11.8.1 Ramping on to the Internet
11.8.2 Ramping up the Internet
CHAPTER SUMMARY
FURTHER READING
REFERENCES
REVIEW OF ESSENTIAL TERMS AND CONCEPTS
EXERCISES
APPENDIX
A Data Structures
and the Computer
A.1 INTRODUCTION
A.2 FUNDAMENTAL STRUCTURES
A.2.1 Arrays
A.2.2 Queues and Linked Lists
A.2.3 Stacks
A.3 TREES
A.4 NETWORK GRAPHS
SUMMARY
FURTHER READING
REFERENCES
EXERCISES
Glossary
Answers and Hints for
Selected Exercises
Index