Home | Computer | Crays Supercomputer | Site Map |
Der Begriff "Supercomputer" ist eng mit Seymour Cray verbunden. Er leitete die Entwicklung der CDC 6600, die als erster Supercomputer gilt. Später machte er sich selbstständig und schuf die Cray 1 und 2. Ich möchte mich in diesem Artikel mit der Architektur der Cray 3 näher befassen. Dazu ergänzend sollten sie den Artikel über die Cray 1 und Cray 2 lesen, da auf diesen beiden Rechnern die Cray 3 aufbaute. Insbesondere die Funktionseinheiten, Register, Maschinensprache waren weitgehend unverändert von der Cray 1 übernommen worden.
Seymour Cray hatte einige Vorsätze. Der erste war, dass jeder Computer den er konstruierte, mindestens eine Potenz (zehnmal) schneller als der vorhergehende war. Das zweite war, dass bei der Entwicklung für ihn nur ein gutes technisches Design, nicht aber die Kosten zählen. Die Cray 3 sollte beide Vorsätze sehr stark ausreizen. Seymour Cray hatte bei CDC (Control Data Croporation) zusammen mit anderen die CDC 6600 und 7600 entworfen. Die CDC 6600 war schon auf Geschwindigkeit optimiert. Dies wurde erreicht durch viele parallel arbeitende Rechenwerke. Die CDC 7600 wurde in der Geschwindigkeit gesteigert, indem die Transistoren in der CDC 6600 durch integrierte Schaltungen ersetzt und eine Pipeline für jede Einheit eingeführt wurden.
Bei dem darauffolgenden Rechner, der CDC 8600 scheiterte Seymour Cray. Die Steigerung um den Faktor 10 machte eine Reduktion des Taktzykluses und vier Prozessoren nötig. Der ganze Rechner musste sehr kompakt werden. Die Abwärme war nicht in den Griff zu bekommen und die Auslegung noch mit einzelnen Transistoren war ein "Zuverlässigkeitsalptraum" wie es ein ehemaliger CDC Mitarbeiter ausdrückte. Nach vier Jahren Entwicklung wollte er abbrechen, doch ein Neuanfang war für CDC nicht zu finanzieren. Cray verlässt im Einvernehmen CDC und gründet die Firma Cray Research.
Bei der Cray 1, denn er in seiner 1972 gegründeten Firma Cray Research entwickelte, brachte die Einführung der Vektorarchitektur den Geschwindigkeitsschub, den er mit der CDC 8600 nicht erreichte.. Schon bei der Cray 2 verzögerte sich die Entwicklung, Die Schaltgeschwindigkeit der integrierten Schaltungen lies sich nicht in dem Maße steigern, wie in den Jahren zuvor, obwohl Seymour Cray auf die schnellste, allerdings auch stromverbrauchendste Technologie, ECL (Emittergekoppelte Logik) setzte. Die Cray 2 setzte vier Prozessoren ein, um trotzdem die zehnfache Geschwindigkeit der Cray 1 zu erreichen. Ohne weitere Reduktion der Schaltzeiten müsste dann der nächste Rechner 40 Vektorprozessoren aufweisen. Die Cray 3 verbesserte die Situation dahingehend, dass jeder Prozessor zwei bis dreimal schneller als ein Prozessor der Cray 2 war. Damit war der Rechner mit 16 Prozessoren rund acht bis zwölfmal schneller als eine Cray 3.
Seymour Cray setzte auf eine neue Technologie, ein neues Halbleitermaterial: Galliumarsenid. Die physikalischen Eigenschaften von Galliumarsenid waren schon damals gut untersucht. Es schaltet sehr viel schneller als Silizium und wird daher auch heute für die Hochfrequenztechnik eingesetzt, wo es auf sehr schnelle Schaltzeiten ankommt. Potentiell ist es auch energiesparender als Siliziumschaltungen mit einer hohen Schaltgeschwindigkeit, aber die stromsparende CMOS-Technik, bei der die Verlustleistung sehr gering ist, ist technisch nicht bei diesem Material möglich.
Doch die Cray 3 Seymour Cray plante schon lange den Einsatz dieses Materials um von der ECL-Technologe wegzukommen, welche in der Cray 1+2 eingesetzt wurde und eine aufwendige Kühlung nötig machte. Doch lange war es nicht möglich, die Gatter auf den Chips unterzubringen die man für den Rechner brauchte, obwohl die Chips für die Supercomputer schon in der ECL-Technologie nicht hochintegriert waren. Doch die Cray 3 sollte in dieser Technologie entstehen. Die Entwicklung verzögerte sich und wurde sehr kostspielig. Schließlich musste man bei Cray Research, wo Seymour Cray den CEO Posten schon vor Jahren aufgegeben hatte, um sich voll der Entwicklung zu widmen, entscheiden wie man weiter verfahren sollte. Ende der achtziger Jahre brachen die Umsätze im Supercomputermarkt ein, weil durch das Ende des Kalten Kriegs das Militär als bester Kunde deutlich weniger Systeme kaufte. Das Marktwachstum sank innerhalb weniger Jahre von 50 auf 10%. Neben der Cray 3 wurde eine zweite Linie entwickelt. Sie stammte von der Cray 1 ab und zwei Modelle, die Cray X-MP und Cray Y-MP waren schon auf dem Markt. Das Management setzte auf diese bewährte Linie und Seymour Cray musste die Cray 3 in einer eigenen Firma entwickeln.
Er gründete 1989 die Cray Computer Corporation (CCC) um die Cray 3 zu entwickeln. Bis dahin hatte die Cray 3 Entwicklung schon 120 Millionen Dollar gekostet. Sie war aber in Abstimmung mit Cray Research gegründet worden. Cray Research zahlte 50 Millionen Dollar für die Anfangsinvestitionen und sicherte eine Finanzierung über 100 Millionen Dollar für die nächsten zwei Jahre zu. Das war ein großer Brocken, berücksichtigt man dass Cray Research 750 Millionen Dollar an Erlösen (nicht Gewinn) hatten. Gedacht war das Cray Research Produkte evolutionär weiterentwickelt und die CCC neue revolutionäre Produkte entwickelt, die langfristig das Überleben beider Firmen sichern, denn die evolutionäre Weiterentwicklung kommt irgendwann zum Ende.
Rechner | Baujahr | Claimed Peak / erreichter Spitzenwert [MFlops] | MIPS (maximal / durchschnittlich) | Takt [MHz) | Prozessoren |
---|---|---|---|---|---|
CDC 1604 | 1960 | keine Fließkommafähigkeiten | 0,1 | 0,2 | 1 |
CDC 6600 | 1964 | 4,5 / 1 | 10 / 3-5 | 10 | 1 |
CDC 7600 | 1969 | 36,4 / 5 | 36,4 / 15 | 27,5 | 1 |
CD 8600 | 1974 Entwicklung eingestellt | 500 / 62,5 | 500 / 200 | 125 | 4 |
Cray 1 | 1976 | 160 / 130 | 80 | 80 | 1 |
Cray 2 | 1985 | 1942 / 1000 | 500 | 244 | 4 |
Cray 3 | 1993 | / 16000 | 8000 | 500 | 16 |
Schaut man sich diese obige Tabelle der Leistungsentwicklung der Prozessoren von Crays Rechnern an, so wird deutlich, dass man von 1960 bis 1969 die Leistung enorm steigern konnte. Die CDC 7600 führte Programme 364-mal schneller aus, der Takt stieg um den Faktor 55. Dann flacht die Geschwindigkeit ab, insbesondere der Takt ist kaum zu steigern. Die Cray 1 bringt einen Schub bei den Fließkommaoperationen, konnte aber nicht mehr Instruktionen pro Takt ausführen. Danach erreichte man Leistungsgewinne vor allem durch mehr Prozessoren.
Parameter | Wert |
---|---|
Abmessungen: | Höhe: 127 cm, Durchmesser: 107 cm |
Flächenbedarf: | 0,76 für 1-7 Prozessoren, 1,14 m² für 8-16 Prozessoren + System Pod: 1,78 m², zwei Stück für 8-16 Prozessoren nötig |
Gewicht: | 1000 - 3500 kg, je nach Anzahl der Prozessoren + 1720 kg pro Systemkontrolleinheit (zwei bei 8+ Prozessoren) |
mittlere Leistungsaufnahme | 360 - 450 kW |
Prozessoren | bis 16 + 1 Vordergrundprozessor |
Zykluszeit | 2 ns |
Fließkommaberechnungen | 1000 MFLOP pro Prozessor |
Speicher | 256 - 2048 MWorte |
Kosten | unbekannt |
Verfügbarkeit: | Mai 1993 |
Chips: | 140.000 |
Geschwindigkeit: | 500 MIPS pro Prozessor, 8000 für ein 16-Prozessorsystem |
Die Cray 3 war eine Weiterentwicklung der Cray 2, zumindest was die allgemeine Architektur anging (wegen der komplett anderen Schaltungen natürlich nicht auf Schaltungsniveau). So setzte man Dinge um die bei der Cray 2 sich als nachteilig erweisen hatten:
Die Cray 2 übernahm trotz neuer Technologie für die Schaltungen die allgemeine Architektur der Cray 2. Diese zeichnete sich vor allem durch zwei Dinge aus: sie war erstaunlich kompakt, sodass die Abwärme durch eine "Full immersion fluid Cooling", das Tauchen aller Platinen in eine inerte Kühlflüssigkeit abgeführt werden musste und sie setzte Standard DRAM Bausteine für den Speicher ein und hatte daher einen für Supercomputer enorm großen Speicher, allerdings zu dem Preis das der Speicher im Interleave, also jede Bank nacheinander angesprochen werden musste. Gelang dies nicht, so war ihre Rechengeschwindigkeit deutlich geringer als bei linearem Speicherzugriff.
Beibehalten wurde das Konzept eines Vordergrundprozessors und einer variablen Zahl von Hintergrundprozessoren (bis zu 16). Aus dem langsamen Speicherzugriff, der auch den Verkaufserfolg der Cray 2 beeinträchtigte, hatte Seymour Cray gelernt und baute ihn nun aus statischen Speichern auf, die sechsmal schneller als die in der Cray 2 waren. Die Zykluszeit sich "nur" verdoppelt hatte war dies ein deutlicher Fortschritt. Was Seymour Cray beibehielt, war der für damalige Supercomputer große Speicher. Er betrug 2 Gigaworte, nur zum Vergleich, der von seiner ehemaligen Firme Cray Research zwei Jahre später herausgebrachte Cray T90 hatte maximal 1 GWorte Speicher, obwohl sie bis zu doppelt so viele Prozessoren hatte. So verwundert es nicht, dass der Speicher drei Viertel aller Module ausmachte.
Das äußere Aussehen differierte von den Vorgängermodellen, die aus einem partiellen Kreisring in Form eines "C" bestanden. Diesmal war es ein achteckiger Schrank von 107 cm Höhe und 127 cm Durchmesser. Die Stellfläche war damit nochmals kleiner als bei der Cray 2. Die Form war die eines Achteckers bei mehr als 7 Prozessoren, sonst war es ein etwas kleinerer Quader. Die Elektronik machte den kleinsten Teil aus und belegt nur die obersten 20 cm. Wie bei der Cray 2 verwandte man dreidimensionale Module, bei denen die Platinen auch in der Höhe verdrahtet waren. Ein Modul war 10,2 cm breit und lang und 0,7 cm hoch. Es enthielt bis zu 1024 Chips. 336 Module gab es im Rechner. Die Chips waren wie im Vorgänger dreidimensional verbunden. Das heißt, ein Modul mit weniger als 7 mm Höhe enthielt 9 Platinen die auch in Z-Richtung 14.000 Drähte (jeder nur 0,122 mm im Durchmesser). Die Drähte in X-Y Richtung hatten 0,48 mm Durchmesser.
Die hohe Packungsdichte war durch den Takt vorgegeben: Er betrugt 500 MHz, die Zykluszeit damit 2 ns. Kein Kabel durfte im Computer länger als 40 cm sein, denn in 2 ns legen elektrische Signale in Leitern rund 40 cm zurück.
Die hohe Packungsdichte machte es unmöglich, die Module von Hand zu fertigen. Der Auftrag wurde an Hughes vergeben, die Industrieroboter einsetzen, um jeden Chip mit 52 nur 6 mm langen Golddrähten zu verbinden. Dann mussten die Module dreidimensional verbunden werden -12.000 Verbindungen pro Modul, und um die Hitze abzuführen mussten in die Platinen Löcher für die Zirkulation der Kühlflüssigkeit gebohrt werden. Die Kühlung durch "Eintauchen" in die Kühlflüssigkeit "Full Immersion Cooling" und die dreidimensionale Verdrahtung war nicht neu. Schon die Cray 2 setzte sie ein, doch die Packungsdichte war um einiges höher und so auch die Anforderungen bei der Fertigung.
Es gab einen Vordergrundprozessor, der die Hintergrundprozessoren mit Daten aus den Ein-/Ausgabegeräten versorgte und auch das Interface für die Bedienkonsole war und bis zu 16 Hintergrundprozessoren, welche die Rechenarbeit ausführten.
Erstaunlich wenige der 336 Module entfielen auf die CPU. Jeder Hintergrundprozessor war in vier Modulen untergebracht, der Vordergrundprozessor in einem Modul. 15 Module brauchte man für die I/O Ansteuerung. Ein Modul enthielt bis zu 1024 Galliumarsenidchips. Ein Modul hatte die Abmessungen 12,1 x 10,7 x 0,7 cm. Es bestand aus neun miteinander verbundenen Platinen (davon 4 bestückt) mit insgesamt 69 elektrischen Lagen. Chips waren in einer dreidimensionalen Struktur aus 4 x 4 x 4 Chips (über 2 Platinen) angeordnet. Die mittleren zwei Platinen diente dem Verbinden dieser "Stacks". Zwei weitere Platinen dienten der Stromversorgung. Jede Platine bestand aus 16 Subplatinen, die wiederum 10-16 Chips aufnahmen.
Eine Seite ist verbunden mit der Stromversorgung. Die drei anderen Seiten waren mit bis zu 22 Twisted-Pair Steckern verbunden.
Jedes Oktagon hatte 42 Module in einer Säule, zehn in einer äußeren und 32 in einer Inneren Säule. 8 Oktagonen bildeten den eigentlichen Rechner.
Die Galliumarsenidchips erlaubten pro Takt die Passage von sechs Gattern. Bei der Cray 2 waren es noch vier Ebenen trotz doppelt so langer Zykluszeit, sie waren pro Gatter also dreimal schneller. Neben der Beschleunigung erlaubte diese eine höhere Integration. Jeder Chip war klein, nur 3,8 x 3,8 mm groß (typisch sind 10-14 mm Kantenlänge). Es gab 450 verschiedene Typen an IC, sie bestanden aus 20 verschiedenen Logikzellen. Eine integrierte Schaltung bestand aus bis zu 128 Logikzellen, das entspracht 500 Gattern (da man für ein Gatter mit 4 Transistoren rechnet ist die Integrationsdichte nicht höher als beim Intel 4004 Prozessor, der aus 2300 Transistoren bestand. (andere Autoren kommen auf 4.000 Transistoren, trotzdem noch eine für die damalige Zeit sehr niedrige Integrationsdichte - der damals auf den Markt kommende Pentium Prozessor hatte im Verhältnis dazu rund 100-mal mehr Schaltelemente pro Flächeneinheit. Dafür erreichte man eine Gatterdurchlaufzeit von 150 Picosekunden.
Um die Module mit den vielen Querverbindungen fertigen zu können hatte jede der 16 Subplatinen 2500 Löcher die alle möglichen Verbindungen abdeckten, benutzt wurden die für die jeweiligen Chips nötigen.
Das bei Cray Rechnern typische Leitungsgeflecht (es wurden keine Kabel mit vielen Leitungen und stecken sondern einzelne Punkt-Punkt Verbindungen mit einzelnen Kabeln) musste nun in der Länge noch genauer überwacht werden. Die Laufzeit eines Signals im Kabel musste auf 50 Pikosekunden genau festgelegt werden. Das bedeutete bei einer typischen Geschwindigkeit von 200.000 km/s in einem metallischen Leiter musste die Kabellänge auf 1 cm genau stimmen.
Module wurden in der Regel komplett ersetzt, dafür gab es Ersatzmodule. In wie weit man sie reparieren konnte ist unbekannt. Es dürfte bei den dichten Packung von 9 Platinen in nur 7 mm Höhe mit den über 11.000 Verbindungen quer durch die Platinen nicht einfach gewesen sein, wenn nicht unmöglich.
Unverändert blieb die grundlegende Architektur des Rechners, bzw. der Großteil des Befehlssatzes seit der Cray 1. Die Cray 3 hatte drei Registersätze, jedes Mal 8 Stück:
Wie die vorherigen Rechner war die Cray 3 vor allem bei Vektoroperationen schnell. Es gab drei Einheiten (Shift, Ganzzahladdition, Logische Verknüpfungen), die waren jeweils doppelt für Skalar und Vektoroperationen vorhanden. Die Fließkommamultiplikation und Addition sowie die für die Division benötigte Reziprok-Tabelle wurden von Vektor- und Skalaroperationen gemeinsam genutzt. Adressberechnungen erfolgten mit zwei eigenen Funktionseinheiten, die für Adressadditionen und Multiplikationen zuständig waren. Jede Einheit konnte pro Takt eine neue Rechnung beginnen und lieferte wenn sie fortlaufend mit Befehlen versorgt wurde nach einer gewissen Anlaufzeit pro Takt ein Ergebnis. Alle Einheiten waren mit einer Instruktionspipline ausgestattet.
Auch diese Architektur hatte sich seit der Cray 2 nicht substanziell geändert. Weder hatte man die gemeinsam benutzten Einheiten verdoppelt, noch gab es eine Divisionseinheit im eigentlichen Sinne, stattdessen wurde die Division über das newtonsche Tangentenverfahren berechnet. Das war zu der damaligen Zeit schon verwunderlich. Schließlich hatte schon der 1989 erschienene 486 Prozessor einen integrierten Coprozessor der auch Potenzen, Logarithmen und trigonometrische Funktionen berechnen konnte. Das konnte die Cray nur per Software.
Allerdings stiegen die Taktzyklen pro Operation an: eine Fließkommaaddition dauerte bei Skalaren 12 Takte, bei Vektoren 16 Takte. Multiplikationen 13/17 Takte. Das Lesen und schreiben vom Speicher sogar 35/40 Takte. (Skalar/Vektoroperation getrennt durch /).
Der in der Cray 2 eingeführte lokale Speicher von 16 KWorten wurde ebenfalls beibehalten. Er diente als Ersatz für die B- und T- Register. Diese waren in der Cray 1 als nicht ansprechbare lokale Register vorgesehen die einen Rechenwert aufnahmen und so die Quellregister frei für weitere Operationen machten. Die Broschüre bezeichnet ihn als "Register File". So konnte in der Cray 1 Chaining implementiert werden - eine Operation musste nicht warten bis das Zielregister frei war, weil es die Kopie im T-Register gab.
Dazu gab es den Instruktionsstack von 512 Befehlen mit je 16 Bit Breite. Auch er war seit der Cray 1 unverändert und in acht Subeinheiten von je 64 Befehlen unterteilt. Befehle waren 1,3 oder 5 dieser 16 Bit Teile lang.
Um die Abhängigkeit vom Speicher zu reduzieren, hatte jeder Hintergrundprozessor einen lokalen Speicher für die letzten 64 Lese- und Schreibzugriffe abzupuffern.
Waren die Unterschiede schon zur Cray 1 gering, so waren sie zur Cray 2 minimal. Es gab wie bei der Cray 2 einen Vordergrundprozessor für die Ein/Ausgabe und 16 Hintergrundprozessoren (bei der Cray 2 waren es noch vier).Es gab acht neue Instruktionen (nun 136), vor allem für Speicherzugriffe und Kopien in den lokalen Speicher.
Der Vordergrundprozessor (Bild links) war primär dafür da die Backgroundprozessoren zu entlasten. Er hatte nicht die Aufgabe zu rechnen, sondern vor allem Transfers abzuwickeln. Verglichen mit dem Backgroundprozessoren waren seine Fähigkeiten eher bescheiden:
Er war die Verbindung zu den Ein/Ausgabeeinheiten die mit 12 MByte und 100 MByte/s arbeiteten. In den Speicher des Vordergrundprozessors wurde auch von der Kontrollkonsole das Startprogramm geladen. Dieses war danach unveränderbar.
Bei den Festplattenlaufwerken hatte Cray Research von den Wechselplatten der früher üblichen Rechner auf RAID Verbünde von Festplatten umgestellt. Sie boten bei RAID-5 eine erheblich höhere Ausfallsicherheit, da bei Ausfall einer Platte die Information nach Plattenwechsel restauriert werden konnte. Es gab zwei Kapazitäten von 11 und 23 GByte (mit 24 und 48 Laufwerken) mit einer maximalen Übertragungsrate von 86 MByte/s. Der Anschluss an die Cray 3 erfolgte über einen speziell angepassten 32-Bit Hochgeschwindigkeitskanal an den der RAID-Kontroller direkt angeschlossen wurde.
Die von Cray Research gefertigten DD-40 und DD-49 Laufwerke konnten auch angeschlossen werden.
Die Speicherarchitektur wurde von der Cray 2 übernommen. Es gab einen großen gemeinsamen Speicher, der allen Prozessoren zur Verfügung stand und einen lokalen Speicher der als Zwischenpuffer zu den Registern diente. Von einem Cache wie ihn damals schon Mikroprozessoren hatten unterschied ihn, dass er nur für Daten genutzt wurde und per Programmbefehl gefüllt wurde. Bei einem Mikroprozessor entscheidet eine Logik im Prozessor, welche Daten der Cache enthält. Dies ist nicht vom Benutzer beeinflussbar. Dieser 16.384 Worte große Speicher war nicht größer als bei der Cray 2, obwohl der globale Speicher um den Faktor acht angestiegen war. Er konnte in vier Taktzyklen angesprochen werden.
Wie bei den früheren Rechnern entfielen die meisten Module auf den Speicher, Von den 336 Modulen entfielen 256 nur auf den Speicher. Jedes enthielt 144 Chips mit jeweils 4 Megabit Kapazität. Diese waren nicht dreidimensional verbunden, sondern normale, beidseitig bestückte Platinen. So entfielen obwohl die meisten Module Speichermodule waren von den 140.000 Chips nur 36.864 auf die Speicherbausteine. Im Maximalausbau hatte der Rechner 2048 MWorte Speicher.
Der globale Speicher wurde angeordnet in acht Oktanten. Jeder Oktant nahm 64 Speicherbänke à 4 MWorte (16 Megabytes) auf. Zusammen waren es maximal 512 Bänke. Kleinere Konfigurationen verzichteten auf Oktanten. Jede Bank, die ein halbes Modul belegte, hatte 32 Ports zu jedem der maximal 16 Hintergrundprozessoren (je ein Schreib- und ein Leseport). Eine Verbesserung gegenüber der Cray 2 war dass jeder Hintergrundprozessor einen simultanen Lese- und Schreibzugriff durchführen konnte, der bei der Cray 2 nur nacheinander möglich war.
Die Peakburstrate betrug 1 GWorte pro Prozessor (16 GWorte pro Sekunde, 128 GByte/s). Wie bei den vorherigen Rechnern war der Speicher mit SECDED (Single Error Correction, Double Error Detection) ausgestattet. Dazu wurden pro Wort acht weitere Bits abgespeichert, die eine Prüfsumme über die Bits enthielten. Anhand ihrer konnte ein verändertes Bit im Wort korrigiert und zwei veränderte Bits erkannt werden. Bei mehr veränderten Bits war das Ergebnis nicht vorhersagbar.
Der Fortschritt in der Integrationsdichte von Speicherbausteinen führte dazu, dass verglichen mit der Cray 2 trotz einem achtmal größeren Speicher die Zahl der Bausteine auf die Hälfte abgenommen hatte. Die Cray 3 setzte 4 MBit statische RAM ein. Diese waren deutlich schneller als die DRAM der Cray 2. Die Zugriffszeit betrug 25 ns, bei der Cray 1 waren es anfangs 125 ns, spätere Exemplare erreichten 80 ns. Noch besser sah es bei den Zykluszeiten aus: DRAM hat typischerweise eine Zykluszeit die zweimal so lang wie die Zugriffszeit war, bei SRAM gab es diese Besonderheit nicht. In der Summe konnte ein zweiter Zugriff auf die zweite Bank schon nach 25 ns anstatt nach 160 bis 260 ns erfolgen. Das entsprach 13 Taktzyklen.
Allerdings übertrug der Speicher nicht die gesamten Daten auf einmal. Ein Wort wurde in 4 Takten gelesen oder geschrieben (je 18 Bit pro Zugriff). Die Übertragung der internen Adresse einer Bank (24 Bit = maximal 16 MWorte) geschah ebenfalls in zwei Takten mit je 12 Bits. Der Fehlererkennungscode wurde in der Speicherbank vor dem Schreiben generiert. Die Begrenzung erfolgte auch wegen der nötigen Leitungen. So kam man pro Oktanten mit einem 18 Bit breiten Datenpfad und einem 19 Bit breiten Adressbus aus. Geschwindigkeit wurde durch Bandbreite ersetzt: Jede Verbindung übertrug nur 125 Millionen Worte/s, es gab aber 128 dieser Verbindungen die dann eine Bandbreite von 16 GWorten ergaben.
Der Zugriff von 16 Prozessoren musste nun synchronisiert werden. Innerhalb eines Oktanten wurden im Speicher aufeinanderfolgende Worte in aufeinanderfolgenden Bänken abgelegt, sodass erst nach 64 Worten erneut die erste Bank angesprochen wurde. Jeweils vier Prozessoren konnten während eines Taktzyklus auf einen Oktanten zugreifen. z.B. Prozessor 0,4,8,12. Beim nächsten Zyklus kamen dann die nächsten Prozessoren dran (1,5,9,13). Jede Oktant hatte vier Buffer, der die letzten angesprochenen Adressen der 16 Prozessoren aufnahm. Jeder Puffer nahm die Adressen von 4 Prozessoren auf. Die Anforderungen wurden dann bearbeitet wenn Zeit war. Jeder Hintergrundprozessor konnte pro Takt zwei Oktanten ansprechen.
Die Adressierung erfolgte mit 31 Bits:
Bei Versionen mit weniger Prozessoren waren die obersten Bits unbenutzt. Die 32 Bit Adressierung hätte eine Erweiterung auf 4 GWorte ermöglicht.
Noch immer war aber der Speicher ein Flaschenhals. Die Memoryports wurden erweitert, aber die Übertragung eines 64 Bit Wortes erfolgte in 4 Takten zu je 18 Bit (mit 2 Bits für die Fehlerkorrektur). Selbst die Adresse wurde in zwei Takten übertragen.
Jede CPU besteht aus verschiedenen Funktionseinheiten, die parallel arbeiten können, auch darauf beruht die Geschwindigkeit eines Rechners. Die Cray 3 hatte Recheneinheiten für Ganzzahlberechnungen, Fließkommaberechnungen und für Adressberechnungen. Die letzteren waren nicht gedacht um Rechenergebnisse zu erhalten, sondern Adressen zu erhöhen und die Daten dann aus diesen Adressen abzurufen. Die Fließkommaeinheiten konnten sowohl für einzelne Zahlen (skalare) wie auch Vektoren (bis zu 64 Zahlen) genutzt werden. Für Adressoperationen gab es eine Additions- und Multiplikationseinheit. Sie konnte für 32 Bit Ganzzahlrechnungen zweckentfremdet werden.
Für ganzzahlige Rechenoperationen gab Funktionseinheiten für Logische Verknüpfungen (and, or, xor), Schieben von Zahlen (Division/Multiplikation mit Zweierpotenzen) und eine für Berechnungen (Addition/Subtraktion, Bits zählen, Parität und Anzahl an führender Nullen bestimmen). Werte konnten von den Skalar und Vektorregistern kommen, wobei die Vektoreinheiten eigene Einheiten für Ganzzahloperationen hatten.
Fließkommaoperationen umfassten Addition, Subtraktion, Multiplikation, die Bildung des Umkehrwerts (für die Division) und Quadratwurzelberechnung. Neu war die Hinzunahme der Quadratwurzelberechnung und die Umkehrwertbildung zu einer Einheit für die Hintergrundprozessoren. Bei der Cray 2 war der Vordergrundprozessor für diese Berechnungen notwendig. Sie wurden von Vektor- und Skalarregistern gemeinsam genutzt.
Jeder Hintergrundprozessor hatte einen kleinen eigenen Instruktionspuffer, bestehend aus acht Segmenten mit 16 Worten (128 Bytes) pro Segment. Die Logik las vorrausschauend aus dem Speicher die nächsten Worte in ein Segment. War das Ende eines Segments erreicht, so wurde der Inhalt des Segments verworfen, das am längsten nicht benutzt wurde und dieses wieder komplett mit Daten aus dem Speicher gefüllt. Bei einem Mikroprozessor würde man von einem Cache und bei einem Segment von einer Cacheline sprechen. Auffällig ist, dass diese Buffer so klein waren. Der damals schon verfügbare 80486 Prozessor hatte z.B. einen internen Cache von 8 Kbyte und einen externen von 64 bis 256 Kbyte - bei kürzeren Befehlsworten.
Seit der CDC 6600 setzte Seymour Cray aktive Kühlung ein. Bis zur Cray 1 war dies möglich durch Freon, das in Kühlröhren an den Modulen entlang geführt wurde. Danach war die Wärmeabgabe pro Volumen zu hoch. Die Cray 2 und Cray 3 setzten die Technik des Full-Immersion Coolings ein, das heißt im Rechnergehäuse zirkulierte Kühlflüssigkeit zwischen den Modulen, durch eine Pumpe umgewälzt. Außen gab die inerte Kühlflüssigkeit (sie dürfte nicht die Module angreifen oder selbst oxidiert werden) die Wärme an eine Wasserkühlung ab, die der Rechenzentrumsbetreiber dann abführen musste.
Das dazu nötige System Control Pod, das neben der Kühlung auch elektrische Anlagen beinhaltete war größer als das Gehäuse für den Rechner: es war quadratisch mit 133,3 cm Seitenlänge und 140,4 cm Höhe. Ein System mit 8 und mehr Prozessoren brauchte zwei dieser Anlagen. Es musste zwischen 2,4 und 4,5 m Entfernung von dem Rechner platziert werden. Dadurch bedingt war der Platzbedarf erheblich höher als nur bei den Zentraleinheiten, mindestens 23.4 m².
Obwohl die Rechner immer kompakter wurden, wurde die Wärmemenge immer größer:
Rechner | Abmessungen | Gewicht | Wärmeabgabe (Durchschnitt) |
---|---|---|---|
CDC 6600 | 13,36 x 1,67 m (Schränke aneinandergereiht) | 5.440 kg | 150 kW |
CDC 7600 | 7,62 x 0,30 m (Schränke aneinandergereiht) | ||
Cray 1 | 143,5 cm Durchmesser, 199,5 cm Höhe | 5.000 kg | 127 kW |
Cray 2 | 114 cm Breite, 134 cm Höhe | 5.500 kg | 180 kW |
Cray 3 | 106,68 cm Breite, 127 cm Höhe | 7.000 kg | 360-450 kW |
Die Cray 3 hatte ein fünfzehnmal kleineres Volumen als die CDC 6600, aber emittierte mehr als die doppelte Wärmemenge. Bis zu 640 Watt gab ein Kubikinch ab der bis zu 96.000 Gatter enthielt - Jedes Modul also bis zu 3,5 kW. Sie entstand vor allem durch die GaAs-Schaltungen. Um die Abwärme möglichst gleichmäßig zu verteilen setzte man auch Golddrähte ein und sorgte für einen hohen Fluss an Kühlflüssigkeit - sie erwärmte sich trotz der enormen Hitze nur von 5 auf 30°C. Das von 3M als Blutersatz entwickelte Kühlmittel (deswegen war es chemisch inert) gab dann die Wärme an die Wasserkühlung ab die der Rechenzentrumsbetreiber stellen musste. Der Bedarf war enorm: Die größte Version hatte einen Durchsatz von 270 Gallonen von 55°F kaltem Wasser pro Minute (1030 l von 1,7°C). Da die Temperatur dem des Wassers im Leitungsnetz entspricht (im Boden ist immer eine konstante Temperatur von 13-14°C ging man wohl davon aus, dass man das Wasser nicht erneut verwendet, sondern eben 60 m³ Wasser pro Stunde durch das System jagt.
Mit der Abwärme von 360 kW hätte man rund 90 Wohnungen beheizen können. Sie wurde auf einer Fläche von 1 m² abgegeben, ein vielfaches der Wärmeabgabe einer Herdplatte. Sehr deutlich wird auch das hier das Kühlsystem an seine Grenzen kam. (Nach Crays Angaben emittierte die 4-Prozessor Maschine 90 kW, und gab genug Hitze ab um sechs 2000 ft² (186 m²) US-Häuser zu heizen (sowohl die Wohnfläche wie auch die Isolation unterscheiden sich von deutschen Standards, zudem war es nur ein System mit 4 anstatt 16 Prozessoren.
Das Betriebssystem der Cray 3 war ein angepasstes UNIX. Es gab Compiler für C und FORTRAN die auch optimiert waren (Schleifen durch Vektoroperationen ersetzten). Daneben gab es damals schon fertige Applikationen die man jedoch in der Regel anpassen musste.
Es wurden sieben Cray 3 gebaut, zwei bis drei davon waren Produktionsexemplare. Die Broschüre listet folgende Konfigurationen:
Modell | Prozessoren | Speicher [Mworte] | I/O Module | Kontroleinheiten |
---|---|---|---|---|
CRAY-3/1-256 | 1 | 256 | 1 | 1 |
CRAY-3/2-256 | 2 | 256 | 1 | 1 |
CRAY-3/4-512 | 4 | 512 | 3 | 1 |
CRAY-3/4-1024 | 4 | 1024 | 3 | 1 |
CRAY-3/4-2048 | 4 | 2048 | 3 | 1 |
CRAY-3/8-1024 | 8 | 1024 | 7 | 2 |
CRAY-3/8-20148 | 8 | 2048 | 7 | 2 |
CRAY-3/16-2048 | 16 | 2048 | 16 | 2 |
Ausgeliefert wurde nur eine 4-Prozessorkonfiguration
Die Entwicklung der Cray 3 war kostspielig, es fehlte aber an Kunden. Es gab nur zwei, davon sprang einer wieder ab. Fertiggestellt wurde nur eine Maschine für das NCAR mit vier Prozessoren. Sie hatte nur 128 MWorte Speicher, 20 GByte Plattenspeicher einer Zykluszeit von 2,08 Mikrosekunden. Die Geschwindigkeit soll 20-25% höher gewesen sein als die einer Cray Y-MP8 die vorher der schnellste Rechner war, das wären 3,2 bis 3,3 GFLOPS. Dieser Rechner wurde zum Experimentalbetrieb überlassen. Das war nicht ungewöhnlich, so kamen auch die ersten Cray 1 und Cray 2 in nationale Forschungseinrichtungen. Deren Ergebnisse erlaubten es die Maschinen nachzubessern bevor man sie verkaufte. Das war zumindest bei der Cray 1 auch nötig, die im Experimentalbetrieb wegen Problemen mit dem Hauptspeicher öfters ausfiel.
Das NCAR reklamierte das die Maschine fehlerhaft sei (es gab einen Fehler bei der Quadratwurzelberechnung, sie war um 1 Bit alle 60 Millionen Wurzeln falsch) und einer der Prozessoren lief nicht ohne Störung. und verweigerte die Zahlung auch nach sehr langem Experimental. Die Cray 3 wurde offiziell am 26.3.1995 vom NCAR dekommissioniert. Cray Research ging einen Tag vorher in Konkurs, weil es bis dahin keine Zahlung vom NCAR gegeben hatte und die Banken einen weiteren Kredit über 20 Millionen nicht mehr gaben. Je nach Quelle soll die Firma mindestens 120 und bis zu 300 Millionen Dollar für die Entwicklung "verbrannt" haben. Seymour Cray hatte aber auch eine wirtschaftlich schwierige Zeit für alle Supercomputerbauer durchzustehen: Hauptkunde war bisher das Militär gewesen, das nun nach dem Ende des kalten Krieges kaum noch neue Systeme abnahm. Vorher wurden sie genutzt Waffen zu konstruieren oder Atombomben zu berechnen. Das traf alle Hersteller von Supercomputern, war aber fatal wenn man erst ein neues System auf den Markt bringen will und daher Kunden braucht um die Investitionskosten wieder hereinzubekommen.
Zwei Jahre vorher hatte Cray Inc. die alte Firma Seymour Crays, die Cray C90 vorgestellt die zwar nur die halbe Taktfrequenz erreichte (4,1 zu 2,08 ns Zykluszeit), aber auf der schon verbreiteten Cray 1 Architektur basierte und deutlich preiswerter war. Es folgte 1995 die Cray T90 mit ähnlicher Architektur und ebenfalls 2,2 ns und bis zu zu 32 Prozessoren die Cray 3 in der Geschwindigkeit überholte, ohne neue Technologien wie Galliumarsenid einzusetzen.
Cray Inc. selbst hatte auch die Zeichen der Zeit erkannt, nachdem es schon in den Achtzigern erste Versuche gab, aus handelsüblichen Mikroprozessoren Supercomputer zu konstruieren. Damals waren die Prozessoren noch nicht leistungsfähig genug, doch nun erreichten sie Taktfrequenzen über 100 MHz, also ein Fünftel des Cray 3 Taktes und sie hatten Fließkommaberechnungsfähigkeiten in der Hardware. Einige Mikroprozessoren konnten so einen Prozessor der Cray T90 oder Cray 3 ersetzen.
Cray Inc brachte 1996 den T3E heraus der 8 bis 2176 Alpha 21064 Prozessoren mit jeweils 300 MHz einsetzte. Ein System mit 1480 Prozessoren erreichte 1998 eine Geschwindigkeit von 1 Teraflops - 62-mal mehr als eine Cray 3. Dabei wurden die Mikroprozessoren noch leistungsfähiger und mit mehr Prozessoren konnte man die Rechenleistung weiter steigern. Heute gibt es nur noch solche Rechner in der Top 500 Liste der Super Computer. Die größten Systeme setzen über 100.000 Kerne (und zusätzlich Grafikbeschleuniger mit Millionen von GPU-Kernen) ein.
Cray selbst hatte auch nach dem Fiasko mit der Cray 3 diese Entwicklung nicht wahrhaben wollen und ging zur Cray 4 über. Sie war im wesentlichen eine verbesserte Cray 3. Die Packungsdichte war noch höher, der Rechner sollte in einem Kubikfuß (0,3048 m)³ passen. Der Takt betrug 1 GHz und der Speicher pro Prozessor 64 GWorte. Einziges Zugeständnis an den mangelnden Markterfolg war die Rückkehr zur Cray 1 Architektur mit T- und B-Registern anstatt lokalem Speicher. Eine 16 CPU Version sollte 32 GFlop erreichen und 11 Millionen Dollar Kosten. Bevor sie fertig war, ging CCC in Konkurs.
Seymour Cray gründete eine neue Firma SRC Computer. Sie wollte nun tatsächlich an parallelen Rechnern arbeiten. Hauptaugenmerk galt zwei Flaschenhälsen der Multiprozessorsystemen - der Kommunikation zwischen den Prozessoren (braucht um so mehr Zeit je mehr Prozessoren sich austauschen müssen) und dem Speicher (die begrenzte Speicherbandbreite wird von allen Prozessoren gemeinsam genutzt). er starb allerdings bevor man weit gekommen wäre.
Seymour Cray und seine Computer faszinieren. Zum einen gelang es ihm über zwei Jahrzehnte jeweils die schnellsten Computer zu konstruieren. Sie waren zudem ästhetisch und er beschritt in vielen Dingen technisches Neuland. Auf der anderen Seite setzte er aber auch mehrmals auf das falsche Pferd. Seymour Cray erfand oder verbesserte Dinge die man heute in jedem Rechner findet wie die Pipeline, um einen Befehl schneller zu dekodieren (anstatt einen Befehl nacheinander zu dekodieren und auszuführen werden sie in einen Puffer geschrieben der bei jedem Takt eine Stufe weiter rückt und einen Teil der Dekodierung übernimmt, so kann man im Extremfall einen Befehl pro Takt ausführen), mehrere unabhängige Recheneinheiten (die Operationen parallel durchführen), die Vektorarchitektur in Registerform. Die Computer waren reine RISC Maschinen mit einem Befehlssatz ohne Ausnahmen in einem einheitlichen Format. Dazu waren die Rechner ästhetisch, zuerst in Form eines "C" und dann in einem Oktaeder.
Auf der anderen Seite schätzte er Entwicklungen falsch ein oder setzte aufs falsche Pferd. Schon vor der Cray 1 war dies bei der CDC 8600 der Fall. Die CDC 7600 war der letzte Rechner von Seymour Cray, ein Nachfolgemodell der CDC 6600, vor allem schneller geworden durch integrierte Schaltungen und eine Pipeline, doch um die Geschwindigkeit weiter zu steigern setzte Cray bei der 8600 auf ein Multiprozessordesign und eine sehr hohe Packungsdichte der Schaltungen die eine sehr aufwendige Kühlung notwendig machte. Schließlich war in den letzten Entwürfen die Kühlanlage größer als der reine Rechner. Als er erkannte, dass das Design so nicht umzusetzen war, gab ihm die Firma nicht die Freigabe es zu ändern, denn die gespannten Finanzen ließen einen Neuanfang nicht zu und Cray gründete Cray Research.
Die Cray 1 zog die Lehren aus dem Fiasko und hatte nur einen Prozessor. Geschwindigkeit wurde durch die Vektorarchitektur erreicht und nicht durch mehrere Prozessoren und die Integrationsdichte war noch im mittleren Bereich, sodass die Chips konventionell gekühlt werden konnten, auch wenn hier die Kühlanlage mehr wog als der Rechner. Immerhin war die Cray 1 aber deutlich größer als die Cyber 8600. Bei der Cray 2 nahm er weil die Schaltungen nicht so in der Geschwindigkeit gesteigert werden konnten das Konzept von mehreren Prozessoren wieder auf, allerdings war nun nicht vorgesehen, dass jeder Prozessor dieselben Befehle ausführt, sondern jeder war unabhängig und ein eigener Vordergrundprozessor synchronisierte sie und nahm die Ein/Ausgabe ab. Die Cray 2 ist zwar ein sehr schmucker und ziemlich kleiner Rechner (selbst vergleichen mit heutigen Designs), aber weil einige Kunden bei den Cray 1 Modellen nach mehr Speicher verlangten und eine Speichererweiterung kauften, sollte sie einen sehr großen Speicher besitzen, den der in handelsüblichen 100 ns DRAM Bausteinen realisierte. Die Bausteine speicherten zwar das 256-fache der Bipolar-Speicher der Cray 1, waren aber viel langsamer, während der Computer selbst um den Faktor sechs schneller wurde. Dazu musste er den Speicher in Bänken anordnen die man nacheinander ansprach. Gelang dies nicht, weil die Daten nicht linear angeordnet waren oder es Sprünge im Programm gab, so brach die Performance ein, weil nun gewartet werden musste bis die Bank wieder ansprechbar war. In der Praxis erreichte die Cray 2 nur die Hälfte ihrer Performance. Schon damals deutete sich ein Konflikt innerhalb von Cray Research an. als die von Stephen Chen konstruierte Cray X-MP, nichts anderes als eine Cray 1 mit zwei oder vier Prozessoren sich erheblich besser verkaufte als die Cray 2.
So war es kein Wunder, dass man bei Cray Research beschloss Seymour Cray bei einer eigenen Firma zu helfen, um das Kostenrisiko zu begrenzen und nicht zwei Linien in einer Firma zu finanzieren. Je nach Quelle sollen nur 25 bis 30 Cray 2 verkauft worden sein, dagegen von der etwas früher erschienen Cray X-MP über 180 Stück - und diese erforderte kaum Mittel für neue Technologien sondern profitierte einfach von der Entwicklung der Halbleiterindustrie.
Bei der Cray 3 hatte Seymour Cray zwar nun den Speicher durch schnellen SRAM Speicher ersetzt, doch er setzte erneut auf zwei neue unerprobte Technologien - dreidimensionale Vernetzung der Chips und die Verwendung von Galliumarsenid als Halbleitermaterial. Es gab keine Kunden, zum einen wegen eines Abschwungs beim Supercomputermarkt, zum anderen weil Kunden lieber Rechner seiner alten Firma Cray Research bevorzugten, weil diese eine bekannte Architektur hatten, deren Vorzüge und Nachteile man kannte und für die man schon Software entwickelt hatte. Ob die Cray 3 die Erwartungen erfüllen konnte wird wohl immer offen bleiben. Es gibt Parallelen zur CDC 8600: die hohe Packungsdichte, der hohe Takt, immerhin war das Kühlproblem nun gelöst.
Seymour Cray setzte zwar zum einen auf neue Technologien, aber er war ziemlich konservativ, wenn sich etwas bewährt hatte. So erweiterte er nicht die Architektur auf mehr Vektorregister oder mehr parallel arbeitende Einheiten. In Mikroprozessoren gab es zur Zeit der Cray 3 schon die ersten Entwürfe mit zwei Fließkomma- und Integereinheiten die dann doppelt so schnell waren wie mit einer Einheit. Ebenso wurden Schattenregister eingeführt, das heißt die adressierbaren Register waren nur ein Teil des Bestandes. der Rest wurde für die unterschiedlichen Einheiten gebraucht um Zwischenergebnisse zu speichern. Auch Caches, die die Geschwindigkeitsnachteile von DRAM ausglichen indem sie dauernd Daten aus dem Speicher in den Cache luden oder zurückschrieben setzte er nicht ein. Von den Mikroprozessoren und MPP Architekturen hielt er gar nichts: "Was nehmen sie um einen Acker zu pflügen - zwei kräftige Ochsen oder 1024 Hühner?" Doch weil in einem Mikroprozessor die gesamte Logik in einem Chip untergerbacht war und dessen Taktfrequenz so viel weiter gesteigert werden konnte, gehörte ihnen die Zukunft. Dazu kamen die finanziellen Vorteile der Massenproduktion der Chips. Mit der eingesetzten HCMOS Technologie waren sie zudem vergleichsweise stromsparend. Mitte der Neunziger stellte sogar IBM auf die HCMOS Technologie um, später ersetzte auch diese Firma die CPUs auf mehreren Platinen durch ein Array von Power-Mikroprozessoren.
Was Mikroprozessoren der Vektorrechnern von Cray vorraushatten war ihre Kleinheit: der gesamte Prozessor belegte nur einige Quadratzentimeter, die Speicher waren einige Zentimeter von dem Prozessor entfernt. Dadurch waren die Wege kurz, der Takt konnte leichter erhöht werden und erreichte 2002 3,8 GHz (seitdem ist er bei dieser Marke geblieben). Bei einer Cray 3 war zwar der Prozessor in den obersten 20 cm untergebracht, das war aber immer noch um den Faktor 10 mehr als bei einem Prozessor und 20 cm legt ein Signal in 1 Nanosekunde zurück - das war schon die halbe Taktfrequenz der Cray 1. Beim Speicher war die Wartezeit noch länger. Die Rechner von Cray hatten in knapp 20 Jahren um den Faktor 6 bei der Taktfrequenz zugelegt (von 80 auf 500 MHz). Schaltungen waren aber erheblich schneller in der Geschwindigkeit gestiegen. So hätte die Cray 2 wenn nur die Schaltungen den Takt vorgaben einen Takt von 675 MHz erreichen müssen. Sie blieb aber bei 243 MHz, weil die Leitungswege nun eine immer größere Rolle spielten.
Bei dieser Technologie ist es bis heute geblieben. Einzig NEC fertigt noch Vektorrechner. Allenfalls GPUs, die CPUs von Grafikkarten mit viel mehr (allerdings einfacheren) Recheneinheiten könnten
die Mikroprozessoren teilweise ablösen - man braucht immer noch welche die das Hauptprogramm ausführen und die Rechenaufgaben an die GPU verteilen.
Cray 3 Manual
Cray 3 Computer System Funktional Description Manual
http://www.mancini99.freeserve.co.uk/Cray_module_pa.html
Artikel erstellt am 23.9.2014
Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.
Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.
Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.
Mehr über das Buch auf dieser eigenen Seite.
Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.
Sitemap | Kontakt | Impressum / Datenschutz | Neues | Hier werben / advertisment here | Buchshop | Bücher vom Autor |