Das kleine Einmaleins der Feldrechner:

Arrayprozessoren haben mehr Hirnwindungen

16.11.1984

Von CW-Mitarbeiter Egon Schmidt

Computer erfreuen das Publikum immer wieder mit der eindrucksvollen Geschwindigkeit, mit der sie Transaktionen vorführen, In Dateien wählen und sogar rechnen können. Doch leider hat sich der rastlose Menschengeist schon bald nach Erscheinen der ersten Großrechner neue Problemstellungen ausgedacht, die plötzlich selbst schnelle Rechner als lahme Krücken dastehen lassen. Weshalb anderer Menschen Geist seinerseits Wege finden mußte, auch für numerisch aufwendige Probleme zweckmäßige Sonder-Typen von Computern zu erfinden.

Die lange Einleitung hat den kurzen Sinn, den Leser für das nun ein wenig ausführlicher abgehandelte Thema "Arrayprozessoren" oder auch "Feldrechner" empfänglich zu stimmen. Und ihn dabei gnädig übersehen lassen, daß allein schon die hier erwähnten Namen eigentlich gar nicht mehr so recht zulässig sind, Denn, natürlich, moderne Menschen sprechen in diesem Zusammenhang heute nur noch von SIMD- und MIMD- und auch noch von den guten alten SISD-Maschinen.

Begriffsbestimmung der modernen Kürzel

SIMD und MIMD und SISD? Was das bedeuten soll? Ganz einfach, das sind die in der Fachwelt heute gängigen Kürzel für verschiedene Arten Rechner, und man verwendet sie zur genaueren Begriffsbestimmung der jeweils gerade angesprochenen Maschine. Denn das gute alte Wort Feldrechner beispielsweise war doch einfach zu mißverständlich: Soll das nun ein Rechner mit einem ganzen Array, also einer Gruppe von einzelnen Prozessoren sein, oder handelt es sich dabei uns einen Rechner, der extra dafür gebaut wurde, ausgedehnte Datenfelder schnell und mit hoher Effizienz zu bearbeiten? Konfusion über Konfusion.

Wie schön dagegen die modernen, neuen Kürzel, denn die legen sofort eindeutig fest, was für einen Hobel man da gerade vor sich hat: Ist es eine SISD-Maschine, so hat man es mit einem wohlvertrauten von-Neumann-Rechner zu tun. Denn diese Maschinen, und jetzt müssen wir zu Anglizismen übergehen, verarbeiten mit jeweils einer Single Instruction (SI) nur Single Data (SD), also der Reihe nach mit jeweils einem Befehl nur ein bestimmtes Stückchen Information. - Das erklärt übrigens auch, warum die SISD-Maschinen beim Bearbeiten numerischer Felder so elend langsam sind, müssen sie Matrizen doch Zeile für Zeile und Spalte für Spalte abarbeiten.

Und die SIMD-Rechner? Das sind jene Maschinen, die, im allgemeinen Sprachgebrauch, als Arrayprozessoren firmieren und die Single Instructions (SI) auf Multiple Data (MD) anzuwenden in der Lage sind. Das heißt also, sie können ein Feld von Werten, auf vielen Spuren parallel durchprüfen; vorausgesetzt, in jeder Phase werden alle Daten dem gleichen Typ Operation unterworfen.

Bleiben die MIMD-Rechner, gewissermaßen die Krönung des gesamten NAND-NOR-Universums. Denn diese überaus aufwendigen Maschinen können nun gleichfalls Multiple Data (MD) behandeln, aber das zu ein- und demselben Zeitpunkt auch noch mit Multiple Instructions (MD), also mit Befehlen ganz unterschiedlicher Art. Ein Beispiel für solche Rechner ist die Cray-XMP, jenes exotische Schmuckstück einiger weniger Forschungsinstitute (und Trickfilmlabors). Übrigens: Sowohl SIMD- als auch MIMD-Computer sind, auf sich allein gestellt, hilflos wie taubblinde Waisenknaben; sie benötigen stets noch einen Universalrechner vom SISD-Typ, der ihnen die Kontaktaufnahme mit der Außenwelt ermöglicht.

Stunden schrumpfen zu Minuten

Das Thema MIMD-Rechner ist zwar hochinteressant, soll hier aber fortan nur noch am Rande behandelt werden, denn sicher nur die allerwenigsten Leser werden in absehbarer Zeit vor dem Problem stehen, ihren liebgewordenen Mini- oder Großrechner um eine Cray zu erweitern. (Und die, die das wirklich planen, wissen sowieso bestens Bescheid. . . ) Während die Frage, wie sinnvoll ein SIMD-Feldrechner sein kann und wofür er sich am besten eignet, durchaus breiteres Interesse beanspruchen dürfte.

SIMD-Maschinen bieten erstaunlich hohe Rechenleistungen zu immer wieder verblüffend geringen Kosten: aber natürlich nur dem, der mit den naturbedingten Einschränkungen des Single-Instruction-Prinzips leben kann. Doch Anwender dieser Art gibt es eine ganze Reihe; beispielsweise Leute, die sich mit seismologischen Berechnungen oder mit der Verarbeitung von Bilddaten befassen müssen. Denn hier hat man es ja mit umfangreichen Datenmengen zu tun, die, der Reihe nach, mit einem häufig sich wiederholenden Algorithmus bearbeitet werden müssen.

