"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