The Embedded Multicore Building Blocks (EMB²) are an open source C/C++ library for the development of parallel embedded systems. Based on MTAPI, a standard for task management in embedded systems, EMB² relieves software developers from the burden of thread management and synchronization which significantly improves reliability, performance, and productivity. This talk describes the underlying concepts, gives an overview of the main components, and explains their usage by means of examples.
Multicore processors increasingly find their way into embedded systems. However, leveraging the power of such processors requires to parallelize the applications, which is often an intricate and error-prone task. To solve this problem, various libraries and language extensions for parallel programming have been developed in the past decade. However, most of these approaches are intended for desktop or server applications and do not take into account typical requirements from the embedded domain. For example, there are usually no guarantees regarding memory consumption and real-time behavior.
The EMB² library has been specifically designed for embedded multicore systems (https://github.com/siemens/embb/). It builds on the standardized Multicore Task Management API (MTAPI) and is independent of the hardware architecture (x86, ARM, ...). As a major advantage, EMB² supports heterogeneous systems consisting of different processors typically found in modern systems-on-a-chip. Unlike existing libraries, there is also support for task priorities and affinities, which allows the creation of soft real-time systems. Additionally, EMB² provides basic parallel algorithms, concurrent data structures, and skeletons for implementing stream processing applications.