Der Vektorrechner

Seymour Cray’s Beitrag zu den Computern war schon als ich mich in den Achtzigern dafür interessierte legendär. Cray war ursprünglich bei CDC (Control Data Corporation) für die Entwicklung der CD-6600 und 7600 verantwortlich, den schnellsten Computern ihrer Zeit und auch in ihrer Architektur richtungsweisend. Aber die Entwicklung war teuer und es kam zu Problemen als die CD 8600 sich als nicht entwerfbar entpuppte. Cray trennte sich von CDC einvernehmlich und gründete seine eigene Firma.

Schon das Erstling, die Cray 1 war 1976 ein ganz großer Wurf. Er war schneller als jeder andere Rechner seiner Zeit, und das nicht nur ein bisschen, sondern gleich viermal schneller. Er sah stylisch aus (und war auch noch als Sitzbank nutzbar). Der ganze Rechner war auf Geschwindigkeit ausgelegt. So kam die Form einer großen Garnrolle dadurch, dass die Verbindungslänge minimal sein sollte. Alle Kabel waren ein vielfaches von 30 cm lang. Kein Kabel dürfte länger als 72 Inch sein, da ein Signal  dann 12,5 ns brauchte – die Taktzeit des Rechners. Das führte auch zu dem kompakten Aufbau

Das entscheidende war aber das Cray das Prinzip des Vectorrechners einführte – Dazu ein Ausflug, wofür man damals wie heute, diese Rechner kaufte. Supercomputer wurden primär für Simulationen eingesetzt. Astronomen berechneten die Vorgänge im inneren einer Sonne, wie sich aus Planetensimalen Planeten formten. Meteorologen berechneten das Wetter oder Klima, Chemiker die Struktur von Molekülen und Ingenieure die optimale Form von Tragflächen oder was bei einem Crash mit dem Auto passiert.

In den meisten Fällen verläuft die Simulation so (hier am Beispiel einer Wettervorhersage): Man unterteilt die gesamte Erdoberfläche in Quadrate (sagen wir mal von 100 x 100 km Kantenlänge), und die Luft darüber in Schichten (sagen wir mal eine pro 1 km Höhe, insgesamt 16). Nun hat man eine Zelle. Für diese berechnet man ausgehend von Ausgangswerten die Temperatur, Luftdruck, Windgeschwindigkeit, Luftfeuchtigkeit etc. Das macht man für jede der in diesem Beispiel 750.000 Zellen. Dann werden Daten ausgetauscht weil Windströmungen und Temperaturunterschiede ja zum Luftaustausch führen und das ganze geht dann weiter, wobei jeder Schritt für ein Zeitintervall steht.

Kurzum: 750.000-mal müssen ein und dieselben Berechnungen durchgeführt werden. Daher benötigt man auch so viel Leistung (bei der Wettervorhersage ist man von den Maschenweiten von 100 km z.B. heute mit mehr Leistung bei einigen Kilometern Maschenweite angekommen, wodurch die Vorhersage genauer und lokal überhaupt erst möglich ist. Bei 100 km geht selbst der Bodensee als Einflussfaktor weitgehend unter). Das Prinzip findet sich bei vielen Simulationen. Sterne werden in kleine Kuben unterteilt. Das Auto in kleine Dreiecke, bei denen die einwirkenden Kräfte berechnet werden etc. Alternativ kann man viele Körper unabhängig berechnen, wie bei Simulationen des Planetensystems oder Molekülsimulationen. Auch dann sind aber die Gleichungen für jeden Körper identisch.

Der Vektorrrechner ist  un dafür optimiert. Hinter der Architektur liegt die Erkenntnis, wie langsam normale Mikroprozessoren Zahlen verarbeiten. Das geschieht so für eine Addition:

  • Lade Variable1 in ein Register
  • Lade Variable2 in ein zweites Register
  • Addiere die beiden Register
  • Speichere das Ergebnis in einer Speicherzelle ab.

Das sind vier Maschinenbefehle für eine einzige Operation. Wenn nun praktisch das ganze 750.000 mal gemacht werden muss wäre es viel einfacher, wenn man es effizienter machen könnte. Weiterhin beschäftigt es unterschiedliche Einheiten in einem Prozessor: Die Ein/Ausgabeeinheit und die Recheneinheit.

