EMB² = Parallel + Heterogen
Die Embedded Multicore Building Blocks (EMB²) sind eine als Open-Source-Software zur Verfügung stehende Bibliothek für die parallele Programmierung von eingebetteten Systemen. EMB² basiert auf MTAPI (Multicore Task Management API), einem Standard für das Task-Management in mit C/C++ implementierten Applikationen. Im Folgenden geben wir einen Überblick über EMB² und zeigen auf, wie sich Parallelität über die Grenzen von klassischen Multicore-Prozessoren hinaus mittels MTAPI nutzen lässt.
Anbieter zum Thema

Bei der Programmierung eingebetteter Systeme sind Entwickler heutzutage oftmals mit Parallelität und Heterogenität konfrontiert [1]. Parallelität ist auf Applikationsebene erforderlich, um die Leistung von Multicore-Prozessoren ausschöpfen zu können. Dies ist jedoch mit zahlreichen Hürden und Fallstricken bei der Software-Entwicklung verbunden. Erschwerend kommt hinzu, dass viele eingebettete Systeme neben mehreren, gleichartigen Prozessorkernen spezielle Beschleuniger wie Signalprozessoren oder gar programmierbare Logikbausteine (FPGAs) enthalten.
Tatsächlich bestehen moderne Systems-on-a-Chip (SoCs) aus verschiedensten Prozessoren, die für unterschiedliche Zwecke optimiert sind. Solche SoCs zeichnen sich durch eine hohe Leistung bei relativ geringem Energieverbrauch aus. Zu den Kehrseiten gehören eine hohe Komplexität der Software-Entwicklung sowie Herstellerabhängigkeit und damit mangelnde Portabilität. Der MTAPI-Standard [2] verspricht, diese Probleme zu lösen. Bevor wir jedoch auf die grundlegenden Konzepte von MTAPI eingehen, geben wir einen Überblick über EMB².
Embedded Multicore Building Blocks (EMB²)
Bild 1 in der Bildergalerie zeigt die wesentlichen Bibliotheksbausteine und deren Einordnung im Gesamtsystem. Auf unterster Ebene befindet sich die Basisbibliothek, die vom Betriebssystem und der Prozessorarchitektur abstrahiert. Darauf baut die MTAPI-Implementierung auf, die entweder direkt von der Applikation aus nutzbar ist oder indirekt über die Komponenten Algorithmus und Dataflow.
Letztere stellen häufig benutzte, parallele Algorithmen beziehungsweise Schablonen für die Verarbeitung von Datenströmen zur Verfügung. Eine Besonderheit der MTAPI-Implementierung ist die Unterstützung von Task-Prioritäten und -Affinitäten. Diese unterstützen die Umsetzung von Echtzeiteigenschaften und erlauben eine feingranulare Kontrolle über die Hardware. So können beispielsweise mittels Affinitäten Prozessorkerne für bestimmte Aufgaben reserviert werden.
Desweiteren stehen dem Entwickler threadsichere Datenstrukturen (Container) zur Verfügung, die speziell für den Einsatz in eingebetteten Systemen ausgelegt sind. Dazu gehört zum Einen, dass die Datenstrukturen während des Betriebs keinen dynamischen Speicher allokieren – für viele eingebettete Systeme, insbesondere in sicherheitskritischen Bereichen, ein Muss.
Zudem kommen sie ohne blockierende Synchronisationsmechanismen aus (lock-/wait-free), woraus sich Garantien bzgl. des Fortschritts der zugreifenden Threads ableiten lassen [3]. Dies ist gerade in eingebetteten Systemen ein nicht zu unterschätzender Vorteil gegenüber klassischen, blockierenden Verfahren.
Eine ausführlichere Beschreibung der Komponenten mit Code-Beispielen ist in [4] und [5, 6] zu finden (siehe dazu ).
(ID:44289616)