Bernd Leitenbergers Blog

Crays Fehler

Seymour Cray gilt als der Vater der Supercomputer. Beginnend mit der CDC 6600, die 1964 erschien, waren Rechner die er (mit)konstruiert hatte über 30 Jahre die schnellsten der Welt. Doch bei dieser Leistung hatte er auch einige kapitale Fehlurteile. Die meisten führen sicher als erstes das Scheitern bei der CDC 8600 an. Schon bei der CDC 6600 war ein Problem, dass am Ende der Schränke die Signallaufzeiten Störungen auf den Leitungen verursachten weil Signale unterschiedlich stark verzögert wurden und so schon auf einer schnellen direkten Verbindung das nächste Taktsignal anlag. Die CDC 6600 lief nur mit 10 MHz, was immerhin noch Kabellängen von bis zu 20 m erlaubte. Die CDC 8600 arbeitete bei 125 MHz, wodurch die Packung extrem dicht sein musste, Kabel mussten nun sehr kurz sein. Cray bekam die Kühlung nicht in den Griff, die durch die schnellen aber sehr energiehungrigen ECL Schaltungen freigesetzt wurde. Er brach das Projekt ab und gründete seine eigene Firma. Das Mockup der 8600 sieht übrigens aus wir eine Kreuzung der folgenden Cray Rechner. Die Bank der Cray 1 und die kleine Zentraleinheit der Cray 2. Ich halte es nicht für einen Fehler, denn der Rechner war einfach für seine Zeit zu ambitioniert. Das Kühlungsproblem dieser Packungsdichte sollte Cray erst mehr als ein Jahrzehnt später bei der Cray 2 lösen. Selbst der unmittelbare Nachfolger die Cray 1 war langsamer und größer.

Dir Cray 1 war zwar um einiges schneller als die CDC 7600 und ein Verkaufsschlager, aber sie hatte im Design drei Mänge,l von denen er den gravierendsten nie behob. Der erste, kleine, Mangel waren zwei fehlende Maschinenbefehle die anscheinend für viele FORTAN Programme benötigt wurden und zwar für Anweisungen in der Form:

Y[i]=X[Index[i]]
Y[Index[I]]=X[i]

Also die Nutzung eines Array Elementes als Index. Das nannte sich im damaligen Sprachgebrauch Scatter/Gather, ich kenne es als indirekte Adressierung. Das konnte man relativ einfach bei der Cray X-MP nachreichen. Das zweite war das I/O Subsystem. Die Cray 1 hatte zur Kommunikation mit der Außenwelt nichts anderes als 12 Kanäle mit je 16 Leitungen und drei Handshakeleitungen. Über jeden Kanal konnten 320 MBit/s übertragen werden. Das dumme nur: Solange das stattfand war die CPU beschäftigt. Es fehlte ein System, das sich nur um die Ein/Ausgabe kümmerte und die Daten zwischenspeicherte. Das wurde bei der Cray 1S nachgeliefert, als erstes der drei Probleme, weil die unzureichenden I/O Möglichkeiten offensichtlich waren. (Anders als alle vorherigen Computer war die Cray 1 auch nicht vollständig – man brauchte einen eigenen Computer um sie überhaupt zu starten und mit ihr zu kommunizieren). Interessanterweise hat Cray 1 bei seinem ersten Supercomputer der CDC 6600 eigens 10 I/O Prozessoren vorgesehen um die CPU zu entlasten. Unverständlich, warum er bei der Cray 1 darauf verzichtete, denn die Cray 1S bekam dann ein analoges System verpasst.

