In recent years, as embedded systems – and the software within them – have become increasingly complex, the emergence and adoption of multicore processors in the embedded space has been a trend closely followed by industry participants. Thus far the transition to multicore has been a slow one, with only 16% of engineers responding to VDC’s 2011 Embedded Engineering Survey indicating they were currently working on a project that incorporated a multicore processor. Looking forward two years, however, engineers expect that ratio to more than double.
Clearly, semiconductor vendors have collectively made multicore processors more widely available, technologically capable, and affordable today than they were several years ago. Similarly, operating system suppliers such as Enea, Green Hills Software, LynuxWorks, QNX Software Systems, and Wind River have continually introduced innovative multicore functionality to their OS solutions and development tools, in an effort to bridge the gap between the potential of multicore chips and the functionality of multicore-aware software platforms.
What remains unclear is whether or not these developers have access to – or fully understand the capabilities of – the tools necessary to enable a transition from a single core, serial processing environment to one in which multiple threads are executing simultaneously on multiple cores. This, of course, has been the key question surrounding multicore for at least two years. VDC believes that the complications associated with parallel programming (particularly with regard to transitioning legacy serial code to a multicore system) remain among the primary challenges silicon vendors and software suppliers must address before the adoption of multicore can reach its tipping point in embedded.
Must leading software development tools vendors such as Lauterbach and ARM continue to make significant improvements to the functionality of their tools for multicore development, or are greater efforts around engineer training and education more important at this point in time? How important are the roles of tools for software modeling, dynamic system design, and test automation with regard to addressing engineers’ concerns with parallel programming? Has anything really changed with regard to the factors affecting the adoption of multicore in the last couple of years?