Nehmen wir als Beispiel doch einmal ein digitalisiertes Bild, das von einem Satelliten zur Erde gefunkt wird; es mag 1024 mal 1024 Bildpunkte umfassen, also aus gut einer Million Punkten (nicht etwa bloß Bit!) bestehen.

Diese Daten müssen nun zur Rauschunterdrückung zunächst einmal einer sogenannten "Fouriertransformation" unterzogen und dann wieder rücktransformiert werden. Soll das Bild dann noch mit einer - beispielsweise in Merkatorprojektion erstellten - Landkarte auf eventuell übereinstimmende Konturen hin verglichen werden, so ist eine erneute Transformation der Koordinaten jedes einzelnen Bildpunktes erforderlich, was nichts anderes bedeutet, als daß die ganze Million Bildpunkte immer wieder aufs neue bearbeitet werden muß - und dabei stets nach Algorithem, die Punkt für Punkt genau die gleichen bleiben.

Auf Tempo gezüchtete Rechenwerke

Natürlich kann ein SISD-Rechner, also eine der guten alten von-Neumann-Maschinen, das auch. Aber das kann unter Umständen mehrere Stunden dauern. Bloß Minuten hingegen vergehen, übergibt der SISD-Rechner, der hier dann nur noch als "Laderechner" fungiert, die ganze Bildverarbeitungs-Rechnerei dem SIMD-Arrayprozessor. Denn dieser packt nun pro Befehl immer gleich mehrere Daten gleichzeitig an und arbeitet außerdem noch schneller als ein gewöhnlicher Rechner: Dafür sorgen nämlich besondere, speziell auf Tempo gezüchtete Fließkomma-Rechenwerke.

Bei dieser Art von Arbeitsteilung verbleibt das gewöhnliche Hauptprogramm im Laderechner, während der SIMD-Computer allein für die Unterroutinen zur flotten Bilddatenverarbeitung herangezogen wird.

Zu modernen SIMD-Computern gibt es übrigens spezielle Fortran-Compiler, die es erleichtern, diese Maschinen auch in weniger speziellen Anwendungen als den erwähnten zu nutzen. Man denke da nur an das Lösen großer linearer Gleichungssysteme, bei, denen das Hauptprogramm gleichfalls wieder auf dem Laderechner verbleibt, während der Arrayprozessor die rechenintensiven und zeitraubenden Matrizenoperationen ausführt.

Das eben Gesagte hört sich nun zwar schön an, doch muß leider ein Wermutstropfen in den Wein geschüttet werden. Eine Reihe der gängigen Arrayprozessoren ist so ausgelegt, daß sie bloß mit einfacher Genauigkeit rechnen können und sie außerdem nur besonders abgegrenzte Unterprogramme abarbeiten können. Was nichts anderes bedeutet, als daß die vorhandenen Programmpakete erst mit viel Aufwand umgestellt werden müssen, ehe diese Prozessoren zum Einsatz kommen können.

Bei modernen Lösungen des Problems SISD-SIMD-Kopplung hingegen, entfallen diese Schwierigkeiten. Denn zeitgemäße Maschinen arbeiten nicht nur mit 64-Bit-Worten, also mit ausreichender Genauigkeit, sondern sie bieten auch programmtechnisch einiges: Man kann ihnen nämlich nicht nur Unterroutinen, sondern gleich ganze Programme übergeben (was allerdings nichts daran ändert, daß sie weiterhin als Partner einen Leitrechner benötigen).

Will man ein Programm partiell auf einem solchen SIMD-Rechner laufen lassen, so muß man es von einem Cross-Compiler in einen für den Zusatzrechner geeigneten Code übersetzen lassen, wobei schon von seiten dieses Übersetzungsprogramms dafür gesorgt wird, daß eine Reihe lauftechnischer Programmoptimierungen vorgenommen werden.

Natürlich wäre es nicht sinnvoll gleich jedes beliebige Programm für einen schnellen Zusatz-Arrayprozessor aufbereiten zu lassen; viele Aufgaben löst ein von-Neumann-Rechner auch ganz allein optimal Aber sobald es um rechenintensive Aufgabenstellungen und um Programme geht, die Feldoperationen umfassen, sieht es anders aus: Solche Programme sind wie geschaffen für eine SIMD-Maschine. Man findet sie in den Bereichen Physik, Chemie, Strömungsmechanik und Finite-Elemente-Analyse, aber auch in vielen anderen naturwissenschaftlich geprägten Aufgabenstellungen. Und da die Leistungen der derart ausgebauten, Rechner die eines gewöhnlichen Feldrechners doch deutlich hinter sich lassen, bezeichnen Fachleute diese SIMD-Maschinen dann nicht mehr als Arrayprozessoren, sondern als "Technisch-Wissenschaftliche Zusatzrechner "(TEWIZUSARE).

Durch Erweiterung zur Supermaschine

War eingangs kurz von den MIMD-Supermaschinen die Rede, die verschiedene Daten zur gleichen Zeit auf verschiedene Weise zu behandeln gestatten, so muß nun erwähnt werden, daß es neuerdings sogar einen Weg gibt, einen herkömmlichen SIMD-Rechner mit Erweiterungen zu versehen, die ihm den Charakter eines MIMD-Computers geben sollen. Und zwar werden zu diesem Zweck sogenannte "Matrix-Prozessoren" eingebaut; Rechenelemente, die speziell bei Matrixoperationen für eine weitere Beschleunigung des Rechentempos sorgen sollen.