Multi-core processing is a "disruptive technology", transforming the way embedded systems are architected, developed, and debugged. With greatly improved performance and lower power, multi-core processors have caught the attention of designers who don't think twice about putting two, four, or even eight processor cores into a system. But many software developers are playing catch up, working hard to quickly parallelize code. They are finding traditional debug methods aren't sufficient to profile the complex interactions between concurrently running tasks. "In a system with interacting applications running simultaneously on multiple processor cores, breakpoints have reduced applicability as a tool for understanding system behavior," says Rob McCammon, Director of Advanced Technology Planning at Wind River Systems.
While the embedded world has been implementing multi-processing for the past decade, this is mostly with heterogeneous cores running separate workloads or asymmetric multiprocessing (AMP). The challenge is to make the cores work together, even though they typically run different application software and may have their own operating systems, compilers, and so on.
Symmetric multiprocessing (SMP) is coming of age in embedded with the recent availability of processors with multiple, homogeneous cores on the same die. CPUs, like the Intel Core 2 Duo and Quad processors, allow any core to work on any task since they share system memory. The challenge is to split up a workload so all the cores are busy without stepping on each other's toes. "In many cases, embedded and real-time code doesn't need much modification for SMP; it's generally multithreaded. If good programming practices have been followed, porting your code can be fairly straightforward, particularly if you're using a mature SMP OS like QNX Neutrino," says Bill Graham, Development Tools Product Line Manager, QNX Software Systems.
Wind River and QNX Software Systems are members of the Intel Communications Alliance (ICA), a community of communications and embedded developers and solutions providers committed to the development of modular, standards-based solutions on Intel technologies. Wind River and QNX provide operating systems and tools for multi-core software developers.