Computers as Components, 2nd Edition

Book description

Computers as Components, Second Edition, updates the first book to bring essential knowledge on embedded systems technology and techniques under a single cover. This edition has been updated to the state-of-the-art by reworking and expanding performance analysis with more examples and exercises, and coverage of electronic systems now focuses on the latest applications.

It gives a more comprehensive view of multiprocessors including VLIW and superscalar architectures as well as more detail about power consumption. There is also more advanced treatment of all the components of the system as well as in-depth coverage of networks, reconfigurable systems, hardware-software co-design, security, and program analysis. It presents an updated discussion of current industry development software including Linux and Windows CE. The new edition's case studies cover SHARC DSP with the TI C5000 and C6000 series, and real-world applications such as DVD players and cell phones.

Researchers, students, and savvy professionals schooled in hardware or software design, will value Wayne Wolf's integrated engineering design approach.

* Uses real processors (ARM processor and TI C55x DSP) to demonstrate both technology and techniques...Shows readers how to apply principles to actual design practice.
* Covers all necessary topics with emphasis on actual design practice...Realistic introduction to the state-of-the-art for both students and practitioners.
* Stresses necessary fundamentals which can be applied to evolving technologies...helps readers gain facility to design large, complex embedded systems that actually work.

Table of contents

  1. Front Cover
  2. About the Author
  3. Computers as Components
  4. Copyright Page
  5. Disclaimer
  6. Foreword to The First Edition
  7. Table of Contents (1/2)
  8. Table of Contents (2/2)
  9. List of Examples
  10. Preface to The Second Edition
  11. Preface to The First Edition
  12. Chapter 1. Embedded Computing
    1. Introduction
    2. 1.1 Complex Systems and Microprocessors
      1. 1.1.1 Embedding Computers
      2. 1.1.2 Characteristics of Embedded Computing Applications
      3. 1.1.3 Why Use Microprocessors?
      4. 1.1.4 The Physics of Software
      5. 1.1.5 Challenges in Embedded Computing System Design
      6. 1.1.6 Performance in Embedded Computing
    3. 1.2 The Embedded System Design Process
      1. 1.2.1 Requirements
      2. 1.2.2 Specification
      3. 1.2.3 Architecture Design
      4. 1.2.4 Designing Hardware and Software Components
      5. 1.2.5 System Integration
    4. 1.3 Formalisms for System Design
      1. 1.3.1 Structural Description
      2. 1.3.2 Behavioral Description
    5. 1.4 Model Train Controller
      1. 1.4.1 Requirements
      2. 1.4.2 DCC
      3. 1.4.3 Conceptual Specification
      4. 1.4.4 Detailed Specification (1/2)
      5. 1.4.4 Detailed Specification (2/2)
      6. 1.4.5 Lessons Learned
    6. 1.5 A Guided Tour of this Book
      1. 1.5.1 Chapter 2: Instruction Sets
      2. 1.5.2 Chapter 3: CPUs
      3. 1.5.3 Chapter 4: Bus-Based Computer Systems
      4. 1.5.4 Chapter 5: Program Design and Analysis
      5. 1.5.5 Chapter 6: Processes and Operating Systems
      6. 1.5.6 Chapter 7: Multiprocessors
      7. 1.5.7 Chapter 8: Networks
      8. 1.5.8 Chapter 9: System Design Techniques
    7. Summary
    8. Further Reading
    9. Questions
    10. Lab Exercises
  13. Chapter 2. Instruction Sets
    1. Introduction
    2. 2.1 Preliminaries
      1. 2.1.1 Computer Architecture Taxonomy
      2. 2.1.2 Assembly Language
    3. 2.2 ARM Processor
      1. 2.2.1 Processor and Memory Organization
      2. 2.2.2 Data Operations (1/2)
      3. 2.2.2 Data Operations (2/2)
      4. 2.2.3 Flow of Control (1/2)
      5. 2.2.3 Flow of Control (2/2)
    4. 2.3 TI C55x DSP
      1. 2.3.1 Processor and Memory Organization
      2. 2.3.2 Addressing Modes
      3. 2.3.3 Data Operations
      4. 2.3.4 Flow of Control
      5. 2.3.5 C Coding Guidelines
    5. Summary
    6. Further Reading
    7. Questions
    8. Lab Exercises
  14. Chapter 3. CPUs
    1. Introduction
    2. 3.1 Programming Input and Output
      1. 3.1.1 Input and Output Devices
      2. 3.1.2 Input and Output Primitives
      3. 3.1.3 Busy-Wait I/O
      4. 3.1.4 Interrupts (1/3)
      5. 3.1.4 Interrupts (2/3)
      6. 3.1.4 Interrupts (3/3)
    3. 3.2 Supervisor Mode, Exceptions, and Traps
      1. 3.2.1 Supervisor Mode
      2. 3.2.2 Exceptions
      3. 3.2.3 Traps
    4. 3.3 Co-Processors
    5. 3.4 Memory System Mechanisms
      1. 3.4.1 Caches
      2. 3.4.2 Memory Management Units and Address Translation
    6. 3.5 CPU Performance
      1. 3.5.1 Pipelining
      2. 3.5.2 Caching
    7. 3.6 CPU Power Consumption
    8. 3.7 Design Example: Data Compressor
      1. 3.7.1 Requirements and Algorithm
      2. 3.7.2 Specification
      3. 3.7.3 Program Design (1/2)
      4. 3.7.3 Program Design (2/2)
      5. 3.7.4 Testing
    9. Summary
    10. Further Reading
    11. Questions
    12. Lab Exercises
  15. Chapter 4. Bus-Based Computer Systems
    1. Introduction
    2. 4.1 The CPU Bus
      1. 4.1.1 Bus Protocols (1/2)
      2. 4.1.1 Bus Protocols (2/2)
      3. 4.1.2 DMA
      4. 4.1.3 System Bus Configurations
      5. 4.1.4 AMBA Bus
    3. 4.2 Memory Devices
      1. 4.2.1 Memory Device Organization
      2. 4.2.2 Random-Access Memories
      3. 4.2.3 Read-Only Memories
    4. 4.3 I/O Devices
      1. 4.3.1 Timers and Counters
      2. 4.3.2 A/D and D/A Converters
      3. 4.3.3 Keyboards
      4. 4.3.4 LEDs
      5. 4.3.5 Displays
      6. 4.3.6 Touchscreens
    5. 4.4 Component Interfacing
      1. 4.4.1 Memory Interfacing
      2. 4.4.2 Device Interfacing
    6. 4.5 Designing with Microprocessors
      1. 4.5.1 System Architecture
      2. 4.5.2 Hardware Design
      3. 4.5.3 The PC as a Platform
    7. 4.6 Development and Debugging
      1. 4.6.1 Development Environments
      2. 4.6.2 Debugging Techniques
      3. 4.6.3 Debugging Challenges
    8. 4.7 System-Level Performance Analysis
      1. 4.7.1 System-Level Performance Analysis
      2. 4.7.2 Parallelism
    9. 4.8 Design Example: Alarm Clock
      1. 4.8.1 Requirements
      2. 4.8.2 Specification
      3. 4.8.3 System Architecture
      4. 4.8.4 Component Design and Testing
      5. 4.8.5 System Integration and Testing
    10. Summary
    11. Further Reading
    12. Questions
    13. Lab Exercises
  16. Chapter 5. Program Design and Analysis
    1. Introduction
    2. 5.1 Components for Embedded Programs
      1. 5.1.1 State Machines
      2. 5.1.2 Stream-Oriented Programming and Circular Buffers
      3. 5.1.3 Queues
    3. 5.2 Models of Programs
      1. 5.2.1 Data Flow Graphs
      2. 5.2.2 Control/Data Flow Graphs
    4. 5.3 Assembly, Linking, and Loading
      1. 5.3.1 Assemblers
      2. 5.3.2 Linking
    5. 5.4 Basic Compilation Techniques
      1. 5.4.1 Statement Translation
      2. 5.4.2 Procedures
      3. 5.4.3 Data Structures
    6. 5.5 Program Optimization
      1. 5.5.1 Expression Simplification
      2. 5.5.2 Dead Code Elimination
      3. 5.5.3 Procedure Inlining
      4. 5.5.4 Loop Transformations
      5. 5.5.5 Register Allocation
      6. 5.5.6 Scheduling
      7. 5.5.7 Instruction Selection
      8. 5.5.8 Understanding and Using Your Compiler
      9. 5.5.9 Interpreters and JIT Compilers
    7. 5.6 Program-Level Performance Analysis
      1. 5.6.1 Elements of Program Performance
      2. 5.6.2 Measurement-Driven Performance Analysis
    8. 5.7 Software Performance Optimization
      1. 5.7.1 Loop Optimizations
      2. 5.7.2 Performance Optimization Strategies
    9. 5.8 Program-Level Energy and Power Analysis and Optimization
    10. 5.9 Analysis and Optimization of Program Size
    11. 5.10 Program Validation and Testing
      1. 5.10.1 Clear-Box Testing (1/2)
      2. 5.10.1 Clear-Box Testing (2/2)
      3. 5.10.2 Black-Box Testing
      4. 5.10.3 Evaluating Function Tests
    12. 5.11 Software Modem
      1. 5.11.1 Theory of Operation and Requirements
      2. 5.11.2 Specification
      3. 5.11.3 System Architecture
      4. 5.11.4 Component Design and Testing
      5. 5.11.5 System Integration and Testing
    13. Summary
    14. Further Reading
    15. Questions
    16. Lab Exercises
  17. Chapter 6. Processes and Operating Systems
    1. Introduction
    2. 6.1 Multiple Tasks and Multiple Processes
      1. 6.1.1 Tasks and Processes
      2. 6.1.2 Multirate Systems
      3. 6.1.3 Timing Requirements on Processes
      4. 6.1.4 CPU Metrics
      5. 6.1.5 Process State and Scheduling
      6. 6.1.6 Some Scheduling Policies
      7. 6.1.7 Running Periodic Processes
    3. 6.2 Preemptive Real-Time Operating Systems
      1. 6.2.1 Preemption
      2. 6.2.2 Priorities
      3. 6.2.3 Processes and Context
      4. 6.2.4 Processes and Object-Oriented Design
    4. 6.3 Priority-Based Scheduling
      1. 6.3.1 Rate-Monotonic Scheduling
      2. 6.3.2 Earliest-Deadline-First Scheduling
      3. 6.3.3 RMS vs. EDF
      4. 6.3.4 A Closer Look at Our Modeling Assumptions
    5. 6.4 Interprocess Communication Mechanisms
      1. 6.4.1 Shared Memory Communication
      2. 6.4.2 Message Passing
      3. 6.4.3 Signals
    6. 6.5 Evaluating Operating System Performance
    7. 6.6 Power Management and Optimization for Processes
    8. 6.7 Design Example: Telephone Answering Machine
      1. 6.7.1 Theory of Operation and Requirements
      2. 6.7.2 Specification
      3. 6.7.3 System Architecture
      4. 6.7.4 Component Design and Testing
      5. 6.7.5 System Integration and Testing
    9. Summary
    10. Further Reading
    11. Questions
    12. Lab Exercises
  18. Chapter 7. Multiprocessors
    1. Introduction
    2. 7.1 Why Multiprocessors?
    3. 7.2 CPUs and Accelerators
      1. 7.2.1 System Architecture Framework
      2. 7.2.2 System Integration and Debugging
    4. 7.3 Multiprocessor Performance Analysis
      1. 7.3.1 Accelerators and Speedup
      2. 7.3.2 Performance Effects of Scheduling and Allocation
      3. 7.3.3 Buffering and Performance
    5. 7.4 Consumer Electronics Architecture
      1. 7.4.1 Use Cases and Requirements
      2. 7.4.2 Platforms and Operating Systems
      3. 7.4.3 Flash File Systems
    6. 7.5 Design Example: Cell Phones
    7. 7.6 Design Example: Compact DISCs and DVDs
    8. 7.7 Design Example: Audio Players
    9. 7.8 Design Example: Digital Still Cameras
    10. 7.9 Design Example: Video Accelerator
      1. 7.9.1 Algorithm and Requirements
      2. 7.9.2 Specification
      3. 7.9.3 Architecture
      4. 7.9.4 Component Design
      5. 7.9.5 System Testing
    11. Summary
    12. Further Reading
    13. Questions
    14. Lab Exercises
  19. Chapter 8. Networks
    1. Introduction
    2. 8.1 Distributed Embedded Architectures
      1. 8.1.1 Why Distributed?
      2. 8.1.2 Network Abstractions
      3. 8.1.3 Hardware and Software Architectures
      4. 8.1.4 Message Passing Programming
    3. 8.2 Networks for Embedded Systems
      1. 8.2.1 The I2C Bus
      2. 8.2.2 Ethernet
      3. 8.2.3 Fieldbus
    4. 8.3 Network-Based Design
    5. 8.4 Internet-Enabled Systems
      1. 8.4.1 Internet
      2. 8.4.2 Internet Applications
      3. 8.4.3 Internet Security
    6. 8.5 Vehicles as Networks
      1. 8.5.1 Automotive Networks
      2. 8.5.2 Avionics
    7. 8.6 Sensor Networks
    8. 8.7 Design Example: Elevator Controller
      1. 8.7.1 Theory of Operation and Requirements
      2. 8.7.2 Specification
      3. 8.7.3 Architecture
      4. 8.7.4 Testing
    9. Summary
    10. Further Reading
    11. Questions
    12. Lab Exercises
  20. Chapter 9. System Design Techniques
    1. Introduction
    2. 9.1 Design Methodologies
      1. 9.1.1 Why Design Methodologies?
      2. 9.1.2 Design Flows (1/2)
      3. 9.1.2 Design Flows (2/2)
    3. 9.2 Requirements Analysis
    4. 9.3 Specifications
      1. 9.3.1 Control-Oriented Specification Languages
      2. 9.3.2 Advanced Specifications
    5. 9.4 System Analysis and Architecture Design
    6. 9.5 Quality Assurance
      1. 9.5.1 Quality Assurance Techniques
      2. 9.5.2 Verifying the Specification
      3. 9.5.3 Design Reviews
    7. Summary
    8. Further Reading
    9. Questions
    10. Lab Exercises
  21. Appendix A. UML Notations
    1. Introduction
    2. A.1 Primitive Elements
    3. A.2 Diagram Types
      1. A.2.1 Class Diagram
      2. A.2.2 State Diagram
      3. A.2.3 Sequence and Collaboration Diagrams
  22. Glossary (1/3)
  23. Glossary (2/3)
  24. Glossary (3/3)
  25. References (1/2)
  26. References (2/2)
  27. Index (1/3)
  28. Index (2/3)
  29. Index (3/3)

Product information

  • Title: Computers as Components, 2nd Edition
  • Author(s): Marilyn Wolf
  • Release date: July 2008
  • Publisher(s): Morgan Kaufmann
  • ISBN: 9780080886213