Virtualisierung für die „Kleinen“ Virtualisierungstechniken für die optimale Nutzung von Multi-Core- Prozessoren

Die Entwicklung leistungsfähiger Prozessoren war in den letzten Jahren durch die Abkehr von der Leistungssteigerung durch Taktfrequenzerhöhung gekennzeichnet. Der Grund dafür liegt u.a. in der Power Wall, die eine physikalische und ökonomische Grenze bei der Prozessor-Entwicklung beschreibt. Der einzige Weg zur Steigerung der Leistungsfähigkeit eines Systems liegt daher nicht in der Erhöhung der Maximalleistung, sondern viel mehr in der Steigerung des Durchsatzes eines Prozessors mit Hilfe von mehreren, unabhängig arbeitenden Rechenkernen.

Multi-Core-Prozessoren, ob als Dual- oder Quad-Core, gehören mittlerweile im Server- und auch im Desktop-Bereich zum Standard. Der Einsatz dieser neuen Prozessorgeneration in komplexen, software-intensiven, eingebetteten Systemen verläuft dagegen wesentlich langsamer. Während bereits zertifizierte Steuerungen für Gelenkarmroboter auf der Basis von Dual-Core-Prozessoren verfügbar sind, konnten sich Mehrkernprozessoren in sicherheitskritischen Domänen, wie der Avionik oder im Automotive-Bereich, noch nicht in der Breite durchsetzen. Ein wesentlicher Grund dafür liegt in den notwendigen Anpassungen der Entwicklungsprozesse für die Software, um den notwendigen, aktiven Umstieg auf Multi-Core-Systeme zu bewerkstelligen.

Bei der Betrachtung des theoretisch möglichen Durchsatzes von aktuellen Multi-Core-Prozessoren wird deutlich, dass mittlerweile auch eingebettete Systeme mit einer Rechenleistung ausgestattet werden können, die bis vor wenigen Jahren noch Servern vorbehalten war. Während dort jedoch die parallele Verarbeitung von Algorithmen von Anfang an ein fester Bestandteil der Architektur und des Software-Designs war, wird der Bereich der eingebetteten Systeme nun an vielen Stellen erstmalig mit Parallelverarbeitung und den damit verbundenen Herausforderungen konfrontiert.

Viele etablierte Entwicklungsmuster zur Implementierung von komplexen Steuerungsaufgaben basieren auf einer seriellen Ausführung mit einem zumindest temporär exklusiven Zugriff auf alle Hardware-Ressourcen, so dass beispielsweise kritische Code-Abschnitte durch ein einfaches Abschalten der Interrupts vor unerwünschten Unterbrechungen geschützt werden können. Diese Entwicklungsmuster können bei paralleler Ausführung auf mehreren Rechenkernen nicht mehr eingesetzt werden. Langjährig erprobte Software-Entwürfe und -Architekturen, verwendete Bi-bliotheken, aber auch die Testprozesse zur Qualitätssicherung müssen deshalb mit der Einführung von Mehrkernprozessoren erneut auf den Prüfstand.