LIMITED OFFER
Save 50% on book bundles
Immediately download your ebook while waiting for your print delivery. No promo code needed.
This Expert Guide gives you the techniques and technologies in embedded multicore to optimally design and implement your embedded system. Written by experts with a solutions fo… Read more
LIMITED OFFER
Immediately download your ebook while waiting for your print delivery. No promo code needed.
This Expert Guide gives you the techniques and technologies in embedded multicore to optimally design and implement your embedded system. Written by experts with a solutions focus, this encyclopedic reference gives you an indispensable aid to tackling the day-to-day problems when building and managing multicore embedded systems.
Following an embedded system design path from start to finish, our team of experts takes you from architecture, through hardware implementation to software programming and debug.
With this book you will learn:
• What motivates multicore
• The architectural options and tradeoffs; when to use what
• How to deal with the unique hardware challenges that multicore presents
• How to manage the software infrastructure in a multicore environment
• How to write effective multicore programs
• How to port legacy code into a multicore system and partition legacy software
• How to optimize both the system and software
• The particular challenges of debugging multicore hardware and software
Software architects and programmers, embedded system architects, hardware designers and engineers
About the Editor
About the Authors
Chapter 1. Introduction and Roadmap
Multicore is here
Scope
Who should read this book?
Organization and roadmap
A roadmap of this book
Chapter 2. The Promise and Challenges of Concurrency
Concurrency fundamentals
Two kinds of concurrency
Dependencies
Loops and dependencies
Shared resources
Summary
Chapter 3. Multicore Architectures
The need for multicore architectures
Multicore architecture drivers
Traditional sequential software paradigms break
Scope of multicore hardware architectures
Basic multicore hardware architecture overview
Specific multicore architecture characteristics
Processing architectures
ALU processing architectures
Lightweight processing architectures
Mediumweight processing architectures
Heavyweight processing architectures
Communication architectures
Memory architectures
Application specificity
Application-specific platform topologies
Integration of multicore systems, MPSoCs and sub-systems
Programming challenges
Application characteristics
MPSoC analysis, debug and verification
Shortcomings and solutions
MPSoC parallel programming
Parallel software and MPSoCs
Summary
References
Chapter 4. Memory Models for Embedded Multicore Architecture
Introduction
Memory types
Memory architecture
Memory structure of multicore architecture
Cache coherency
Transactional memory
Summary
References
Chapter 5. Design Considerations for Multicore SoC Interconnections
Introduction
Communication activity in multicore SoCs
Functional requirements and topologies of SoC traffic
Performance considerations
Interconnection networks: representation and terminology
Bus as an SoC interconnection
Fabric-oriented interconnects for larger SoCs
Building blocks of scalable interconnections
Evaluating and comparing interconnection topologies for future SoCs
A survey of interconnection networks suitable for future SoCs
Some practical considerations in designing interconnections
Summary
References
Further reading
Chapter 6. Operating Systems in Multicore Platforms
Introduction
Symmetric multiprocessing systems and scheduling
Assymetric multiprocessor systems
Virtualization
Controlling OS behavior
Debugging a multicore system
Summary
Reference
Chapter 7. System Virtualization in Multicore Systems
What is virtualization?
A brief retrospective
Applications of system virtualization
Hypervisor architectures
Leveraging hardware assists for virtualization
Hypervisor robustness
I/O Virtualization
Case study: power architecture virtualization and the freescale P4080
Example use cases for system virtualization
Conclusion
References
Chapter 8. Communication and Synchronization Libraries
Introduction
Library overview and basics
Explicit threading libraries
OpenMP
Threading Building Blocks
Boost Threads
MCAPI
Conclusion
References
Chapter 9. Programming Languages
Programming languages for multicore embedded systems
C
Assembly language
C++
Java
Python
Ada
Summary
References
Chapter 10. Tools
Introduction
Real-Time operating systems (RTOS)
Communication tools
Parallelizing serial software tools
Software development and debug tools
Benchmarking tools
Conclusion
Acknowledgments
Chapter 11. Partitioning Programs for Multicore Systems
Introduction
What level of parallelism?
The basic cost of partitioning
A high-level partitioning algorithm
The central role of dependencies
Critical sections
Synchronizing data
Implementing a partitioning strategy
Using tools to simplify partitioning
Summary
References
Chapter 12. Software Synchronization
Introduction
Why is synchronization required?
Problems with not synchronizing (or synchronizing badly)
Testing for proper synchronization
How is synchronization achieved?
Specific conditions requiring synchronization
Language support for implementation
Patterns
Side-effects of synchronization
Hardware and OS effects on synchronization
Problems when trying to implement synchronization
References
Chapter 13. Hardware Accelerators
Introduction
Architectural considerations
The interface: registers, drivers, APIs, and ISRs
Initialization
Operating system considerations
Coherency
Making the architectural decisions
Video example
Summary
Chapter 14. Multicore Synchronization Hardware
Chapter overview
Instruction set support for synchronization
Hardware support for synchronization
Hardware support for lock-free programming
Memory subsystem considerations
Conclusions
References
Chapter 15. Bare-Metal Systems
Introduction
Architectural arrangements
Software architecture
Building the executable image(s)
Example: IPv4 forwarding
Conclusion
Reference
Chapter 16. Multicore Debug
Introduction – why debug instrumentation
Background – silicon debug and capabilities
Trace methods for multicore debug analysis
Debug flows and subsystems
Commercial approaches
The future of multicore debug
References
Further reading
Index
BM