Softwareentwicklung und High-Performance

Multi-Core-Prozessoren verbessern Software

10.09.2010
Von Robert Hilbrich

Die Lösung lautet Multi-Core

Angesichts dieser so genannten "Power-Wall" bietet Multi-Core eine Alternative, um eine Leistungssteigerung ohne eine Erhöhung der Taktfrequenz zu erzielen. Multi-Core bezeichnet die Integration von zwei oder mehr unabhängigen Ausführungseinheiten (Cores) auf einem Silizium-Chip, so dass mehrere Befehle parallel ausgeführt werden können. Im Gegensatz zum temporalen Multi-Threading von Single-Core-Prozessoren, ist durch Multi-Core simultanes Multi-Threading von Anwendungen möglich.

Robert Hilbrich
Robert Hilbrich
Foto: Fraunhofer Institut

Während bereits in vielen Computern Dual- und Quad-Core-Prozessoren mit zwei beziehungsweise vier Kernen verfügbar sind, wird sich die Anzahl der Cores in einem Prozessor in den nächsten zehn Jahren voraussichtlich auf 100 bis 1000 erhöhen. Multi-Core- werden dann zu Many-Core-Prozessoren.

Während bei Multi-Core-Prozessoren noch weitgehend Techniken aus dem Bereich der Mehrprozessor-Systeme eingesetzt werden können, sind diese bei der hohen Anzahl der Kerne in Many-Core-Prozessoren (mehr als 100 Kerne) nicht länger effizient. Gebraucht werden neue Konzepte für die Softwareentwicklung. Der Trend zur Verdoppelung der Schaltkreiskomplexität alle zwei Jahre hält damit nach wie vor unvermindert an.

Aktuelle Trends

Die Roadmaps der verschiedenen Hersteller von Multi-Core-Prozessoren weisen deutlich in die Richtung vom Multi-Core- zum Many-Core-Prozessor mit weit über 100 Kernen auf einem Chip. Die Auswirkungen dieses Trends auf die Softwareentwicklung sind vielfältig.

- Da die bisherige Kommunikationsarchitektur zwischen Cores über eine mehrstufige Speicherhierarchie nur sehr schlecht auf mehr als 32 Cores skaliert, wird sie zukünftig durch skalierbare Kommunikationsarchitekturen auf dem Chip abgelöst werden. Eine sehr gute Skalierbarkeit bieten beispielsweise 2D-Mesh-Architekturen, bei denen die Cores anstelle eines gemeinsamen Busses über eine Gitterstruktur miteinander vernetzt sind, so dass sich redundante Kommunikationspfade ergeben. Zukünftige Prozessoren werden aus Gründen der Skalierbarkeit auch verstärkt verteilten Speicher für die einzelnen Cores bieten und damit klassische "Shared-Memory"-Programmiermodelle ablösen.

- Damit das Leistungspotenzial von vielen Cores auf einem Chip auch wirklich ausgenutzt werden kann, müssen die Daten schnell und effizient zugeführt werden können. Aus fertigungstechnischen Gründen kann die Bandbreite der Datenanbindung jedoch nicht genauso stark gesteigert werden, wie sich gegenwärtig die Anzahl der Cores erhöht. Dies liegt daran, dass sich die Pins eines Chips am Rand befinden und dessen Länge bei einer Verdoppelung der Fläche nur unterproportional ansteigt. Die Datenanbindung wird damit zukünftig den Prozessor als inhärent knappe Ressource eines Systems ablösen. Dieser Trend wird auch als Wandel vom "Computation-centric Computing" zum "Communication-centric Computing" bezeichnet.

- Speziell für die Softwareentwicklung auf eingebetteten Systemen bringt der Wandel zu Multi-Core vor allem zwei Herausforderungen mit sich:

Zusätzlich zu den homogenen Multi-Core-Architekturen wird es auch verstärkt heterogene Architekturen mit hoch integrierten, spezialisierten Rechenkernen auf einem Chip geben. Damit können Spezialaufgaben wie Multimedia oder kryptografische Funktionen effizient und energiesparend in Hardware realisiert werden. Allerdings wird eine effiziente Programmierbarkeit von heterogenen Systemen zukünftig auch eine Systementwicklung auf einem höheren Abstraktionsgrad erforderlich machen. Nur so kann verhindert werden, dass mit jeder neuen Prozessorgeneration eine aufwendige Neuimplementierung erforderlich wird.

- Durch die immer größere Komplexität eines eingebetteten Systems gestaltet sich die Vorhersage des Systemverhaltens und damit auch dessen Dimensionierung in frühen Entwicklungsphasen immer schwieriger und wird ungenauer. Zusätzlich zur Erfahrung der Systementwickler werden daher zukünftig gerade im Bereich von sicherheitskritischen Echtzeitsystemen auch spezialisierte Tools zum Einsatz kommen müssen, die eine frühe Analyse und Bewertung alternativer Multi-Core-Architekturen hinsichtlich des erreichbaren Echtzeitverhaltens ermöglichen.