Die klassische Von-Neumann-Architektur und ihre Trennung von Rechner und Speicher hat in den letzten Jahren viele Erfolge gefeiert, wird von jedem Computer genutzt. Auch jetzt noch, in der Zeit von Mehrkernprozessoren. Und doch: Ich denke, die Zukunft braucht andere Konzepte. Konzepte, die extrem viele Kernen berücksichtigen, ja davon ausgehen. Eines davon möchte ich vorstellen.
Cell Computing (CC)
Ein „Cell Computer“ besteht – neben den üblichen Peripheriegeräten – aus einem Chip. Dieser wiederum aus vielen Zellen („Cells“), wichtig ist weniger die genaue Anzahl, wir gehen von zig-tausenden aus, sondern vier Eigenschaften:
- unitär: alle Zellen sind gleichwertig, es gibt keine Speicherzellen oder Rechenkerne, jede Zelle ist beides. (Nur) gewisse Zellen sind ausgezeichnet: IO-Zellen, sie haben einen Zugang zur Aussenwelt, zu Peripheriegeräten.
- lokal: Jede Zelle ist mit anderen Zellen verknüpft, allerdings nicht mit jeder, sondern mit einer überschaubaren Nachbarschaft.
- synchron: Zellen hören und kommuniziert über einen globalen Kanal mit allen anderen. Dieser Kanal erlaubt Steuerimpulse, einen „Takt“, kann zur Initialisierung dienen.
- tolerant: Zellen sind fehlertolerant: Fällt eine aus, ist das System – ausser in der Performance – nicht eingeschränkt.
Als Konsequenz dieser 4 Konzepte funktionieren Cell Computer auch mit sehr vielen Kernen und potentiell sehr schnell: eine mögliche Zellstruktur wäre ein Chip mit 100x100x100 Zellen, bei der jede Zelle mit ihren 6 oder 26 Nachbarn verbunden ist – und zudem mit dem globalen Kanal, dem ‚Äther‘. Die oberste und unterste Schicht könnte dabei aus IO-Zellen bestehen. Diese 1 Million Zellen würden selbst bei einer tiefen Synchronisierungsrate von 1 Mhz eine extreme Leistungsfähigkeit haben.
Jede Zelle ist gemäss Definition Speicher und Rechner in einem: Oder anders gesagt: Speichern ist eine triviale Eigenschaft, schlicht der Befehl „Gib mir immer deinen Zustand und mache nichts damit“. Eine gute, optimierte Programmierung wird eine Zelle selten nur als Speicher brauchen, meistens eine – wenn auch nur triviale – Operation ausführen.
Cell Computer Language (CCL)
Der Aufbau eines Cell Computer ist einfach, die Herausforderung ist die beschreibende Sprache. Sie hat etwas Funktionales, besteht aus zwei Elementen:
Typisierung: Welche Zelltypen gibt es? Auf welche Signale hören diese (global, lokal) und wie reagieren sie darauf? Mit welchen anderen Typen wollen oder müssen sie verbunden sein? Wie geht der Zelltyp mit (Synchronisations-)fehlern um? Wie überwacht er seine eigene Funktionsfähigkeit? und wie reagiert er auf eine erkannte Fehlfunktion?
Kompilierung: Wie sieht – basierend auf der Programmierung, der Typisierung – die optimale Struktur des Cell Computers aus? Wie der maschinelle Code jedes Zelltyps? Welche automatisch generierten Helferzellen sind für Controlling, Datendurch-schleusung nötig? und für die Befüllung und Ausführung? Wie wird der Cell Comuter initialisiert, neuer Programmcode eingespielt? Wie erhält jede physikalische Zelle gemäss ihrem Zelltyp den korrekten Programmcode? Wie wird die Synchronisation sichergestellt?
Die sehr einfache Programmierung (Typen, deren Algorithmus und Bezug untereinander) und die hohe Leistungsfähigkeit sind reizvoll – der komplexe Compilerbau weniger. Vielleicht motiviert eine Vision diese neue Art Computer dennoch: Ein Cell Computer könnte auch der Bildschirm selber sein, ebenso gross wie das Display, die oberste Schicht der Zellen auch gleich zur Anzeige dienen, ein leuchtendes Pixel sein. Cell Computer könnten zudem mit groben Strukturen, billig, in einem modernen lithographischen Druckverfahren gefertigt sein. Die Taktrate und Leistungsaufnahmen sehr tief, durch die schiere Menge aber leistungsfähig.
Christian Rusche, 2010