Preface.
Preface to the first edition
Recommended lab sessions
Part 1 Basic functions and facilities of a computer
1 Introduction: the hardware-software interface
1.1 Computer systems - the importance of networking
1.2 Hardware and software - mutual dependence
1.3 Programming your way into hardware - VHDL, a language for electroni engineers
1.4 Systems administration - we all need to know
1.5 Voice, image and data – technological convergence
1.6 Windowing interfaces - WIMPs
1.7 The global Internet -connecting all the networks
1.8 Using the PC – a case study; more reasons to study CSA
2 The von Neumann Inheritance
2.1 Base 2 - the convenience of binary - 10110011100011110000
2.2 Stored program control - general-purpose machines
2.3 Instruction codes - machine action repertoire
2.4 Translation -compilers and assemblers
2.5 Linking - bringing it all together
2.6 Interpreters - executing high-level commands
2.7 Code sharing and reuse - let's not write it all again!
2.8 Data codes - numeric and character
2.9 The operating system - Unix and Windows
2.10 Client-server computing - the way of the Net
2.11 Reconfigurable hardware - an alternative to fetch-execute
3 Functional units and the fetch-execute cycle
3.1 The naming of parts - CPU, memory, IO units
3.2 The CPU fetch-execute cycle - high-speed tedium
3.3 System bus - synchronous or asynchronous?
3.4 System clock - instruction cycle timing
3.5 Pre-fetching - early efforts to speed things up
3.6 Memory length - address width
3.7 Endian-ness - Microsoft vs. Unix, or Intel vs. Motorola?
3.8 Simple input-output - parallel ports
4 Building computers from logic: the control unit
4.1 Electronic Lego and logic- the advantage of modular units
4.2 Basic logic gates - truth tables for AND, OR, XOR and NOT
4.3 Truth tables and multiplexers - a simple but effective design tool
4.4 Programmable logic - reconfigurable logic chips
4.5 Traffic light controllers - impossible to avoid!
4.6 Circuit implementation from truth tables - some practical tips
4.7 Decoder logic - essential for control units and memories
4.8 CPU control unit - the 'brain'
4.9 Washing machine controllers - a simple CU
4.10 RISC vs. CISC decoding - in search of faster computers
5 Building computers from logic : the ALU
5.1 De Morgan's equivalen es - logical interchangeability
5.2 Binary addition - half adders, full adders, parallel adders
5.3 Binary subtraction - using two's omplement integer format
5.4 Binary shifting - barrel shifter
5.5 Integer multiplication - shifting and adding
5.6 Floating-point numbers - from very, very large to very, very small
6 Building computers from logic: the memory
6.1 Data storage - one bit at a time
6.2 Memory devices - memory modules for computers
6.3 Static memory - a lot of fast flip-flops
6.4 Dynamic memory - a touch of analogue amid the digital
6.5 DRAM refreshing - something else to do
6.6 Page acess memories - EDO and SDRAM
6.7 Memory mapping - addressing and decoding
6.8 IO port mapping - integration vs. differentiation
7 The Intel Pentium CPU
7.1 The Pentium - a high-performance microprocessor
7.2 CPU registers - temporary store for data and address variables
7.3 Instruction set - introduction to the basic Pentium set
7.4 Structure of instructions - how the CU sees it
7.5 CPU status flags - very short-term memory
7.6 Addressing modes - building effective addresses
7.7 Execution pipelines - the RISC speedup technique
7.8 Pentium 4 - extensions
7.9 Microsoft Developer Studio - using the debugger
8 Subroutines
8.1 The purpose of subroutines - saving space and effort
8.2 Return address - introducing the stack
8.3 Using subroutines - HLL programming
8.4 The stack - essential to most operations
8.5 Passing parameters - localizing a subroutine
8.6 Stack frame - all the local variables
8.7 Supporting HLLs - special CPU facilities for dealing with subroutines
8.8 Interrupt service routines - hardware-invoked subroutines
8.9 Accessing operating system routines - late binding
9 Simple input and output
9.1 Basic IO methods - polling, interrupt and DMA
9.2 Peripheral interfa e registers - the programmer's viewpoint
9.3 Polling - single- character IO
9.4 Interrupt processing - service on demand
9.5 Critical data protection - how to communicate with interrupts
9.6 Buffered lO - interrupt device drivers
9.7 Direct memory acess (DMA) - autonomous hardware
9.8 Single- haracter IO - screen and keyboard routines
10 Serial Connections
10.1 Serial transmission - data, signals and timing
10.2 Data format - encoding techniques
10.3 Timing synchronization - frequency and phase
10.4 Data codes and error control - parity, checksums, Hamming codes and CRCs
10.5 Flow control - hardware and software methods
10.6 The 16550 UART- RS232..
10.7 Serial mice - mechanical or optial
10.8 Serial ports - practical tips, avoiding the frustration
10.9 USB- Universal Serial Bus
10.10 Modems - modulating carrier waves
11 Parallel connections
11.1 Parallel interfaces - better performance
11.2 Centronics - more than a printer port but less than a bus
11.3 SCSI - the Small Computer Systems Interface
11.4 IDE- Intelligent Drive Electronics
11.5 AT/ISA - a computer standards sucess story
11.6 PCI - Peripheral Component Interconnection
11.7 Plug-and-Play - automatic configuration
11.8 PCMCIA - Personal Computer Memory Card International Association
12 The memory hierarchy
12.1 Levels of performance - you get what you pay for
12.2 Localization of acess - exploiting repetition
12.3 Instruction and data caches - matching memory to CPU speed
12.4 Cache mapping - direct or associative
12.5 Virtual memory- segmentation and demand paging
12.6 Address formulation - when, where and how much
12.7 Hard disk usage - parameters, acess scheduling and data arrangement
12.8 Performance improvement- blocking, caching, defragmentation, scheduling, RAM disk
12.9 Optical discs - CD-DA, CD-ROM, CD-RW and DVDs
12.10 DVD - Digital Versatile Disc
12.11 MPEG - video and audio compression
12.12 Flash sticks - the new floppy disk
Part 2 Networking and increased complexity
13 The programmer's viewpoint
13.1 Different viewpoints - different needs
13.2 Application user- office packages
13.3 Systems administration - software installation and maintenance
13.4 HLL programmer - working with Java, C++, BASIC or C#
13.5 Systems programming - assembler and C
13.6 Hardware engineer- design and hardware maintenance
13.7 Layered virtual machines – hierarchical description
13.8 Assemblers- simple translators
13.9 Compilers - translation and more
14 Local area networks
14.1 Reconne ting the users - email, printers and database
14.2 PC network interface - cabling and interface card
14.3 Ethernet - Carrier Sense, Multiple Access/Collision Dete t
14.4 LAN addressing - logical and physical schemes
14.5 Host names - another layer of translation
14.6 Layering and en apsulation - TCP/IP software stack
14.7 Networked file systems - sharing files across a network
14.8 Interconnecting networks - gateways
14.9 Socket programming- an introduction to WinSock
15 Wide area networks
15.1 The Internet - origins
15.2 TCP/IP - the essential protocols
15.3 TCP - handling errors and flow control
15.4 IP routing - how packets find their way
15.5 DNS- Distributed Name Database
15.6 World Wide Web - the start
15.7 Browsing the Web - Nets ape Navigator
15.8 HTTP - another protocol
15.9 Search engines- Google
15.10 Open Systems Interconnect - ancidealized scheme
16 Other networks
16.1 The PSTN- telephones
16.2 Cellnets - providers of mobile communications
16.3 ATM - Asynchronous Transfer Mode
16.4 Messaging - radio paging and packet radio networks
16.5 ISDN - totally digital
16.6 DSL - Digital Subscriber Line
16.7 Cable television - facilities for data transmission
17 Introduction to operating systems
17.1 Histori origins - development of basic functions
17.2 Unix - a landmark operating system
17.3 Outline structure - modularization
17.4 Process management- initialization and dispatching
17.5 Scheduling decisions- time-slicing, demand preemption or ooperative
17.6 Task communication - pipes and redirection
17.7 Exclusion and synchronization - semaphores and signals
17.8 Memory allocation - mallo () and free()
17.9 User interface - GUIs and shells
17.10 Input-output management - device handlers
18 Windows XP
18.1 Windows GUIs - responding to a need
18.2 Win32 - the preferred user APl
18.3 Processes and threads- multitasking
18.4 Memory management- virtual memory implementation
18.5 Windows Registry- centralized administrative database
18.6 NTFS - Windows NT File System
18.7 File acess - ACLs, permissions and security
18.8 Sharing software components - OLE, DDE and COM
18.9 Windows NT as a mainframe - Winframe terminal server
19 Filing systems
19.1 Data storage - file systems and databases
19.2 The PC file allo ationctable - FAT
19.3 Unix inodes - they do it differently
19.4 Microsoft NTFS - complexity and security
19.5 RAID configuration - more security for the disk subsystem
19.6 File security - access controls
19.7 CD portable file system - multi-session contents lists
20 Visual output
20.1 Computers and graphics - capture, storage, processing and redisplay
20.2 PC graphics adapter cards - graphics coprocessors
20.3 Laser printers - this is mechatronics!
20.4 Adobe PostScript - a page description language
20.5 WIMPs- remodelling the computer
20.6 Win32 - graphical APl and more
20.7 The X Window system - enabling distributed processing
20.8 MMX technology- assisting graphi calcalculations
21 RISC processors: ARM and SPARC
21.1 Justifying RISC - in reased instruction throughput
21.2 Pipeline techniques - more parallel operations
21.3 Supers alar methods - parallel parallelism
21.4 Register files - many more CPU registers
21.5 Branch prediction methods - maintaining the pipelines
21.6 Compiler support - an essential part of RISC
21.7 The ARM 32 bit CPU - origins
21.8 StrongARM processor - a 32 bit microcontroller
21.9 The HP iPAQ - a StrongARM PDA
21.10 Puppeteer - a StrongARM SBC
21.11 Sun SPARC - scalar processor archite turecas RISC
21.12 Embedded systems - ross-development techniques
22 VLIW processors: the EPIC Itanium
22.1 Itanium 64 bit processor - introduction
22.2 Itanium assembler - increasing the ontrol of the CPU
22.3 Run-time debugging - gvd/gdb
22.4 Future processor design - debate
23 Parallel processing
23.1 Parallel processing-the basis
23.2 Instru tion-level parallelism (lLP) - pipelining
23.3 Superscalar - multiple execution units
23.4 Symmetric, shared memory multiprocessing (SMP) - the future?
23.5 Single-chip multiprocessors - the IBM Cell
23.6 Clusters and grids - application-level parallelism
Appendix: MS Visual Studio 8, Express Edition
Glossary
Answers to end-of-chapter questions
References
Index...