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 discipline with its own principles, constraints, and design processes. 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.
Rezensionen / Stimmen
This book will prove invaluable as a means for acquiring knowledge in this important and newly emerging field. It will also serve as a reference in actual design practice and be a trusted companion in the design adventures ahead. ?From the foreword by Lynn Conway, Professor Emerita, Department of Electrical Engineering and Computer Science, University of Michigan This book is the first to bring embedded systems technology and techniques together under a single cover. The author provides a practical overview of the many interrelated issues that must be addressed during the complete design cycle of an embedded computer system. ?Randolph E. Harr, Director of Research, Advanced Technology Group (ATG), Synopsys, Inc.
Sprache
Verlagsort
Verlagsgruppe
Elsevier Science & Technology
Zielgruppe
Für höhere Schule und Studium
Illustrationen
Maße
Höhe: 235 mm
Breite: 187 mm
Gewicht
ISBN-13
978-1-55860-541-1 (9781558605411)
Copyright in bibliographic data and cover images is held by Nielsen Book Services Limited or by the publishers or by their respective licensors: all rights reserved.
Schweitzer Klassifikation
Wayne Wolf received the BS, MS, PhD degrees in electrical engineering from Stanford University in 1980, 1981, and 1984, respectively. He was with AT&T Bell Laboratories from 1984 through 1989. He joined the Department of Electrical Engineering at Princeton University in 1989, where he is now a professor. His research interests include hardware/software co-design and embedded computing, multimedia computing systems, and video libraries. He is a fellow of the IEEE and a member of the ACM and SPIE. He is author of Computers as Components: Principles of Embedded Computing System Design and Modern VLSI Design: A Systems Approach. Also, he is co-series editor of the new Morgan Kaufmann Series in Systems on Silicon.
Foreword: 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: About the CD-ROMs;