Tuesday, April 4, 2017

EMB²

"The era of increasing processor clock frequencies is over—hardware vendors are instead increasing the number of processor cores integrated on a single chip. Such multicore processors provide high performance, which enables novel applications, at low costs and reduced energy consumption. The latter is essential for battery-powered devices and systems with limited capabilities to dissipate heat. 

Efficiently leveraging the performance of multicore processors requires to parallelize the applications. Using conventional techniques provided by the operating system, however, this is an intricate and error-prone task. The Embedded Multicore Building Blocks (EMB²) are a domain-independent open source C/C++ library that solves this problem by simplifying parallel programming. 

The Embedded Multicore Building Blocks (EMB²) are an easy to use yet powerful and efficient C/C++ library for the development of parallel applications. EMB² has been specifically designed for embedded systems and the typical requirements that accompany them, such as real-time capability and constraints on memory consumption. As a major advantage, low-level operations are hidden in the library which relieves software developers from the burden of thread management and synchronization. This not only improves productivity of parallel software development, but also results in increased reliability and performance of the applications.

EMB² is independent of the hardware architecture (x86, ARM, ...) and runs on various platforms, from small devices to large systems containing numerous processor cores. It builds on MTAPI, a standardized programming interface for leveraging task parallelism in embedded systems containing symmetric or asymmetric (heterogeneous) multicore processors. A core feature of MTAPI is low-overhead scheduling of fine-grained tasks among the available cores during runtime. Unlike existing libraries, EMB² supports task priorities and affinities, which allows the creation of soft real-time systems. Additionally, the scheduling strategy can be optimized for non-functional requirements such as minimal latency and fairness.

Besides the task scheduler, EMB² provides basic parallel algorithms, concurrent data structures, and skeletons for implementing stream processing applications (see figure below). These building blocks are largely implemented in a non-blocking fashion, thus preventing frequently encountered pitfalls like lock contention, deadlocks, and priority inversion. As another advantage in real-time systems, the algorithms and data structures give certain progress guarantees. For example, wait-free data structures guarantee system-wide progress which means that every operation completes within a finite number of steps independently of any other concurrent operations on the same data structure."

https://github.com/siemens/embb

https://embb.io/

No comments:

Post a Comment