» Definitions and Background
Distributed Systems.
Multi-Core Systems-on-a-Chip ("SoC").
Basic concepts associated with distributed systems and multi-core SoC.
Differences: Multi-Core vs. Distributed.
» Distributed Control Design
Loosely-Coupled Distributed Systems.
Distributing a Control Capability.
System Partitioning Guidelines.
Exercise
On-Board Automotive Networks. Body Electronics Control for Airport Train.
» Designing Complex Distributed Systems
Identifying Sub-systems: Sub-system Structuring Criteria.
Distributed Applications: Logical vs. Physical Nodes.
Design Models for Distributed Applications.
Decomposition of Sub-systems into Software Tasks (Optional).
Message Communication Performance Modeling (Optional).
Exercise
Multiprocessing System Performance Calculations. High-Performance IP Communication Router Design.
» Multi-Core Systems-on-a-Chip (SoC's)
The use of multi-core SoC's in embedded systems designs.
Amdahl's Law.
Fine-Grained vs. Coarse-Grained Parallelism.
Symmetric vs. Asymmetric Multiprocessing. Principles.
Operating Systems for Embedded Multiprocessing.
» Symmetric Multiprocessing ("SMP")
Organizing Software for SMP.
Operating Systems Support for SMP.
Spinlocks.
Load Balancing vs. Processor Affinity.
Extended Example: VxWorks RTOS for SMP.
Hidden Dangers in Designing Software for SMP.
OpenMP and MPI.
Read-Write Locks. Lock-Free Programming.
Design Patterns for SMP MultiCore Software.
» Asymmetric Multiprocessing ("AMP")
When to Use AMP.
Operating Systems for AMP.
Moving from Uni-Processing to AMP.
Hypervisors.
Design Patterns for AMP Multicore Software.
» Memory Issues in MultiCore Software
Working with Cache Memory.
Memory Contention.
"False Sharing".
Memory Consistency and Inconsistency.
Memory Barriers for MultiCore Software.