Developing Industry Standards to Facilitate Multicore Adoption
Most everyone has realized that multicore technology is here to stay and manycore technology is imminent. Furthermore, the processor and third-party tool vendors realize that a huge financial opportunity awaits them by having products available that will facilitate the adoption of multicore technology. In a sense, this feeding frenzy has the potential to bring about extreme chaos as each vendor scrambles to gain a competitive edge. On the other hand, system developers are looking for solutions that won’t lock them into a specific vendor’s product. This is where the value of industry standards comes into play and it’s also the number one goal for the Multicore Association.
A Historical Perspective
Several years ago a few industry constituents, including Sven Brehmer of PolyCore Software, conceived the idea for a consortium (now known as the Multicore Association) that would identify, define, and derive multicore specific industry standards to support system developers and the associated ecosystem. While it seems that so many people are focused on programming languages and ways to write optimized parallel code, there are many other challenges (and opportunities) to face for development of a multicore-enabled system. These challenges include: a) communications, synchronization, resource management between/among cores; b) performance analysis; c) debugging; d) hypervisor support and OS virtualization; e) modeling and simulation; f) load balancing; and g) algorithm partitioning. The Multicore Association has put together a roadmap, represented in a block diagram, which highlights the key components required to establish portability and interoperability in a multicore world (Figure 1).
The roadmap depicts four pillars which serve as the foundation for many other services. Three of the pillars, namely communications, resource management, and task management, are responsible for inter-core communications and system management functions. The debug pillar provides the hooks into the other pillars and services. Essentially, these combined pillars provide a common set of API calls across different systems – porting to a new system requires swapping API implementations and a recompile, not a reimplementation of your code.
Download the Communications API
The consortium spent the first two years of its existence developing the specification for the Multicore Communications API (MCAPI) to support high performance, low latency inter-core communications. This specification, known as MCAPI, is helping multicore software developers build applications that can run on a wider variety of multicore architectures, enlarging their multicore design options and minimizing the amount of time spent porting and tuning applications for different multicore implementations.
Figure 1: Roadmap
With MCAPI now completed, the consortium has made this specification freely available to download from its website. Furthermore, the consortium also provides a source code example implementation comprised of C source code, a set of regression test-cases, and some example benchmarking code. This example MCAPI implementation allows multicore programmers to easily familiarize themselves with the functionality of MCAPI. The source code compiles and runs on Linux® or Windows® operating systems in computers equipped with the Cygwin environment. The code is architecture neutral and uses a shared memory transport layer. As an example implementation, it is not intended to be competitive with commercial implementations that take advantage of any given architecture. In March, PolyCore Software introduced the first commercial implementation of MCAPI.
A Trio of Working Groups
With the completion of the MCAPI specification, the Multicore Association has turned its focus to three other working group charters. One of those is the Multicore Resource Management API working group (MRAPI). The goal of this working group is to develop an industry-standard API that specifies essential application-level resource management capabilities needed to coordinate concurrent access to system resources. The MRAPI specification will complement MCAPI, as well as future API specifications. Resource management is a crucial capability for high-performance embedded systems, yet there is currently no suitable standard solution in the embedded application space. Standardization will allow multicore processor vendors and third-party tool vendors to take over the resource management aspects and enable system developers to focus their efforts on other critical features of their software that deliver real competitive advantages (Figure 2).
Figure 2: MRAPI
A second working group is working on a variety of areas that support hypervisor portability and associated multicore capabilities with a focus on paravirtual operations, communications, resource management, load balancing, and debugging APIs. Virtualization software in the form of hypervisors is rapidly becoming very popular in the embedded world, yet the industry currently lacks standards.
Figure 3: MPP
It is a well documented fact that the largest single obstacle limiting the rate of adoption of multicore platforms is the ability of software developers to program them. Much has been written about the many different ways this can be addressed, but let’s not be fooled into thinking that the world is standing still and waiting for a brave new solution. Hence, the Multicore Association is working on a multicore software programming guide that will aid in improving consistency and understanding of multicore programming issues (Figure 3). This effort is being conducted within the consortium’s Multicore Programming Practices (MPP) working group. Despite the enormous efforts to develop new languages to specifically support multicore, the reality is that C/C++ will be the dominant language for many years to come, therefore, this will be the focus for MPP.
The majority of programmers today are on the multicore programming learning curve. They have an understanding of the basic principles, but also still have a lot to learn. This is a real opportunity to contribute to the efforts which will have shortand long-term benefits across our entire industry.
Markus Levy is founder and president of EEMBC. He is also president of The Multicore Association and chairman of Multicore Expo. Mr. Levy was previously a senior analyst at In-Stat/MDR and an editor at EDN magazine, focusing in both roles on processors for the embedded industry. He is also a volunteer firefighter.