"Multi-Core Software Architectural Design"
* An Advanced Course for Experienced Real-Time Embedded System Designers and Software Developers
* How to Structure Embedded Systems and Application Software in Multicore Environments
* 2- Day Intensive Class (lectures, discussions, design examples, exercises)
This intensive 2-day course examines the high-level design of embedded systems and software using multicore
It begins with a discussion of the basic concepts of multi-core systems-on-a-chip ("SoC's"), with focus on the use of
multi-core SoC's in embedded systems designs. This includes detailed study of both symmetric and asymmetric
multiprocessing -- from the perspectives of hardware, software and operating systems support. It delves deeply into
specialized operating system features for multi-core SoC's, multi-core software architectural design, and unique memory
issues in multi-core software. Special emphasis is placed on "multicore unsafe" design paradigms which are to be
Cutting-edge topics are addressed in detail, including programming languages for multicore, new operating systems
services for multicore, lock-free programming techniques, and software transactional memory.
This course is far from a general course about system or software design theory, but rather it is highly focused on the
practical design of embedded systems software that will operate in multicore processing configurations.
WHO SHOULD ATTEND ?
This course is intended for practicing real-time and embedded systems software system architects, project managers
and technical consultants who will have responsibility for designing, structuring and implementing the software for
real-time and embedded multiprocessing systems that will operate in multicore processing configurations.
Course participants are expected to have background in real-time software design for single-CPU embedded systems.
[This knowledge can be gained by attending a prerequisite embedded software design course such as "Architectural
Design of Real-Time Software".]
The primary goal of this course is to give the participant the skills necessary to design software for real-time and
embedded multiprocessing systems that will operate in multicore processing configurations. This is a very practical,
results-oriented course that will provide knowledge and skills that can be applied immediately.
Introduction: Multi-Core Systems-on-a-Chip (SoC's)
Symmetric vs. Asymmetric Multiprocessing
Fine-Grained vs. Coarse-Grained Parallelism
Exercise: Multiprocessing System Performance Calculations
Operating Systems for Multicore
Symmetric Multiprocessing ("SMP")
Organizing Software for SMP
Operating Systems Support for SMP
Load Balancing vs. Processor Affinity
Extended Example: Linux for SMP
Extended Example: VxWorks RTOS for SMP
Hidden Dangers in Designing Software for SMP
OpenMP for SMP Programming
Software Transactional Memory
Design Patterns for SMP MultiCore Software
Asymmetric Multiprocessing ("AMP")
When to Use AMP
Operating Systems for AMP
Moving from Uni-Processing to AMP
OpenCL for AMP Programming
MCAPI for AMP
Design Patterns for AMP Multicore Software
Memory Issues in MultiCore Software
Working with Cache Memory
Memory Consistency and Inconsistency
Memory Barriers for MultiCore Software
INSTRUCTOR: Dr. David Kalinsky
|© Copyright 2013, D. Kalinsky Associates, All Rights Reserved.
This page Updated June 1 2013