Der Hauptmangel denn er auch nicht bei der Cray 2 und Cray 3 behob war die mangelnde Speicherbandbreite. Die Cray 1 konnte pro Taktzyklus 4 Instruktionen aber nur 1 Datenwort lesen. Das war bei den Daten viel zu wenig, denn bei Vektoroperationen konnte in einem Takt ein Ergebnis pro Funktionseinheit geliefert werden. Das entsprach beim Verketten von Rechnungen zwei Lese und einem Schreibzugriff. Die Cray 1 war ausgelegt auf Register-/Registeroprerationen, hatte deswegen auch die Vektorregister mit 64 Einträgen. Doch auch diese mussten gefüllt werden und bei einem Wort pro Takt war es so dass eine Vektoroperation in 72 Takten erledigt war, das füllen eines Registers aber 81 Takte erforderte. Das war mit ein Grund warum die Cray 1 in vielen Programmen ziemlich einbrach, selbst bei Vektoroperationen, es musste nur mehr als 64 Elemente sein. Bei der Cray X-MP, die Steven Chen als Firmeninterne Konkurrenz aus der Cray 1 entwickelte lernte man daraus und vervierfachte die Speicherbandbreite es gab dort pro Takt je zwei Lesezugriffe, einen Schreibzugriff und einen I/O Zugriff. Andere Rechner wie die Cyber 205 hatten von Anfang an breite Datenbusse, bei dieser z.B. 512 Bit breit, was 8 Datenworten auf einmal entsprach. Auch andere Techniken um dem langsamen Speicher zu begegnen wie Caches setzte Cray nicht ein. Er führte bei der Cray 2 einen lokalen Speicher ein, doch der wurde durch befehle gefüllt und pufferte nicht Daten aus dem Arbeitsspeicher ab. Bei der Cray 2 machte er zudem den Fehler vom einen Extrem (Bipolar-Speicher mit niedriger Integrationsdichte aber kurzer Zugriffszeit) aufs andere Extrem (DRAM Speicher mit hoher Integrationsdichte aber schlechter Zugriffszeit) zu wechseln. Die Folge: der Rechner erreichte selbst in spezialisierten Benchmarks selten mehr als 50% seiner nominellen Leistung. Auch für Vektorregister ideal, wäre ein Burstzugriff, der die 64 Register über die 53 Bänke gleichzeitig füllt und so gerade bei einem sso registerorientierten Rechner Geschwindigkeit bringt.

Die Cray 3 setzte dann auf Galliumarsenid, ob man das als Fehlentscheidung sieht hängt wohl mehr vom Standpunkt ab. Aus der Hardwaresicht war es so, dass Crays Rechner niedrig integriert waren. Die Cray 2 hatte z.b. nur 16 Gatter pro Chip. Gallumarsenid war bei so wenigen Elementen dann eine Alternative, die schneller war. Der Grundfehler den man Cray ankreiden muss ist aber dass er von der Grundarchitektur nicht abließ. er setzte nach wie vor auf wenige Prozessoren, auf ECL Technologie. Er erweiterte auch nicht die interne Architektur. Die 8 normalen, 8 Adressregister und 8 Vektorregister (mit je 64 Elementen) blieben bei jeder Generation. Es gab auch immer die gleichen Funktionseinheiten, sie wurden eher weniger wenn man durch höhere Integration zwei zusammenfassen konnte. Sie zu verdoppeln kam nicht in Frage, dabei taten dies als die Cray 3 erschien, schon Mikroprozessoren.

Eigentlich muss Cray das Problem bekannt gewesen sein. Als die Cray 1 erschien hatte sie einen Takt von 80 MHz, Mikroprozessoren lagen damals bei 3 MHz. Bis zur Cray 3 wurde der Takt auf 500 MHz gesteigert – der Faktor 6. Mikroprozessoren erreichten als die Cray 3 erschien 66 MHz, waren also um den Faktor 22 schneller geworden und in der Verarbeitung von Daten hatten sie enorm aufgeholt: Von 8 Bits auf 32 Bits auf einmal und Fließkommabefehle gab es nun auch. Ein Mikroprozessor war nun noch nicht so schnell wie eine Cray, aber er hatte enorm an Rechenleistung aufgeholt. In MFLOPS ausgedrückt von 0,004 auf 1-2. Würde diese Entwicklung weiter gehen (und sie beschleunigte sich sogar im folgenden Jahrzehnt) so würden sie bald die Rechner die aus tausenden von Chips bestanden und die man nicht mehr kleiner bauen konnte, weil bei 500 MHz (Takt der Cray 3) keine Leitung länger als 40 cm sein dürfte und die Rechner so enorm hoch integriert waren und im Kühlmittel badeten überholen.

In einem gewissen Sinne war Cray enorm konservativ, er hat im Prinzip die Architektur über 20 Jahre nicht geändert. Er versuchte nur mehr Geschwindigkeit durch schnellere Schaltungen, höhere Packung und zum Schluss ein anderes Halbleitermaterial zu erreichen. Das denke ich ist sein größter Fehler. wer stehenbleibt verliert den Anschluss.

Die mobile Version verlassen