Opening up multicore implementation tools - Interview with Markus Levy, The Multicore Association
December 01, 2014
Multicore architectures are increasingly useful for meeting the performance demands of increasingly complex embedded systems. However, implementation...
There are many challenges, but it really depends on the application space being targeted. For example, in networking, a big portion of the challenges are resolved by using Linux and all the support that's associated. There are new areas in networking that are causing challenges, but these are not necessarily multicore specific (e.g., SDN). On the other hand, in the mobile space the challenges include scaling; since the trend in mobile is 4-8 cores (because that's what marketing wants to see), the issue is developing code that really takes advantage of all the cores.
Multicore is used in many other applications that rely on heterogeneous computing, and here the challenges are all that you mentioned above. The MCA has produced specifications, such as its Multicore Communications API (MCAP) that addresses the communication part and to some extent the programming and portability aspect. We are also soon going to release our Software-Hardware Interface for Multi-many-core (SHIM) that will make it easy for processor and software tool vendors to collaborate.
Coincidentally, the MCA has also just made an announcement that researchers at Siemens have developed an implementation of our Multicore Task Management API (MTAPI). It's available as open source under BSD license at GitHub. Siemens' release is part of a bigger software package that they have named Embedded Multicore Building Blocks (EMB2). EMB2 is a C/C++ library for the development of parallel applications containing several components on top of a base layer, which abstracts the operating system and the underlying multicore hardware to ensure portability (Figure 1). Besides MTAPI, EMB2 provides basic parallel algorithms, concurrent data structures, and skeletons for implementing stream processing applications. EMB² comes with C++ wrappers for MTAPI, which simplifies development in object-oriented environments.
Tell me about MCA, its working groups, and its mission.
The overall mission of the MCA is to develop standards to speed time-to-market for products with multicore processor implementations. The MCA board of directors has strategized to concentrate on some key areas of embedded multicore development. These include specifications for communications, resource management, task management, and a SHIM. In addition, we had a working group that produced a multicore book, which we call the Multicore Programming Practices guidebook. At the moment, active working group efforts are still going on with SHIM.
After several years of inactivity, we are also about to rekindle the working group efforts of our Communications API (MCAPI). MCAPI has grown in popularity over the years, mostly behind the scenes in proprietary implementations, but also in commercial products such as PolyCore Software's Poly-Platform. The new MCAPI working group efforts will include adding new features to the existing specification, as well as creating official MCAPI subsets that will address more resource-constrained applications such as the Internet of Things (IoT).
What is the state of multicore industry open standards? How much of multicore development is currently standardized vs. proprietary?
I don't know percentages, but I'd guess that a huge part of multicore development is still proprietary, at least in the embedded space. Industry standards take a long time to adopt because developers don't want to change their status quo. But we see a growing number of developers adopting our MCAPI standard, once they comprehend the benefits, which include portability and ease of use. Also, to reiterate, Siemens has done a great job with its EMB2; I think it will give many embedded developers a great head start. By the way, EMB2 is sort of analogous to Intel's building blocks targeted at higher performance applications.
How does MCA go about creating standards and APIs? What open tools have been developed? How do they address multicore integration challenges?
The first step in MCA creating standards is based on input from our board of directors. Additionally, any member can take a proposal to the board and if it aligns with our general strategy, it will get discussed at a task group (the pre-cursor to an official working group). Once it is realized that this proposal has legs, we walk it into a working group and invite members to participate. Similar to most consortium work, all development of standards is done in a democratic manner, which ensures increased value for a larger group. There are several open tools that have been developed, including the Poly-Platform and EMB2 mentioned above. Other tools and implementations from vendors such as Mentor Graphics and Express Logic are described on the MCA website.
What will be the future challenges of multicore integration for embedded systems in the next 5 or 10 years?
Although we first started the Multicore DevCon almost 10 years ago to uncover development challenges, similar challenges still exist today and into the foreseeable future. Clearly, multicore has become the de facto standard for embedded systems, and the industry continues to invest in optimizing the efficiency of multicore. The answer for today and the future is all in heterogeneous computing, whether it be CPU-GPU or complex SoCs with a variety of hardware accelerators.
The biggest challenge going forward will be standardizing the software that runs on proprietary and unique hardware. Significant improvements in software tools are necessary – something that the MCA SHIM specification plans to address. Essentially, SHIM describes the hardware from a software perspective (unlike IP-XACT, which focuses on the chip design level). SHIM will increase the adoption of new hardware by allowing tool vendors to more easily provide support for tools such as parallelizing compilers, simulators, performance analysis, and OS/middleware configurators.
What is next for MCA?
I'd say the biggest challenge for Multicore Association is to continue convincing companies to be leaders, rather than followers, and join our organization to help develop next generation specifications. By participating in the organization, it will help avoid re-inventing the wheel and use standards to accelerate product development, allowing companies to focus on their strengths.
The Multicore Association