Computers As Components
Principles of Embedded Computing System Design
- 1st Edition - July 11, 2005
- Latest edition
- Author: Wayne Wolf
- Language: English
The vast majority of existing computers are embedded in the myriad of intelligent devices and applications-not in desktop machines. We are witnessing the emergence of a new… Read more
Purchase options
Computers as Components is the first book to teach this new discipline. It unravels the complexity of these systems and the tools and methods necessary for designing them. Researchers, students, and savvy professionals, schooled in hardware or software, will value the integrated engineering design approach to this fast emerging field.
- Demonstrates concepts and techniques using two powerful real-world processors as case studies throughout the book: the ARM processor and the SHARC DSP (digital signal processor).
- Illustrates the major concepts of each chapter with real-world design examples such as software modems, telephone answering machines, and video accelerators.
- Teaches the basics of UML (Unified Modeling Language) and applies it throughout the text to help you visualize stages in the design process.
- Illustrates real-time operating systems using the POSIX real-time extensions and Linux.
- Describes performance analysis and optimization of embedded software, including the effects of caches.
Preface
Chapter 1 - Embedded Computing
1.1 Introduction
1.2 Complex Systems and Microprocessors
1.2.1 Embedding Computers
1.2.2 Characteristics of Embedded Computing Applications
1.2.3 Why Use Microprocessors?
1.2.4 Challenges in Embedded Computing System Design
1.3 The Embedded System Design Process
1.3.1 Requirements
1.3.2 Specification
1.3.3 Architecture Design
1.3.4 Designing Hardware and Software Components
1.3.5 System Integration
1.4 Formalisms for System Design
1.4.1 Structural Description
1.4.2 Behavioral Description
1.5 Design Example: Model Train Controller
1.5.1 Requirements
1.5.2 Conceptual Specification
1.5.3 Detailed Specification
1.5.4 Lessons Learned
1.6 A Guided Tour of This Book
1.6.1 Chapter 2: Instruction Sets
1.6.2 Chapter 3: CPUs
1.6.3 Chapter 4: The Embedded Computing Platform
1.6.4 Chapter 5: Program Design and Analysis
1.6.5 Chapter 6: Processes and Operating Systems
1.6.6 Chapter 7: CPU Accelerators
1.6.7 Chapter 8: Networks
1.6.8 Chapter 9: System Design Techniques
1.7 Summary
Further Reading
Questions
Lab Exercises
Chapter 2 - Instruction Sets
2.1 Introduction
2.2 Preliminaries
2.2.1 Computer Architecture Taxonomy
2.2.2 Assembly Language
2.3 ARM Processor
2.3.1 Processor and Memory Organization
2.3.2 Data Operations
2.3.3 Flow of Control
2.4 SHARC Processor
2.4.1 Memory Organization
2.4.2 Data Operations
2.4.3 Flow of Control
2.4.4 Parallelism within Instructions
2.5 Summary
Further Reading
Questions
Lab Exercises
Chapter 3 - CPUs
3.1 Introduction
3.2 Programming Input and Output
3.2.1 Input and Output Devices
3.2.2 Input and Output Primitives
3.2.3 Busy-Wait I/O
3.2.4 Interrupts
3.3 Supervisor Mode, Exceptions, and Traps
3.3.1 Supervisor Mode
3.3.2 Exceptions
3.3.3 Traps
3.4 Co-Processors
3.5 Memory System Mechanisms
3.5.1 Caches
3.5.2 Memory Management Units and Address Translations
3.6 CPU Performance
3.6.1 Pipelining
3.6.2 Superscalar Execution
3.6.3 Caching
3.7 CPU Power Consumption
3.8 Design Example: Data Compressor
3.8.1 Requirements and Algorithm
3.8.2 Specification
3.8.3 Program Design
3.8.4 Testing
3.9 Summary
Further Reading
Questions
Lab Exercises
Chapter 4 - The Embedded Computing Platform
4.1 Introduction
4.2 The CPU Bus
4.2.1 Bus Protocols
4.2.2 DMA
4.2.3 System Bus Configurations
4.2.4 ARM Bus
4.2.5 SHARC Bus
4.3 Memory Devices
4.3.1 Memory Device Organization
4.3.2 Random-Access Memories
4.3.3 Read-Only Memories
4.4 I/O Devices
4.4.1 Timers and Counters
4.4.2 A/D and D/A Converters
4.4.3 Keyboards
4.4.4 LEDs
4.4.5 Displays
4.4.6 Touchscreens
4.5 Component Interfacing
4.5.1 Memory Interfacing
4.5.2 Device Interfacing
4.6 Designing with Microprocessors
4.6.1 System Architecture
4.6.2 Hardware Design
4.6.3 The PC as a Platform
4.7 Development and Debugging
4.7.1 Development Environments
4.7.2 Debugging Techniques
4.7.3 Debugging Challenges
4.8 Manufacturing Testing
4.9 Design Example: Alarm Clock
4.9.1 Requirements
4.9.2 Specification
4.9.3 System Architecture
4.9.4 Component Design and Testing
4.9.5 System Integration and Testing
4.10 Summary
Further Reading
Questions
Lab Exercises
Chapter 5 - Program Design and Analysis
5.1 Introduction
5.2 Program Design
5.2.1 Design Patterns
5.2.2 Design Patterns for Embedded Systems
5.3 Models of Programs
5.3.1 Data Flow Graphs
5.3.2 Control/Data Flow Graphs
5.4 Assembly and Linking
5.4.1 Assemblers
5.4.2 Linking
5.5 Basic Compilation Techniques
5.5.1 Statement Translation
5.5.2 Procedures
5.5.3 Data Structures
5.5.4 Expression Simplification
5.5.5 Dead Code Elimination
5.5.6 Procedure Inlining
5.5.7 Loop Transformations
5.5.8 Register Allocation
5.5.9 Scheduling
5.5.10 Instruction Selection
5.5.11 Understanding and Using Your Compiler
5.5.12 Interpreters and JIT Compilers
5.6 Analysis and Optimization of Execution Time
5.6.1 Elements of Program Performance
5.6.2 Trace-Driven Performance Analysis
5.6.3 Optimizing for Execution Speed
5.7 Analysis and Optimization of Energy and Power
5.7.1 Program Energy Consumption and Optimization
5.8 Analysis and Optimization of Program Size
5.9 Program Validation and Testing
5.9.1 Clear-Box Testing
5.9.2 Black-Box Testing
5.9.3 Evaluating Function Tests
5.9.4 Performance Testing
5.10 Design Example: Software Modem
5.10.1 Theory of Operation and Requirements
5.10.2 Specification
5.10.3 System Architecture
5.10.4 Component Design and Testing
5.10.5 System Integration and Testing
5.11 Summary
Further Reading
Questions
Lab Exercises
Chapter 6 - Processes and Operating Systems
6.1 Introduction
6.2 Multiple Tasks and Multiple Processes
6.2.1 Multirate Systems
6.2.2 Early Multitasking Technology: The Co-Routine
6.3 Processes
6.4 Context Switching
6.4.1 Cooperative Multitasking
6.4.2 Preemptive Multitasking
6.4.3 Processes and Object-Oriented Design
6.5 Operating Systems
6.5.1 Process State and Scheduling
6.5.2 Operating System Structure
6.5.3 Timing Requirements on Processes
6.5.4 Interprocess Communication
6.5.5 Other Operating System Functions
6.6 Scheduling Policies
6.6.1 Rate-Monotonic Scheduling
6.6.2 Earliest-Deadline-First Scheduling
6.6.3 RMS versus EDF
6.6.4 A Closer Look at Our Modeling Assumptions
6.6.5 Other POSIX Scheduling Policies
6.7 Interprocess Communication Mechanisms
6.7.1 Signals
6.7.2 Signals in UML
6.7.3 Shared Memory Communication
6.7.4 Message-Based Communication
6.8 Evaluating Operating System Performance
6.9 Power Optimization Strategies for Processes
6.10 Design Example: Telephone Answering Machine
6.10.1 Theory of Operation and Requirements
6.10.2 Specification
6.10.3 System Architecture
6.10.4 Component Design and Testing
6.10.5 System Integration and Testing
6.11 Summary
Further Reading
Questions
Lab Exercises
Chapter 7 - Hardware Accelerators
7.1 Introduction
7.2 CPUs and Accelerators
7.2.1 Why Accelerators?
7.2.2 Accelerator Design
7.3 Accelerated System Design
7.3.1 Performance Analysis
7.3.2 System Architecture Framework
7.3.3 Partitioning
7.3.4 Scheduling and Allocation
7.3.5 System Integration and Debugging
7.4 Design Example: Video Accelerator
7.4.1 Algorithm and Requirements
7.4.2 Specification
7.4.3 Architecture
7.4.4 Component Design
7.4.5 System Testing
7.5 Summary
Further Reading
Questions
Lab Exercises
Chapter 8 - Networks
8.1 Introduction
8.2 Distributed Embedded Architectures
8.2.1 Why Distributed?
8.2.2 Network Abstractions
8.2.3 Hardware and Software Architectures
8.2.4 Message-Passing Programming
8.3 Networks for Embedded Systems
8.3.1 The I2C Bus
8.3.2 The CAN Bus
8.3.3 SHARC Link Ports
8.3.4 Ethernet
8.3.5 Myrinet
8.3.6 Internet
8.4 Network-Based Design
8.4.1 Communication Analysis
8.4.2 System Performance Analysis
8.4.3 Hardware Platform Design, Allocation, and Scheduling
8.5 Internet-Enabled Systems
8.6 Design Example: Elevator Controller
8.6.1 Theory of Operation and Requirements
8.6.2 Specification
8.6.3 Architecture
8.6.4 Testing
8.7 Summary
Further Reading
Questions
Lab Exercises
Chapter 9 - System Design Techniques
9.1 Introduction
9.2 Design Methodologies
9.2.1 Why Design Methodologies?
9.2.2 Design Flows
9.3 Requirements Analysis
9.4 Specifications
9.4.1 Control-Oriented Specification Languages
9.4.2 Advanced Specifications
9.5 System Analysis and Architecture Design
9.5.1 CRC Cards
9.6 Quality Assurance
9.6.1 Quality Assurance Techniques
9.6.2 Verifying the Specification
9.6.3 Design Reviews
9.6.4 Measurement-Driven Quality Assurance
9.7 Design Example: Telephone PBX
9.7.1 Theory of Operation
9.7.2 System Architecture
9.8 Design Example: Ink Jet Printer
9.8.1 Hardware Design
9.8.2 Software Design
9.9 Design xample: Personal Digital Assistants
9.10 Design xample: Set-Top Boxes
9.11 Systems-on-Silicon
9.12 Summary
Further Reading
Questions
Lab Exercises
Appendix A - UML Notations
A.1 Introduction
A.2 Primitive Elements
A.3 Diagram Types
A.3.1 Class Diagram
A.3.2 State Diagram
A.3.3 Sequence and Collaboration Diagrams
Appendix B - Notes on Hardware Design
B.1 Introduction
B.2 Combinational Logic
B.3 Sequential Logic
B.3.1 Memory Elements
B.3.2 Synchronous Machines
B.3.3 Asynchronous Machines
B.4 Implementation Media
Glossary
References
- Edition: 1
- Latest edition
- Published: July 11, 2005
- Language: English
WW
Wayne Wolf
Computing, and Georgia Research Alliance Eminent Scholar at the Georgia Institute of
Technology. Before joining Georgia Tech, he was with Princeton University and AT&T
Bell Laboratories in Murray Hill, New Jersey. He received his B.S., M.S., and Ph.D. in
electrical engineering from Stanford University. He is well known for his research in the
areas of hardware/software co-design, embedded computing, VLSI CAD, and multimedia
computing systems. He is a fellow of the IEEE and ACM. He co-founded several
conferences in the area, including CODES, MPSoC, and Embedded Systems Week. He
was founding co-editor-in-chief of Design Automation for Embedded Systems and
founding editor-in-chief of ACM Transactions on Embedded Computing Systems. He has
received the ASEE Frederick E. Terman Award and the IEEE Circuits and Society Education Award. He is also series editor of the Morgan Kaufmann Series in Systems on
Silicon.