Update your multicore software skills

March 15, 2013

Bernard Cole-March 15, 2013

Recent surveys--including the annual soon-to-be-released UBM Embedded Market Study--indicate that while a majority of embedded systems developers use multiple individual microprocessors in each of their designs, few have actually shifted to the use of multicore architectures.

Part of the reason in the past--aside from the development of C-language compatible tools and methodologies--has been cost and power/performance tradeoffs where, for most of the past decade, dedicated 8- and 16-bit microcontrollers have held the edge. Now, 32-bit MCU architectures, such as the ARM Cortex-M0, are shaving away those traditional advantages. Indeed, a growing number of multicore designs are being based on such MCU cores, further eating away at dedicated single chip-single processor designs.

So, it's a good time to get an up-to-date education in what multicore architectures can do for your embedded design and how to get there with the least pain and cost. The best place to do that is the 2013 Embedded Systems Conference at DESIGN West, April 22 to 25.

[Click here to register for DESIGN West 2013, April 22-25 at the San Jose McEnery Convention Center. Options range from an All-Access Pass--which includes Black Hat (security) Conference Session to Free Expo Admission].

At the conference, from among the several hundred classes and hands-on courses, there are several classes I recommend as my Editor's Top Picks, including the following:

Take Full Advantage of Multicore with Multi-OS Architectures (ESC-203), where Stephen Olsen, product line manager, Wind River, will take you through several ways to migrate your existing designs from several subsystems onto a single SMP capable hardware, without redesigning everything. This course will talk about ways to migrate your existing design to multicore, partition system resources, utilizing several OS domains.

Systems Programming in the Distributed, Multicore World (ESC-218) in which Tucker Taft, director of language research at AdaCore, delves into the ways in which the the embedded systems programmer can transition from the current sequential C language to the distributed parallel programming paradigm to keep his/her systems running as efficiently as possible on the latest hardware environments.

He contrasts and compares three new systems programming languages that provide a safe, productive, and efficient parallel programming capability: Google's Go language, Mozilla's Rust language and ParaSail from Adacore.

Multicore Software Development Practices for Embedded Systems (ESC-229), in which Rob Oshana, director of global software R&D for networking and multimedia at Freescale Semiconductor, takes developers through the newly published Multicore Programming Practices (MPP) Guide from the Multicore Association.

He will demonstrate the tactics and techniques required, different ways of implementing parallelism, analysis and design techniques, implementation techniques, message passing implementations, the software debug process, code writing and debugging techniques, performance and optimization, and the multicore programming development lifecycle.

Multicore Thread to CPU Mapping on Linux and other RTOSes  (ESC-305), during which Fridtjof Siebert, CTO, aicas GmbH, will show scenarios and compare the performance of strategies for mapping threads to CPUs in these systems.

He details such techniques as the use by Linux and real-time OSes of PREEMPT_RT patches, high-level languages such as Java, scheduling of applications on multicore systems using explicit thread to CPU mapping via CPU affinities is a means to separate different parts of the application and via services provided by high level languages such as automatic memory management using concurrent real-time garbage collection that make use of additional cores and fully offload these service tasks from processors executing application code.

The integration of services such as real-time garbage collection will be discussed to give general guidelines for CPU affinity selection for complex multicore programs.

Software Design for Multicore Systems--2013 Edition (ESC-318), which will be taught by David Kalinsky of D. Kalinsky Associates. He will deal with how a C programmer can operate effectively in a multicore environment in which many traditional design assumptions of sequential or pseudo-parallel execution are no longer valid.

He will discuss ways of using symmetric multiprocessing and/or asymmetric multiprocessing operating systems effectively through the use of multiprocessing-safe inter-task communication and synchronization mechanisms such as include inter-processor message passing, spin-locks and multiple reader-writer locks.

The Many Ways of Programming an ARM Cortex-M MCU (ESC-422), during which Joseph Yiu, embedded technology specialist, and Ian Johnson, product manager, ARM Ltd., will examine the various programming methods and languages available for programming ARM Cortex-M microcontroller cores in an embedded SoC design besides the C and C++ programming languages.

Included in their discussions: how the ARM Cortex-M microcontrollers can be programmed in Java, Ardinuo, high-level graphical programming languages, and other language abstractions.

Information Redux


Bernard Cole is the site editor on Embedded.com. You may reach him at bccole@acm.org. See more articles and column like this one on Embedded.com. Sign up for the Embedded.com newsletters.

Loading comments...

Most Commented

Parts Search Datasheets.com

KNOWLEDGE CENTER