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