Multicore-Systeme Architektur für asymmetrisches Multiprocessing

Autor / Redakteur: Colin Walls* / Johann Wiesböck

Die Hardware- und Softwarearchitekturen von Multicore-Designs entwickeln sich ständig weiter. Softwareseitig gibt es im Wesentlichen zwei Möglichkeiten: symmetrisches und asymmetrisches Multiprocessing.

Firmen zum Thema

In einem komplexen Multicore-System kann es Gruppen identischer Kerne geben, die mit einem SMP-Betriebssystem oder einem Hypervisor verwaltet werden können.
In einem komplexen Multicore-System kann es Gruppen identischer Kerne geben, die mit einem SMP-Betriebssystem oder einem Hypervisor verwaltet werden können.
(Bild: Clipdealer)

Symmetrisches Multiprocessing (SMP) kann nur auf einer homogenen Multicore-Plattform implementiert werden – alle Kerne sind identisch. Eine einzige Instanz eines Betriebssystems (OS) läuft auf allen Kernen. Dieses Betriebssystem muss eine spezielle Version sein, die den SMP-Betrieb unterstützt. SMP wird von Linux und einer Reihe von Echtzeit-Betriebssystemen unterstützt. Die Aufgaben werden automatisch auf die Kerne verteilt. Bei Bedarf ist es jedoch möglich, Aufgaben bestimmten Kernen exklusiv zu zuordnen. Ziel des SMP ist es, die verfügbare Verarbeitungsleistung leistungseffizient zu steigern.

Bei eingebetteten Anwendungen bietet Asymmetrisches Multiprocessing (AMP) mehr Flexibilität und wird viel häufiger eingesetzt. In einem AMP-System läuft auf jedem Kern ein eigenes Betriebssystem oder überhaupt kein Betriebssystem – „bear metall“. Es sind keine identischen Betriebssysteme erforderlich. Jedes Betriebssystem wird entsprechend der vorgesehenen Funktionalität des jeweiligen Kerns ausgewählt und muss keine spezielle, „mehrkernfähige“ Version sein. Im Gegensatz zu SMP kann AMP auf einer heterogenen Multicore-Plattform implementiert werden. Die meisten Multicore-System-on-Chip-Geräte umfassen eine Vielzahl von verschiedenartigen Kernarchitekturen, die für verschiedene Teile der Anwendung geeignet sind.

Intercore-Kommunikation

Zwei Probleme müssen beim AMP-Design gelöst werden: Lifecycle-Management (Bootsequenz) und Intercore-Kommunikation. Diese Probleme treten in einem SMP-System nicht auf, da das Betriebssystem die Kontrolle darüber hat, welche Aufgaben wo und wann ausgeführt werden, und die Kommunikation zwischen den Tasks die Standard-APIs des Betriebssystems verwendet. Bei einem AMP-System ist sich kein Betriebssystem der Existenz der anderen bewusst, daher muss eine spezifische Regelung getroffen werden.

Die beste Möglichkeit, ein AMP-System zu konfigurieren, ist ein Multicore-Framework, um die Steuerungs- und Kommunikationsanforderungen zu erfüllen. OpenAMP ist ein Standard, der die Architektur eines solchen Frameworks festlegt.

Auf jedem Kern läuft eine Instanz des Frameworks. Das Lifecycle-Management erfolgt über Remoteproc, bei dem ein Kern die Rolle als „Master“ zugewiesen wird. Die Kommunikation zwischen Kernen wird über RPMsg für eine kanalbasierte bidirektionale Kommunikationsverbindung zwischen Kernen verwaltet.

Eine Alternative zu einem Multicore-Framework ist ein Hypervisor: eine leistungsstarke Option, die durch die Anforderung begrenzt ist, dass alle CPUs identisch sein müssen. Sie sie kann daher nur auf einer homogenen Multicore-Plattform verwendet werden. In einem komplexen Multicore-System kann es Gruppen identischer Kerne geben, die mit einem SMP-Betriebssystem oder einem Hypervisor verwaltet werden können, die jeweils über ein Multicore-Framework mit dem restlichen System verbunden sind.

* Colin Walls arbeitet als Embedded Software Technologe bei Siemens.

Artikelfiles und Artikellinks

(ID:47350372)