Die Cray 1 hatte nun acht Vektorregister. Jedes enthielt einen Vektor, also ein Feld von Zahlen, im Falle der Cray 1 waren es 64 Zahlen, jede 64 Bit breit. Das Prinzip war nun das einer Pipeline: Eine Einheit füllte die die Vektorregister mit Daten, was auch effizienter geht, wenn ein Block aus dem Speicher gelesen werden kann, anstatt jede Speicherzelle einzeln abzufragen und dann wurde je ein Wert aus dem Vektorregister nach einander zur Recheneinheit geführt. und die Rechnung durchgeführt. Das Vorgängermodell von Cray, die CDC 7600, brauchte 9 Takte für eine Rechnung, die Cray 1 nur 9 Takte für die erste und danach einen Takt für jede weitere. Als Folge war die Cray 1 achtmal so schnell wie eine CDC 7600, obgleich der Taktzyklus nur verdoppelt wurde auf 80 MHz. Cray führte auch die Pipeline ein, d.h. während die Recheneinheit rechnete konnte die Speichereinheit schon Werte in die Register laden. Da jeder Speicherzugriff mehrere Takte (bis zu 4 dauerte) konnte das Anstoßen jedes Speicherzugriffs bei jedem Takt auch die Performance erhöhen. Damit der Speicher überhaupt nachkam hatte er den 1 MWort großen Speicher in 16 Bänke aufgeteilt, die nacheinander angesprochen wurden, den das RAM war schon damals langsamer als die Zykluszeit des Rechners.

Zum Erfolg wurde die Cray 1 aber weil sie auch skalare Operationen schnell ausführte. Die Instruktionen waren sehr einfach aufgebaut, der Computer für damalige Verhältnisse sehr zuverlässig (eine CDC 7600 beim NCAR fiel mindestens einmal, oft 4-5-mal pro Tag aus, eine Cray 1 lief mehrere Tage durch). Die Spitzenperformance war davon abhängig wie gut die Programm vektorisierbar waren. werte von 80 – 136 MFLOPS und 160-240 MIPS werden genannt.

Cray arbeitete auch bei seinen folgenden Rechnern an den Konzept der Vektorrechner, doch nach einem Jahrzehnt wurden die Rechner populärer die heute dominieren: massiv parallele Rechner aus vielen handelsüblichen Mikroprozessoren anstatt eigens hergestellten Chips. Je höher integriert die Mikroprozessoren wurden, desto leistungsfähiger wurden sie und desto kleiner der Unterschied zu speziellen Vektorprozessoren die nur in kleinen Stückzahlen produziert wurden. Nur Japan hielt an diesem Konzept noch lange Zeit fest und brachte 2002 den Earth Simulator heraus, der bis 2004 der schnellste Rechner der Welt war. Er war der letzte mit Vektorprozessoren. Er erreichte mit 5120 Vektorprozessoren 35 Terraflops..

Die Technologie ist inzwischen längst in die Mikroprozessoren eingeflossen, Ohne Pipeline wären die Prozessoren nur so schnell wie der Speicher, würden also etwa auf 486er Niveau stehen bleiben. Und auch Vektoroperationen gibt es heute. Bei Mikroprozessoren heisst dasselbe Prinzip SIMD (Single Instruction, Multiple Data). Anstatt 64 Registern setzen aber Mikroprozessoren meist wenige Register ein, die dafür sehr lang sind. (bei AVX, der neuesten Entwicklung von AMD und Intel z.B. 256 Bit, wodurch dann vier Zahlen a 64 Bit gleichzeitig bearbeitbar sind). Signalverarbeitungsprozessoren nutzen SIMD wesentlich stärker als Mikroprozessoren, weil ihre Aufgaben auch sehr gut vektorisierbar sind.

In gewisser Weise sind auch die CPU’s von Grafikprozessoren Vektoreinheiten. Diese GPU haben sehr einfache Kerne, die anders als Mehrkernprozessoren nicht unabhängig arbeiten können und meist auch nur die Grundrechenarten beherrschen, aber es sind Hunderte. Man könnte sie daher durchaus mit Vektorprozessoren vergleichen – jede Einheit steht eben dann für ein Vektorregister. Von der reinen Rechenleistung hängen GPU’s seit mindestens 10 Jahren die CPU’s deutlich ab. Was ihren Einsatz limitierte war dass sie schwer zu programmieren waren, die Programme nicht sehr lang waren und die Ausrichtung auf Spiele die Genauigkeit auf 32 Bit beschränkte (das stört beim Spiel nicht, denn 32 Bit sind immer noch ein vielfaches der Monitorauflösung). Seit ein paar Jahren versuchen NVidea und ATI mit speziellen GPU für Supercomputer die diese Nachteile nicht haben in den Supercomputermarkt einzubrechen und immer mehr Systeme mit gemischter CPU/GPU Bestückung gibt es auch. in der Top 500 Liste. Bestplatziertes ist der Jaguar mit einer Mischbestückung aus Opteron / Kepler GPU’s. Die Mischbestückung wird bleiben, aber ich denke die GPU’s werden bald den Löwenanteil stellen. Eine Alternative ist es wie im Intel Xenon Phi den Prozessor aus vollwertigen, aber einfachen Kernen aufzubauen. Intel wollte mal einen GPU ähnlichen Ansatz, hat den aber verworfen und nimmt nun den P54C Kern, das ist für nicht eingeweihte die Pentium Architektur – nicht gerade ein „einfacher“ Chip, aber vergleichen mit den heutigen Prozessoren doch recht überschaubar mit 3,1 Millionen Transistoren – heute sind wir jenseits der 1 Milliardengrenze.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.