Das Multi Core-Problem

Der Trend im PC-Chipdesign geht zu immer mehr Kernen. Allerdings wird so auch die Programmierung schwieriger, um die neue Power überhaupt zu nutzen.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 6 Min.
Von
  • Kate Greene

Heutige Rechner kommen mit Dual-Core-CPUs – also zwei Prozessorkernen, die gleichzeitig verschiedene Aufgaben übernehmen können. Der Trend wird sich bald noch verstärken: Erste Quad-Core-CPUs sind von Intel, IBM und AMD längst angekündigt und sollten spätestens Anfang 2007 erhältlich sein. Doch obwohl mehrere Prozessorkerne theoretisch schneller sind als ein einzelner Prozessorkern, ist es nicht besonders leicht, passende Software dafür zu schreiben. Das dafür notwendige "Parallel Programming" gilt als komplex

Forscher am MIT arbeiten derzeit daran, dies zu vereinfachen. Mit der Technik, die sich derzeit im Versuchsbetrieb befindet, soll auch ganz normale Software mit der Power der Mehrkern-Rechner Schritt halten können. Dazu schlagen die Forscher ein neues Framework vor, das aus einer Kombination aus speziellen Software-Befehlen und Veränderungen in der Mehrkern-Hardware besteht. Mit diesem Framework soll es irgendwann möglich werden, Software weiterhin ganz normal zu schreiben, ohne sich wirklich mit Parallel Programming auseinandersetzen zu müssen.

Derzeit sind hier traditionell noch Experten aus der Supercomputer-Welt gefragt. Da die darin verwendete Technik inzwischen langsam auch auf dem Schreibtisch verfügbar ist, müssen nun auch ganz normale Programmierer lernen, ihre Software für mehrere Kerne anzupassen.

"Das macht den Leuten erstmal Angst", meint Krste Asanovic, Professor für Informatik und Maschinenbau am MIT, der an dem neuen Framework arbeitet. Der Grund sei, dass die meisten Programmierer sich bislang nie darum gekümmert hätten und die Technik an sich nur schwer zu beherrschen sei. Asanovic und sein Team wollen deshalb eines der Hauptprobleme angehen, das Programmierer überwinden müssen, um ihre Software effizient für Mehrkern-Systeme anzupassen: Die Koordination verschiedener Aufgaben (Tasks), die auf unterschiedlichen Kernen läuft, ohne dass es dabei zu Zusammenstößen kommt.

Wenn eine Anwendung wie Microsofts E-Mail-Lösung Outlook oder eine Videoabspiel-Software parallelisiert werden soll, werden verschiedene Tasks zwischen den Prozessoren aufgeteilt. Oft genug müssen diese allerdings auf einen geteilten Zwischenspeicher (Cache) zugreifen, um an ihre Daten zu gelangen. Greift nun ein Task auf den gleichen Speicherbereich zu, der bereits von einem anderen Task bearbeitet wird, kann ein Rechner abstürzen, wenn nicht zuvor entsprechende Sicherheitsmaßnahmen getroffen wurden. Das ist ungefähr so, wie wenn ein Ehepaar ein Gemeinschaftskonto hat, auf dem nur eine eingeschränkte Menge an Geld zur Verfügung steht – heben beide zu viel ab, landet man schnell in den Miesen.

Beim Parallel Programming gehört es zur Routine, solche simultan verlaufenden Tasks vorherzusehen. Deshalb wird sichergestellt, dass sie nur dann auf den Speicher zugreifen können, wenn andere Tasks gleichzeitig warten.

Implementiert man das richtig, werden Parallel-Rechner durch diese so genannten "Locks" sogar noch beschleunigt. Es ist allerdings kompliziert, sie auch umzusetzen, wie Jim Larus, Forschungsmanager bei Microsoft, erklärt. Zwei verschiedene Anwendungen könnten beispielsweise zur gleichen Zeit solche Locks benötigen, was sie dazu zwingt, gegenseitig aufeinander zu warten. Ohne einen dritten Task, der das überwacht, bleiben sie dann eingefroren.

Die MIT-Forscher umgehen dieses Problem, in dem sie eine neue Speicherverwaltung namens "Transactional Memory" (TM) verwenden. Hier habe man in den letzten fünf Jahren starke Fortschritte gemacht, meint Asanovic. TM koordiniert Tasks automatisch, so dass sich die Programmierer nicht mehr darum kümmern müssen - entsprechende Routinen dürfen also weggelassen werden. Dadurch wird es möglich, dass verschiedene Tasks den gleichen Speicher zur gleichen Zeit verwenden können. Sobald eine Task-Transaktion abgeschlossen ist, prüft das System, ob nachfolgende Tasks Veränderungen am Speicher vorgenommen haben, die das Ergebnis der ersten Transaktion verändern würden. Sollte dem so sein, wird der erste Task so lange wiederholt, bis er erfolgreich abgeschlossen ist.

Ganz perfekt ist die TM-Technik allerdings laut Asanovic noch nicht. Meistens sind die Tasks nur klein und der dafür vorgesehene Speicher reicht auch. Doch es gibt auch Tasks, die mehr Speicher brauchen, als aktuell festgelegt wurde - genau dann kommt es noch immer zu Abstürzen. Asanovic will das Problem durch einen kleinen Backup-Speicher direkt in der Hardware lösen und außerdem Software ergänzen, die erkennen kann, wenn Tasks "überlaufen".

Die Methode der MIT-Forscher basiert auf einer Kombination aus Soft- und Hardware, wie Microsoft-Mann Larus erklärt. Es sei aber noch unklar, wo hier die Linie zu ziehen ist – also ob Soft- oder Hardware mehr hilft.

Microsoft, AMD, Intel und US-Hochschulen wie das MIT und die Stanford University arbeiten derzeit allesamt an der Thematik. Neben der TM-Technik wird auch an neuen Debugger-Programmen gearbeitet, die Fehler in parallelem Code schneller auffinden sollen. Daneben arbeitet man an fertigen Parallel Programming-Bibliotheken, die die Programmierer dann nur noch einbinden müssten, ohne sich jedes Mal zu sehr mit den Details zu beschäftigen.

Bei aktuellen Dual Core-Rechnern sei das Fehlen echter paralleler Programme noch kein wirkliches Problem, meint Asanovic. Mit dem Erscheinen der ersten Quad Core-Systeme dürfte das aber bald anders aussehen. Bei zwei Kernen können angepasste Betriebssysteme wie Windows oder Mac OS X Anwendungen effizient zwischen diesen verteilen. So läuft beispielsweise ein Virenscanner auf einem Kern im Hintergrund, während Anwendungen wie Word oder Firefox auf den anderen verwenden, ohne dass das die Geschwindigkeit reduziert.

Mit 4, 8 oder gar 16 Kernen ist das alles aber nicht mehr so einfach – dann müssen die Anwendungen selbst deutlich verändert werden, um die Power wirklich zu nutzen. Die TM-Technik sei bei der Vereinfachung der Programmierarbeit zwar keine Patentlösung. Doch sie ist zumindest eine Komponente eines zukünftigen Parallel-Computing-Modells, wie Asanovic meint. "Das ist ein Mechanismus, der uns sinnvoll erscheint."

Übersetzung: Ben Schwan. (wst)