Topics In Computer Organization.

By David Salomon. Published by Erudition Books, 2000, ISBN 1-58692-066-9 , iv+397 pages

The book is currently out of print. An extended version of 397 pages is available in PDF format here.

Developed over many years of teaching the subject, the book is intended to provide an overview of the organization of modern computers. It explains the functions of the main components of the computer such as the control unit, memory, and registers. It discusses the different formats and types of machine instructions, and it presents detailed examples of instruction execution. The important concept of interrupts is covered, and examples of various applications of interrupts are included.

Different data types, such as signed integers, floating-point, and fixed-point numbers, are discussed, together with examples of the basic operations on each type.

There is much material on input/output of digital data. The book examines the various ways computers input data and output it. Codes used for the reliable transmission of information are explained and illustrated, and there is a section on data compression (short codes).

The book contains material on computer communications, computer networks, and on several topics related to the organization and operation of the internet.

An entire chapter is devoted to microprogramming. This approach to computer design is used in many modern computers, so an understanding of microprogramming is a key to a full understanding of the operations of computers.

The principles of operation of assemblers are discussed in detail, and an entire chapter is devoted to macros.

With its many illustrated examples and exercises (with solutions), the book makes a basic text for a one-semester course in computer organization for undergraduates. It also serves as a reference for those who have some experience in using computers and who want to know how computers work. The only prerequisite is familiarity with binary numbers.

Table of Contents

Preface  page i

Chapter 1. Introduction 1
 1 Terminology 1
 2 The Control Unit 2
 3 The Memory 5
 4 Instruction Execution 11
 5 CPU Bus Structure 17
 6 Microprogramming 18
 7 Interrupts 20
 8 I/O Interrupts 26
 9 Interrupts in a Microprocessor 28
 10 The ALU 30

Chapter 2. Machine Instructions 33
 1 Instruction Formats 33
 2 The Opcode Size 34
 3 Addressing Modes 36
 4 The Direct Mode 37
 5 The Relative Mode 37
 6 The Immediate Mode 38
 7 The Index Mode 38
 8 The Indirect Mode 38
 9 Multilevel or Cascaded Indirect 39
 10 Other Addressing Modes 40
 11 Instruction Types 41
 12 Data Movement Instructions 41
 13 Operations 42
 14 $N$-Operand Instructions 48
 15 Actual Instruction Sets 48
 16 The VAX Instruction Set 49
 17 The RISC I Instruction Set 52
 18 Non-Numeric Data Types 53
 19 Numeric Data Types 54
 20 Signed Integers 54
 21 Floating-Point Numbers 57
 22 Fixed-Point Numbers 63
 23 Decimal (BCD) Numbers 64
 24 Other BCD Codes 65
 25 Rational Numbers 67
 26 Carry and Overflow 68

Chapter 3. Input/Output 71
 1 The I/O Processor 71
 2 Polled I/O 73
 3 Interrupt I/O 75
 4 DMA 75
 5 I/O Channels 78
 6 I/O Codes 79
 7 ASCII and Other Codes 80
 8 Information Theory and Algebraic Coding 83
 9 Error-Detecting and Error-Correcting Codes 84
 10 Data Compression 93
 11 Variable-Size Codes 94
 12 Huffman Codes 95
 13 Facsimile Compression 97
 14 Dictionary-Based Methods 100
 15 Approaches to Image Compression 102
 16 Secure Codes 107
 17 Transposition Ciphers 114
 18 Transposition by Turning Template 116
 19 Columnar Transposition Cipher 118
 20 Steganography 126
 21 Computer Communications 131
 22 Serial I/O 131
 23 Modern Modems 143
 24 ISDN and DSL 144
 25 T-1, DS-1 and Their Relatives 145
 26 Computer Networks 148
 27 Internet Organization 152
 28 Internet: Physical Layout 153
 29 CSUN in the Internet 160
 30 ICANN and IANA 163
 31 The World Wide Web 163

Chapter 4. Microprogramming 167
 1 Basic Principles 167
 2 A Short History of Microprogramming 168
 3 The Computer Clock 169
 4 An Example Microarchitecture 169
 5 The Microinstructions 170
 6 Microinstruction Timing 172
 7 The Control Path 175
 8 The Machine Instructions 177
 9 The Microcode 178
 10 Final Notes 184
 11 A Horizontal Example 187

Chapter 5. Parallel Computers 189
 1 Introduction 189
 2 Classifying Architectures 189
 3 Parallel Processing Methods 190
 4 Design Criteria 190
 5 The Hypercube 191
 6 Array Processors 193
 7 Example: MPP 195
 8 Example: The Connection Machine 197
 9 MIMD Computers 199
 10 Parallel Algorithms 200
 11 The Intel iPSC/1 202
 12 Vector Processors 204
 13 The Von-Neumann Bottleneck 205
 14 Associative Computers 206
 15 Data Flow Computers 209

Chapter 6. hbox {Reduced Instruction Set}kern 4pthbox {Computers} 219
 1 Reduced and Complex Instruction Sets 219
 2 A Short History of RISC 221
 3 The RISC I Computer 222
 4 Conclusions 226

Chapter 7. Digital Devices 227
 1 Combinational and Sequential Devices 228
 2 Multivibrators 228
 3 Counters 232
 4 Registers 236
 5 Multiplexors 236
 6 Decoders 237
 7 Encoders 237

Chapter 8. The Memory 241
 1 A Glossary of Memory Terms 241
 2 Static RAM 242
 3 ROM 243
 4 PLA 245

Chapter 9. The ALU 247
 1 Integer Addition and Subtraction 247
 2 The Accumulator 250
 3 Integer Multiplication 252
 4 Integer Division 260
 5 Shifts 261
 6 Comparisons 263

Chapter 10. Assemblers 267
 1 Introduction 267
 2 A Short History of Assemblers 270
 3 Types of Assemblers and Loaders 272
 4 Assembler Operation 272
 5 The Two-Pass Assembler 276
 6 The One-Pass Assembler 280
 7 Absolute and Relocatable Object Files 283
 8 Absolute and Rel. Address Expressions 286
 9 Local Labels 288
 10 Multiple Location Counters 289
 11 Literals 293
 12 Attributes of Symbols 294
 13 Assembly-Time Errors 295
 14 The Symbol Table 296

Chapter 11. Macros 301
 1 Introduction 301
 2 Macro Parameters 304
 3 Pass 0 308
 4 MDT Organization 310
 5 Other Features of Macros 311
 6 Nested Macros 315
 7 Recursive Macros 318
 8 Conditional Assembly 318
 9 Nested Macro Definition 324
 10 Summary of Pass 0 334

Appendix A. History of Computers 337
 1 A Brief History of Computers 337
 2 First Generation. Vacuum Tubes 340
 3 Second Generation: Transistors 342
 4 Third Generation: ICs 342
 5 Later Developments 342

Appendix B. Unicode 345

Appendix C. The Compact Disc 353
 1 Capacity 353
 2 Description 354
 3 Error-Correction 354
 4 Encoding 356
 5 The Subcode 357
 6 Data Readout 357
 7 Fabrication 357
 8 The CD-ROM Format 358
 9 Recordable CDs (CD-R) 359
 10 Summary 359
 11 DVD 360

Appendix D. ISO Country Codes 363

References 367

Answers to Exercises 371

Index 385

Abstraction is our only mental tool to master complexity.

Edsger Dijkstra