Archiv


Von Neumanns schweres Erbe

Nicht mehr nur immer schnellere Betriebsfrequenzen steigern die Leistung moderner Computer, sondern auch der Einsatz gleich mehrerer Prozessorkerne. Doch oft nutzen Programme nur einen dieser Kerne, denn Programmiersprachen haben noch Defizite bei der Multiprozessorfähigkeit.

Von Mariann Unterluggauer | 11.08.2007
    Um ihre Probleme mit Energieverbrauch und Überhitzung in den Griff zu bekommen, orientiert sich die Hardware-Industrie zunehmend an der Architektur von Großrechnern. Sie nennen ihre neuen Systeme "MultiCore": Statt eines Prozessors mit hoher Taktfrequenz werden jetzt mehrere, niedriger getaktete Prozessor-Kerne in einem Chip integriert. Was fehlt, sind jedoch die Programme, die mit einer derartigen Architektur umgehen können. Selbst die derzeit am Markt erhältlichen DualCore Prozessoren können zu Problemen führen und manche Programme ignorieren schlichtweg ihre Existenz. Schließlich wurden sie nicht für die parallele, sondern die serielle Abarbeitung von einzelnen Prozessen geschrieben. Dabei markieren die DualCore Prozessoren erst den Anfang. In Zukunft sollen CPU’s mit 80 und mehr Kernen auf den Markt kommen, sagt Joe Armstrong. Über seine Programmiersprache Erlang wird derzeit viel diskutiert. Sie zählt zu den wenigen, die mit der neuen Rechner-Architektur keine Probleme haben. Er hat sie einst für das parallele Abarbeiten von gleichzeitig stattfindenden Kommunikationsprozessen entwickelt - zur Programmierung von Telefonanlagen.

    "Der Trick besteht darin, alle Prozessoren zu nutzen. Sie zu haben ist eine Sache, aber sie zu nutzen eine andere. Eine moderne Grafikkarte hat bereits 500 CPUs und die Software muss in der Lage sein, damit umzugehen. Jeder einzelne Prozessor für sich genommen ist vielleicht langsamer, aber deswegen ist es auch so wichtig, alle davon zu verwenden."

    Wenn die Zukunft der Prozessoren wirklich MultiCore heißt, dann bleibt der Softwareindustrie nicht viel übrig als ihre Programmierumgebung zu ändern. Das ist mit ein Grund, warum plötzlich Programmiersprachen wie Erlang, die bisher eher ein Schattendasein führten, so große Aufmerksamkeit geschenkt wird: Sie beherrschen etwas, das anderen Sprachen erst beigebracht werden muss: Das gleichzeitige verteilte Abarbeiten von Prozessen. Und sie ignorieren dabei Konzepte, die der Softwarewelt in den letzten Jahren zunehmend Kopfzerbrechen bereitet haben: Dinge wie "shared memory", also gemeinsam genutzter Arbeitsspeicher, und "mutable state".

    "Damit bezeichnet man Zustände, die sich verändern können, Dinge, die zu etwas anderem mutieren können. So etwas gibt es in der realen Welt nicht. Dieser Stuhl hier wird sich nie in ein Auto verwandeln. Er wird immer ein Stuhl bleiben. In meiner Programmiersprache können die Variablen, die einen Stuhl repräsentieren, nie für ein Auto verwendet werden, aber in den Sprachen, die "Objekt Orientierte" Programmierer verwenden, kann das der Fall sein. Im gewissen Sinn gehen wir zurück zu den Anfängen der Programmierung und versuchen es auf eine Art zu tun, die mit der realen Welt übereinstimmt. Ich denke, das erleichtert das Programmieren ungemein."

    Darüber gehen die Meinungen auseinander. Manche lehnen das Modell "Concurrency", so nennt Joe Armstrong heute das Prinzip des parallelen Rechnens, schlichtweg ab. Es mache die Dinge nur noch komplizierter und erschwere das Leben der Programmierer.

    "Es ist nicht schwerer, es ist nur anders. Wenn sie nur einen Computer haben, dann überlegen sie sich Dinge wie "Konsistenz": Damit meint man nichts anderes als dass wir dieselbe Sicht auf die Dinge der Welt haben: Was die eine Maschine weiß, das weiß auch die andere und wir können überprüfen, ob das auch wirklich der Fall ist. Wenn Sie es jedoch mit vielen Maschinen zu tun bekommen, dann müssen Sie sich von dieser Vorstellung schnell verabschieden. Nur ein Verrückter würde behaupten, dass hundert Millionen Maschinen auf demselben Wissensstand gehalten werden können und gleich funktionieren. Das ist unmöglich."

    Die neue Herausforderung an die Programmierer lautet: Auch wenn ein System nie perfekt sein kann, so sollte es doch in der Lage sein, zu funktionieren. Manche nehmen dafür Anleihen bei biologischen Systemen. Schließlich besitzen Zellen die Eigenschaft, sich selbst zu reparieren - zumindest bis zu einem gewissen Alter. Andere sehen sich aus diesem Grund die Computersprache Erlang etwas genauer an. Denn eines hat diese Sprache in den letzten 20 Jahren bewiesen: Sie läuft stabil, hat keine Schwierigkeiten, Millionen Maschinen gleichzeitig im Griff zu behalten und sie ist in der Lage, mit Fehlern tolerant umzugehen. Das macht Erlang für alle jene Anwendungen interessant, bei denen Menschen permanent miteinander kommunizieren - für Applikationen wie Skype, Webserver und Instant Messaging Systeme.