Unterthema: H1-Highlights im Überblick
Als man Ende 1987 endlich die ersten, lang erwarteten T800-Transputer mit integriertem Arithmetik-Coprozessor auslieferte, durfte dieser sich noch an Gespannen aus 80386/80387 (Intel) oder 68020/68881 (Motorola) messen. Dabei sah er schon als einzelner Chip sehr gut aus, und wenn die Leistung immer noch nicht reichte, konnte man die Leistung mit einem Netzwerk aus quasi beliebig vielen Transputern steigern. Aber die Konkurrenz schläft bekanntlich nicht, und im Zuge der RISC-Euphorie entstand nach rund drei Jahren ein massiver MIPS- und FLOPS-Zwang.
Laut Herstellerangaben prallen so in unserem Beispiel potentielle 150 MIPS Integer-Spitzenleistung (60 MIPS Dauer) eines H1-Chips auf 40 MIPS beim derzeit gelieferten i860 (40 MHz Takt). Bei Fließkomma-Operationen wird der H1 angeblich mit 20 MFLOPS (10 MFLOPS Dauer) aufwarten, der i860 setzt stolze 80 MFLOPS dagegen. Aufgrund chipinterner Parallelität addiert `die Werbung´ beim i860 die Werte zu stolzen 120 MIPS; den H1 wird man uns in ähnlicher Rechnung vermutlich zukünftig mit 170 MIPS präsentieren.
Realistische Betrachter haben sich bezüglich solcher `Spitzenwerte´ mittlerweile auf die lapidare Formel `Diese Werte werden garantiert nicht überschritten´ geeinigt. Aber auch wenn man diese Werte real höchst selten erreichen kann: beide Prozessoren gehören zur derzeitigen Spitzenklasse. Weitere MIPSereien seien auf die Verfügbarkeit real meßbarer Systeme vertagt.
Gerade beim Transputer hängt ein gut Teil der Leistung einer aus mehreren Transputern aufgebauten Maschine auch davon ab, wie gut diese in einem Multi-Transputer-Netz miteinander kooperieren - viel Design-Know-how und dessen Umsetzung sind also ebenso gefragt. Über neue Ansätze bei der Vernetzung der H1-Transputer - Stichwort `Wormhole-Routing´ - hat c't bereits ausführlich berichtet [1]. In der Tabelle sind die wichtigsten Eckdaten des neuen H1-Chips rekapituliert, die weitgehend bereits in [2] zur Sprache kamen. Im folgenden geht es vornehmlich um den H1-Chip selbst.
Auch eine Aufteilung in 8 KByte Cache und 8 KByte Arbeits-RAM ist möglich. So lassen sich zum einen die Vorteile des Caching nutzen, andererseits kann man kritische Programmteile, deren Zeitverhalten - etwa im Interrupt-Service - exakt bekannt sein muß, im schnellen Arbeits-RAM von allen Timing-Unwägbarkeiten eines Cache abkoppeln.
Statt der von den T-Chips her bekannten Signale `Reset´, `Error´ und `Analyse´ verfügt der H1 über zwei sogenannte Control-Links, deren Möglichkeiten zur Steuerung und zum komfortablen Debugging aber weit über die der T-Familie hinausgehen sollen. Die superskalare Processor-Pipeline-Architektur umfaßt Befehls-Puffer, Decoder, Grouper, Workspace Cache, zwei Adreßgeneratoren und die (gegenüber den T-Typen erweiterten) Funktionsblöcke ALU und FPU.
Die Link-Interfaces hat man völlig überarbeitet. Sie werden mit 100 MBit/s fünfmal schneller als die der Vorgänger sein und sind auch deshalb nicht mehr anschlußkompatibel zu diesen, weil Inmos das Protokoll verändert hat: die asynchrone Zweidraht-Linkverbindung mit reinem Software-Protokoll ist einem synchronen Verfahren (Strobe-Leitungen) gewichen. Inmos spricht beim H1 jetzt von Data-Strobe-Links (kurz DS-Links) und bei den T-Chips von OS-Links (steht für Oversampling). Die totale Link-Transfer-Bandbreite, wenn also alle vier Links mit Hilfe eigener DMA-Kanäle unter Volldampf senden und empfangen, soll bei 80 MByte/s liegen. Für die Kopplung von Systemen mit DS- und OS-Links hat Inmos ein Konverter-IC mit der Bezeichnung C100 vorgesehen.
Durch die hohe interne Kommunikationsbandbreite und die Pipeline-Architektur kann der H1 bis zu acht Befehle gleichzeitig ausführen. Laut Inmos ist dazu - anders als etwa beim i860 - kein spezieller, optimierender Compiler nötig, sondern die Hardware (Decoder/Grouper) sorge selbst für die optimale Code-Klassifizierung und Verteilung auf verschiedene Ausführungseinheiten. Zusätzlich hat man die FPU gegenüber den T8xx-Chips um eine direkte Unterstützung trigonometrischer Funktionen erweitert.
Transputer - auch schon die erste Generation - stellen eine Mischform aus RISC- und CISC-Prozessor dar. Die relativ vielen Maschinenbefehle (mehr als hundert beim T800) weisen in Richtung CISC, die zum Teil sehr kurzen Befehle (4-Bit-Operand, 4-Bit-Opcode für die am häufigsten benötigten Befehle) sind typische RISC-Merkmale. Auch bereits die T-Chips arbeiten viele Befehle in ein oder zwei Takten ab, so daß der Befehlshunger von CPU und FPU (auch hier ist schon Parallelarbeit möglich) nach schnellem Nachschub, sprich: großer Speicherbus-Bandbreite verlangt.
Beim H1 ist diese Nachschublage weitaus prekärer: intern können weit mehr Befehle parallel verarbeitet werden, und auch 50 MHz Taktfrequenz (gegenüber derzeit maximal 30 MHz bei T8x) erzwingen eine erhöhte Speicherbandbreite. Um nun - trotz Cache - extern nicht allzu schnelle RAMs zu benötigen, stellt ein 64 Bit breiter Datenbus nach außen einen einfachen Weg zur Verdopplung der Speicherbandbreite dar.
Das Speicher-Interface bietet allerdings - noch weitergehend als bei der T-Serie - einige Extras, die Hardware-Designern das Leben drastisch erleichtern. So werden vier verschiedene Speicherarten - dynamisches RAM, statisches RAM, EPROM und Video-RAM - direkt unterstützt, also ohne Zusatz-Hardware. Diese können als verschiedene Bänke gleichzeitig (also auch gemischt) im System sein, und überdies läßt sich die Busbreite je Bank zu 8, 16, 32 und 64 Bit frei wählen. Der Speicherausbau kann ohne Zusatzbeschaltung allerdings nicht beliebig groß gewählt werden, sondern wird durch die Belastung - letztlich die Anzahl der Speicher-Chips - seitens der Speicherhardware vorgegeben. Inmos nennt noch keine exakten Werte, sondern spricht davon, daß sich derzeit `ohne Extras´ etwa 8 bis 16 MByte RAM realisieren lassen.
In der Transputer-Welt setzt man immer mehr sogenannte TRAMs ein, also kleine Steckkarten mit Transputern und RAM, die auf größeren Trägerboards zu Multi-Transputer-Systemen kombiniert werden können. Obwohl der H1-Chip wesentlich mehr Pins (siehe Tabelle) als die bisherigen Transputer haben wird, kann man durch die nicht mehr benötigte Peripherielogik davon ausgehen, daß sich TRAM-Leiterplatten auf H1-Basis weiterhin mit sehr kleiner Fläche und dabei mit maximal vier Signallagen herstellen lassen.
Für die Zuverlässigkeit haben Anzahl der Lagen und Durchkontaktierungen große Bedeutung, weil die Ausfallrate `failure in time´, abgekürzt fit, linear mit jeder dieser Größen ansteigt. Des weiteren bedeutet jedes eingesparte Bauteil - neben geringeren Kosten und generell reduziertem Aufwand - ein Bauteil weniger, das ausfallen kann. Und nicht zuletzt fallen Verbindungen zwischen diesen weg, auf denen sich Spikes, Glitches und anderweitig unerfreuliche Dinge tummeln können.
Mit der steigenden Akzeptanz des Transputers verstärkte sich aber der Wunsch vieler Anwender nach einer universellen Transputer-Maschine, also etwa einer Workstation mit einem `echten´, Parallelität unterstützenden Transputer-Betriebssystem. Das Betriebssystem Helios ist ein solcher Ansatz, dessen Schaffung jedoch einige ernsthafte Mängel der ersten Transputer-Generation offenbarte.
Das in [1] bereits vorgestellte neue Link-Konzept mit den Routing-Chips C104 dient vorwiegend der Vereinfachung und Erhöhung der `Connectivity´, verbessert also rundum die vernetzungsbezogene Software-Entwicklung; die Netzwerktopologie läßt sich zum Beispiel im laufenden Betrieb ständig neuen Erfordernissen anpassen, Prozesse können zur Laufzeit auf schnellstem Weg zu `unbeschäftigen´ Prozessoren geschickt werden, ohne daß - wie bei den T-Chips - die exakte Netztopologie schon beim Software-Entwurf bekannt sein muß.
Die zahlreichen Hardware-Verbesserungen und -Erweiterungen ermöglichen den Designern von Systemsoftware, Real-Time-Kernels und fortschrittliche Betriebssysteme einfacher zu implementieren. Die hinzugekommene Monitor- und Debugging-Hardware erleichtert die Fehlersuche bei der Software-Entwicklung und auch spätere Online-Fehlerbehandlungen beträchtlich. Defekte Transputer-Knoten können sehr effizient erkannt und aus dem Netzwerk ausgegliedert werden. Dies ist vor allem für Anwendungen mit hohen Anforderungen an die Zuverlässigkeit interessant, da sich zwar im Fehlerfall die Performance verringert, das ganze System jedoch noch intakt bleibt.
Der transputer-interne Multitasking-Kernel ermöglicht bereits mit den Chips der T-Familie, parallelisierte Software auf nur einem Transputer zu entwickeln und zu erproben; die so entstandene Software läßt sich ohne Änderung des Quelltextes auf echte Multiprozessorsysteme übertragen. Der interne `Multitasker´ kam aber auch hardwarenahen Programmierern sehr zu statten. Während es die Systemprogrammierer bei den T-Chips aber relativ schwer hatten, das chipinterne Multitasking-Scheduling gezielt zu beeinflussen, versprechen die H1-Chips weitgehende Kontrolle über diese Interna.
Ein größeres Handicap für die Betriebssystementwickler dürfte aber das Fehlen jeglicher chipinterner Mechanismen für einen Speicherzugriffsschutz gewesen sein. In Hardware implementierter Speicherschutz und eine sogenannte Adreß-Translations-Logik verringern nun den Aufwand der Softwareentwicklung deutlich. Die vielen neuen Möglichkeiten auf Hard- und Softwareseite (etwa verbesserte Kapselung von Daten) lassen auf überschaubare, leistungsfähige Computersysteme mit hohem Grad an Wartbarkeit, Zuverlässigkeit, Qualität und Sicherheit hoffen.
Damit man in der Anfangszeit des H1 bestehende T805-Applikationen auch auf reinen H1-Systemen betreiben kann, muß das T805-Boot-Verhalten über Links gesondert emuliert werden. Inmos kündigt dazu ein spezielles Board aus H1 und C100 an, das über ROM-Code das Boot-Zeit-Verhalten eines T805 nachbildet. Der IMS C100 führt einerseits die erwähnte Protokoll-Konvertierung zwischen den OS-Links und den DS-Links durch. Weiterhin setzt er die Signale `Reset´, `Analyse´ und `Error´ der T-Prozessoren in geeignete Kommandonachrichten an die H1-Control-Links um.
Wenn konfigurierter, T805-binärkompatibler Code auf einem H1-Transputer laufen soll, der über einen C100 mit einer Komponente der T-Familie verbunden ist, so muß über das VCP-Register (Virtual Channel Processor) auf dem H1 der `T-Mode´ gesetzt werden. Das heißt, es dürfen keine virtuellen Kanäle involviert werden. Der Code auf Vertretern beider Transputer-Generationen läuft dann ohne Veränderungen. Bei dieser Hardware-Konfiguration ist es jedoch trotzdem möglich, sich die virtuellen Kanäle des H1 zunutze zu machen, wenn man den T805-binärkompatiblen Code rekonfiguriert und dabei die externen Kanaladressen verändert.
Es wäre ein Wunder, gäbe es bei so viel Innovation nicht doch ein paar Probleme bei der Kompatibilität zwischen beiden Transputer-Welten. Die Probleme werden wohl weniger in kompiliertem Binärcode als vielmehr in Assembler-Code und bei Systemsoftware wie Echtzeit-Kernels auftreten. Folgende Unverträglichkeiten sind derzeit bekannt:
So läßt sich zum Beispiel die Parallelisierung einer Matrizenmultiplikation theoretisch recht weit treiben, also auf viele Prozessoren verteilen. In der Praxis erreicht man aber durch Verwendung weiterer Transputer irgendwann keine Leistungssteigerung mehr, weil das Verschicken der Teilaufgaben ins Netz und das Einsammeln der Teilergebnisse länger dauert als die Berechnungen. Die Steigerung der Link-Geschwindigkeit beim H1 hat also einen guten Grund, und in Verbindung mit den Routing-Chips C104 lassen sich - etwa durch gleichzeitige Benutzung aller vier Links zwischen zwei beliebig auswählbaren Transputern - weitere kräftige Beschleunigungen erzielen.
Die folgenden Beispiele mögen die Flexibilität und leichte Skalierbarkeit der neuen H1-Transputer verdeutlichen. In manchen Applikationen ist es sinnvoll, ein sogenanntes Clos-Netzwerk aus Routing-Chips C104 zu konstruieren (der C104 kann jedes seiner 32 Links mit jedem anderen verbinden).
Bei dem beispielhaft abgebildeten Netzwerk aus 48 Routing-Chips hat man 512 Links für den Anschluß von Transputern zur Verfügung, wobei jeder Transputer (letztlich jedes Link) über die Routing-Chips direkt mit jedem anderen verbunden werden kann. Der Weg von einem Transputer zum andern führt dabei grundsätzlich immer über drei Routing-Chips: also etwa vom ersten C104 in der linken Spalte zu irgendeinem in der rechten und von dort wieder zu einem in der linken Spalte. Die Latenzzeit beträgt ungefähr eine Mikrosekunde (Niedriglastbetrieb), und die netzwerkinterne Gesamtbandbreite erreicht den respektablen Wert von 5 GByte/s.
Interessant sind auch Topologien, die jeweils einen H1-Transputer mit lokalem RAM und einen C104-Routing-Chip zu einem Knotenelement zusammenfassen, um als Basis für eine Hypercube-Architektur oder ein Knotenfeld zu dienen (auch Prozessorfarm genannt). Die nächste Darstellung zeigt ein zweidimensionales 16×16-Feld aus 256 solcher `Building-Blocks´ aus H1-Transputer und Routing-Element C104.
Der Witz eines solchen Systems liegt vor allem darin, daß zwischen allen Knoten eine Verbindung aus vier Links besteht, über die ein Transputer gleichzeitig mit einem anderen kommunizieren kann. Im Niedriglastbetrieb wird eine interne Gesamtbandbreite von 1,3 GByte/s erreicht, bei einer Latenzzeit von rund 10 Mikrosekunden. Einzelne Messages müssen maximal 32 C104-Router durchlaufen, etwa wenn die Messages zwischen zwei diagonal gegenüberliegenden Transputern über alle äußeren Knoten geroutet werden.
Man kann aber auch etwas sparsamer mit Routing-Chips umgehen. Das kleine Crossbar-Netzwerk (Kreuzschienenverteiler) verbindet 32 Transputer über jeweils ein Link miteinander. Wenn 16 Transputer-Paare gebildet werden, die alle miteinander bidirektional über ein Link kommunizieren, erreicht man eine netzinterne Datenrate von 320 MByte/s bei einer Latenzzeit von 0,5 Mikrosekunden (nur ein Routing-Chip zu durchlaufen). Man kann an den freien Transputer-Links noch drei weitere Routing-Chips parallel schalten und erhält - bei identischer Latenzzeit - eine lineare Steigerung in der Kommunikationsbandbreite.
Die derzeit beliebteste Prozessoranordnung bei parallelen Supercomputern ist wohl der `Hypercube´. Abgebildet sehen Sie einen Hypercubus zehnter Ordnung mit insgesamt 1024 Knoten auf der Basis des bereits beschriebenen Building Blocks. Der Maximal-Weg für Messages führt über fünf Router (der mittlere Message-Weg hängt von der Routing-Software ab). Die Maximal-Latenzzeit beträgt bei einer Spitzenbandbreite im Kommunikationsbereich von 10 GBytes/s nur etwa 1,5 Mikrosekunden.
Es gibt zwar optimale Labeling-Methoden für Baum-, Hypercube- und Ringarchitekturen sowie für Arrays und Clos-Netzwerke, solch strikte Topologien haben aber auch gewisse Nachteile. Einerseits erlauben sie kein arbiträres (willkürliches) Routing durch ein Netzwerk, andererseits kann eine Botschaft nicht durch eine Anordnung aus mehreren Netzwerken geroutet werden.
Normalerweise wird der Zielknoten innerhalb eines Netzwerkes durch einen Vorspann der Botschaft (Message Header) gekennzeichnet. Darüber sind maximal 64 K (16 Bit) Transputer eindeutig in einem Netzwerk erreichbar. Beim Interval-Labeling sorgt man dafür, daß jeder C104-Vermittlungsknoten über ein Ausgangs-Link für einen bestimmten Bereich (Intervall) von Zielknoten eine Verbindung zum nächsten Vermittlungsknoten schafft. Der nächste Knoten engt dann das Intervall weiter ein, bis man letztlich den Zielknoten eindeutig adressiert.
Da die Intervallvergabe eindeutig sein muß, sind die Wege der Botschaften völlig festgelegt, und es kann zu Häufungen an bestimmten Schaltstellen kommen. Solange ein Pfad im Netzwerk für eine Message durchgeschaltet ist, können andere Messages diesen Pfad nicht benutzen, müssen also warten. Eine Auflockerung dieses starren Vorgehens beim einfachen Interval-Routing besteht darin, die Message zunächst zufällig zu einem beliebigen Knoten zu senden, damit die eigentliche Wegfindung erst von dort beginnt (also nicht immer am selben Ausgangspunkt), woraus sich zwangsläufig eine andere Route für die Message ergibt.
Dazu kann man einen erweiterten Header vor die Message setzen, den speziell programmierte C104-Knoten beim Aussenden über bestimmte Ausgangs-Links wieder entfernen: dazu muß natürlich sichergestellt sein, daß man als `beliebige´ Knoten - die übrigens nicht nur zufällig, sondern auch ganz gezielt über einen erweiterten Header adressiert werden können - entsprechend vorbereitete C104-Chips wählt.
Der erweiterte Header läßt also zum einen willkürliches Routing entgegen vorgegebener Pfade zu, zum andern kann man auf diese Art von Netzwerk zu Netzwerk routen: dazu ist nur eine Message mit erweitertem Header an einen C104-Chip zu senden, der als `Gateway´ zu einem anderen Netz diesen erweiterten Header löscht. Dann gilt der verbleibende, normale Header als Ziel innerhalb des anderen Netzwerkes. Im Prinzip könnte man auch mehrere `bleibende´ Header verwenden, aber die Löschung des jeweils überflüssig werdenden Headers beschleunigt die Kommunikation innerhalb des Netzwerkes deutlich.
Eine andere wichtige Anwendung erweiterter Header zeigt die Konstruktion hierarchischer Netzwerke. In einem zweidimensionalen Feld könnte jeder Transputer durch ein lokales Netzwerk von Transputern ersetzt werden. Adressiert man alle Knoten im Netz über erweiterte Header, kann eine solche Ersetzung zu einem späteren Zeitpunkt durchgeführt werden und ermöglicht immer noch eine eindeutige Adressierung von Transputern, dann halt im Teilnetz. Die Header werden gelöscht, wenn einzelne Pakete in ein Netzwerk gelangen oder es wieder verlassen.
[2] Herbert Pichlik, H1-Transputer bis 150 MIPS, c't 11/90, S. 22
[3] Inmos Product preview `H1 transputer´, SGS-Thomson Microelectronics, September 1990
[4] David May, Next Generation Transputer and Beyond, Seminarvortrag TAT ´90, Aachen, September 1990