Multicore und Parallelprogrammierung

Softwarefirma Intel

16. Juni 2010, 14:43 Uhr | Joachim Kroll
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Vom Großrechner ins Embedded-System

Parallel-Computing existiert in der Großrechnerwelt seit Jahrzehnten und wird bei wissenschaftlichen Berechnungen schon lange angewandt. Mittlerweile sind Multicore-Prozessoren in Desktops und Notebooks angekommen. Bei Embedded-Systemen dauert es etwas länger, aber es ist heute schon absehbar, dass Parallelverarbeitung bis in die kleinsten Geräte vordringt – in Autos, Unterhaltungselektronik, Smartphones und andere mobile Geräte. Zwar verbreiten sich Multicore-Prozessoren hier aufgrund der Limitierungen bei der Stromaufnahme etwas langsamer, aber sie existieren bereits und der Markt wächst sehr schnell. Und die Probleme mit der Leistungsaufnahme werden mit der Zeit gelöst werden.

Um die Software fit für die Parallelverarbeitung zu machen, mag es naheliegend sein, eine Anwendung durch Multithreading auf mehrere Cores zu verteilen. Ein fest codierte Verteilung (z.B. mit pthreads oder Windows threads) ist aber wenig zukunftssicher. Wird z.B. auf zwei Cores verteilt, dann bleiben auf Vier- oder Acht-Kern-Prozessoren wieder Kapazitäten ungenutzt. Wie rasch vorschnelle Festlegungen bei der Programmierung in die Sackgasse führen können, zeigte James Reinders durch einen Blick in die mögliche Zukunft der Prozessorarchitekturen.

 

passend zum Thema

Intel Multicore Manycore
Heute weiß noch niemand so genau, wie zukünftige Prozessoren aussehen werden. Die heutige Zusammenarbeit einer Universal-CPU mit kleinen Beschleunigungseinheiten (Manycore) für Spezialaufgaben bezeichnet Intel als »attached Processing«. Wer heute sei
© Elektronik

Von Multicore zu Manycore

Es ist nämlich keineswegs ein festgeschriebenes Gesetzt, dass Multicore-Prozessoren stets nur durch Vervielfachung ein und desselben Kerns entstehen müssen. Schon heute gibt es im Embedded-Bereich ja Prozessoren – z.B. den TriCore von Infineon oder OMAP von Texas Instruments – die aus einer Mischung verschiedenartiger Cores entstehen. Dasselbe ist auch für zukünftige Intel-Prozessoren denkbar (Bild). »Ich kündige hier kein Intel-Produkt an, aber möglicherweise werden wir in drei, vier Jahren Prozessoren sehen, die aus wenigen großen Universal-Cores und mehreren kleineren Cores für Spezialaufgaben bestehen«.

Intel fühlt sich anscheinend von Nvidias CUDA-Technologie (Computer Unified Device Architecture) bedrängt. Mit CUDA wird die Rechenkraft des Grafikprozessors für Spezialberechnungen genutzt, die nicht notwendigerweise mit Grafik zu tun haben müssen. CUDA wird z.B. zur Videobeschleunigung genutzt, aber auch im Rahmen wissenschaftlicher Simulationen für die Lösung umfangreicher numerischer Probleme. Einen solchen »Supercomputer im Grafikprozessor« (Nvidia-Jargon) wird Intel sicher nicht gerne sehen. Daher ist davon auszugehen, dass auch von Intel ähnliche Lösungen kommen werden.

Die Herausforderung für Software-Entwickler und die Aufgabe, die Intel für sich sieht, besteht nun darin, Software so hardwareunabhängig zu schreiben, dass unterschiedlicheste »Hardwareunterbauten« jeweils optimal genutzt werden. Und dass in der Zukunft keine Änderungen am Quellcode notwendig sind, um ein Programm an neue Prozessoren anzupassen. »Wir brauchen eine neue Abstraktionsebene für die Parallelprogrammierung« sagt James Reinders. Allerdings ist eine neue Programmiersprache für die Parallelverarbeitung nicht in Sicht und wäre auch wenig sinnvoll angesichts der großen Menge bestehenden Codes. Stattdessen werden die bestehenden Sprachen – allen voran C und C++ – durch Erweiterungen ergänzt.


  1. Softwarefirma Intel
  2. Vom Großrechner ins Embedded-System
  3. Spracherweiterungen für C und C++

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu INTEL GmbH