D. Kalinsky Associates
Home  |  Training Courses  |  Online Learning  |  Resources  |  About Us  |  Contact  |  Site Map  
Advanced Course:

"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.


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 "
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
Amdahl's Law
Gustafson's Law
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
Read-Write Locks
Lock-Free 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
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

Final Examination.

INSTRUCTOR:  Dr. David Kalinsky
Check it out! Get the "flavor" of this course by perusing
several of the course's reading assignments:
1. "Designing Software for Multicore Systems"
2. "
The Fourth Semaphore: Multiple Reader - Writer Locks"
3. "
Is Lock-Free Programming Practical for Multicore ?"
Price of an On-Site Course
Schedule an On-Site Course
© Copyright 2013, D. Kalinsky Associates, All Rights Reserved.
This page Updated June 1 2013