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.
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