Softwareentwicklung und High-Performance

Multi-Core-Prozessoren verbessern Software

10.09.2010
Von Robert Hilbrich

Die Vorteile der Multi-Core-Prozessoren

Die Parallelisierung von Anwendungen und der damit verbundene Anstieg des Durchsatzes eines Multi-Core-Prozessors ist die derzeit einzige Möglichkeit, durch Weiterentwicklung der Hardware die Leistung der Software zu steigern. Neben der Beschleunigung von bereits inhärent parallelen Anwendungsbereichen wie zum Beispiel Web-Servern, Grafik- und Videobearbeitung oder Netzwerk-Paketverarbeitung ist die Multi-Core-Technik prinzipiell auch gut geeignet, um viele bestehende Single-Core-Systeme auf wenigen Multi-Core-Maschinen zu konsolidieren.

IBMs Power6-Prozessor ist ein Vier-Kern-Prozessor. Quelle: IBM
IBMs Power6-Prozessor ist ein Vier-Kern-Prozessor. Quelle: IBM
Foto: IBM

Besonders bei der Konsolidierung von verteilten Systemen können Anwendungen von der zusätzlichen Leistung eines Multi-Core-Prozessors profitieren. Während das physikalische Netzwerk eines verteilten Systems häufig durch unzuverlässige Verbindungen sowie spürbare Latenzen in der Übertragung gekennzeichnet ist, verläuft die Kommunikation zwischen Cores auf einem Chip sehr zuverlässig und mit geringen Latenzen.

Multi-Core-Prozessoren besitzen daher das Potenzial, den Platzverbrauch eines eingebetteten Systems, dessen Gewicht sowie dessen Leistungsanforderungen spürbar zu senken. Bei gleicher Leistung zeigt ein konsolidiertes Multi-Core- im Vergleich zu einem Single-Core-System eine geringere Leistungsaufnahme, so dass auch weniger Wärme abgeführt werden muss. Multi-Core-Prozessoren tragen dazu bei, die Herstellungskosten eines eingebetteten Systems spürbar zu reduzieren und somit einen signifikanten Wettbewerbsvorteil zu erringen.

Herausforderungen für die Softwareentwicklung

Typischerweise ist die Software im Bereich eingebetteter Systeme sequenziell aufgebaut. Der dabei implementierte Algorithmus arbeitet eine Menge einzelner Schritte in einer definierten Reihenfolge ab, um die Systemfunktion zu erfüllen. Bevor es Multi-Core-Prozessoren gab, profitierte Software automatisch von einer höheren Leistung des Prozessors. Eine Steigerung der Taktfrequenz um 30 Prozent führte in der Regel auch zu einer um etwa 30 Prozent schnelleren Ausführung der Anwendung. Durch die "Power-Wall", die eine weitere Erhöhung der Taktfrequenz verhindert, kann klassische, sequenzielle Software jedoch nicht mehr automatisch von der zusätzlichen Leistung der neuen Prozessoren profitieren. Um weiterhin wettbewerbsfähig zu bleiben, müssen die bestehenden Anwendungen parallelisiert oder komplett neue, parallele Anwendungen entwickelt werden.

Softwareentwickler auf die Schulbank

Der Wechsel von der sequenziellen zur parallelen Programmierung ist mit neuen Herausforderungen für die Softwareentwicklung verbunden. Er wird daher nicht mehr nur in der Forschung als Paradigmenwechsel wahrgenommen, sondern auch in der Industrie als eine der wesentlichen Herausforderungen der Informatik für die nächsten Jahre gesehen. David Patterson, Professor für Computer Science in Berkeley, drückte dies prägnant im Rahmen einer Panel-Diskussion aus: "No one knows how to design a 15 GHz processor, so the other option is to re-train all the software developers” - keiner wisse, wie das Design eines mit 15 GHz getakteten Prozessors aussehe. Also bleibe nichts anderes übrig, als alle Softwareentwickler neu auszubilden.

Die wahre Stärke der Multi-Cores

Obwohl Multi-Core die neueste Entwicklung im Prozessorbereich beschreibt, ist die parallele Verarbeitung von Anwendungen nichts fundamental Neues. In der Vergangenheit wurden Parallelrechner bereits im High-Performance-Computing zur Simulation von Modellen erfolgreich eingesetzt. Im Desktop- und Embedded-Bereich konnten sich Single-Core-Prozessoren hingegen lange behaupten, da immer neue Wege zur Aufrechterhaltung der Leistungssteigerung entdeckt wurden. Neu an Multi-Core ist daher vielmehr, dass es in Anbetracht der "Power-Wall" die derzeit einzige verfügbare Technik zur Leistungssteigerung von allgemein verfügbaren Prozessoren darstellt. Nach Jahren der sequentiellen Entwicklung steht die Softwareentwicklung nun vor einem grundlegenden Wandel. Während die Entwicklung paralleler Software bisher Experten in speziellen Anwendungsbereichen vorbehalten war, werden in den nächsten Jahren nahezu alle Domänen und vor allem die eingebetteten Systeme damit konfrontiert werden.

Die Herausforderungen der parallelen Programmierung liegen in der stark ansteigenden Komplexität der Systeme begründet. Während bereits die sequenzielle Programmierung hohe Anforderungen an die Entwickler stellt, um fehlerfreien, effizienten und leicht wartbaren Code zu erhalten, fügt die parallele Programmierung eine neue Ebene der Komplexität hinzu. Zusätzlich können nun Systemverklemmungen wie Deadlocks oder Livelocks, Dateninkonsistenzen durch einen ungeschützten Zugriff oder ein nichtdeterministisches Verhalten durch fehlende Synchronisationsmechanismen (Race-Conditions) zum Versagen eines eingebetteten Systems führen.