Book description
The multicore revolution has reached the deployment stage in embedded systems ranging from small ultramobile devices to large telecommunication servers. The transition from single to multicore processors, motivated by the need to increase performance while conserving power, has placed great responsibility on the shoulders of software engineers. In this new embedded multicore era, the toughest task is the development of code to support more sophisticated systems. This book provides embedded engineers with solid grounding in the skills required to develop software targeting multicore processors. Within the text, the author undertakes an in-depth exploration of performance analysis, and a close-up look at the tools of the trade. Both general multicore design principles and processor-specific optimization techniques are revealed. Detailed coverage of critical issues for multicore employment within embedded systems is provided, including the Threading Development Cycle, with discussions of analysis, design, development, debugging, and performance tuning of threaded applications. Software development techniques engendering optimal mobility and energy efficiency are highlighted through multiple case studies, which provide practical “how-to advice on implementing the latest multicore processors. Finally, future trends are discussed, including terascale, speculative multithreading, transactional memory, interconnects, and the software-specific implications of these looming architectural developments.- This is the only book to explain software optimization for embedded multi-core systems
- Helpful tips, tricks and design secrets from an Intel programming expert, with detailed examples using the popular X86 architecture
- Covers hot topics, including ultramobile devices, low-power designs, Pthreads vs. OpenMP, and heterogeneous cores
Table of contents
- Copyright
- Preface
- Acknowledgments
- 1. Introduction
-
2. Basic System and Processor Architecture
- 2.1. Performance
-
2.2. Brief History of Embedded Intel® Architecture Processors
- 2.2.1. Intel® 186 Processor
- 2.2.2. Intel386™ Processor
- 2.2.3. Intel486™ Processor
- 2.2.4. Intel® Pentium Processor
- 2.2.5. The Intel® Pentium III Processor
- 2.2.6. The Intel Pentium® 4 Processor
- 2.2.7. The Intel Pentium® M Processor
- 2.2.8. Dual-Core Intel Xeon® Processors LV and ULV and Dual-Core Intel® Xeon® Processor 5100 Series
- 2.2.9. Intel® Core™ 2 Duo Processors for Embedded Computing
- 2.2.10. Quad-Core Intel® Xeon® Processor 5300 Series
- 2.3. Embedded Trends and Near Term Processor Impact
-
2.4. Tutorial on x86 Assembly Language
- 2.4.1. X86 Assembly Basics
- 2.4.2. Tip #1 – Focus on Small Regions
- 2.4.3. Tip #2 – Quickly Identify Source and Destination
- 2.4.4. Tip #3 – Learn Basic Registers and Memory References
- 2.4.5. Tip #4 – Learn Basic Frequently Used Operations
- 2.4.6. Tip #5 – Your Friendly Neighborhood Reference Manual
- 2.4.7. Tip #6 – Beware of Compiler Optimization
- 2.4.8. Tip #7 – Correlating Disassembly to Source
- 2.4.9. Sample Assembly Walkthrough
- Chapter Summary
- Related Reading
-
3. Multi-core Processors and Embedded
- 3.1. Motivation for Multi-core Processors
- 3.2. Multi-core Processor Architecture
- 3.3. Benefits of Multi-core Processors in Embedded
-
3.4. Embedded Market Segments and Multi-core Processors
- 3.4.1. Wireless Telecommunications Infrastructure
- 3.4.2. Industrial Control
- 3.4.3. Federal (Military, Aerospace, Government)
- 3.4.4. Enterprise Infrastructure Security
- 3.4.5. In-vehicle Infotainment
- 3.4.6. Interactive Clients
- 3.4.7. Voice and Converged Communications
- 3.4.8. Digital Security Surveillance
- 3.4.9. Storage
- 3.4.10. Medical
- 3.5. Evaluating Performance of Multi-core Processors
- Chapter Summary
- Related Reading
-
4. Moving to Multi-core Intel Architecture
-
4.1. Migrating to Intel Architecture
- 4.1.1. 32-Bit Versus 64-Bit Support
- 4.1.2. Endianness: Big to Little
-
4.1.3. BIOS and OSes Considerations
- 4.1.3.1. Instruction Set Extension Support
- 4.1.3.2. Symmetric Multiprocessing (SMP) Support
- 4.1.3.3. Advanced Technologies (*Ts)
- 4.1.3.4. Basic Input/Output System (BIOS)
- 4.1.3.5. Extensible Firmware Interface (EFI)
- 4.1.3.6. Desktop/Server OS
- 4.1.3.7. Embedded Linux OS
- 4.1.3.8. Embedded Windows
- 4.1.3.9. Embedded OS
- 4.1.3.10. Proprietary OS
- 4.2. Enabling an SMP OS
- 4.3. Tools for Multi-core Processor Development
- Chapter Summary
- Related Reading
-
4.1. Migrating to Intel Architecture
- 5. Scalar Optimization and Usability
- 6. Parallel Optimization Using Threads
- 7. Case Study: Data Decomposition
- 8. Case Study: Functional Decomposition
- 9. Virtualization and Partitioning
-
10. Getting Ready for Low Power Intel Architecture
- 10.1. Architecture
- 10.2. Debugging Embedded Systems
- Chapter Summary
- 11. Summary, Trends, and Conclusions
- Appendix A
- Glossary
Product information
- Title: Software Development for Embedded Multi-core Systems
- Author(s):
- Release date: April 2011
- Publisher(s): Newnes
- ISBN: 9780080558585
You might also like
book
Software Engineering for Embedded Systems
This Expert Guide gives you the techniques and technologies in software engineering to optimally design and …
book
Multicore and GPU Programming
Multicore and GPU Programming offers broad coverage of the key parallel computing skillsets: multicore CPU programming …
book
Real-Time Embedded Systems
This book integrates new ideas and topics from real time systems, embedded systems, and software engineering …
book
Real World Multicore Embedded Systems
This Expert Guide gives you the techniques and technologies in embedded multicore to optimally design and …