juser.fz-juelich.de¼l_spez_0074_morgenstern.pdfjuser.fz-juelich.de

266
Jüi- April1980 ISSN 0343-7639 von I. Morgenstern

Upload: hoangtram

Post on 11-Aug-2019

254 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Jüi­April1980

ISSN 0343-7639

von

I. Morgenstern

Page 2: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de
Page 3: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

lsing-Systeme

mit eingefrorener Unordnung

in zwei Dimensionen

von

I. Morgenstern

D 291 (Diss. Uni. Saarbrücken)

Page 4: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Vorwort

Dieser Ausarbeitung liegt das Skriptum einer zweistündigen Spezialvorlesung

gleichen Titels zugrunde, die der Autor im Wintersemester 1979/80 an der Uni­

versität Dortmund auf Einladung der Abteilung Informatik gehalten hat. Es wird der

Versuch gemacht, jüngere Ergebnisse und Entwicklungen auf diesem nicht zuletzt

durch die technologischen Fortschritte ständig an Interesse und Bedeutung

gewinnenden Gebiet der Computerwissenschaft und -technik in eine

deutschsprachige Darstellung des Problemkreises der Parallelprozessoren und ihrer

Arbeitsweise zu integrieren. Dabei war vor allem auch für die Diskussion von

Beispielen "The Structure of Computers and Computations" von D. J. Kuck aus

dem Jahre 1978 von großem Nutzen.

Besonderer Dank gilt Frau Maria Schmitz, die mit großer Sorgfalt und Geduld das

Manuskript mittels Textverarbeitungssystem geschrieben hat.

Page 5: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- I -

Inhaltsverzeichnis:

I. Einführung und Motivation

l. "Ungelöste" Forschungsprobleme

2. Entwicklung der Rechnerleistungsdaten repräsenta­tiver Computersysteme

3. Erwartungen an innovative Architekturen 3.1 Matrix-Multiplikation

4. Kategorien von Parallelprozessoren

II. Literaturangaben

III. Technologische Entwicklung

l. Einleitung

2. Fortschritte in der Bauelement-Technologie 2.1 Halbleiter-Technologie 2.2 Integration und Dichte 2.3 Logik-Bausteine: Charakteristiken

3. Speicher-Technologie 3.1 Speicherelemente: Charakteristiken 3.2 Cache-Konzept 3.3 Dichtefaktoren

4. Systementwicklung

5. Wechselwirkung zwischen Komponenten- und System­T echnologien

6. Zukünftige Entwicklung

1 Computersysteme: Übersicht

1.1 Einführung

1.1.1 1.1.2

Entwurfskriterien Hintergrund

(1) (2) (3)

Hardware-Ideen Software-Ideen Wechselwirkung von HW und SW

1.2 Systemprinzipien: Organisation und Struktur

1.2.1 Monoprozessor und Multiprozessoren

(1) Monoprozessor-System

(i) Fundamentalsystem (J. von Neumann)

(ii) Nachteile des Fundamentalsystems (iii) Erweiterte Konzeption (iv) Indizierte Felder und DO-Schleifen (v) Compilation und Ausführung von

Programmen (vi) Reihenfolge der Operationen (vii) Ausführungszeit (viii) Überlappung (ix) Parserbaum

Seite

1

1

2

3 4

7

9

11

11

12 12 14 16

17 17 18 18

20

21

21

23

23

23 27

27 30 32

33

33

33

33

34 34 35 36

37 37 38 38

Page 6: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- II -

Seite

(2) Multiprozessor-System 39

(i) Speedup und Effizienz 39 (ii) Multiprozessor-Verarbeitung 40 (ii i) Matrixmultiplikation 41 (iv) Fragen aus dem Beispiel 42 (v) Performance 42

1.2.2 Multifunktions-Prozessoren 44

(1) FUnktionseinheiten 44 (2) Parallelverarbeitung mit Multifunktionen 44 (3) Beispiel: Skalarprodukt 44 (4) P arallelisierung 45 (5) Reale Systeme des Multifunktionstyps 46 (6) P aralleli tä tsanal yse 46 (7) Speedup versus Aufwand 48

1.2.3 Pipeline-Prozessor-Systeme 51

(1) Die Idee des Pipelining: Segmentierung 52 (2) Gleitkomma-Addition und -Multiplikation 53 (3) Algorithmisches Schema der 53

Gleitkomma-Addition (4) Algorithmisches Schema der 54

Gleitkomma-Multiplikation (5) Pipeline für Gleitkomma-Addition 54 (6) Pipeline für Gleitkomma-Multiplikation 54 (7) Funktionale Organisation arithmetischer 55

Pipelines (8) Raum-Zeit-Diagramm 56 (9) Speedup einer Pipeline 57

(10) Einfacher Pipeline-Rechner 58 (11) "Alignment"-Network 58 (12) Instruktions-Pipelining 58 (13) Kontrollfunktionen 60 (14) TI-ASC 60 (15) STAR-100 60 (16) Skalarprodukt auf Pipeline-Prozessor 60

1.2.4 Parallelprozessoren im engeren Sinn 61

(1) Struktur 61 (2) Beispiel 61 (3) Broadcasting 62 (4) Skalarprodukt 62 (5) Speedup 63 (6) Fragen: Speedup versus Effizienz 64 (7) Realisierungen 65

1.3 Klassifizierung der Computersysteme 66

Page 7: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- III -

Seite

2 Parallelisierung: architektonische Möglichkeiten 67

2.1 Erweiterung des Von-Neumann-Konzeptes: Uberlappung der Funktionen 67

2.2 Pipelining 68

2.3 Vektorisierung von DO-Loops 68

2.4 Array-Struktur 69

2.5 Funktionseinheiten 69

2.6 Broadcasting 69 2.6.1 Der Column-Sweep-Algorithmus 70

2.7 Speicherorganisation 75

2.7.1 Organisation einer Hauptspeicher-Einheit 76

2.7.2 Parallele Speicher-Einheiten 77

2.7.3 Speicherorganisation für Multiprozessoren 78

2.7.4 Speicherorganisation für Array-Prozessoren: Skewing 80

(1) Eindimensionale Arrays 80 (2) Mehrdimensionale Arrays: Matrizen 82 (3) "Skewing"-Methode 83 (4) Verall ge me inerte Skew ing-Sche ma ta 83 (5) d-geordnete N-Vektoren (modulo M) 84 (6) Hinreichende Bedingung 85 (7) Schemata für Gegendiagonalen und Blöcke 86 (8) Existierende Systeme 90 (9) Der "Wellenfront"-Algorithmus 90

2.7.5 Cache-Konzept 9l

2.8 Verbindungsstrukturen ("Interconnection Networks", 92 "Alignment Networks")

2.8.1 Charakteristika 93

(1) Koordinaten-Schaltwerke ("Crossbar Switch" 93 = Kreuzschienen-Schaltwerk)

(2) Permutations-Netzwerke 94

2.8.2 Vergleich von Verbindungsstrukturen 95

2.8.3 Skewing-Anforderungen an Verbindungsstrukturen 95

2.8.4 "Perfect Shuffle"-System 97

2.8.5 Konstruktion des OMEGA-Netzwerks 99

2.8.6 Steuerung des OMEGA-Netzwerks 101

2.8.7 Optionen für OMEGA-Netzwerke 103

2.8.8 Eigenschaften von OMEGA-Netzwerken 103

(1) Definitionen 104 (2) Relationen (ohne Beweis) 105 (3) Definition der Abbildungen 105 (4) Satz über geleistete Abbildungen 106 (5) Sätze über OMEGA-Netzwerke 108 (6) Anwendung des OMEGA-Netzwerks auf 118

Array-Prozessoren

Page 8: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

-IV -

Seite

3 Parallelisierung: algorithmische Möglichkeiten 120

3.1 Einführung 120

3.1.1 Prinzip des "Recursive Doubling" 122

3.1.2 Algorithmus-Typen 125

3.2 Reduktion der Baumhöhe 128

3.2.1 Definitionen und Nomenklatur 128

3.2.2 Zeitkomplexität algebraischer Ausdrücke 130

3.2.3 Transformation von Ausdrücken 132

(1) Definitionen 132 (2) Transformationen 133 (3) Sätze über Transformationen 135 (4) Horner-Schema-Ausdruck und Kettenbruch 139 (5) Blöcke von Zuweisungen 141

3.3 Rekurrente Systeme 143

3.3.1 Einführung und Definitionen 143

(1) Beispiele rekurrenter Systeme 143 (2) Definitionen 147

3.3.2 "Column-Sweep"-Algorithmus 148

3.3.3 Der "Rekurrente Produktform-Algorithmus" 150

(1) Satz von Sameh und Brent über R(n,m) 150 (2) Funktionsweise des Algorithmus 152 (3) Durchführung und Baumstruktur bei R(4,2) 153 (4) Allgemeiner Produktfarm-Algorithmus 154

3.3.4 Ergebnisse für beschränkte Prozessorzahlen 165

3.3.5 Rekurrente Systeme mit konstanten Koeffizienten 165

3.4 Vektorisierung von Loops 167

3.4.1 Innere, bedingungsfreie DO-Schleifen 167

3.4.2 Zyklische Abhängigkeit und Wellenfront 167

3.4.3 Datenabhängigkeit und Graphen 168

3.4.4 Loop-Verteilung 170

(l) Globale Prozedur 170 (2) Beispiel 171

3.4.5 Substitution von IF -Bedingungen 172

Page 9: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 1 -

I. Einführung und Motivation

l. "Ungelöste" Forschungsprobleme

Während sich die Datenverarbeitung mit erstaunlichen Zuwachsraten und teil weise beängstigenden Expansionsraten in neue industrielle, wirtschaftliche und soziale Gebiete hinein ausweitet und hierbei nur durch einen spürbaren Rückstau der Anwendungen infolge des deutlichen Mangels an erhöhter Pro­grammier-Produktivität und verbesserten Programmier-Techniken und -Werk­zeugen noch gebremst wird, macht sich im Bereich des wissenschaftlichen Computing seit geraumer Zeit als für den wissenschaftlichen Fortschritt und die in der Regel einhergehende technische Entwicklung überaus hinderlich bemerkbar, daß die verfügbare Leistungsfähigkeit der heutigen Großrechner der konventionellen Architektur, wie sie vom Marktführer IBM und den tra­ditionellen Konkurrenten wie Siemens angeboten werden, noch um Größenord­nungen zu klein ist, um wirklich neue Problem-Dimensionen in der Forschung aufgreifen zu können.

Deshalb müssen viele wissenschaftlichen Fragestellungen und Probleme als noch weitgehend "ungelöst" angesehen werden, soweit das Computing als unterstützendes Hilfsmittel oder aber als eigenständiges, zu klassischen Forschungsmitteln alternatives Instrument betroffen und herausgefordert ist.

Das bedeutet keineswegs, daß bislang keine signifikanten und nützlichen Resultate auf den entsprechenden Forschungsgebieten erzielt werden; sondern der Weg zu vernünftigen Erfolgen auf diesen Gebieten ist zu mühsam oder gar in der Praxis unmöglich mit den heutigen Großrechnern, die auf der sequentiellen Von-Neumann-Archi tektur basieren, welche im Prinzip die IBM 360/370 Serien und viele Computerentwürfe anderer Hersteller noch sehr weitgehend bestimmt.

Zur Liste solcher "ungelösten" Forschungsprobleme gehören die folgenden Themenkreise:

o komplexe Diffusionsprobleme (n-Transport, Halbleiter-Technologie, u.a.): 1D-2D-3D; Multigruppen-Behandlung; komplexe Geometrie.

o komplexe Strömungsprobleme (Navier-Stokes-Gleichungen, Windkanal­Simulation, Aerodynamik): NASA-Studien (200 Mio $Windkanal).

o Plasma- und Fusionsgleichungen (MHD): JET, TEXTOR, Torus-Geometrie: Komplexität des Systems.

o Globale Modelle (mit Optimierung): Energie, Umwelt, Ökosysteme, tech­nische Großsysteme (Kraftwerke).

o Bandstrukturen (Metalle, Legierungen, Halbleiter): Quanteneffekte, Nähe­rungsmethoden, Potentialparameter.

o Simulation von Festkörpern (Phasenübergänge, 3

Quanteneffekte in Viel­teilchensystemen, u. a.): 3D und Makrokristalle (N ), T -Abhängigkeit.

o Strukturanalyse von Makromolekülen und neuen Werkstoffen: 3D-Fourier­Analysen und -Modelle.

Page 10: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 2 -

o Quantenchemie: Stereo-Komplexe großer Moleküle, Energiespektren.

o Seismische Modelle: Oberfläche u. 3D.

o Meteorologie (Wettervorhersage, Modelle): Langzeit-Vorhersage.

o Astrophysik (Simulation von Sternen und Sternsystemen): Viel teilchen; Quanteneffekte und Relativität; heterogene Zeitmaßstäbe.

o Bildverarbeitung und Mustererkennung (in Realzeit): Radar (Korrelationen), Landschaftsbilder.

o Simulation von Computersystemen (Circuit-Design, Hardware-Mikroorgani­sation, Softwarestruktur, Netzwerke, Performance).

Natürlich erhebt diese Aufzählung keinen Anspruch auf Vollständigkeit; auch ist sicher das eine Problem weniger "ungelöst" als ein anderes. Auf jeden Fall stellen diese Themenkreise Problemfelder dar, die bisher noch jede Grenze verfügbarer Rechnerkapazität und Rechnergeschwindigkeit erreicht haben, ohne daß die eigentlichen Kernfragen beantwortet werden konnten.

2. Entwicklung der Rechnerleistungsdaten repräsentativer Computersysteme

Wenn wir die Situation der Großrechner repräsentativer Hersteller aus der Sicht eher des wissenschaftlichen Computing als der kommerziellen Daten­verarbeitung analysieren, entdecken wir eine ziemlich eigenartige Koinzidenz von Fortschritt und Stagnation, die ganz im Gegensatz zu den doch offenbar gewaltigen Entwicklungen auf dem Gebiet der Mikroprozessoren und der Schaltkreis-Technologie steht oder zu stehen scheint.

Wie sich an den IBM-Systemen und den IBM-kompatiblen Amdahl-Computern zeigt, hat zwar der maximale Hauptspeicher-Ausbau eine sehr positive Ent­wicklung genommen, doch hat sich weder die Zykluszeit bei den Hauptspeichern noch vor allem die Zykluszeit bei den Rechner-Zentraleinheiten (CPU) wesent­lich verbessert seit den späten 60-er Jahren. (Abb. I. 1-3, Tabelle I. 1).

Ohne die CPU-Zykluszeit als allgemeines und allgemeingültiges Maß für die Leistungsfähigkeit (Performance) eines Computers überbetonen oder überstrapazieren zu wollen, muß sie jedoch nichtsdestoweniger als eine der fundamentalen Leistungsgrößen angesehen werden, soweit das "Number­Crunching" wissenschaftlichen Maschinenrechnens berührt ist.

Deshalb müssen die Leistungsverbesserungen, die wir über die Jahre bei diesen in großen Zahlen installierten oder georderten Computer-Serien beobachten und erfahren konnten, hauptsächlich von anderen Quellen herrühren; und das sind primär Weiterentwicklungen der Architektur und Verbesserungen des Rechnerentwurfs.

Page 11: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 3 -

3. Erwartun9.en an innovative Architekturen

Unter Berücksichtigung der physikalischen Grenzen der Halbleiter- und Schalt­kreis-Technologie und der Signalübertragung wurde inzwischen vielfach prognostiziert, daß die Leistungsgrenzen dieser von-Neumannschen, d. h. sequentiell arbeitenden Rechner-Architektur innerhalb der nächsten Dekade erreicht sein werden, wobei noch eine Geschwindigkeitssteigerung um einen Faktor 10 gegenüber heute als möglich angesehen wird.

Die sich schnell fortentwickelnde Technologie wird vornehmlich in nächster Zeit dazu benutzt werden, um etablierte Rechner-Architekturen in kleinere und billigere Rechnerserien abzubilden.

Ein größerer Zuwachs an Rechengeschwindigkeit kann somit nur von innovativen, d. h. Nicht-von-Neumann-Architekturen erwartet werden, die in der Lage sind, den sog. "Von-Neumannschen Flaschenhals", nämlich die strikt sequentielle Abarbeitung von Rechnerinstruktionen, zu überwinden, die über die reine Hardware-Architektur hinausgehend ja auch die Architektur der Programmiersprachen bestimmt.

Zur Motivation unserer Auseinandersetzung mit Parallelprozessoren und ihren auch algorithmischen Voraussetzungen und Konsequenzen soll hier nur vermerkt werden, daß Computer-Architekturen, die auf den Prinzipien der Parallel verar­beitung aufbauen, fähig sein können, mittels neuer Strukturkonzepte die großen Leistungsschritte zu bewerkstelligen, die notwendig sind, um neue Dimensionen wissenschaftlich-technischer Probleme, die vor uns liegen, aufzugreifen und zu erschließen, anstatt den Status quo heutiger wissenschaftlicher Datenverarbei­tung zu verwalten, indem gerade genug Leistungszuwachs verfügbar gemacht wird, um der Expansion der schon wohl-etablierten Anwendungen Rechnung tragen zu können. Darüber hinaus können sie als Datenbank-Computer neue Systeme ermöglichen.

Bis in jüngster Zeit waren die Kosten für Parallelprozessoren höchster Leistung zu hoch, um ihre breitere Verfügbarkei t zu gestatten. Sie waren weitgehend nur für ohnehin sehr teure Großprojekte, z. B. der NASA, zu rechtfertigen, wenn man von militärischen Anwendungen vornehmlich in den USA absieht.

Die raschen Fortschritte der Mikrostruktur-Technologie, die zu drastischen Preiseinbrüchen geführt haben und weiterhin führen werden, schaffen die Möglichkeiten für zukünftig preisgünstigere Höchstleistungssysteme mit Parallelprozessoren.

Deshalb ist wenigstens eine gewisse Hoffnung gerechtfertigt, daß die fort­schreitende Technologie nicht nur zu kleineren, billigeren und weit breiter angewandten Rechnern konventioneller Architektur führen wird, sondern auch gewisse Akzente hinsichtlich fundamental neuer Konzepte paralleler Datenver­arbeitung setzen wird.

Im Gegensatz zu den sequentiellen Rechnern von heute, bei denen die Gebiete der Hardware, der Software und der Algorithmen sich weitgehend isoliert voneinander entwickeln und auch weiterhin wohl verselbständigen werden, scheinen die mit Parallelprozessoren verknüpften Probleme gleichzeitig und in gleichem Maße Hardware-Designer, Designer von Betriebssystemen und Pro­grammiersprachen wie auch Mathematiker herauszufordern.

Page 12: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 4 -

Aus der Historie des Computer-Entwurfs, der Programmiersprachen und der Anwendungen der Datenverarbeitung ist klar, daß unsere Fähigkeit zum Entwurf und zur Analyse sequentieller Rechner und zur Entwicklung effizienter Algorithmen und Programmstrukturen dafür weit besser ausgebildet ist als unser Wissen um den Bau von Parallelprozessoren oder den adäquaten Entwurf einer Programmiersprache, die das geeignete Medium für echt parallele Algorithmen und zugehörige Programme darstellen könnte.

Ohne Zweifel sind die meisten Problemfelder der realen Welt, mit denen sich das Computing befaßt, von Natur aus "parallel", d. h. - um den englischen Terminus zu erwähnen- "concurrent" oder gleichzeitig ablaufend. Unsere Perzeption dieser Probleme, soweit die rechnerische Behandlung betroffen ist, ist jedoch geprägt und geformt von

einigen hundert Jahren dem Wesen nach "sequentieller" Mathematik,

etwa fünfzig Jahren des Designs sequentieller Algorithmen und

über 20 Jahren "sequentieller" FORTRAN-Programmierung.

3.1 Matrix-Multiplikation

Um mit einem ersten Beispiel das Potential eines Parallelprozessors zu illustrieren, wollen wir die Manipulation von Matrizen, und hier speziell die Multiplikation zweier (n x n)-Matrizen A und B, betrachten. Das Ergebnis sei die Matrix C (n x n):

Wir wollen hier zunächst nicht auf die inzwischen entwickelten effizienten Algorithmen zur Matrix-Multiplikation auf sequentiellen Computern eingehen, sondern die orthodoxe Methode zugrundelegen:

••••o••••••C ''''' ~J

-- ·······CL -1/11

Jedes Element c.. wird nacheinander berechnet durch die Bildung des I J

Skalarprodukts aus dem i-ten Zeilenvektor von A und dem j-ten Spaltenvektor von B: n

C,. ~J

für alle 1~ i ~ n, 1"' j ~n.

~ n=/1

Dazu sind für alle n2 Elemente c .. jeweils n Multiplikationen und Additionen nötig, insgesamt also IJ

2 T 1

= n (Zn - 1) Schritte.

n-1

Page 13: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 5 -

Nehmen wir nun an, wir hätten ein Parallelprozessor-System mit einem Array aus n x n Einzelprozessoren, die jeweils außer der arithmetischen Funktion und den notwendigen Kontroll-Funktionen etwa 4 Register als schnelle Speicherelemente haben:

AREG BREG CREG TREG.

Jede Prozessorzelle soll mit ihren vier nächsten Nachbarn verbunden sein, um Daten und Steuerfunktionen austauschen zukönnen. Das System sei an den Rändern zyklisch geschlossen (Abb. I. 4).

Mit einer solchen Parallelprozessor-Maschine läßt sich nun die Multiplikation zweier (n x n)-Matrizen in n Stufen ausführen.

Der Algorithmus dafür wurde 1969 von L. E. CANNON (von der Montana State University) in seiner Dissertation (PhD Thesis) entworfen:

Algorithmus:

o SET:

o SHIFT:

0 MUL TIPLY:

0 ADD:

0 SHIFT:

0 JUMP:

CREG = 0 BREG [PEI JJ = B [I,J]

AREG (PE/ JJ = A [ I,J] ' für alle I,J~ N

Die I-te Zeile von A um (I-1) Spalten nach links für alle I~ N. Die J-te Spalte von B um (J-1) Zeilen nach oben für alle J~N.

TREG = AREG '* BREG parallel in allen PE's.

CREG = CREG + TREG parallel in allen PE's.

AREG um 1 Spalte nach rechts. BREG um 1 Zeile nach unten.

Wenn nicht der N-te Durchgang, springß nach MUL TIPLY.

Page 14: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 6 -

Nehmen wir als Beispiel n = 3:

INPUT:

[all 8 12 •n] A = 8 21 822 823 831 832 833

~ll b12 bl3J B = b21 b22 b23

b31 b32 b33

SHIFT:

[AR~G] [ll 812 •nJ = 822 823 821 833 831

832

[sREG] bll b22 b33]

= b21 b32 b13

b31 b12 b23

1. STUFE:

[cREG]

8llbll 812b22 813b33 822b21

. 823b32 821bl3 = 833b31 831b12 832b23

2. STUFE:

[ AREG J [13 811 8

12] = 821 822 823 832 833 831

[ BREG J b31 b12 b23] = bll b22 b33

b21 b32 b13

8llbll+813b31 812b22+8llb12 813b33+812b23

[ CREG] = 822b21+821bll 823b32+822b22 821bl3+823b33

833b31+832b21 831b12+833b32 832b23+831bl3

Page 15: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 7 -

3. STUFE:

~12 a13 AREG = a23 a21

a31 a32

~21 b32 BREG = b31 b12

bll b22

a11b11+a13b31+a12b21

CREG = a22b21+a2lbll+a23b31

a33b31+a32b2l+a31b11

·1:] a22

a33

bl3] b23

b33

a12b22+a11bl2+a13b32

a23b32+a22b22+a21b12

a31b12+a33b32+a32b22

a13b33+a12b23+a11b13

a21b13+a23b33+a22b23

a32b23+a31b13+a33b33

Gegenüber dem Zeitaufwand von T 1

= n2 (2n - 1) Schritten liefert der Array­artig aufgebaute Parallelprozessor das Matrixprodukt in n Stufen, wobei jede Stufe aus paralleler Multiplikation und Addition nach entsprechender Neuan­ordnung der Spalten von A durch Rechtsverschieben bzw. der Zeilen von B durch Abwärtsverschieben um jeweils einen Indexschritt besteht.

Rechnet man für die einzelnen Operationen inklusive der Verschiebung jeweils einen identischen Zeitschritt, so erfordert die Parallelversion der Matrix­Multiplikation grob 3n Zeitschritte (bei separat in 2 Schritten für A und B durchgeführter Verschiebung: 4n).

Als Abhängigkeit von der Problemgröße, die ja durch die Matrix-Dimension n gegeben ist, findet man z. B. die in Tabelle I. 2 als Funktion von n gegen­übergestellten Zeitaufwendungen.

4. Kategorien von Parallelprozessoren

Ohne an dieser Stelle auf Einzelheiten von Parallelprozessoren einzugehen oder die Schwierigkeiten ihrer Klassifizierung diskutieren zu wollen, soll doch eine erste Übersicht über die Kategorien von Parallelprozessoren gegeben werden, vor allem auch, um deutlich zu machen, daß es sich hier um einen Bereich der Computer-Architektur und der Computer-Systeme handelt, der sich nicht nur reger akademischer Forschung vor allem in den USA erfreut, sondern bereits vielfach Realität geworden ist.

Page 16: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 8 -

(I) Vektor/Pipeline-Prozessoren:

STAR-100 CYBER-203/205

- TI-ASC CRAY-1

(CDC) (CDC) (Texas Instruments) (Cray Research)

(II) Parallelprozessor-Ensembles:

ILLIAC IV (Univ. of Illinois; Burroughs) SOLOMON (Westinghouse)

- PEPE (Bell Labs.; Burroughs; System Development Corp.)

- BSP (Burroughs) DAP (ICL) CHoPP (Columbia Univ.; Sullivan Ass.) C. mmp, Cm* (Carnegie-Mellon Univ.) T16 (Tandem) EGPA (Univ. Erlangen/Nürnberg) SMS 201 (Siemens)

(III) Assoziativ-Prozessoren:

STARAN - ECAM

OMEN - ALAP

RAP

(Goodyear Aerospace Corp.) (Honeywell) (Sanders Ass.) (Hughes Aircraft) (Raytheon)

(IV) Algori thmische Array-Prozessoren (Pipeline-Rechner):

IBM 2938/3838 (IBM) MAP III (CDC) UAP (Univac)

- AP - 120B/190L (Floating Point Systems) - FPS-164 (Floating Point Systems)

A TP (Datawest)

Page 17: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

II. LITERA TURAI\IGABEN

A. Monographien

(1) Kuck, D. J.:

(2) Thurber, K. J.:

(3) Mies, P., Schütt, D.:

(4) Stone, H. S. (Hrsg.):

(5) Aha, A. V., Hopcroft, J. E., Ullmann, J. D.:

B. State-of-the-Art Reports

(6) INFOTECH:

(7) INFOTECH: INFOTECH:

(8) RZ/R WTH Aachen:

C. Tagungsbände/Proceedings

(9) Feilmeier, M. (Hrsg.):

(10) F eng, T .-Y. (Hrsg.):

(11) Caianiello, E. R. (Hrsg.):

(12) Traub, J. F. (Hrsg.):

- 9 -

The Structure of Computers and Com­putations, Val. 1, J. Wiley & Sons , New York, 1978

Large Scale Computer Architecture­Parallel and Associative Processors, Hayden Book Company Inc., Rochelle Park, N. J., 1976 Feldrechner, B. I. Taschenbuch, Reihe lnformatik/21, Bibliograph. Institut, Mannheim, 1976

Introduction to Computer Archi tecture, SRA, Chicago, 1975

The Design and Analysis of Computer Algorithms, Addison Wesley, 1974

SUPERCOMPUTERS, Val. 1/2, 1979

Future Systems, Val. 1/2, 1977 Multiprocessor Systems, 1976

Parallelrechner - Strukturen und Er­fahrungen, Interne Studie Band I/II, 1978

Parallel Computers-Parallel Mathematics, Proc. IMACS (AICA)-GI Symposium Munich 1977, North Holland Publ. Co., Amsterdam, 1977

Parallel Processing, Proc. Sagamore Computer Conference 1974, Lecture Notes in Computer Science Val. 24, Springer-Verlag, Berlin, 1975

New Concepts and T echnologies in Parallel Information Processing, Proc. NATO Advanced Study Institute, Noord­hoff-Leyden, 1975

Proc. Symposium on Complexity of Sequential and Parallel Numerical Algorithms, Academic Press, New York, 1973

(13) Kuck, D. J. et al. (Hrsg.): Proc. Symposium on High Speed Computer and Algorithm Organization, Academic Press, New York, 1977

Page 18: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

D. Übersichtsartikel

(14) Thurber, K. J., Wald, L. D.:

(15) Yau, S. S., Fung, H. S.:

(16) Kuck, D. J.:

(17) Ramamoorthy, C. V., Li, H. F .:

(18) Enslow, P. H. Jr.:

(19) Kuck, D. J.:

(20) Heller, 0.:

(21) Miranker, W. L.:

(22) Schütt, D.:

- 10-

Associative and Parallel Processors, ACM Camp. Surveys 2 (1975), 215

Associative Processor Architecture - A Survey, ACM Camp. Surveys 2_ (1977), 3

A Survey of Parallel Machine Organization and Programming, ACM Camp. Surveys 2_ (1977), 29

Pipeline Architecture, ACM Camp. Surveys 2. (1977), 61

Multiprocessor Organization - A Survey, ACM Camp. Surveys 2_ (1977), 103

Parallel Processing of Ordinary Programs, in: Advances in Computers Val. 15, ed. by M. Rubinoff and M. C. Yovits, Academic Press, New York, 1976

A Survey of Parallel Algorithms in Numerical Linear Algebra, SIAM Review 20 (1978), 740

A Survey of Parallelism in Numerical Analysis, SIAM Review 13 (1971), 524

Parallelverarbeitende Maschinen, Infor­matik-Spektrum~ (1980), 71

Page 19: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 11-

III. Technologische Entwicklung

1. Einleitung

Von einigen wenigen sog. "Durchbrüchen" abgesehen sind die Trends in der Hardware-Technologie einerseits und in der Rechnersystemarchitektur ande­rerseits nicht unabhängig voneinander. Jede Seite baut auf der anderen wechselseitig in einem evolutionären Prozeß auf. Verbesserte Rechner­hardware wird entwickelt, weil ein Bedarf nach Leistungserhöhung mit neuen Systemen entstanden ist; und neue Systeme werden entworfen, um die Errungenschaften technologischer Entwicklungen auszuschöpfen.

Während der letzten 25 Jahre fand ein unvergleichliches Wachstum zweier Industrien statt:

(l) der DV-Industrie (2) der Halbleiter-Bauelemente-Industrie.

Dieses Wachstum ist das Ergebnis einer Symbiose und Wechselwirkung zwischen den Möglichkeiten der einen Industrie und den Anforderungen der anderen. Ein Ende dieser Symbiose und dieses Wachstums läßt sich nicht absehen.

Wenn wir zukünftige Computer-Architekturen und ihre Anwendungen betrach­ten wollen, erscheint es sinnvoll und notwendig, zuerst die technologische Grundlage zu analysieren, die wir voraussetzen müssen und die die Leistungs­und Kosten-Charakteristika für die Realisierung, d. h. für den Entwurf und die Implementierung, solcher Systeme liefern soll.

Somit kann auch jede Behandlung des Themas "Höchstleistungsrechner" und "Parallelprozessoren" im besonderen die technologische Entwicklung der Computer-Bauelemente nicht übergehen; denn hier wird die Zukunft solcher Systeme wesentlich bestimmt.

In diesem Zusammenhang interessieren vor allem die folgenden Punkte:

Man möchte die Grenzen der Verbesserung von Performance, d. h. Leistungsfähigkeit, Kosten und Zuverlässigkeit der Halblei terkompo­nenten wie auch die zu erwartende zukünftige Rate des technolo­gischen Fortschritts kennenlernen und verstehen.

Man sollte die dynamischen Triebkräfte hinter diesem Fortschritt bei den Bauelementen verstehen, um möglichst dessen Richtung zu beeinflussen.

Neue Möglichkeiten und steigende Leistungsfähigkeit in den Kompo­nenten können neue Ansätze für die Systemarchitektur und den Rechnerentwurf schaffen; deren Implikationen sind wichtig.

Die Entwicklung neuer Hauptspeicher- und Massenspeicher­Hierarchien ist naturgemäß an die Entwicklungen bei den Halbleitern und Bauelementen gekoppelt.

Page 20: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 12-

In der Vergangenheit wurde der Fortschritt bei den Computer-Halbleiter­komponenten vorangetrieben durch den Bedarf an leistungsfähigeren und kastengünstigeren Rechner-Systemen. Heute ist die Entwicklung wesentlich mitbestimmt von den Möglichkeiten, immer komplexere Packungen an Computer-Logik zu immer niedrigeren Kosten zu produzieren; denn nur dadurch läßt sich der beschleunigten Expansion der - vor allem kommerziell orientierten - Datenverarbeitung nachkommen.

Ergebnisse dieser Entwicklung sind deutlich:

(1) der )J-Prozessor, (2) billigere Speichereinheiten.

Abgesehen von dem weiten Feld des sog. Distributed Processing ist natürlich von entscheidendem Interesse, wie die Verfügbarkeil dieser Komponenten den Bereich der Höchstleistungsrechner beeinflussen wird.

2. Fortschritte in der Bauelement-Technologie

Der Anstoß für den Fortschritt in allen Bereichen der Computer-Bauelemente geht aus von den beachtlichen Errungenschaften auf den Gebieten

(l) Technologie und Materialforschung (2) Schaltkreis-Entwurf (3) Integration und Packung von Schaltkreisen.

2.1 Halbleiter-Technologie

Eine große Vielfalt verschiedener Halbleiter-Technologien wird ausgenutzt, um grundlegende logische Schaltkreise in Rechnern und verwandten Geräten zu implementieren.

Die 2 Hauptkategorien der Technologien sind (Abb. III. 1)

(1) die Bipolar-Techniken, (2) die Metalloxid-Halbleiter (MOS-FET:

MOS = metal-oxide semiconductor; FET = field-effect transistor)

(1) Der bipolare Typ integrierter Schaltkreise enthält u. a.:

DTL TTL

flC_L

(diode-transistor logic) (transistor-transistor logic) (emitter-coupled logic) (integrated injection logic)

(2) Die Haupttypen der MOS-Technologien sind:

PMOS, NMOS, CMOS;

(3) aber auch interessant ist der Typ:

SOS (Silicon on Sapphire).

Page 21: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 13 -

Eine detaillierte Beschreibung und Darstellung dieser verschiedenen grund­legenden Halbleiter-Technologien liegt natürlich weit außerhalb unserer eigentlichen Thematik; deshalb sollen hier lediglich die Bezeichnungen als Schlagworte genügen.

Jede der Technologien bietet gewisse Kombinationen von Vorteilen und Nachteilen bzgl. Leistung, Schaltgeschwindigkeit, Kosten, Dichte der Integration, Zuverlässigkeit, Energieabfuhr usw.

Der System-Designer muß diejenige oder diejenigen Technologien wählen, die den besten Kamprarniß für die spezifischen Zielsetzungen liefern.

Das dominierende Halbleiter-Material ist der Silizium-Einkristall. Bessere Kenntnisse über diesen Werkstoff und verfeinerte Steuerungsmöglichkeiten beim Ziehen, Dotieren und Verarbeiten der Silizium-Einkristalle haben vor allem dazu geführt, die Verunreinigungen und Gitterstörungen drastisch herabzusetzen und definierte Bedingungen und Eigenschaften zu schaffen.

Daraus sind sehr günstige Möglichkeiten erwachsen:

(1) Der Entwurf immer kleinerer Elemente und feinerer Strukturen in immer dichteren Anordnungen:

Miniaturisierung, Integration (SSI, MSI, LSI, VLSI).

(2) Vergrößerung der Chip-Fläche:

1960 0.5 mm 2

1977 40 mm 2

1980 150 mm 2

Verbesserungen des Werkstoffes gingen parallel mit Verbesserungen bei den Fabrikations- und Verarbeitungsprozessen bzgl. der Produktivität, Automatisierung und der Produktquali tät.

Gleichzeitig wurde die sog. Silizium-Lithographie verfeinert:

(1) lichtoptisch: Linienbreite ~ 1.5 jJ

(2) Elektronenstrahl: Linienbreite ~ 0.25 }J· Mit dem Elektronenstrahl sind vorläufig die Schranken für weitere Verbesserungen der Leistung und der Packungsdichte aufgehoben: VLSI = Very Large Scale lntegra ti on.

Bisher ergab sich eine Limitierung zukünftiger Entwicklung auch durch

(1) die chemischen Ätzprozesse

(2) die Diffusionsprozesse bei thermischer Behandlung.

Deshalb finden immer mehr Anwendung:

(1) die Trockenätzverfahren mit

Plasma-Techniken Sputtering-Techniken

(2) die Ionenimplantation.

Page 22: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 14-

2.2 Integration und Dichte

Bis heute sind die meisten Computer mit SSI, d. h. "Small-Scale Integration", oder MSI, d. h. "Medium-Scale Integration" implementiert worden.

Aber in zunehmendem Maße wird LSI, d. h. ''Large-Scale Integration", im Bereich der Computer-Logik eingesetzt, nachdem im Bereich der Speicher LSI bereits weitverbreitet ist.

Die Zukunft wird ohne Zweifel der "Very-Large-Scale Integration", VLSI, gehören.

Heute erscheinen die Logik-Netzwerke im Kontrollteil der Computer und zu einem geringeren Teil in den Arithmetik- und Logik-Einheiten, dem eigentlichen Prozessor, als hochgradig auf eine besondere Funktion hin in einer besonderen Maschine spezialisiert und einzigartig. Deshalb fehlt die Allgemeinheit noch, die die Massenproduktion gewährleistet auch für Höchstleistungssysteme.

Die Chip-Dichten wachsen mit hoher Rate an:

o von einigen Schaltkreisen ("Circuits") vor noch wenigen Jahren,

o über 50 - 100 in jüngerer Vergangenheit,

o bis weit über Tausende von Schaltkreisen ab 1980.

Die Verbesserungen der Integration auf Chip-Ebene haben die Anforderungen ar. die Packungsdichte auf der höheren Ebene (Steckkarten) gelockert.

Wie die Größe der Anordnungen der Logikelemente, d. h. die Zahl der Gatter pro Chip, weiterwächst, werden die Probleme, einen Rechner mit freier Logik zu implementieren, zunehmend schwieriger.

Wegen der Pin-Limitierung an einer Packung ist es notwendig, die Organi­sation der Maschine derart auszulegen, daß die Verbindungen zwischen verschiedenen Logik-Komplexen minimiert werden.

Da die Chips und die Packungen höherer Ebene immer mehr Schaltkreise enthalten, wächst das Verhältnis der Schaltkreisanzahl zu den Ein-/Aus­gangsverbindungen.

Dessen historische Relation war:

P N cb

wobei: P = ::/fPins

C = -::ffcircuits

0.51f: b ~ 0.7

Da im Zuge der Miniaturisierung zur Steigerung der Leistungsfähigkeit der Bauelemente die Laufzeiten und Schaltzeiten verbessert werden sollen, müssen die physikalischen Abmessungen der Packungen reduziert werden.

Page 23: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 15 -

Damit wachsen aber die Anforderungen an die Dichte der Anschlußver­bindungen ("Pins").

Energieabfuhr:

Mit den kleineren Schaltkreisen läßt sich die Circuit-Dichte pro Chip erhöhen. Das stellt hohe Anforderungen an die Spannungsversorgung und die Wärmeabführung am Chip und über der gesamten Packung.

Zuverlässigkeit:

Mit den Entwicklungen höherer Integration wird die Zuverlässigkeit der Schaltkreise und der Bauelemente in den Maschinen weiter erhöht.

Gründe:

o Bessere Steuerung des Produktionsprozesses, besseres Material, bessere Quali tätsprüfungen;

o weniger physische Verbindungen nach außen, pro Schaltkreis bzw. Bauelement.

o Besserer Schutz der Chip-Oberfläche vor Versehrnutzung aus der Umgebung.

Problem:

Mit steigender Packungsdichte auf Chip-Ebene werden erhöhte Ansprüche an das Design der Schaltkreise, der Chips und der Packungen gestellt, um die Vielfalt unterschiedlicher Funktionen mit den kompakteren Bausteinen dennoch flexibel realisieren zu können.

Wegen der Kostenvorteile werden sich, ungeachtet gewisser Nachteile, LSI und VLSI auf alle Produkte und Komponenten ausweiten.

Seit 1960 hat sich der Integrationsgrad in der Hochleistungslogik um mehr als den Faktor 1000 erhöht wegen der Verbesserungen bei

o Chips 40 x, o Lithographie 6 x, o Schaltkreise 4 x.

In derselben Zeit hat sich die Leistungsfähigkeit bei den Schaltkreisen um eine Größenordnung erhöht.

In absehbarer Zukunft werden weitere Verbesserungen in Dichte und Lei­stungsfähigkeit erreicht werden; es werden etwa die Faktoren erwartet bei

o Chips 4 x, o Lithographie 3 x, o Schaltkreise 3 x.

Page 24: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 16-

2.3 Logik-Bausteine: Charakteristiken

Die heute gebräuchlichen Logik-Bausteine haben die folgenden Charak­teristiken (Abb. III. 2).

(1) Bipolar-Technik:

Produktionskomplexität: Geschwindigkeit: Dichte: Wärmeabgabe:

(2) MOS-FET:

Produktionskomplexität: Geschwindigkeit: Dichte: Wärmeabgabe:

10- 15 1- 10

kx100 1- 10

5- 10 10 - 100

> 1000 1

Masken nsec Circuits/Chip m Watt/Circuit

Masken nsec Circuits/Chip m Watt/Circuits

Mit der Bipolar-Technik wird zukünftig mindestens noch ein Faktor 3 in der Leistungsfähigkeit erreichbar sein; auch bei der FET-Technologie sind ähnliche Verbesserungen zu erwarten.

Die Erwartungen erscheinen nicht mehr unvernünftig, in den nächsten Jahren etwa 100000 Gatter pro Chip in preiswerter Massenproduktion herzustellen und innerhalb zehn Jahren auf einem einzigen Chip nicht einen ?-Prozessor, sondern das Äquivalent einer heutige~ Hochleistungs-Zentraleinheit unterzubringen. Schätzungen sprechen von 10 Gatter/Chip bis 1985. Man kann erwarten, daß solche Chips nicht mehr als 100 ~ kosten werden, wenn genügend hohe Stückzahlen erreicht werden. Dieses Preisniveau ließe sich jedoch wegen der sehr hohen Entwurfs- und Entwicklungskosten für Logik-Komplexe und Prozessoren nicht erreichen, wenn die Gesamtzahl auf einige Tausend Einheiten begrenzt bleibt.

Eine neue Technologie hat GaAs zur Grundlage; diese Technologie ist im Vergleich zur Si-Basis noch nur sehr schwer zu handhaben; sie liefert allerdings Geschwindigkeiten derzeit im Bereich 0.5 - 0.2 nsec und eröffnet Aussichten auf 0.1 - 0.01 nsec in der Zukunft.

IBM setzt sehr stark auf den sog. Josephson-Effekt und Schaltungen auf der Basis solcher Supraleiter-Tunneldioden; doch sind Durchbrüche erst in der übernächsten Generation für die Serienfertigung zu erhoffen.

Für den Systementwurf sind zwei Wege offen:

(l) Die Erhöhung der Leistungsfähigkeit und der Möglichkeiten des Systems,

(2) die Reduktion der Kosten.

Beide Wege sind für die Entwicklung von Parallelprozessoren in der Zukunft wichtig. So wird es nicht ohne Auswirkung bleiben, daß ein im wesentlichen vollständiger Computer mit Random-Access-Speicher, Read-Only-Memory und der ganzen für die Kontrolle und die Bedienung der Ein-/ Ausgabe-Geräte notwendigen Logik auf einem einzigen Chip verfügbar ist.

Page 25: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 17-

3. Speicher-Technologie

Im Prinzip muß die Speicher-Technologie in mindestens 2 Hauptkategorien betrachtet werden:

(1) Die Technologie zur Implementierung der internen Hauptspeicher und der Kontroll- und Puffer-Funktionen.

(2) Die Technologie der Sekundärspeicher (Auxiliary Storage).

Hochgeschwindigkeits-Kontroll-, "Scratchpad"- und "Cache"­Speichereinheiten sind von primärem Interesse in Großcomputern, wo die Gechwindigkeit und die Verarbeitungsanforderungen den Einbau einer teureren Ebene in die Speicher-Hierarchie rechtfertigen.

Wo solche Speicher heute benötigt werden, werden sie im allgemeinen mit den Hochgeschwindigkeits-RAM-Technologien, wie sie vor allem in den Bipolar­Techniken verfügbar sind, realisiert.

Bis in jüngster Zeit, nachdem sich der Preis pro zu speicherndes Zeichen durch die moderne Halbleitertechnologie um 3 Größenordnungen auf die Pfennig-Dimension reduziert hat, waren die Verbesserungen in der Ge­schwindigkeit, in der Kapazität und in den Kosten bei dem internen Speicher fast ausschließlich eine Funktion des Technologiefortschritts bei den Mag­netkernspeichern.

In den 20 Jahren, in denen der Kernspeicher die dominierende Speicher­Technologie war, wurde schließlich die Speicher-Zykluszeit von ungefähr 10 usec auf weniger als 300 nsec herabgedrückt.

Jedoch zum ersten Mal sind Halbleiterspeicher hinsichtlich der Kosten ein konkurrenzfähiger Ersatz.

3.1 Speicherelemente: Charakteristiken

Die leistungsfähigen Halbleiter-Technologien für RAM-Einheiten haben folgende Charakteristiken:

(1) Bipolar-Technik:

statisch 1 K Bit (+)/Chip Zugriffszeit: Module: Anwendung:

(2) MOS-FET:

statisch/ dynamisch 16 K Bit (+)/Chip

Zugriffszeit: Wärmeabgabe: Anwendung:

10 -50 nsec Multichip Schnelle Arrays Arithmetik-Einheit-Puffer

(kommerziell: IBM: 65 K Bit/Chip; Labor: 256 K Bit/Chip) 100 - 500 nsec 500 m Watt Hauptspeicher, Ein-/ Ausgabe

Terminals,

Page 26: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 18 -

3.2 Cache-Konzee.!

Der erste große Computer für wissenchaftliche Anwendungen, die IBM 704, die 1955 erstmals ausgeliefert worden ist, hatte eine Maschinenzykluszeit von 12 psec und eine Hauptspeicher-Zykluszeit von ebenfalls 12 }Jsec.

Verglichen mit den Prozessor-Zykluszeiten und Logik-Delays hat sich der Hauptspeicher nur in einer viel kleineren Rate verbessert und läßt heute noch eine beachtliche Leistungslücke spüren (Tabelle III. 1).

In der Speicherhierarchie gibt es etwa die folgenden Abstufungen in den Zugriffszeiten:

-1 -6 -9 Tc = 10 TM = 10 T d = 10 T t,

wobei 0 Cache: T

c' 0 Hauptspeicher: TM' 0 Platte: T d' 0 Band: T t"

Durch das Cache-Konzept wurde der Einsatz der leistungsschwächeren MOS­FET -Speicher auch bei Hochleistungssystemen möglich, so daß trotz der erheblichen Diskrepanzen zwischen Prozessor-Zykluszeit und Hauptspeicher­Zykluszeit größere Verbesserungen in den effektiven Speicher-Zugriffen erzielt werden konnten.

Somit wirkt ein Cache als eine die Geschwindigkeit anpassende Einrichtung zwischen den schnellen Logik-Schaltkreisen in einer Zentraleinheit und den langsameren Haup tsp eichereinheiten.

Ein Cache ist in der Regel heute aus bipolaren Bausteinen aufgebaut.

3.3 Dichtefaktoren

In einer konventionellen Maschinen-Architektur ist es schwer, viele große Logik-Funktionen zu finden, die an mehr als einer Stelle in dem betreffenden Rechner eingesetzt werden können, geschweige denn in mehr als einem Computertyp.

Dieses Problem tritt in Speicherelementen nicht auf, weil hier ein hoher Grad an Regelmäßigkeit und Wiederholung in der Struktur und Funktion vorherrscht, der es ermöglicht, 4 K, 16 K, 64 K Bits oder noch größere Einheiten auf einem einzigen Chip zu implementieren.

Diese Erhöhung der Chip-Dichte, die bei den Logik-Bausteinen zu einer ständig zunehmenden Schaltkreis-Komplexität geführt hat, ist bei den Speichern die Ursache für einen dramatischen Preiseinbruch, bezogen auf die Kosten pro Funktion.

Page 27: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 19-

Somit haben die Kosten für Halbleiterspeicher ganz allgemein schneller abgenommen als für L·ogik-Bausteine.

Während die Dichten bei MOS-FET -Speichern und damit die Kosten immer günstiger waren als bei der Bipolar-Technik, hat sich der Trend bei den Dichten der bipolaren Komponenten beschleunigt.

Ursachen sind:

(1) die neue Schaltkreistechnik I2

L (2) Merged-Transistor-Logik (MTL).

Die I2

L-Bipolar-Technik verspricht einen Kamprarniß zwischen den bpolaren Geschwindigkeiten und den MOS-Dichten. Der Wettstreit zwischen I L- und NMOS-Technologi;z in der Zukunft ist heute ein kontroverses Thema in der Industrie, wobei I L-Komponenten möglicherweise die NMOS-Komponenten ganz ausstechen werden.

Seit der Einführung der Halbleiterspeicher hat sich die Flächendichte um den Faktor 300 erhöht.

Gründe:

o Verbesserte Material- und Prozeßeigenschaften,

o Regelmäßigkeit der Struktur bzgl. der Verbindungskontakte be­hindert nicht die Miniaturisierung.

Die Reduktion der Volumina ist ebenfalls beachtlich; sie gestattet heute die Integration von Speichern innerhalb der Zentraleinheiten und die Anpassung größerer Speicher höherer Leistung (Abb. 111. 3).

Diese Eigenschaften sind besonders viel versprechend für die zukünftige Entwicklung hochkomplexer Rechnerarchitekturen, wie sie durch Parallelpro­zessoren und allgemein durch Multiprozessorsysteme dargestellt werden.

Es wird erwartet, daß die Preise typisch etwa mit einer Rate in der Größen­ordnung 25 - 35 % pro Jahr sinken.

Die jüngste Geschichte impliziert auch, daß etwa alle 4 Jahre ein neues Gerät eingeführt wird, welches eine vierfache Dichte gegenüber dem Vorgänger aufweist.

Uber eine 10-Jahresperiode kann eine Reduktion der Kosten pro Bit eines Halbleiterspeicher-Chips um einen Faktor in der Größenordnung um 20 bis 25 erwartet werden.

Der Vollständigkeit halber sei zu den Speichertechnologien abschließend noch auf die dramatische technische Entwicklung bei den Massenspeichermedien, insbesondere bei den Plattenspeichern, hingewiesen (Abb. III.4).

Page 28: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 20-

4. Systementwicklung

Die Verbesserung der Komponenten führte Leistungssteigerungen bei den Computersystemen von

0

0

KIPS

MIPS

in den frühen 60-er Jahren über

in den letzten Jahren, zu

zu beachtlichen

0 BIPS bei heutigen Spezialsystemen von Parallelprozessoren.

(K = 'kilo', M = 'million', B = 'billion' (109); IPS = 'instructions per second').

So hat der Parallelprozessor für die Hochgeschwindigkeits-Bildverarbeitung beim sog. LANDSAT-Projekt der NASA, der MPP ("Massive Parallel Processor") von Goodyear Aerospace (Batcher ), die folgenden Leistungsdaten:

o Zahl der Prozessoren: 16.384

o Performance: Operationen/sec

- integer add: 4 - 6 x 109

- integer mult:N 2 x 109

6 - float.-pt. add: 430 x 10 6 - float.-pt. mul t: 216 x 10

In der Vergangenheit waren die Komponenten zu teuer und zu unzuverlässig, um wesentlich komplexere Systeme hoher Verfügbarkeit zu entwickeln und auf den Markt bringen zu können.

Die Wechselwirkung zwischen den Techniken des Systementwurfs und den Leistungsverbesserungen der Technologie selbst zusammen mit den damit verbundenen Fortschritten in Zuverlässigkeit, Miniaturisierung und schließlich - Kosten ermutigen auch zur Entwicklung neuer unabhängiger Einheiten wie Vektor-Prozessor-Einheiten und anderer spezieller Funktions­einheiten wie Pipelines.

In den letzten 20 Jahren haben die Entwicklungen bei den Komponenten und den Gesamtsystemen zu einer Verbesserung der Verarbeitungszeiten um den Faktor 100 und beim Preis/Leistungs-Verhältnis um den Faktor 16.000 geführt.

Dieser Prozeß wird sich ohne Zweifel noch eine gewisse Zeit fortsetzen, wobei wegen der physikalischen Grenzen wohl weniger die absolute Leistungs­fähigkeit gesteigert werden kann, wohl aber wegen der Produktionstechniken das Preis/Leistungsverhältnis sich noch wesentlich bessern kann.

Page 29: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 21-

5. Wechselwirkung zwischen Komponenten- und System-T echnologien

Höchstleistungsmaschinen hängen von der Zykluszeit und dem Minimum an Maschinenzyklen pro Instruktion ab.

Die Halbleiterentwicklungen haben die Zeit pro logischer Entscheidung in der Maschine stetig reduziert.

Die Leistungssteigerung bei den Monoprozessoren führt zu den folgenden Beobachtungen:

o Bei kommerziell orientierten Anlagen sind die Verbesserungen hauptsächlich auf Verbesserungen in der Halbleiter-Bauelement­Technologie zurückzuführen.

o Bei Höchstleistungsrechnern wurden die Steigerungen erzielt durch die Kombination der technologischen Resultate mit FortschritV~n im Computer-Entwurf und in der Architektur.

Man sollte auch darauf hinweisen, daß die schnelle Entwicklung bei den }-l­Prozessoren ihre Anwendung am oberen Ende der Leistungsskala der Computer ermöglichen wird.

Während heute )-1-Prozessoren auf relativ geringe Performance beschränkt sind, wird der Einsatz der Bipolar-Technologie signifikant durchschlagen beim Entwurf komplexerer Höchstleistungsrechner.

Dasselbe gilt, sogar verstärkt, für ihren Einsatz im Bereich der Kommunikation und der Peripherie.

6. Zukünftige Entwicklung

Für die zukünftige Entwicklung zeigen sich zwei Richtungen, die mit Sicherheit eine starke Wechselwirkung haben werden:

(1) niedrige Kosten,

(2) höhere Leistung.

Für die Leistung ist die pro Instruktion erforderliche Zeit maßgeblich.

In erster Näherung ergibt sich:

TIN = nZI • TZ + r CM • nRI • TM ;

dabei ist:

Zahl der Maschinenzyklen pro Instruktion (Mittel); etwa 2-8.

Maschinenzykluszeit; sie ist ohne Zweifel eine für wissenschaft­liches Computing sehr wichtige Größe, die primär technologie-bestimmt ist.

Page 30: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

= =

- 22-

"Cache Miss Ratio", d. h. die Wahrscheinlichkeit dafür, daß die für die Instruktion notwendige Information nicht im Pufferspeicher (Cache) ist; r CM ist etwa 0.02 - 0.05.

Anzahl der Speicherreferenzen pro Instruktion.

Hauptspeicher-Zykluszeit; sie ist ohne Zweifel eine für Höchst­leistungsrechner sehr wichtige Variable, die primär durch Technologie-Parameter bestimmt ist.

Die Maschinenzykluszeit läßt sich durch globale Parameter beschreiben:

Tz

dabei ist:

= L • [ P • Si + (1-P) • Se] ;

L = Anzahl der Schaltkreisstufen auf dem kritischen Pfad einer logischen Operation.

P = Anteil der Schaltkreisstufen a.kr.Pf. innerhalb desselben Chips; d. h. (1-P) = Anteil der Schaltkreisstufen auf verschiedenen Chips, d. h. die Wahrscheinlichkeit dafür, daß der kritische Pfad einer logischen Operation den Chip verläßt.

s.,s = 1 e Delay der logischen Stufen auf einem Chip (S.) bzw. zwischen

Chips (S ). 1

e

Die Delay-Zeiten S. bzw. S setzen sich dabei zusammen: 1 e

S = D + W X X X

V X

wobei (x = i bzw. e):

D X

w X

V X

= = =

Schal tkreis-Delay

Leitungslänge (zum nächsten Schaltkreis bzw. Chip).

Signalgeschwindigkeit (im Leitungsmedium auf einem Chip bzw. zwischen den Chips).

Das Optimum ergibt sich, wenn der kritische Pfad vollständig innerhalb eines Chips liegt. Heute liegen im Mittel erst etwa 20 % innerhalb desselben Chips. Hier ergeben sich wesentliche Ansätze für strukturelle Verbesserungen des Chip-Entwurfes und damit der Architektur.

In Reichweite sind Bipolar-Logik-Technologien auf Silizium-Basis mit Zykluszeiten von wenigen Nanosekunden.

Eine Folge daraus ist, daß Monoprozessoren mit angepaßten Prozessor/ Speichertechnologien und Architekturverbesserungen möglich werden, die im Vergleich zu heutigen Großsystemen -etwa dem IBM-System 3033 mit etwa 5 MIPS - innerhalb einer 10-Jahresfrist 25-100 MIPS leisten können.

Für die technologische Weiterentwicklung gibt es mehrere Ansätze, insbesondere für die Hochleistungsbausteine (Abb. III. 5), wobei die GaAs­Technologie zwar schnelle Schaltkreise verspricht, aber hinsichtlich der Fertigung gegenüber der Si-Technologie noch viele Probleme aufwerfen wird; die Ausnutzung des Josephson-Effektes enthält das Potential für Verbesserungen der Schaltzeiten um Größenordnungen, allerdings stellt sich hier die Frage nach dem Einsatzzeitpunkt bei Systemen des Marktes.

Page 31: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 23 -

1 Cornputernysteme: Obersicht

1.1 Einführung

1.1.1 Entwurfskriterien

Die Charakterisierung der Rechnersysteme kann nach 5 groben Kriterien für den Entwurf erfolgen:

(1) Kosten

(2) Geschwindigkeit/Leistungsfähigkeit

(3) Qualität und Nützlichkeit

(4) Entwurfssicherheit: Erfüllung der Spezifikationen

(5) Zuverlässigkeit

Die Grundgedanken hinter diesen Kriterien stehen untereinander in vielfältiger Beziehung. Einige der Kriterien sind wohldefiniert und wohlverstanden und beim Rechnerentwurf etabliert; andere kommen erst allmählich zu der notwendigen Gestalt und Bedeutung (z. B. (3) und (4)).

Drei Blickwinkel auf ein Rechnersystem sind bestimmend:

(a) Designer und Konstrukteur ("Architekt")

o Konkurrenzfähigkeit o Leistungsfähigkeit und technische Herausforderung o Nützlichkeit für den Markt

Randbedingungen:

verfügbare Technologie gegenwärtige Entwurfspraxis und Historie Konstruierbarkeit Produzierbarkei t endliche Komplexität für das detaillierte logische Design endliche Komplexität der Programmierbarkeit

(b) Verkäufer oder Betreiber:

o weniger Interesse am Interieur des Systems o Anschaffungskosten (Preis) o Betriebskosten (Finanzen, Personal) o Raum-/Klimabedarf o Leistungsfähigkeit für gegebenes Anwendungsprofil im

Vergleich zu Konkurrenzsystemen o Zuverlässigkeit, Wartbarkeit o Verfügbarkeit o Funktionsorientierung: Batch, Timesharing, Online, Realtime.

(c) Benutzer (oder Gutachter):

o Qualität der berechneten Ergebnisse o Leichtigkeit der Benutzung o Geschwindigkeit: Turnaroundzeit, Responsezeit, Trans­

aktionsrate. o Effizienz: nur soweit Computingkosten tangiert sind.

Page 32: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 24-

(1) Kosten: Die Kosten eines Rechnersystems für

Kauf Miete Betrieb

haben grundsätzlich 3 Komponenten:

o Hardware o Software o Personal.

Die relativen Anteile der Komponenten (Abb. 1.1)

ändern sich über die Jahre variieren von Hersteller zu Hersteller hängen von Größe und Typ der Installation ab.

In den frühen Jahren:

war jeder Computer ein Supercomputer, denn es war jeweils der "größte" und "schnellste" verfügbare Rechner, der angeschafft werden konnte.

gingen die Aufwendungen fast ausschließlich in die Hardware.

war überhaupt wenig Software verfügbar.

dadurch: war im "Rechenzentrum" wenig Personal direkt involviert.

hatten wissenschaftliche Anwendungen Pionieraufgaben der Datenverarbeitung.

Mit der Zeit entwickelte sich

viel fache Spezialisierung

o große wissenchaftlich-technische Aufgaben o Wirtschaft: Banken, Versicherungen (DB/DC) o Ausbildung (Informatik, CAI) o Platzbuchungssysteme (Fluggesellschaften) o Lohn- und Gehaltssysteme o Prozeßsteuerung- und Überwachung usw.

Technologie und Expansion der Anwendungen Spektrum von Rechnersystemen

o Mikroprozessor: n x 101 $ (Intel 8080, etc.)

o Minicomputer: n x 104 $ (POP 11 etc.)

o Midicomputer: n x 105 $ (VAX etc.)

o Großrechner: n x 106 $ (IBM, Siemens, UNIVAC,

7 o Supercomputer: n x 10 $

CDC, etc.)

(CRA Y -1, CYBER-20X, BSP)

Page 33: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 25 -

Spektrum von Software-Kosten

o Anwendungspakete

Optimierung und Konkurrenz (SW-Häuser) führten zu Preisreduktionen

neue Anwendungen verlangten

o Neuentw.icklungen o hohe Aufwendungen (Personalkosten)

o Betriebs(system)-Software

vom Hersteller entwickelt bislang kostenlos: Grundsoftware Lizenzprogramme (spez. Compiler) Zusatzfunktion (zur Leistungsverbesserung) kostenpflichtig

o Kosten für SW sind im Effekt Personalkosten

vom Hersteller getragen für SW-Häuser für Rechenzentrum für Benutzer

o SW-Kosten müssen in ihren Abschätzungen auch die Kosten für Programmierung durch System-und Anwendungsprogrammierer enthalten.

o SW-Kosten = F (Größe und Typ der Installation)

Kostenentwicklung macht einen neuen Sprung durch die Strukturänderungen in den Unternehmen bzgl. der Einrichtung von Datenbank/ Datenkommunikations­systemen und Datenfernverarbeitung mit verteilten Rechnernetzwerken.

o R. Nolan (Harvard University) hat die Kostenent­wicklung der Datenverarbeitung eines Unternehmens durch Phasen aus 2 S-Kurven beschrieben, wobei wir uns heute in der Regel bereits in der Phase befinden, in der ein Umbruch in Richtung Kommunikation geschieht (Abb. 1.2).

(2) Geschwindigkeit/Leistungsfähigkeit:

2 fundamentale Fragen, - die eine physikalischer Natur, die andere logischer Natur- bestimmen die Geschwindigkeit eines Computers:

(i) physikalisch:

- Beschränkung durch Schaltzeit von Komponenten (z.B. Transistor) und Geräten;

- Beschränkung durch Ubertragungsgeschwindigkei t von Signalen entlang Leitungen;

- mechanische Beschränkung durch Rotationsgeschwin­digkeit von Platten- und Trommelspeichern;

Page 34: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 26-

- diktiert von

o physikalischen Gesetzen o physikalischer Forschung und Entwicklung o Halbleiterherstellern o Märkten und Strategien.

(ii) logisch:

- Beschränkung durch Organisation der elementaren physikalischen Komponenten von Schaltkreisen: "Boolesche Algebra";

- Beschränkung durch Verbindungsstruktur zwischen den Einzelelementen zu einem vollständigen System: "Kommunikation";

- Beschränkung auf unterster Ebene, um logische Funktionen wie AND, OR und NOT auszuführen mit notwendiger Geschwindigkeit;

- Beschränkung auf höherer Ebene durch Zugriffszeit auf ein Wort im Hauptspeicher oder auf einen Datenblock im Sekundärspeicher, durch Zeit für Addition zweier Zahlen, Dekodierung einer Instruktion zur Ausführung, usw.

Während die physikalische Geschwindigkeit unabhängig festgelegt ist, haben Entwicklungen der Rechnerarchi­tektur, Design-Ideen und auch Design-Tricks zu immer schnelleren, d. h. leistungsfähigeren Schemata zur Ausführung von Berechnungen (im allgemeinsten Sinn) geführt auf der Grundlage jeweils vorgegebener physikalisch-technischer Voraussetzungen, die sich auch laufend besserten.

(3) Qualität und Nützlichkeit:

o Dieses Kriterium enthält im wesentlichen (auch) subjektive Aspekte;

o Software-Kompatibilität versus Hardware-Kosten, um SW-Kompatibilität zu erreichen;

o Familien-Konzept: 1 gemeinsamer Instruktionssatz als Basis für SW-Austausch und Wachstumspfade ("Upgrad i ng");

o Schwierigkeits- und Komplexitätsgrad der Entwicklung von Betriebssystemen und Compilern für ein HW­System;

o Wechselwirkung und Auswirkungen der Wechselwirkung zwischen HW und SW;

o Numerische Genauigkeit;

o Flexibilität bzgl. neuer Anwendungen und Anpassungen.

(4) Design-Siclierheit:

Maßstab für die erfolgreiche Implementierung der Spezi­fikationen des Entwurfs: Prognose und Erfüllung dersel­ben.

Page 35: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 27-

(5) Zuverlässigkeit:

hängt ab von

o Technologie o Systemkomplexität o HW /SW-Wechselwirkung

Theoretische Basis: Stochastische Theorie der Zuverlässigkeit

o MTBF: Meantime between failure o MTTR: Mean time to repair

Entwicklungen in Richtung auf den Entwurf sog. fehlertoleranter Systeme.

1.1.2 Hintergrund

(1) Hardware-Ideen

- Gatter: Funktionen und Symbole (Abb. 1.3)

o AND, OR, NOT: • , + , o NANO, NOR o XOR ("Exclusive OR") : ff>

- logische Vollständigkeit der Funktionen (C.S. Pierce: NOR; M. Sheffer: NANO).

- Reduktion der logischen Funktionstypen

o Beispiel (Tab. 1.1): (A AND B) = (A NANO B) NANO (A NANO B)

o Wichtig für großtechnische und automatische Herstellung von Logikbausteinen (Chips) und ihre Standardisierung und Vereinheitlichung bzgl. der verschiedenen Funktionseinheiten eines Rechners.

o Packungsdichte IV Regelmäßigkeit x Einfachheit Geschwindlgkei t

- Terminologie:

o Fan-in: Zahl der Eingänge (~inputs) o Fan-out: Zahl der Ausgänge (::lfoutputs)

- Auf der nächsthöheren Ebene der logischen Schaltungen kann man 2 Arten von Schaltkreisen definieren als Basis für alle realen Rechner-Logik-Entwürfe:

(i) "Combinational Logic Circuit" (Abb. 1.4a):

- ISO-Definition: Schaltnetz;

- Netzwerk elementarer logischer Funktionskomponenten ohne logische Rückkopplung, d. h.: die Ausgabe hängt nur vorld'Sr Eingabe ab;

- "Schwarzer Kasten" mit

o r Eingabe-Bits o s Ausgabe-Bits

Page 36: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 28 -

- jeder logische Pfad kreuzt ein Gatter jeweils nur einmal~das gilt für jeden Pfad vom Eingang zum Ausgang.

- in einem realen System sind die "Quellen" und "Senken" eines solchen Schaltnetzes in der Regel Register (schnelle Flip­F lop-Speicher ).

- Beispiel:

Eingang r bits

Addierer

Ausgang (r+l) bits

(Ausgangsseitiges Register einer arithmetischen Funk­tionseinheit ist: "Akkumulator").

(ii) "Seguential Logic Circui t" (Abb. l.4b):

- !SC-Definition: Schaltwerk;

- Hier hängt die Ausgabe von der Eingabe und vom Zustand des Schaltwerkes ab, der wiederum nur vom vorhergehenden Input und Zustand abhängt;

- In einem Schaltwerk können die Daten wiederholt in aufeinanderfolgenden Zeitschritten, die von einer Uhr getaktet werden, transformiert werden;

- Der Registerblock wirkt als Speichereinheit.

- Elementares Rechner-Modell (Abb. 1.5):

Ein Rechnersystem, wie es vor allem konzeptionell von John von Neumann (1945) erarbeitet wurde, besteht in seiner Grundstruktur aus 3 Komponenten:

(I) das Leitwerk ("Control Unit"):

Diese Einheit steuert unter der Direktion eines Programmes das gesamte Rechnersystem.

(II) der Prozessor oder das Rechenwerk ("Processor";

"Arithmetic-Logic Unit: ALU"):

Diese Einheit führt arithmetische und logische Operationen aus.

(III) der Hauptspeicher ("(Main) Memory"):

Diese Einheit speichert sowohl das Programm als auch die Daten, welche das Programm zu Beginn oder während seiner Ausführung benötigt oder als Ergebnis bzw. Zwischenergebnis erzielt.

Rechenwerk und Leitwerk werden zusammengefaßt als Zentraleinheit ("Central Processing Unit: CPU) bezeichnet.

In dem Leitwerk sitzt die System-Uhr, die das gesamte System taktet; es enthält Register als schnelle Speicherelemente sowie Schaltnetze (Cominational Logic Circuits), die das Dekodieren der Programmoperationen und das Verarbeiten der Adressen besorgen.

Page 37: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

~ 29-

Wortlänge:

Eine für die arithmetischen Eigenschaften eines Rechnersystems charakteristische Kennzahl ist die Wortlänge, welche die Darstell~ barkeit und den Zugriff atomarer Datenelemente bestimmt.

Die Wortlänge variiert als Funktion der Rechnergröße und des Typs (Tabelle 1.2).

Hauptspeicher:

Seit einiger Zeit hat bei den Höchstleistungsrechnern die Ent~ wicklung eingesetzt, für Prozessor und Hauptspeicher dieselbe Technologie zu verwenden. (Bislang galt dies aus Kostengründen nur für das Cache-Puffer­element). Der Hauptspeicher besteht aus sog. RAM-Elementen, d. h. aus Speichereinheiten, die den wahlfreien Zugriff ("Random Access Memory") gestatten (Abb. 1.6).

Der "wahlfreie Zugriff" zu jedem Wort des Hauptspeichers ge­schieht in definierter, für jedes Wort gleicher Zeit.

Die Adresse (()(.,)des "Wortes", auf das zugegriffen werden soll, wird vom Leitwerk (Control Unit) in das Speicher-Adressen-Register (MAR) geladen; dabei geschieht ein

FETCH: Der Speicher wird "gecycled", d. h. er durchläuft den Kreislauf

(a) Dekodieren der Adresse, (b) Selektieren des adressierten Platzes, (c) der Inhalt wird gelesen: ins Speicher-Informations-

Register (MIR).

Der Speicher-Zyklus· ist dabei eine definierte feste Zeit ("Memory Cycle").

Soll umgekehrt ein Wort gespeichert werden, so erfolgt ein:

STORE: Das zu speichernde Wort wird ins Speicher-Infor­mations-Register (MIR) geladen. Der Speicher wird "gecycled":

(a) Adresse dekodiert, (b) Platz selektiert, (c) das Wort wird auf den Speicherplatz geschrieben.

Das Speicher-Informations-Register ist gewöhnlich physikalisch im Hauptspeicher selbst angesiedelt.

Der Speicherzugriff umfaßt

(a) die Spezifikation der Adresse, (b) das Lesen/Schreiben von/auf Speicherplatz der

gegebenen Adresse.

Page 38: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 30-

Weitere Speicherkomponenten:

ROM ("Read-Only Memory"):

CAM:

Es läßt sich 1 x beschreiben und dann nur noch lesen. Es ist in der Regel schneller als RAM. Hier läßt sich z. B. ein festes Programm für schnellen Zugriff (z. B. Systemprogramm) speichern. Es ist auch geeignet zum schnellen Zugriff auf konstante Tabellen, z. B. auch für konstante Anfangswerte für Iterationen, z. B. bei der Berechnung spezieller Funktionen. ROM's werden mehr und mehr anstelle von Schaltnetzen (Combinational Logic) eingesetzt, z. B. für die

o Addition: Benutzen der Argumente als ROM-Adresse und Nachsehen des Ergebnisses;

o Multiplikation: benutzt Mischung aus Add.-Schaltnetz und ROM-Lookup.

PROM: "programmierbares" ROM PLA: "programmierbares" Logikfeld.

"content-addressable memory" = assoziativer Speicher teurer als RAM

gewöhnlich für READ und WRITE

für Spezialsysteme (ST ARAN etc.)

Die Bandbreite ist definiert als Anzahl der Bits/sec, die einen Punkt im System passieren; sie beschreibt somit die Geschwin­digkeit bestimmter Komponenten (Prozessoren, Speicher, etc.).

(2) Software-Ideen:

Auf unterster Ebene sind die Programmierung eines Computers und das Entwerfen seiner logischen Organisation identisch.

Computer-"Sprachen" existieren auf zahlreichen verschiedenen Ebenen~

(a) niedrigste Ebene: o Sprache besteht aus den Signalen, die die Kontrollpunkte zu den verschiede­nen Aktionen veranlassen.

o Signale sind in Kontroll/Steuerworten/ Befehlen enthalten, wie sie die Steuer­einheit/Leitwerk aussendet.

o Auch die "Clock"-Signale können als Teil dieser Maschinensprache niedrigster Ebene verstanden werden.

Page 39: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

~ 31 ~

(b) nächsthöhere Ebene:

Sie umfaßt:

assemblierte bzw. geladene ("loaded") Instruktionen.

Instruktionen haben definiertes Instruktions~F ormat:

Befehlscode-Feld Adressen-Feld andere Felder (wenn nötig).

Das Leitwerk verarbeitet diese Instruktionen sequentiell, indem die Adresse und der Operationscode getrennt werden und entsprechende Aktionen eingeleitet werden.

Die Adresse dient zum Speicherzugriff auf Daten oder liefert den Ort, von wo die nächste Instruktion im Falle eines Sprunges zu holen ist.

Der Operationscode wird dekodiert und veranlaßt Aussenden eines oder einer Sequenz von Kontrollbefehlen. Die Kontroll­worte verursachen, daß die spezifizierte Operation in Speicher, Prozessor oder Kontrolleinheit (Leitwerk) ausgeführt wird.

Die assemblierten und geladenen Instruktionen entstammen einem Benutzer-Programm:

Asse mbler~Sprache: o nahe dem Befehlscode-/ Adressen~F ormat

höhere Programmier-Sprache: o anwendungs-,

problemorientiert

-FORTRAN } ~ALGOL

-APL ~

~ PL/I ---------COBOL

Programme werden "übersetzt"

o Assembler-Sprache: o höhere Sprache:

traditionell wissenschaftlich (Algorithmen) orientiert

kommerzielle Anwendungen.

"assembliert" "compiliert"

in das Befehlscode-Adressen~F ormat durch System­Programme (Assembler, Compiler). Zur Ausführung werden sie in die Maschine "geladen" und mit anderen Programmen "gelinkt" ("gebunden").

Eine andere Option ist die "Interpretation" des Programms:aus höherer Programmiersprache auf eine intermediäre Sprach­Ebene gebracht oder in der höheren Sprache selbst geladen, gelinkt und ausgeführt im Interpretations-Modus.

Page 40: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 32-

Interpreter:

1) Programm, daß die letzte Stufe der Dekodierung vornimmt und die Maschinen-Instruktionen zur Ausführung bringt.

2) Kombination von HW und SW mit derselben Aufgabe wie bei 1)

Interpreter bieten zusätzliche Flexibilität bei der Benutzung von Programmiersprachen.

Schlüsselstationen eines Programms in der Zeit:

Ubersetzungs-(oder Compile-) Zeit Lade-Zeit (Link+ Load im Hauptspeicher)

Ausführungszeit (Execution- oder Run-Time). Das Leitwerk dekodiert und führt aus bei jeder Instruktion (veranlaßt z. B. Prozessor).

Demnach sind auch Parameter bekannt

zur Übersetzungszeit, wenn zur Programmierzeit spezifiziert,

zur Lade-Zeit, wenn spezifiziert durch den Benutzer, daß das Programm ausgeführt werden soll,

zur Ausführungszeit, wenn vom Programm berechnet.

(3) Wechselwirkung von HW und SW

Alternativen für die Optimierung:

(i) Speicherallokation:

zur Compile-Zeit: DECLARE X(lO, 50)

o Compiler weist dem Programm 500 Speicherplätze für das Feld X zu.

o Platz mag über lange Zeit der Programmausführung oder -abhängig von Entscheidungen im Verlauf des Programmes - überhaupt ungenutzt bleiben.

zur Run-Time:

o sparsamer Umgang mit Speicher möglich,

o z. B. durch READ (M, N) BEGIN PROC DECLARE X (M, N)

o Hier geschieht nur die Allokation des Speichers, wenn der Block aktiv ist.

o Wenn PROC verlassen wird, erfolgt die Freigabe des Speichers.

Page 41: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 33 -

(ii) Register-Allokation:

durch Übersetzer (Software)

durch mehr Hardware-Funktionen sind Run-Time-Entschei­dungen über die Register-Zuweisung möglich. Dadurch

1) sind Compiler-Entscheidungen eli minierbar: Com­pilation wird schneller;

2) wird Komplexität der Compiler kleiner.

1.2 Systemprinzipien: Organisation und Struktur

In diesem Abschnitt soll etwas näher auf einige Ideen eingegangen werden, die bereits früher aufgetaucht sind. Zunächst sollen verschiedene Organi­sationsformen von Computern behandelt werden, die den Effekt haben, daß z. B. ein einfaches Programm jeweils auf jeder von ihnen mit höherer Geschwindigkeit ausgeführt werden kann. Dabei wird schon die gesamte Spannweite der gegenwärtig existierenden Maschinen überstrichen werden. Der Schwerpunkt wird auf der Leistungserhöhung durch Architekturände­rungen liegen.

1.2.1 Monoprozessor und Multiprozessoren

(1) Monoprozessor-System

Wir gehen aus von dem grundlegenden Rechnersystem, wie es eigentlich nur aus historischen Gründen und wegen der klareren Diskussion der einzelnen Funktionseinheiten gerechtfertigt ist.

(i) Fundamentalsystem (J. von Neumann)

Dieses System, das von Neumann definiert hat und das der Vorfahre der heutigen Großsysteme mit Mehrzweck-Charakter wie IBM System/370 ist, besteht aus den 5 Komponenten (Abb. 1. 7):

(1) Leitwerk (Control Unit), (2) Rechenwerk (Processor ), (3) Hauptspeicher (Main Memory), (4) Eingabe-Einheit (Input Unit), (5) Ausgabe-Einheit (Output U~it).

Der Datenfluß verbindet Hauptspeicher und Prozessor (Rechen­werk) bzw. Leitwerk (Control Unit), wobei

(a) Daten vom Speicher in das Leitwerk fließen in einer Richtung (Instruktionen);

(b) Daten vom Speicher ins Rechenwerk, aber auch vom Rechenwerk zum Speicher fließen können.

Der Kontroll-Fluß verbindet wechselseitig das Leitwerk mit allen 4 anderen Einheiten, da das Leitwerk die Funktion des gesamten steuert und über die Kontrollpunkte Zustandsveränderungen in der Maschine bewirken muß.

Im Strukturdiagramm werden über die durchgezogene Verbindung Instruktionen aus dem Speicher in das Leitwerk (Control Unit) geholt.

Page 42: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 34-

Das Leitwerk kontrolliert den Fluß von Daten und Instruktionen durch die Maschine. Z. B. kann über die Verbindung zur Eingabe­Einheit ein Kartenleser angesteuert werden und eine Rückantwort von der Eingabe-Einheit an das Leitwerk gegeben werden nach Beendigung des Einleseauftrags.

Darüberhinaus bestimmt das Leitwerk die Reihenfolge der Er­eignisse im Speicher und im Rechenwerk (Prozessor).

Betrachten wir z. B. die Quellprogramm-Anweisung

X= A + B,

die X die Summe von A und B zuweist. Diese mag etwa in der Farm compiliert werden als Assembler-Sprache:

Opcode Argument

FETCH A ADD B STORE X

Bei der Ausführung dieser 3 Anweisungen veranlaßt das Leitwerk zuerst, daß A aus dem Speicher in das Rechenwerk geholt wird. Dann wird B geholt und zu A addiert; schließlich das Ergebnis unter X gespeichert.

Implizit ist dabei angenommen, daß das Leitwerk sich ständig selbst mit Instruktionen versorgt, indem sie aus dem Speicher geholt werden, wann immer dies notwendig wird.

(ii) Nachteile des Fundamentalsystems:

In einem Rechner, der entsprechend diesem Diagramm organisiert ist, gibt es eine Reihe von Nachteilen und Designproblemen:

(1) Das Leitwerk ist ständig beschäftigt mit der Organisation und Steuerung des gesamten Systems.

(2) Das Rechenwerk (der Prozessor) ist involviert in allen Eingabe- und Ausgabe-Aktivitäten.

(3) Die Speichergröße mag durch die Kosten beschränkt sein für größere Berechnungen und Probleme.

(iii) Erweiterte Konzeption:

a) In einem erweiterten Konzept ist deshalb ein Sekundärspeicher enthalten, d. h. etwa eine Magnetplatte oder -trommel (oder mehrere davon).

Dies gestattet, größere Datenmengen und Programme "online" zur Verfügung zu halten, d. h. die Information muß nicht mehr über langsame Eingabegeräte erst jedesmal hereingeholt werden, wenn der Rechner für ein Problem eingesetzt werden soll. Programm und Daten werden in Dateien im Sekundärspeicher bewahrt (Abb. 1.8).

Page 43: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 35 -

(b) In dem erweiterten Diagramm wurden auch die E/A-Ver­bindungen geändert, um den Hauptspeicher in einer direkten Weise ansprechen zu können, d. h. ohne Einschalten des Prozessors in die E/ A-Operationen ( E/ A = Ein-/ Ausgabe).

Dies gestattet, daß simultan zu der unabhängigen Ausführung von E/A- und Sekundärspeicher-Aktivitäten der Prozessor eige­ne Operationen durchführen kann.

Solches "Uberlappen" ist eine Schlüsselidee beim Entwurf schnellerer Rechnerstrukturen.

(c) Schließlich wurden sog. Kanäle zwischen dem Hauptspeicher und den langsameren E/ A-Einheiten eingeführt. Der Hauptspeicher ist noch direkt verbunden mit dem Rechenwerk und dem Leitwerk. Jetzt kann das Leitwerk Befehle an die Kanäle absetzen, die dann ohne Kontrolle des Leitwerkes selbständig E/ A-Operationen ausführen und die Vollendung der jeweiligen Aufgabe an das Leitwerk melden: Ende der Kanal-Transaktion.

Somit sind Kanäle eine Art "Hilfsleitwerk", denen von dem Hauptleitwerk gewisse Aufgaben übertragen werden.

Diese Kanäle können relativ viel einfacher konzipiert sein, da sie Einheiten zu steuern haben, die wesentlich langsamer als Prozessor und Hauptspeicher sind.

Wir bezeichnen die Ebenen aus

- Hauptspeicher - Sekundärspeicher (Platte, Trommel) - gewissen E/ A-Geräten

(Magnetband, Mass Storage System)

als "Speicher-Hierarchie".

(iv) Indizierte Felder und DO-Schleifen:

Reale Programme handeln mit Datenfeldern. Das Charakteristi­sche, das solchen Programmen gemeinsam ist, ist eine Anweisung, die die iterative Behandlung einer Berechnung über eine Sequenz indizierter Anweisungen und Ausdrücke beschreibt und bewerk­stelligt, die als DO-Schleife in den gängigen höheren Programmier­sprachen ein wesentliches Element darstellt.

In einer Fortran-ähnlichen Sprache definiert z. B.

DO s1

I= 1,100

s1

X(I) = A(I) + B(I)

eine Sequenz von 100 skalaren Additionen.

Alle modernen Rechnersysteme besitzen spezielle Hardware-Kom­ponenten, die das Indizieren über Felder und das Mitzählen bei Schleifen-Iterationen gestatten.

Page 44: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 36 -

Spezielle Instruktionen stehen zur Verfügung, um Index-Register zu setzen und abzuprüfen und diese Register zur Modifikation von Adressen vor dem Speicherzugriff zu benutzen.

Diese Index-Register und auch die Index-Arithmetik-Einheit kann als Teil des Leitwerks betrachtet werden.

Solche Indizierungs-Hardware spielt eine Schlüsselrolle in den Höchstleistungs-Rechnern; Erweiterungen dieser Idee begegnen wir, wenn komplexere Rechnerorganisationen wie die Vektor-Prozesso­ren CRAY -1 oder CYBER-203 (als ST AR-100 Nachfolger) behandelt werden.

(v) CampHation und Ausführung von Programmen

Wir wollen ein einfaches Programm betrachten: Berechnung des Skalarproduktes zweier N-dimensionaler Vektoren A und B; das Ergebnis werde T zugewiesen:

Programm 1:

T=O DOS 1 I= 1,N

s1 T = T + A(I) * B(I)

Für einen Rechner dieser fundamentalen Struktur, wie wir ihn gerade behandelt haben, würde das Programm 1 etwa folgender­maßen übersetzt werden:

Programm 2:

Adresse Opcode (LABEL)

LOOP

OUT

STOZ SETX TEST X

FETCH

MPY

ADD

STORE

JUMP

Argumente

T I, 0 I, N, OUT

A(I)

B(I)

T

T

LOOP

Kommentare

Speichere 0 in T Setze XR(I) gleich 0 Erhöhe XR(I) um 1; wenn C(XR(I))~N: fahre fort, sonst : springe nach OUT Hole A(l) aus dem Haupt­speicher ins Register Hole B(I) und multi­pliziere A(I) und B(I) Addiere T zum Produkt A(I) * B(I) Speichere das Ergebnis unter T Springe auf LOOP

Anhand dieses einfachen Programmes läßt sich einiger Einblick in die Beziehung zwischen Leitwerk, Rechenwerk, und Speicher in verschiedenen Maschinenorganisationen gewinnen.

Page 45: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 37 -

Nehmen wir an, daß jede Speicher-, Prozessor- oder Control-Unit­Operation einen einzigen Zeitschritt erfordert, so ergibt die Ausführung dieses Programms auf dem Fundamentalsystem eines Rechners ohne Überlappen der Funktionen die Sequenz von Ereig­nissen, die in Abb. l.9a dargesteHt ist.

(vi) Reihenfolge der Operationen

Es muß darauf hingewiesen werden, daß die Ausführung jeder Instruktion mit einem FETCH beginnt, d. h. damit beginnt, daß die Instruktion selbst aus dem Speicher geholt wird.

Dann folgt ein Schritt, in dem das Leitwerk die Instruktion analysiert. An diesem Punkt mag das Leitwerk z. B. eine Speicher­aktivität initiieren wie das Speichern einer Null bei der STOZ­Instruktion im Schritt 3 oder das Holen von A(1) für die FETCH A(I)-Instruktion in Schritt 10.

Andererseits kann aber auch die Control Unit am Ende des Control Unit Steps die Ausführung der Instruktion beendet haben, wie z. B. nach Setzen von XR(I) auf 0 in Schritt 5, Prüfen des Index­Registers und Ausführen des bedingten Sprungs in Schritt 7 oder Ausführen eines nichtbedingten Sprunges im Schritt 23.

Komplexere Instruktionen erfordern einen Leitwerk-Zyklus, dem ein Memory Fetch folgt, dem wiederum sich eine Rechenwerk­Operation anschließt wie z. B. bei MPY B(I) in den Schritten 12, 13 und 14 oder bei ADD T in den Schritten 16, 17 und 18.

Es ist wichtig zu untersteichen, daß die Ausführung einer jeden Instruktion mit einem

o Instruction F etch, und o Leitwerk-Zyklus

beginnt.

Im Leitwerk-Zyklus wird die Instruktion dekodiert, d. h. daraufhin analysiert, welche Schritte für ihre Ausführung nötig sind.

Kann die Instruktion innerhalb des Leitwerks selbst ausgeführt werden, so geschieht dies sofort.

Sonst legt das Leitwerk für Speicher und Prozessor die Reihenfolge für die Ausführung der Instruktion fest und kontrolliert die Ausführung.

(v1i) Ausführungszeit:

Wir wollen nun die Ausführungszeit dieses Programms bestimmen.

Die innere Schleife umfaßt die Schritte 6-23, d. h. 18 Schritte. Obwohl in Wirklichkeit unterschiedliche Operationen ganz verschie­dene Ausführungszeiten haben können, wollen wir an der Annahme gleichen Zeitaufwandes festhalten; so kann eine Multiplikation langsamer als eine Addition sein, ein Speicherzugriff wiederum langsamer als eine Multiplikation sein.

Page 46: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 38 -

Ein wichtiger Punkt bei der Betrachtung der Ausführungszeit ist die Uberlappung oder die parallele Ausführung einiger Schritte. Z. B. in Schritt 2 ist der Speicher "idle", d. h. ohne Aufgabe; in diesem Schritt könnte die nächste Instruktion geholt werden. Dadurch würde der Schritt 4 überflüssig werden, da er mit Schritt 2 überlappen würde.

Dieser Uberlapp gehört heute bei realen Rechnern zur allgemeinen Praxis, wenn auch die Realisierung unterschiedlich sein kann.

Dadurch wird der Rechner zwar komplexer, aber die Uberlappung der Operationen kann ein preiswertes Mittel zur Geschwindig­keitssteigerung im Rechner sein.

(viii) Uberlappung:

Wir nehmen weiter an, daß jede Operation einen identischen Zeitschritt benötigt. Jetzt werden die Operationen des Speichers, des Prozessors und der Control-Unit überlagert, wo immer dies möglich ist.

Damit läßt sich das Operations-Diagramm komprimieren (Abb. l.9b).

Wenn wir parallele Speichereinheiten einführen, können wir sogar mehrere Speicherzugriffe gleichzeitig auf einmal zulassen, wie z. B. ein lnstruction Fetch und eine Datenspeicherung im Schritt 3, ein Instruction Fetch und ein Data Fetch in Schritt 6, usw.

Die innere Schleife läuft jetzt von Schritt 3 bis Schritt 9, umfaßt also 7 Schritte.

Dies stellt eine Geschwindigkeitssteigerung (Speedup) um den Faktor 2,5 gegenüber der nichtüberlappenden Maschine dar.

Es sei jedoch darauf aufmerksam gemacht, daß nur 2 arithmetische Operationen in originalen Skalarprodukten vorkommen (PROGRAMM 1): 1 Multiplikation und 1 Addition.

Somit erscheinen die 7 Schritte der Ausführung der Schleife für die Durchführung der 2 arithmetischen Schritte immer noch sehr aufwendig. Dies wird deutlich auch in dem großen Leerraum der Prozessorspalte im Diagramm.

(ix) Parser-Baum:

Die Ausführungszeit von PROGRAMM 1 läßt sich mittels einer Baumstruktur abschätzen (Abb. 1.10).

Dieser Baum reflektiert die Annahmen gleicher Zeitschritte und zeigt, daß die serielle Berechnung, d. h. die streng sequentielle Abarbeitung von PROGRAMM 1

T 1

= 2 N Schritte

erfordert.

Page 47: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 39-

Die Ideen, die bis zu diesem Punkt diskutiert wurden, sind weit davon entfernt, neu zu sein. Maschinen mit diesen Prinzipien wurden schon vor 1960 gebaut. Ja, die meisten dieser Uberlegungen waren sogar schon Babbage in der ersten Hälfte des 19. Jahrhun­derts geläufig.

Die meisten Hersteller bauen heute Rechner entsprechend diesen Prinzipien oder mit wesentlich fortgeschritteneren Funktionsele­menten. Typische solche Monoprozessoren sind: PDP /11-F amilie; IBM/370-Familie (Abb. 1.11), die am weitesten verbreiteten Syste­me; Siemens 4004, 7 .700, 7 .800, Amdahl-V-Serie.

(2) Multiprozessor-System

Der offensichtliche Weg, um die Geschwindigkeit eines Mono­prozessors zu erhöhen, der ja nur eine Operation zu einer be­stimmten Zeit ausführen kann, ist die Ausführung von gleichzeitig mehreren Operationen. Es gibt viele Möglichkeiten mittlerweile, um eine solche Maschine zu organisieren; solche Entwürfe ent­standen in den 60-er und 70-er Jahren.

Wir müßten eigentlich klären, was wir mit einem "schnelleren Rechner" meinen!

Obwohl die weithin gebräuchlichen Maße für Computerleistung, der Durchsatz und die Turnaround-Zeit, einiges gemeinsam haben, mögen sie jedoch nach verschiedenen Techniken und Maßnahmen zur Leistungsverbesserung verlangen.

(i) "Speedup" und "Effizienz":

Im folgenden wollen wir annehmen, daß gegenüber dem Mono­prozessor, der 1 Operation auf einmal durchführen kann, ein allgemein definierter "Multi-Operations-Computer" zur gleichen Zeit p > 1 Operationen ausführen kann.

Wir bezeichnen die Zeit zur Ausführung einer Berechnung A auf diesem Rechner mit

T (A) oder T • p p

D. h. die Zeit zur Ausführung von A auf einem traditionellen, streng seriellen Monoprozessor ist dann durch T

1 (A) gegeben.

Die Steigerung der Berechnungsgeschwindigkeit bzgl. A, die mit dem bequemeren und treffenden englischen Wort "Speedup" bezeichnet wird, ist dann definiert als das Verhältnis der Zeiten T 1 und T p:

S(A)=Tl(A) ~1. P T (A) ~

p

Entsprechend läßt sich (analog der Systemauslastung) die ''Effi­zienz" definieren:

Page 48: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 40-

(ii) Multiprozessor-Verarbeitung

Ein Multiprozessorsystem hat p Prozessoren, d. h. Rechenwerke (oder arithmetische Einheiten, arithmetische-logische Einheiten ALU), wobei jeder Prozessor sein eigenes Leitwerk hat (Abb. 1.12).

Somit kann jedes Leitwerk ein unabhängiges Programm aus­führen, indem es den eigenen Prozessor beschäftigt und die Speicherhierarchie gemeinsam mit den anderen (p-1) Prozesso­ren und Leitwerken benutzt ("share").

Die Prozessoren können miteinander kommunizieren:

entweder über den gemeinsamen Hauptspeicher, oder

über einen direkteren Weg über die Verbindung der Leitwerke: "Contra! Unit Connection".

Die Hauptspeicher-Einheit stellt hier eine Anzahl paralleler Speicher-Einheiten dar. Um die Bandbreiten-Anforderungen, d.h. die Anforderungen an die Ubertragungsgeschwindigkeiten aus bzw. in den Speicher zu erfüllen, hat ein solches System notwendigerweise (2-3) x p einzelne Speicher-Einheiten im Hauptspeicher.

Hier taucht ein ernstes Problem auf: die Möglichkeit des Konfliktes beim Speicherzugriff auf einzelne Einheiten durch p Prozessoren gleichzeitig.

Das System enthält eine sog. Verbindungsstruktur, ein "Inter­connection Network'~ die es den einzelnen Einheiten ermöglicht, miteinander Daten und Steuersignale auszutauschen.

Die Details eines solchen Networks stellen ein wesentliches Problem beim Entwurf jedes realen Systems dieser Art dar. Seine Geschwindigkeit, Kosten und Zuverlässigkeit sowie Ein­deutigkeit der Zugriffs- bzw. Kommunikationswege und eventu­elle Konflikte sind offensichtliche Kernfragen.

Man unterscheidet bei den Multiprozessorsystemen zwischen enggekoppelten ("tightly coupled") und lose gekoppelten ("loosely coupled") Systemen:

Zwei enggekoppelte Prozessoren können beispielsweise in­nerhalb einer Multiprozessoranlage zwei Unterprogramme im Programm eines Benutzers gleichzeitig bearbeiten.

Lose gekoppelte Systeme können im Prinzip an geographisch weit entfernten Orten relativ unabhängig voneinander arbei­ten und miteinander kommunizieren, um Last zu verteilen oder Jobs zum anderen zu schicken, weil dort bestimmte Software-Funktionen angeboten werden.

Wenn wir unsere Betrachtungen hier auf enggekoppelte Systeme beschränken, so gibt es zwei hauptsächliche Beschränkungen der Leistungsfähigkeit ("Performance") eines solchen Systems:

1) Leistungsminderung durch Konflikte bei

- Hauptspeicher-Zugriffen

- Sekundärspeieher-Zugriffen

- Ein/ Ausgabe-Geräte-Zugriffen.

Page 49: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 41-

2) Probleme beim Scheduling und Synchronisieren von Jobs auf mehreren Prozessoren.

Dies wird besonders akut, wenn ein Programm auf mehreren Prozessoren durch Zuweisung von Teilaufga­ben an die einzelnen Prozessoren abgearbeitet werden soll.

(iii) Matrixmultiplikation

Als einfaches Beispiel für die Verwendung eines Multipro­zessorsystems aus 2 Prozessoren wollen wir zurückgreifen auf unsere früheren Beispiele der Multiplikation zweier (NxN)­Matrizen A und B und der Berechnung des Skalarproduktes zweier Vektoren, wie es im PROGRAMM 1 für den Monopro­zessor geschehen war.

Wir wissen, daß ~e Multiplikation zweier (NxN)-Matrizen die Ausführung von N Skalarprodukten aus den N Zeilenvektoren mit den N Spaltenvektoren erfordert.

Somit könnten wir in jedem der 2 Prozessoren das PRO­GRAMM 1 aufrufen und in jedem Prozessor Skalarprodukte berechnen.

Wenn es dabei möglich ist, jeweils verschiedene Zeilen­Spalten-Paare in jedem der beiden Prozessoren zu verarbeiten und jedes dieser Paare in verschiedenen Speicherbänken ge­speichert wäre, so würde die Berechnung wie auf zwei separaten Rechnern ablaufen.

Auf diese Weise wäre insgesamt nur etwa die Zeit für N2 /2 Skalarprodukte notwendig.

Stellen wir uns z. B. vor, die Matrix A sei so gespeichert, daß die Zeilen mit ungeradem Index in Speichereinheit I, die Zeilen mit geradem Index in Speichereinheit li gespeichert seien. Dann könnten wir etwa dem Prozessor 1 die ungeraden Zeilen, d.h. die Speichereinheit I, dem Prozessor 2 die Speichereinheit II, d.h. die geraden Zeilen zuordnen.

Speichern wir nun die Spalten von B entsprechend mit den ungeraden Indizes in Speichereinheit III, mit den geraden Indizes in Speicherei~eit IV, so können in dem Prozessor konfliktfrei jeweils N /2 Skalarprodukte berechnet werden, indem (Abb. 1.13)

1) in der 1. Phase: (N2 I 4)

der Prozessor 1 die ungeraden Zeilen von A aus (I) mit den ungeraden Spalten von B aus (III)

der Prozessor 2 die geraden Zeilen von A aus (II) mit den geraden Spalten von B aus (IV)

2) in der 2. Phase: (N2 /4)

der Prozessor 1 die ungeraden Zeilen von A aus (I) mit den geraden Spalten von B aus (IV)

der Prozessor 2 die geraden Zeilen von A aus (II) mit den ungeraden Spalten von B aus (III)

multipliziert durch Aktivierung von PROGRAMM 1 jeweils in beiden Prozessoren.

Page 50: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 42-

(iv) Fragen aus dem Beispiel:

Dieses Beispiel wirft 2 Fragenkomplexe auf:

1) Wie kann man den gleichzeitigen Aufruf des Skalarprodukt­Programms spezifizieren?

Spezielle Programm-Anweisungen erweiterter Programmier­sprachen, wie sie z. B. durch die Anweisungen

o FORK, d. h. "VERZWEIGE" o JOIN, d. h. "VEREINIGE"

gegeben sind und in der Organisation konkurrenter Pro­gramme eine Rolle spielen, können vom Programmierer explizit verwendet werden, um zwei separate Kontroll-Pfade zu initiieren (Conway).

Man könnte von den Compilern erwarten, daß solcher Parallelismus automatisch entdeckt und bei der Ausführung durch entsprechende Zuteilung der Aufgaben an die einzel­nen Prozessoren berücksichtigt wird.

2) Wie muß die Organisation der Speichereinheiten angelegt sein? Kann der Programmierer über die Speicherung der Felder entscheiden? Entscheidet der Compiler darüber?

Die meisten realisierten Multiprozessoren haben höchstens 4 Prozessoren; zwei Prozessoren sind am üblichsten; die Prozes­soren sind in der Regel identisch. Systeme, die über 4 Prozessoren hinausgehen, sind Spezialsysteme, die vom Gene­ral-Purpose-Rechner und seinen Anwendungen stark abweichen und den Parallelprozessorsystemen eher zugerechnet werden müssen.

Oft haben große oder spezielle Computer einfachere Vor­rechner ("Front-End") zur Kommunikation mit der Außenwelt.

(v) Performance

Die Performance eines Multiprozessor-Systems variiert sehr stark in Abhängigkeit von den Aufgaben, die es erledigen soll, d. h. von dem sog. "Workload-Profil".

Wenn alle Aufträge vorher genau bekannt sind, mag die Leistungsbeschränkung nicht ganz so ernst sein, als wenn eine statistische Folge von in ihren Anforderungen nicht bekannten Jobs in realer Zeit in die Warteschlangen des Systems eingehen.

Im allgemeinen kann bei einer normal breiten Zusammenset­zung des Aufgabenprofils der Jobs, die in statistischer Folge dem System zur Bearbeitung vorgelegt werden, z. B. in einem wissenschaftlichen Rechenzentrum, erwartet werden, daß der Durchsatz eines p-Prozessor-Mul tiprozessorsystems wesentlich unter dem p-fachen Durchsatz eines entsprechenden Monopro­zessors, d. h. dem Durchsatz von p unabhängigen Rechner­systemen mit jeweils 1 Prozessor, liegen wird.

Page 51: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 43-

So gelten die folgenden Richtwerte für Performance-Zahlen in der Praxis:

Zahl der Prozessoren im Multiprozessor

1 2 4

Durchsatz

1 1.5 - 1.7 ca. 2.5

Trotz dieser Verluste beim Durchsatz lassen sich solche Multiprozessorsysteme bisher damit rechtfertigen, daß bei den Kosten oft die Speicherhierarchie mehr als die Hälfte aus­machte.

Wenn also die Verdopplung der Control Unit und des Prozessors die Gesamtkosten um 50 % erhöhte, so war dies bei einer Performance-Erhöhung auf 1.5 gerechtfertigt. Entsprechend würden sich beim Vierprozessorsystem die Kosten um 100-150 %erhöhen.

Eine der Konsequenzen der Erhöhung der Prozessorzahl ist das nötige Anwachsen des Hauptspeichers.

Doch geht man davon aus, daß wegen der Mischung der Programmgrößen der Speicher nicht linear oder noch stärker mit der Zahl der Prozessoren wächst.

Man kann davon ausgehen, daß unter der Voraussetzung, daß die Probleme der Organisation eines Multiprozessors mit einem geeigneten Betriebssystem und daß auch die Speicherzugriff­konflikte gelöst sind, ein Multiprozessor-System mit gemein­sam benutzter Speicherhierarchie in der Tat kosten-effektiver erschien als entsprechend vielfache unabhängige Monoprozes­sor-Systeme.

Andererseits sollte man sich der Tatsache bewußt sein, daß die Grenzen dieses Konzeptes in der realen Welt der General­Purpose-Computer offenbar bei 4 Prozessoren liegen.

Alle größeren Hersteller bieten Multiprozessoren für General­Purpose-Profile an, aber keiner versprach in den 70-er Jahren mehr als 4 Prozessoren als ernsthafte Lösung der Kosten/Nut­zen-Frage.

Ein wichtiger Vorteil von Systemen mit mehreren identischen Prozessoren ist ohne Zweifel die Redundanz, die höhere Zuverlässigkeit und Verfügbarkeit liefert.

Wenn einer der Prozessoren ausfällt, kann oftmals das System weiterarbeiten, wenn auch mit geringerer Gesamtleistung.

Somit sind Multiprozessoren attraktiv für Online-Systeme wie Buchungssysteme bei Banken und Großbetrieben oder wie Datenbanken, aber auch bei Flugüberwachungssystemen und Systemen für die Überwachung großtechnischer Systeme und für die Raumfahrt.

Page 52: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 44-

1.2.2 Multifunktions-Prozessoren

Maschinen nach dem Prinzip der Multiprozessoren erreichen die höhere Verarbeitungsgeschwindigkeit auf Kosten mehrerer Prozes­soren und Leitwerke.

Wenn wir in der Lage wären, einzelne Programme zu beschleunigen, indem mehr als eine Operation gleichzeitig aus einem einzelnen Instruktionsstrom abgearbeitet würde, könnten die Probleme der Zuweisung der Betriebsmittel, des Scheduling und des Zugriffskon­fliktes bei mehrfachen Instruktionsströmen reduziert werden.

In dem hier dargestellten Konzept finden wir einen Prozessor und eine Control Unit, aber der Prozessor kann mehr als eine "Funktion" zur gleichen Zeit ausführen (Abb. 1.14).

(1) Funktionseinheiten

Jede "Funktions-Einheit" hat e1mge Register, um die zur Ausführung der jeweiligen Funktion erforderlichen Operanden zu speichern und bereitzuhalten.

Eine Einheit aus "allgemeinen Registern" ("General Register") wird von allen Funktionseinheiten gemeinsam genutzt ("sharing"), um Operanden und Ergebnisse zwischenzuspei­chern. Diese Register enthalten auch Zwischenergebnisse aus Rechenschritten, die später, in späteren Schritten der Berech­nung, als Operanden dienen sollen.

Alle Register und die Ausgänge der Funktionseinheiten sind über einen gemeinsamen "Bus" verbunden, der eine schnelle Datenübertragung zwischen den einzelnen Punkten gewähr­leistet.

Die Definition von "Funktions-Einheit" variiert natürlich von Design zu Design.

Typische Funktions-Einheiten sind

- F estkomma-Addierer - Gleitkomma-Addierer - Gleitkomma-Multipli zierwerk - Boolesche-Logik-Einheit, usw.

(2) Parallelverarbeitung mit Multifunktionen

Hat z. B. eine Maschine unabhängige (Gleitkomma-)Addier-und Multiplikations-Einheiten, so kann die Anweisung

X= (A * B) + (C + D)

so ausgeführt werden, daß zunächst gleichzeitig

(A * B) und (C + D)

bearbeitet werden, und nach Beendigung dieser ersten Stufe die beiden Ergebnisse addiert werden. Dies beschleunigt die Berechnung.

(3) Beispiel: Skalarprodukt

Zur Illustration wollen wir zurückkehren zu unserem Beispiel der Berechnung des Skalarproduktes zweier Vektoren der LängeN, wie wir es im PROGRAMM 1 dargestellt hatten.

Page 53: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 45-

Wenn wir im Gegensatz zum Monoprozessor-System der frühe­ren Gestalt jetzt 2 unabhängige Addier- und Multiplizierwerke voraussetzen, so zeigt der Parser-Baum, wie das innere Produkt berechnet werden könnte (z. B. für N = 4 in Abb. 1.15).

Mit Ausnahme der Multiplikation von A(1) und B(1) am Anfang und der letzten Addition von A(N) * B(N) zu T können beide Funktionseinheiten, Addierer und Multiplizierer, in jedem Zeitschritt parallel eingesetzt werden.

Die gesamte Ausführungszeit wird somit von 2N im seriellen Fall des Monoprozessors auf (N + 1) Zeitschritte herabgesetzt.

Das bedeutet einen Speedup von

und eine Effizienz von

E(Z) = ( 2N N+1

(4) Parallelisierung

1 /V 1 )'2 /V •

Im Gegensatz zum Multiprozessor werden im Multifunktions­system neben der Speicherhierarchie auch das Leitwerk von den Funktionseinheiten gemeinsam genutzt sowie die allge­meinen Register, deren Zahl in einem gewöhnlichen Monopro­zessor aber beträchtlich kleiner sein kann.

o Als neue Komplikation tritt hier jedoch hinzu, daß der potentielle Parallelismus der Operation ja jeweils erst aufgefunden werden muß.

Dies kann im Prinzip von einem Compiler gemacht werden oder von spezieller Hardware, oder einer geeigneten Kom­bination aus beiden Lösungen.

In der Wirklichkeit kann die manuelle Codierung der Pa­rallelität sehr effektiv sein, wenn nicht ein guter opti­mierender Compiler vorhanden ist.

o In jedem Falle aber werden das Leitwerk und der Prozessor wesentlich komplexer als bei den vorher diskutierten Rech­nersystemen; denn die hier aufgezeigte Parallelverarbeitung in den Funktionseinheiten kommt zu der vorher diskutierten Überlagerung von Prozessor-, Speicher-und Leitwerkaktivi­täten noch hinzu.

o Das Leitwerk muß in der Lage sein, eine Anzahl ganz unterschiedlicher Operationen auf einmal zu koordinieren, während wir im Multiprozessorsystem p separate Instruktionsströme haben.

o Hier tauchen die Fragen auf, wie hoch solche Parallelität in den Programmen sein kann und wieviele unabhängige Operationen mit vertretbarem Hardwareaufwand noch ausgeführt werden können.

Page 54: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 46-

(5) Reale Systeme des Multifunktionstyps

Trotz der Schwierigkeiten und Probleme sind einige Computer­systeme nach diesem Organisationstyp wirklich entwickelt worden, zuerst in den frühen 60-er Jahren.

So haben die sehr erfolgreichen Systeme CDC-6600 und der Nachfolger CDC-7600 sowie die CYBER-Modelle, die davon abgeleitet wurden, im wesentlichen solche Organisationen, wenn auch hier noch andere Strukturelemente hinzukommen.

Im weiteren Sinne sind somit die Systeme CRA Y -1 und CYBER-203, die in die Kategorie Vektor-/Pipeline-Prozessoren fallen, zumindest teil weise zu dem Konzept der Multi­funktions-Prozessorsystemen zu zählen (Abb. 1.16).

Aber auch die Systeme IBM/360-91 und IBM/360-195 folgten teilweise diesem Prinzip.

Die Zahl der Funktionseinheiten in solchen Systemen reicht von 2-10.

(6) Paralleli tätsanalyse

Wir haben gesehen, daß es möglich ist, zumindest konzeptionell durch die Einführung der gleichzeitigen Ausführung von In­struktionen, arithmetischen Operationen oder noch kom­plexeren Funktionen Prozessoren zu entwerfen, die schneller als die vorher diskutierten Monoprozessoren oder auch Multi­prozessoren sein können.

So hatten wir in einem einfachen Fall, nämlich unter der Voraussetzung je eines Addierwerkes und eines Multiplizier­werkes, die unabhängig voneinander arbeiten können sollten, für das Skalarprodukt zweier Vektoren eine Geschwindigkeits­erhöhung um den Faktor 2 gegenüber dem Monoprozessor erzielt.

Um den Vorteil solcher Multifunktionssysteme aber ausnützen zu können, müssen die Programme einen gewissen Grad an Parallelität enthalten, der sich umsetzen läßt auf die Struktur des Multifunktionssystems.

Man kann 4 Ebenen definieren, auf denen Parallelismus entdeckt, analysiert und für die Ausführung umgesetzt werden kann:

(i) Der Programmierer:

Auf der Programmierer-Ebene müssen Sprachelemente verfügbar sein, mit denen angezeigt werden kann, daß gewisse Operationen oder Operationenfolgen parallel zueinander ausgeführt werden können.

Bei der Diskussion des Multiprozessorkonzeptes hatten wir als eine solche Möglichkeit die Befehle FORK und JOIN für die Aufspaltung und Wiedervereinigung von Instruktionsströmen kennengelernt. FORK und JOIN stellen Erweiterungen von Sprachen dar, die für sequen­tielle Programme entwickelt wurden.

Page 55: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 47-

(ii) Der Compiler:

Eine zweite Ebene ergibt sich, wenn der Compiler in der Lage ist, aus der Anweisungsfolge gewöhnlicher, seriell konzipierter Sprachen die Operationen für die parallele Ausführung geeignet zu compilieren, nachdem während des Compile-Steps der inhärente Parallelismus vom Compiler entdeckt wurde.

In jedem der Fälle (i) und (ii) muß das Leitwerk des Systems fähig sein, mehrere Operationen auf einmal in ihrer Abfolge zu koordinieren; solche Operationen müssen im compilierten Programm besonders für die Parallelausführung zu kenn­zeichnen sein.

(iii) Das Leitwerk:

Diese 3. Ebene überträgt die Aufgabe für die Ent­deckung des Parallelismus im Programm dem Leitwerk.

In diesem Fall würde das Leitwerk mit seriellem compiliertem Code versorgt, und zur Ausführungszeit müßte das Leitwerk vorausschauend (Stichwort: "Look ahead") die parallel ausführbaren Instruktionen zu er­kennen versuchen und geeignete Schritte zur Parallel­verarbeitung dieser Instruktionen oder Instruktionsfolge einleiten.

(iv) Der Prozessor:

Wenn wir die Analyse und Behandlung des Parallelismus auf die Ebene des Prozessors verlagern, haben wir es natürlich ebenfalls mit sehr harten Forderungen an das Realzeitverhalten des Systems zu tun.

Auf dieser Ebene müßten praktisch die Funktionsein­heiten selbst die Entscheidungsinstrumente enthalten, um bestimmen zu können, wann sie unabhängig vonein­ander parallel auf verschiedenen Operanden arbeiten müssen.

Es ist offensichtlich, daß jede dieser Ebenen Vorteile und Nachteile, aber auch unterschiedliche Schwierigkeitsgrade der Entdeckung und Behandlung inhärenten Parallelismus birgt.

Zum Beispiel ist die Entdeckung gewisser Typen von Paralle­lismus durch den Programmierer, der sein Problem und seine Programmiersprache beherrscht, sicherlich der einfachste Weg.

Sprachen mit geeigneten Erweiterungen in Richtung auf Parallelverarbeitung würden von den Programmierern zu­nächst sicher anderen Methoden vorgezogen, obwohl die eventuell sehr komplexen Programmtransformationen und das Programmieren überhaupt sehr schwer und aufwendig wäre.

Solche Transformationen dürften aber in vielen Fällen auch zu komplex sein, um sie auf Hardware-Ebene während der Ausführungszeit analysieren und realisieren zu können.

Page 56: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 48-

(7) Speedup versus Aufwand

Im folgenden wollen wir anhand eines einfachen Programm­abschnittes einen Eindruck gewinnen vom Zusammenspiel zwischen dem investierten Aufwand an Funktionseinheiten einerseits und dem damit zu gewinnenden Leistungszuwachs eines Multifunktionssystems durch höhere Parallelität.

Wir wollen uns dabei auf den Multifunktions-Prozessor konzen­trieren und Leitwerk sowie Speichersystem etwas hintenan­stellen.

Wir wollen aber annehmen, daß Leitwerk und Hauptspeicher hinreichend schnell seien, um das System nicht zu behindern und den Instruktions- und Datenfluß aufrecht zu erhalten. Wir nehmen weiter an, daß die Instruktionen, die auftreten, immer verfügbar seien und im richtigen Zeitpunkt abgeschickt werden können.

Wir gehen aus von dem folgenden Quellprogramm-T extab-schnitt:

A = (B + C) * (D + E)

(I) F = G+H+l+J

H = K*L*M

Dabei seien B, C, D, E, G, H, I, J, K, L, M aus dem vorhergehenden Programmteil definierte, irgendwie dekla­rierte Variablen oder auch ggf. Konstanten.

Die letzte Anweisung führt zur neuen Berechnung der Variable H, nachdem H zur Berechnung von F herangezogen worden ist.

Ein Compiler möge diesen Quellprogramm-Teil (I) in der folgenden Weise übersetzt haben:

(II)

1 T1

=B+C

2 T2

=D+E

3 A =T1 *Tz

4

5

6

7

8

T3

T4

F

T5

H

=

=

=

=

=

G+H

I+ J

T 3 + T4

K*L

T * M 5

Dabei sollen die T., i = 1, ••• , 5, temporäre Register­Zuweisungen sein, die

1 der Compiler während der Übersetzungs­

zeit vorgenommen hat.

Page 57: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(III)

(IV)

ZEIT-

- 49-

Wir gehen davon aus, daß der Multifunktions-Prozessor über unabhängig arbeitende Addier- und Multiplizier-Einheiten ver­fügt, die zur Ausführung der entsprechenden Operation jeweils 1 Zeitschritt benötigen, und zwar unabhängig von der Funktion Addition oder Multiplikation.

Auf einem seriellen Monoprozessor würden daher die 8 Operationen dieses Teilprogramms insgesamt 8 Zeitschritte zur vollständigen Ausführung brauchen.

Dabei seien natürlich alle Zeitverzögerungen durch Zugriffs­probleme, Kommunikationsschritte und Datentransport ver­nachlässigt.

Da das Programm 5 Additionen und 3 Multiplikationen enthält, sollte es im Idealfall möglich sein, das Programm in einer Zeit von

Max (5,3) = 5 Schritten

zu beenden, wenn wir einen Prozessor mit unabhängigen Addierern und Multiplizierern zur Verfügung haben.

Wenn wir zunächst annehmen, daß der Prozessor 1 Addier­Einheit und 1 Multiplizier-Einheit hat, so läßt sich für den optimalen Ablauf die folgende zeitliche Zuordnung der einzel­nen Instruktionen angeben:

1 2 3 4 5 SCHRITT

ADDIER- B+C(T ) D+E(T ) G+H(T ) I+J(T ) T 3+ T 4(F) EINHEIT 1 2 3 4

MUL TIPLIZIER- T 1 *T 2(A) K*L(T ) T 5 *M(H) EINHEIT 5

Wenn wir jetzt von einem Prozessor mit 2 Addier-Einheiten und 1 Mul tiplizier-Einheit ausgehen, läßt sich die Gesamtaus­führungszeit weiter verkürzen, und das bedeutet: die Ge­schwindigkeit des Multifunktionssystems weiter erhöhen.

Dabei werden aber die Probleme der Steuerung und Kontrolle größer.

Wenn wir die Folge der Instruktionen analysieren, finden wir, daß unter den gegebenen Bedingungen die Instruktion 7 im Compilat (II), die Multiplikation K*L, zur selben Zeit wie die Instruktionen 1 und 2, die Additionen B+C und D+E, begonnen werden kann.

ZEIT -SCHRITT 1 2 3

ADDIER-EINHEIT 1 B+C(T ) G+H(T ) T 3+ T 4(F) 1 3

ADDIER-EINHEIT 2 D+E(T ) I+J(T ) 2 4

MULTIPLIZIER-EINHEIT K*L(T ) T *T T 5*M(H) 5 1 2(A)

Page 58: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 50 -

Während das Schema (III) gegenüber der seriellen Verarbeitung einen Speedup ergibt

SIII/II = 8/5,

liefert das Schema (IV) einen Speedup gegenüber (III) von

SIV /III = 5/3

und gegenüber dem seriellen Verarbeitungsschema von (II)

SIV /II = 8/3.

o Gegenüber dem Schema (III) erfordert der höhere ParaUe­li tätsgrad des Schemas (IV) die Kosten für eine Addiereinheit mehr.

Nehmen wir jetzt an, daß der Prozessor relativ frei über Addier- und Multiplizier-Einheiten verfügen kann.

Unter dieser Voraussetzung können wir für die Programm­Anweisungen des Abschnittes (I) Parser-Bäume konstruieren mit minimaler Baum-Höhe.

Wir werden auf diese Fragestellung bei den algorithmischen Möglichkeiten der Parallelisierung zurückkommen (Kap. 3).

Für das vorliegende Beispiel ergibt sich, daß das Programm in einer Minimalzeit von 2 Zeitschritten ausgeführt werden kann; dazu benötigen wir einen Prozessor mit

und 4 2

Addier-Einheiten Multiplizier-Einheiten.

Dieses Schema (V) der reduzierten Bäume ist in Abb. 1.17 dargesteH t.

Der Speedup dieses optimalen Schemas (V) gegenüber dem seriellen Schema (II) ist:

sv /II = 8/2 = 4.

Der Speedup des Schemas (V) gegenüber dem System (III) mit 1 Addierwerk und 1 Multiplizierwerk ist:

SV /III = 5/2.

Allerdings benötigt dieses System wesentlich mehr Ressourcen als das System (III):

System (III) (V)

Addier- 1 4 Einheiten

Multipli zier- 1 2 Einheiten

Page 59: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

-51-

Gehen wir der Einfachheit halber von gleichen Kosten für Addier-Einheit und Multipliziereinheit aus, so fordert das System (V) gegenüber dem System (III) den 3-fachen Auf­wand an unabhängigen Funktionseinheiten, um die Ge­schwindigkeitserhöhung um den Faktor 2,5 zu erzielen.

Im Hinblick auf die Kosten des Gesamtsystems ergibt dies sicherlich ein günstiges Kosten/Nutzen-Verhältnis.

o An diesem Beispiel läßt sich auch die Problematik erkennen, die mit der Analyse und Behandlung des Parallelismus durch die Compiler zur Übersetzungszeit verbunden ist gegenüber der Behandlung durch das Leitwerk zur Ausführungszeit.

o Zum Beipiel ist die Summe B+C dem Register T 1

, das Produkt K*L dem Register T

5 zugewiesen.

Hätte der Compiler aus Gründen sparsamer Registerver­waltung beide dem Register T

1 zugewiesen, dann wäre

während der Ausführungszeit die parallele Ausführung der beiden Operationen wie im Schema (IV) blockiert gewesen.

1.2.3 Pipeline-Prozessor-Systeme

Index-Register und Einheiten für Index-Arithmetik werden seit langem in den Rechnersystemen verwendet, um auf den Speicher unter Ausnutzung der spezifischen Struktur von Datenfeldern zuzugreifen. Im Zusammenhang mit DO-Schleifen hatten wir die Funktion von Index-Registern beim Abarbeiten eines seriellen Programmes für die Berechnung des Skalarproduktes auf einem Monoprozessor kennengelernt. Bisher wurden aber die einzelnen Felder jeweils nur in ihren einzelnen Elementen zu einer be­stimmten Zeit und zeitlich nacheinander angesprochen; die Verar­beitung erfolgte entweder streng seriell oder allenfalls durch gleichzeitige Verarbeitung von nur sehr wenigen Elementen parallel.

Ausgehend von den soeben diskutierten Funktionseinheiten wollen wir uns Computersystemen zuwenden, die auf eine große Zahl von Elementen eines Datenfeldes "gleichzeitig" zugreifen können und auch eine große Zahl von Elementen "auf einmal" verarbeiten können.

Beispiele für solche Systeme sind jedenfalls die im Zusammenhang mit den Multifunktions-Prozessorsystemen vorgebrachten und in ihrer Funktionseinheiten- und Register-Struktur gezeigten Systeme CRAY -1 und CYBER-203, die als Vektor-/Pipeline-Prozessoren bezeichnet werden.

Zur Gruppe der wichtigsten Architekturprinzipien von Höchstlei­stungsprozessoren gehört seit Jahren das Pipelining-Konzept, das wir in diesem Abschnitt in seinen wesentlichen Eigenschaften kennenlernen wollen. Diese Eigenschaften wollen wir im Kontext dieses Kapitels in der Gegenüberstellung mit den anderen Pro­zessor-Str,ukturen sehen.

Page 60: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 52 -

(1) Die Idee des Pipelining: Segmentierung

Die grundlegende Idee des Pipelining liegt darin, daß eine in einem seriellen System komplexe, zeitraubende Funktion oder Operation in eine Reihe einfacherer und schnellerer Opera­tions- oder Funktions-Segmente zerlegt wird, deren Zeitauf­wand etwa gleich groß ist (Abb. 1.18).

Jedem der k Segmente S. entspricht nun eine autonome Subfunktion, der man ein aulonomes, in der Reihenfolge durch das Segment S. fest zugeordnetes Subfunktionsmodul zuordnen kann, das hardwaremäßig realisiert werden soll, M., um die Subfunktion S. auszuführen.

1

1

Diese Subfunktions-Einheiten oder -Module werden ent­sprechend der Segmentierungsfolge derart hintereinander an­geordnet, daß durch Aufeinanderfolge der Ausführung der Subfunktionen die gesamte Operation durchlaufen wird. Die Segmentierung ermöglicht jetzt aber, daß eine Art von Gleichzeitigkeit oder Parallelität der Operationsausführung dadurch hergestellt wird, daß die Operanden in die Sequenz der Module M. nicht erst dann nacheinander eintreten müssen, wenn jewJils das Ergebnis der gesamten Operation das Ge­samtmodulsystem verläßt, sondern daß der nächste Operand bereits dann in das erste Segment S 1 bzw. Modul M.l eintreten kann, wenn der vorhergehende Operand in M 1 5zgl. der Subfunktion S abgearbeitet ist und das Ergebms des ersten Schrittes zur Weiterverarbeitung in das 2. Segment s 2 eintritt.

Auf diese Weise läßt sich das Modulsystem nacheinander mit Operanden füllen.

Taktet man diese Modulsequenz in einer festen Periode, so wird bei jedem Takt das Zwischenergebnis aus Modul M. an das Modul M.

1 weitergegeben, während ein neuer Operand bei

M1

in das syitem eintreten kann und ein jeweiliges Endergeb­nis bei Mk nach Beendigung der Subfunktion Sk das System verläßt. Eme solche Modul-Sequenz heißt: Pipeline.

Daß bei zahlreichen, in Rechenanlagen häufig anstehenden Operationen eine solche Segmentierung möglich ist, zeigen die arithmetischen Operationen. Zum Beispiel umfaßt jede Gleit­kommaoperation eine Verarbeitung der Exponenten, Verschie­bungen der Mantissen, die arithmetische Operation selbst, die bei der Multiplikation wiederum aus einer Sequenz von Additionsoperationen bestehen kann, sowie die abschließende Renormalisierung der Zahlendarstellung.

Page 61: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 53-

(2) Gleitkomma-Addition und -Multiplikation

Die Segmentierung zum Beispiel der Gleitkomma-Addition und -Multiplikation bildet die Grundlage für das Pipelining von Funktionseinheiten im Rechenwerk eines Monoprozessors oder im Prozessor eines Multifunktions-Prozessorsystems und wird sehr oft als Architekturelement der Prozessoren eingesetzt. Wir wollen deshalb das grobe algorithmische Schema für die Gleitkomma-Addition und die Gleitkomma-Multiplikation reka­pitulieren.

Wir gehen davon aus, daß sich die Operanden der Gleitkomma­Operationen in der bekannten Farm darstellen lassen:

EXP GK1 = MAN1 x B 1;

EXP GK2 = MAN2 x B 2.

Dabei ist B die Basis der Zahlendarstellung, also z. B. 2, und MAN bezeichnet die Mantisse der Gleitkommazahl GK in der Darstellung zur Basis B. Die Mantisse habe die Länge m, z. B. m Bits, der Exponent die Länge e, z. B. e Bits (zur Basis 2).

Für diese Darstellung ergeben sich die Operationen, die algorithmisch bzw. hardwaremäßig umgesetzt werden müssen, als Formel wie folgt:

Addition:

{

(MAN1

+MAN2

xB-(EXP1-EXP2))xBEXP1, wenn

GK1 +GK2= EXP 1 ~ EXP 2;

(MAN 1

xB -(EXP 2-EXP 1) +MAN2

)xBEXP 2, wenn

EXP 2

)' EXP 1

;

Multiplikation:

GK1

xGK2

= MAN1

xMAN2

xB(EXP1+EXP2)

(3) Algorithmisches Schema der Gleitkomma-Addition

Bei der Realisierung auf der Maschine müssen schrittweise Einzeloperationen ausgeführt werden für die Addition (Abb. 1.19):

(i)

(ii)

Die Exponenten müssen verglichen werden.

Entsprechend der Differenz der Exponenten muß die Mantisse, die zum kleineren Exponenten gehört, ver­schoben werden.

(iii) Die Addition der Mantissen muß durchgeführt werden.

(iv) Das Ergebnis muß wieder durch Verschiebung und Anpassung auf das normalisierte Format gebracht wer­den.

Page 62: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 54 -

(v) Dabei muß bzgl. der Mantisse auf "Overflow" geprüft werden.

(vi) Vorher muß bzgl. der Exponentendifferenz auf Man­tissen..!.'Underflow" geachtet werden.

(4) Algorithmisches Schema der Multiplikation: (Abb. 1.20)

Neben den Mantissenoperationen sind Overflow-Probleme der Exponenten und der Ergebnismantisse zu behandeln, wenn jeweils die durch die Darstellung vorgegebenen Längen über­schritten werden, usw.

(5) Pipeline für Gleitkomma-Addition

Beschränken wir uns zunächst auf das Schema der Gleit­komma-Addition, so lassen sich 4 Segmente als Partitionierung der Gesamtoperation definieren:

s1:

52 :

53:

54:

Exponenten-Vergleich (COMPARE)

Mantissen-Verschiebung (SHIFT)

Mantissen-Addition (ADD)

Normalisierung des Ergebnisses auf Gleitkom­ma-Normformat (NORMALIZE)

Diesen Segmenten lassen sich einzelne Funktionseinheiten zuordnen, deren Sequenz die Operation "Gleitkomma-Addition" hardwaremäßig ausführen kann und als solche eine Pipeline bildet (Abb. 1.21).

(6) Pipeline für Gleitkomma-Multiplikation

Wir wollen jetzt annehmen, daß sich entsprechend dem algorithmischen Schema (Abb. 1.20) die Multiplikation sich in k Segmente s

1, ... , Sk zerlegen läßt. Wir können im Prinzip

annehmen - und werden später sehen, daß solche Lösungen tatsächlich in Rechnersystemen realisiert sind -, daß andere, in ihrer Segmentierung aus weniger Subprozessen bestehende Operationen dieselbe Pipeline benutzen können, sofern wir zulassen, daß kürzere Operationen etwa einzelne dieser Seg­mente aus der längeren Operation überspringen können.

Zur weiteren Illustration des Pipeline-Prinzips wollen wir die Ausführung eines einfachen Programms betrachten, das die komponentenweise Multiplikation zweier Vektoren der Länge N » 1 ausführen soll:

DO P I = 1, N

P X(I) = A(I) * B(I)

Dazu können wir uns die Pipeline (Abb. 1.22) mit den Segmenten S 1, ••• , Sk' welche die Multiplikation ausführen, versehen derll<en mi'f 3 allgemeinen Registern für die Elemente der 3 Vektoren A, B und X.

Page 63: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 55-

Zu Beginn werden die Datenfelder A und B mit allen ihren Elementen aus dem Hauptspeicher in die zugehörigen allge­meinen Register gebracht. Diese Register seien groß genug, um alle Elemente aufnehmen zu können.

Die Verarbeitung wird durch eine Uhr im festen Rhythmus 8 getaktet. Die Verarbeitung beginnt, sowie die ersten Operan­den

A(1) und B(1)

aus den allgemeinen Registern zum Segment S 1

der Pipeline transportiert worden sind. Wenn die Bearbeitung der beiden Operanden im l. Segment beendet ist, wird das Zwischenergeb­nis weitergereicht an das 2. Segment s

2 und dort entsprechend

der Aufgabe dieses Subprozesses weiterverarbeitet.

Dann wird das Zwischenresultat aus dem 2. Segment zum 3. Segment weitertransportiert, dort bearbeitet und weiter­geleitet usw.

Diese Prozedur läuft so weiter, bis das Endresultat X(1) aus dem Segment k, \' herauskommt und die Pipeline verläßt, indem es in das zugehörige allgemeine Register AR(X) abge­speichert wird.

Das Pipelining-Prinzip erlaubt es aber jetzt, daß in dem Zeitpunkt, da das Zwischenergebnis aus dem l. Segment bzgl. A(1) und B(1), sagen wir Z 1 (1), das l. Segment S

1 verläßt und

zum 2. Segment übertragen wird, die zwei nächsten Operanden A(2) und B(2) aus den Registern in das l. Segment der Pipeline eintreten und verarbeitet werden.

Dieser Prozeß läuft sukzessive im festen Takt 0 ab.

Während also X(1) nach k Takten die Pipeline schließlich verläßt, treten die Zwischenergebnisse bzgl. A(2) und B(2) in das letzte Segment Sk ein; die Zwischenergebnisse bzgl. A(3) und B(3) gelangen zu diesem Zeitpunkt in Sk_1, usw., bis hinunter zum l. Segment s

1, wo gerade A(k+1) und B(k+1) die

Pipeline betreten. Der Prozeß ist weitgehend dem Ablauf an einem Montage-Fließband analog. Jedes Segment leistet einen gewissen, funktionell und zeitlich begrenzten, den Prozeß aber weiterführenden Beitrag zur Durchführung einer Gesamtopera­tion bis zum Endresultat, das dann die Pipeline verläßt bei Sk.

(7) Funktionale Organisation arithmetischer Pipelines

Eine arithmetische Pipeline-Einheit besteht aus einer Sequenz von Hardware-Einheiten für spezielle Funktionen der Pipeline, die den Segmenten S. entsprechen. Jedes Segment ist im wesentlichen ein spezielles arithmetisches Schaltnetzwerk, wie wir es früher als "Combinational Logic Circuit" kennengelernt haben.

Jedes Segment benötigt zur Erledigung seiner Teilaufgabe eine bestimmte Zeit:

t. ' j = 1, 2, ... , k. J

Page 64: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

-56-

Benachbarte Segmente haben als Schnittstelle (Interface):

synchronisierte Register (Latches),

welche die Eingabe- und Ausgabe-Bitmuster aufeinander­folgender Segmente aufnehmen (Abb. 1.23).

Die (j-1.)-0utput-Bits des Segmentes S. dienen als (v. 1)-Input-Bits zJm SegmentS.

1. J J+

)+ Um die Pipeline-Operation zu regulieren, muß der synchroni­sierende Zeittakt 8 geeignet, den einzelnen Segment-Delays infolge der Subprozesse entsprechend gewählt werden:

8 = Max { tj } + tl,

1"-j~k

wobei tl die Zeit ist, die ein synchronisiertes Interface­Register (L = Latch) benötigt, um die nötige Information zwischen zwei Segmenten-Nachbarn zu transportieren.

Demnach - und natürlich - ist der Takt und damit die Leistung der Pipeline bestimmt durch das Segment mit dem größten Delay t.. Die beiden Endsegmente haben zusätzliche Interface­Registet zur Behandlung von Eingabe und Ausgabe der Pipe­line.

Jedes synchronisierte Register (Latch) gibt seine Information erst dann an seinen rechten bzw. unteren Nachbarn, ein Segment, weiter, wenn es entsprechend dem Zeittakt 8 von der externen Uhr angestoßen wird. Diese Register sind in der Regel sehr schnell gegenüber den Segmentzeiten:

(8) Raum-Zeit-Diagramm

Die Funktionsweise einer Pipeline läßt sich in dem sog. Raum­Zeit-Diagramm noch veranschaulichen.

Dazu ordnen wir der Folge der Gesamtoperationen, z. B. den Multiplikationen der Vektorkomponenten A(I), B(I), I= 1, 2, ... , N, die Folge der - in diesem Fall bis auf die Operanden gleichen- Prozesse P., i = 1, 2, ... , N, zu (Abb. 1.24).

I

Die Segmentierung zerlegt nun jeden Prozeß P. in jeweils k I Unterprozesse:

1 2 k P. ~ P., P., ... , P.,

I I I I

die in den Segmenten der Pipeline der vorgegebenen Ordnung gemäß abgearbeitet werden sollen.

Jeder Subprozeß benötigt der Synchronisierung gemäß in der Pipeline die Zeit 8.

Damit läßt sich das Raum-Zeit-Diagramm konstruieren, wie es in Abb. 1.24 dargesteHt ist.

Page 65: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 57 -

Zum Auffüllen der Pipeline aus k Segmenten sind am Anfang des Funktionsablaufs als sog. Aufbau-Zeit k Zeitschritte Vorlauf erforderlich. Nachdem die Pipeline sich gefüllt hat und bevor sie wieder leerläuft, ist jede Segmentierungsstufe aktiv in der Abarbeitung des zugewiesenen Subprozesses.

(9) Speedup einer Pipeline

Wenn wir sinnvollerweise annehmen, daß die Zeit für einen Durchgang durch die ganze k-segmentige Pipeline derjenigen Zeit entspricht, die in einer konventionellen Funktionseinheit ohne Segmentierung der Operation zur Ausführung der Opera­tion erforderlich war, so hat sich für die einzelne, mit einem einzigen Operandensatz durchzuführende Operation nichts ge­ändert. Nehmen wir den Fall der Multiplikation, so liefert eine Pipeline im skalaren Fall, d. h. für N = 1, keinen Vorteil bzgl. der Ausführungszei t.

Für einen Vektor von Operanden - d. h. wenn wir jeweils große Datenfelder mit derselben Operation abarbeiten wollen, wie in unserem Beispiel der komponentenweisen Multiplikation zweier langer Vektoren mit N:>.> k - liefert das Pipeline-Prinzip einen Zeitgewinn um den Faktor k gegenüber der konventionell­seriellen Operationsweise.

Das ergibt sich durch den Ausstoß von Ergebnissen aus dem Endsegment, sobald die Pipeline einen stationären Zustand erreicht hat: Bei jedem Zeittakt El stößt die gefüllte Pipeline ein Endergebnis aus.

Im konventionellen Fall benötigt das System k Zeittakte bis zum Ausstoß des nächsten Ergebnisses, da ja der Operand, der nachfolgend bearbeitet werden soll, k Zeittakte warten muß, bis die vorhergehende Operation abgelaufen ist.

Der "Speedup" einer Pipeline aus k Segmenten gegenüber der seriellen Version derselben Operation beträgt daher:

T 1 N.k sk = T = k+N-I

k

für N Operanden bzw. Operandensätze. (Die Multiplikation benötigt Operandenpaare: A(I) und B(I)).

Der Nenner kommt dadurch zustande, daß das erste Resultat in der Pipeline ja k Schritte (Takte 8) benötigt, die (N-1) restlichen Ergebnisse aber jeweils nur 1 Schritt: k+(N-1).

Für N >> k ergibt sich somit asymptotisch

= k

Wenn aber die Operandensektoren relativ zu k nur kurz 1 ist Pipelining nicht effektiv wegen der Aufsetz-Zeit der Pipeline (Startup Time).

Page 66: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

-58-

(10) Einfacher Pipeline-Rechner

Aufgrund der Pipelining-Struktur für arithmetisch-logische Einheiten läßt sich aus der bisherigen Diskussion ein ein­faches Modell eines Rechners mit Pipelining-Architektur definieren, dessen Prozessor aus allgemeinen Registern und Pipelines besteht.

Obwohl reale Pipeline- Prozessoren, wie wir noch sehen werden, aus mehreren Pipelines für verschiedene Spezial­funktionen bestehen können, wollen wir hier für die Darstel­lung des Prinzips nur 1 Pipeline einbauen (Abb. 1.25).

(11) "Alignment"-Netzwerk

Wie im Falle der Multiprozessor-Architektur und der Multi­funktionsprozessor-Architektur und ganz allgemein bei Systemkonzepten, die wesentliche Geschwindigkeitssteige­rungen gegenüber dem Monoprozessorsystem aufweisen sol­len, können beim Pipeline-Prozessor Konflikte beim Zugriff auf die Speichereinheiten entstehen, welche die Datenfelder enthalten. Deshalb ist hier die Organisation des Haupt­speichers und der Speicherhierarchie von besonderer Bedeu­tung. Oftmals müssen die Datenfelder neu angeordnet werden, um sie dem Pipeline-Prozessor in geeigneter Form zuführen zu können. Diesem Zweck dient als Verbindungs­struktur in diesem Funktionsdiagramm das sog. "Alignment"­Netzwerk, das die optimale Kommunikation zwischen den Hauptspeicherbänken und den allgemeinen Registern im Prozessor bewerkstelligen soll.

Hier stellt sich das komplexe Problem, die Daten-Elemente den richtigen Prozessoreinheiten und Speichereinheiten schnellstens und eindeutig zuzuweisen. Ganz allgemein gewinnen komplexe Verbindungsstrukturen in zunehmendem Maße für die effiziente Architektur von Parallelprozessoren an Wichtigkeit.

(12) Instruktions-Pipelining

Bisher hatten wir das Pipelining-Prinzip ausschließlich auf arithmetisch-logische Operationen in den Rechenwerken und ihren Funktionseinheiten angewendet, wie sie in den Funk­tionsdiagrammen des Monoprozessors, des Multiprozessors oder des Multifunktions-Prozessorsystems vorkamen. Solche Pipelines finden wir in den Vektor- Prozessoreinheiten der Großsysteme wie CRA Y -1 oder CYBER-203. Pipelines zur Beschleunigung arithmetischer Operationen finden sich aber bereits in den Hochleistungsrechnern früherer Jahre, so im System IBM/360-91 und IBM/360-195 wie auch CDC-7600. Auch der Vorgänger des CYBER-203-Systems, das Prozes­sorsystem CDC STAR-100 hatte 2 Pipelines für arithme­tische Operationen (Abb. 1.26).

Page 67: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 59-

Das Pipelining-Konzept läßt sich aber auch auf die Funk­tionsweise des Leitwerks übertragen und hier besonders auf die Behandlung der Instruktionen durch das Leitwerk; diese Behandlung kann sogar in eigenen Instruktionsverarbeitungs­Einheiten, in sog. IPU's (Instruction Processing Unit) ange­siedelt sein.

Zur Segmentierung der Instruktionsverarbeitung betrachten wir die Aufgaben, die bei der Instruktionsverarbeitung anfallen; es läßt sich die konventionell serielle Verarbeitung umfassen durch die Schritte:

(1) Holen der Instruktion aus dem Hauptspeicher

(2) Dekodierung und Interpretation der Instruktion

(3) Holen der Operanden für die Ausführung der Instruktion

(4) Ausführung der Instruktion.

Im seriellen Rechner durchläuft die Operation der Instruk­tionsverarbeitung alle 4 Stufen, ehe die nächste Instruktion geholt und verarbeitet werden kann.

Die Strukturierung in die 4 Stufen legt die Möglichkeit der Segmentierung der Instruktionsbehandlung zum Pipelining nahe. Es lassen sich 4 Segmente definieren und ihnen 4 autonome Module zuweisen:

(1) s1 IF (Instruction F etch)

(2) 52 ID (Instruction Decoding)

(3) 53 OF (Operand F etch)

(4) 54 EXEC (Execution)

Entsprechend dieser Struktur lassen sich aus einem kontinuier­lichen Instruktionsstrom 4 Instruktionen jeweils "parallel" im Pipelining-Modus verarbeiten, wenn die 4 Module als Pipeline wie im Falle der arithmetischen Pipelines hintereinanderge­schaltet werden, wobei erneut synchronisierte Register als schnelle Interface-Einheiten fungieren.

Dementsprechend kann das OF -Modul bereits den Operanden für die zweite Instruktion holen, das ID-Modul durch Dekodie­rung der 3. Instruktion die notwendigen Aktionen vorbereiten, und das IF -Modul die 4. Instruktion holen, während das EXEC­Modul die 1. Instruktion ausführt. Dadurch schiebt sich ein kontinuierlicher Instruktionsstrom durch die Pipeline, die gegenüber der seriellen Verarbeitung den 4-fachen Durchsatz im Idealfall aufweist. ·

Im Raum-Zeit-Diagramm läßt sich die Instruktionsverarbeitung in der Pipeline illustrieren (Abb. 1.27).

Page 68: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 60-

(13) Kontrollfunktionen

Da reale Pipeline-Prozessoren mehrere Pipelines enthalten, stellen sich für die Wahrnehmung der Kontrollfunktionen dem Leitwerk sehr komplexe Aufgaben. Das Leitwerk muß die k Segmente jeder Pipeline auf einmal steuern und koordinieren und die gegenseitigen Abhängigkeiten bzgl. der Reihenfolge beachten. Dadurch werden die Leitwerke sehr komplex.

(14) TI-ASC

Ein weiterer Repräsentant der Pipelining-Prozessoren ist der "Texas Instrument Advanced Scientific Computer" (TI-ASC) mit 2 Instruction Processing Units (IPU) und 4 Arithmetic Units (AU) im Prozessorteil des Systems (Abb. 1.28).

Die Arithmetik- Pipelines sind dabei so entworfen, daß verschiedene Instruktionen auf verschiedenen Pfaden zwi­schen den einzelnen Segmenten ausgeführt werden können; dadurch muß nicht für jede arithmetische Operation eine eigene Pipeline ins System eingebracht werden. Obwohl die Komplexität der Pipeline größer wird, läßt sich die Hard­ware insgesamt kompakter halten (Abb. 1.29).

(15) STAR-100

Das System STAR-100 von CDC hat 2 Mehrzweck-Pipeline­Komplexe (Abb. 1.30 und 1.31).

(16) Skalarprodukt auf Pipelineprozessor

Kehren wir zu unserem Beispiel zurück, welches die Be­rechnung des Skalarproduktes zweier Vektoren zum Inhalt hatte:

T = 0

DO P I = 1, N

P T = T + A(I) * B(I)

In einer der Parallelverarbeitung engepaßten Programmier­sprache könnte dieses Programm lauten:

SIM [T(l) = A(I) * B(I); I = 1, NJ

SKP = SUM [T(I); I = 1, N]

Die Ausführung mit einer Pipeline für alternative Multi­plikation oder Addition sieht dann als Mischung aus Parser­Baum und Zeit-Diagramm für N = 4 aus wie in Abb. 1.32. Daraus folgen 16 Schritte gegenüber 28 im seriellen Fall.

Page 69: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 61-

1.2.4 Parallelprozessoren im engeren Sinn

(1) Struktur:

Parallelprozessor-Systeme, wie wir sie hier nicht als Oberbe­griff, sondern im engeren Sinne verstehen wollen, bestehen aus einem Feld, einem sog. Array, aus gleichzeitig arbeitenden identischen Einzelprozessoren, die von einem gemeinsamen Leitwerk - einer Control Unit - gesteuert werden.

Neben der gemeinsamen Control Unit teilt sich das Prozessor­Feld auch in die Speicherhierarchie (Abb. 1.33) .

Dieses System enthält als Verbindungsstruktur wieder ein Kommunikations- und Schaltsystem, das im Englischen die Bezeichnung "Alignment Network" trägt. Es schafft die Mög­lichkeit, daß Daten von einem Prozessor zum anderen und zwischen den Speicherelementen und den Prozessoren hin und her übertragen werden können. Es hat somit ähnliche Aufgaben wie die Verbindungsstruktur im Multiprozessor-System.

Aber hier haben wir es jetzt weitgehend mit der gleichmäßigen Ausrichtung von einem ganzen Feld von Daten auf einmal zu tun, an statt mit ein oder zwei Elementen aus einigen Feldern, die auf einmal mehreren Unterprogrammen verfügbar zu machen sind.

Hier ist wichtig zu unterstreichen, daß ein solches Parallel­prozessor-System zu einer Zeit immer nur ein Programm ausführt.

Das gemeinsame Leitwerk beauftragt und synchronisiert jeden Prozessor so, daß er dieselbe Instruktion wie die anderen Prozessoren und zur selben Zeit ausführt.

Auf diese Weise werden auf einmal z. B. p Elemente eines Array von Daten verarbeitet.

(2) Beispiel:

Wir betrachten das folgende Beispiel, wobei wir annehmen wollen, daß die Anzahl der Prozessoren p und der Speicher­bänke m jeweils 100 seien:

DO S 1

I = 1, 100

S 1

X(I) = A(I) + B(I)

Dieses Programm wird ausgeführt, indem z. B. A(1) und B(1) etwa in Prozessor 1, A(2) und B(2) etwa in Prozessor 2 usw. geholt werden, so daß A(100) und B(100) in den Prozessor 100 gelangen.

Dann werden parallel (in der Zeit für nur eine Addition) alle 100 Summen gleichzeitig gebildet.

Die Ergebnisse werden sodann parallel auf die 100 Speicher­plätze gebracht: X(1), ... , X(100).

In der Praxis müssen mehrere Variationsmöglichkeiten für diese Vorgehensweise existieren.

Page 70: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 62-

Wenn ein Datenfeld kleiner ist als die Zahl der Prozessoren oder wenn ein Teil der Elemente aus Gründen des Algorithmus im Programm überschlagen werden soll, müssen die ent­sprechenden Prozessoren von dem Leitwerk aus "disabled" werden, d. h. außer Funktion gesetzt werden.

(3) "Broadcasting":

Eine sehr nützliche und bzgl. der Effizienz eines Parallel­prozessor-Systems häufig notwendige und sinnvolle Funktion ist durch das sog. "BROADCAST" gegeben, wodurch z. B. vom Leitwerk her oder vom Speicher oder von einem der Prozes­soren aus ein Skalar zu allen Prozessoren geschickt, d. h. in der sprachlichen Analogie: "gesendet" wird.

Ein Beispiel eines solchen Programmes, daSeine BROADCAST­Instruktion sehr wirkungsvoll einsetzen könnte, ist etwa die Multiplikation eines Vektors mit einer Konstanten:

DO S 1 I = 1, 100

s1 X(I) = A(I) * B

Dieses Programm würde in einem Parallelprozessor aus den zwei Schritten bestehen:

1) BROADCAST von B an alle Prozessoren;

2) gleichzeitige Durchführung der Multiplikation von A(I) in den Prozessoren der Nummer I mit B.

Dabei ist angenommen worden, daß die Elemente von A vorher in dem jeweiligen Prozessor vorliegen.

(4) Skalarprodukt:

Wenn wir auf das Programm zur Berechnung des Skalar­produktes zweier Vektoren, PROGRAMM 1, zurückkommen, das wir bereits beim seriellen Monoprozessor diskutierten, so können wir eine Anpassung an Parallelprozessoren vornehmen, die sich auch in der Struktur der verwendeten höheren Pseudoprogrammiersprache niederschlagen muß.

Das erkennen wir am besten, wenn wir die Berechnung des Skalarprodukts als Parser-Baum für einen Parallelprozessor darstellen.

Wählen wir als Beispiel N = 4 und setzen wir auch voraus, daß unser Parallelprozessor-System (mindestens) 4 Prozessoren habe (Abb. 1.34).

Wir sehen, daß im ersten Schritt alle erforderlichen 4 Multi­plikationen parallel mit den 4 Prozessoren durchgeführt wer­den und die Summenbildung in insgesamt 2 Additionsschritten erreicht wird, indem jeweils 2 Summanden zusammengefaßt und addiert werden auf jeweils parallel arbeitenden Rechen­werken.

Dadurch gelingt die Summenbildung in

T P ~ log2N Schritten.

Page 71: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 63-

Wir wollen also das Skalarprodukt durch möglichst weitgehende Parallelverarbeitung berechnen. Dazu müssen wir in PRO­GRAMM 1 den versteckten Parallelismus erkennen; wie wir dies erreichen können, werden wir in Kapitel 3 über die algorithmischen Möglichkeiten näher erfahren.

Das Parallelverarbeitungsprogrammfür das Skalarprodukt zweier Vektoren könnte folgendermaßen aussehen:

PROGRAMM 3

SIM [ T(I) = A(I) * B(I); I = 1, N]

TOT = SUM (T(I); I = 1, N]

Dieses Programm deutet an, wie wünschenswert Elemente für eine höhere Sprache für Array-ähnliche Prozessorsysteme aussehen könnten und sollten.

Das SIM-Statement bedeutet die simultane Ausführung der in der Klammer enthaltenen Anweisung, und zwar für die gesamte Indexmenge von I.

Alle Multiplikationen können unabhängig voneinander ausge­führt werden. Dazu müssen die Vektorelemente A(I) und B(I) in den jeweiligen Prozessor (I) geholt werden.

Die SUM-Funktion hat alle T(I)-Elemente als Eingabe.

Auf einem Parallelprozessor sind für die Summenbildung nicht wie bei der seriellen Maschine N-1 Additionen notwendig, sondern unter Ausnutzung der Parallelverarbeitung wesentlich weniger.

Man müßte erwarten, daß ein gutkonzipiertes Leitwerk In­struktionen wie die SIM-Anweisung direkt und für jede Vektor­länge und Array-Größe ohne Zusatzarbeit für den Program­mierer bzw. den Compiler handhaben sollte.

(5) Speedup:

Der Parser-Baum zeigt, wie PROGRAMM 3 mit 4 Prozessoren in 3 Schritten ausgeführt werden kann; dies ist für das Beispiel die schnellstmögliche Ausführung.

Da wir mit einem seriellen Monoprozessor

N Multiplikationen, und

N - 1 Additionen

brauchen, d. h. hier 2N-1 = 7 Operationsschritte, erreichen wir mit einem Parallelprozessor einen Speedup mit 4 Prozessoren von

7 54 = 3' wobei die Effizienz über 50 % ist:

( ]_) 3 7

E4 = -4- = l2

Page 72: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 64-

Nehmen wir der Einfac~heit halber an, daß N eine Potenz von 2 ist, so erfordert (N = 2 ):

die Multiplikation: 1 STEP

- die Summation: log2 N STEPS.

Mit N Prozessoren können wir deshalb Skalarprodukte in der Zeit

T N = 1 + log2 N

mit einem Speedup

S _ 2N-1 N - l+log

2N

und

berechnen.

(6) Fragen: Speedup versus Effizienz

Wir sehen an diesem Beispiel schon zwei Probleme der Parallelprozessoren:

1) Bei der Summationsberechnung halbiert sich die Zahl der tatsächlich benötigten und damit wirklich aktiven Prozes­soren.

2) Nach jedem Teilschritt bzw. vor jedem Teilschritt müssen die Zwischenresultate geeignet auf die Prozessoren aus­gerichtet und verteilt werden, damit die Parallelverarbei­tung wie vorgesehen weitergehen kann.

Natürlich können Parallelprozessor-Systeme einen wesent­lichen Speedup gegenüber Monoprozessor-Systemen erzielen (Tabelle 1.3).

Wenn die Zahl der Prozessoren jedoch wesentlich größer ist als das parallel zu verarbeitende Feld, dann ist diese Art der Rechnerörganisation ganz ineffizient, da über weite Perioden des Prozesses viele der Prozessoren unbeschäftigt, d. h. "idle", sein können.

Im Extremfall der rein skalaren Operation ist die Effizienz eines solchen Rechnersystems katastrophal. (Das gilt auch für Pipeline-Rechner, deshalb werden diese mit Vektor-und Skaiar­Prozessoreinheiten bestückt: CYBER-200, CRA Y -1).

Vergleicht man ein solches System mit einem sog. Multifunk­tions-Prozessor, wie wir ihn vorher diskutiert haben (vgl. 1.2.2), so kann ein Parallelprozessor wegen der relativen Einfachheit, eine große Zahl identischer Prozessoren zu steuern, viel schneller sein, da ja das Leitwerk eines Multi­funktions-Prozessors eine (entsprechend große) Zahl ganz verschiedener Funktionseinheiten koordinieren muß, und das gleichzeitig.

Page 73: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 65-

Obwohl das Strukturdiagramm des Parallelprozessorsystems vom Erscheinungsbild her sehr viel Ähnlichkeit mit dem Diagramm des vorher diskutierten Multiprozessor- Systems hat, ist der Operationslauf in beiden Systemen doch ganz verschieden.

Der Multiprozessor führt ja in Wirklichkeit p verschiedene Programme - oder jedenfalls Unterprogramme - aus zur gleichen Zeit. Jedem ist dabei eine eigene Control Unit zugeordnet. Demgegenüber führt der Parallelprozessor nur 1 Programm aus, das von 1 Leitwerk aus gesteuert wird.

Andererseits ist zunächst auch nicht offensichtlich, wie solche Array-Operationen in gewöhnlichen Programmen entdeckt werden können, wenn wir z. B. an Fortran-Programme für eine serielle Monoprozessor-Maschine denken.

Das Compiler-Problem ist daher für ein Parallelprozessor­System mit Sicherheit schwieriger.

Die Frage des Parallelismus in Programmen stellt sich auch bei Pipeline-Prozessoren, denn deren Leistungsfähigkeit in der Praxis hängt ja sehr empfindlich vom Parallelisierungsgrad der Probleme ab.

Solche Fragen sind nicht zuletzt entscheidend, wenn ein solcher neuer Rechner angeschafft werden soll, da ja die Übertragbarkeit oder Portabili tät von Programmen oft eine Bedingung ist, von der ein Benutzer wegen der oft sehr großen Investitionen für große Programme nicht abgehen kann.

(7) Realisi erungen:

Mehrere Parallelprozessor-Systeme sind bisher wirklich gebaut und auch in bestimmten Anwendungsbereichen sehr erfolgreich eingesetzt worden.

- ILLIAC IV (entworfen von der University of Illinois und der Burroughs Corp., gebaut von Burroughs, jetzt bei NASA Ames, Kalifornien) ist eine Maschine mit 64 Prozessoren und 64-bit-Wortstruktur für wissenschaftlich-numerische Probleme der Luft- und Raumfahrt, zuletzt wohl beim sog. "SpaceShuttle" (Abb. 1.35).

- BSP 1977 von Burroughs als Burroughs Scientific Processor angekündigt, hat 16 Parallelprozes­soren, hat aber auch Pipeline-Struktur; dieses System stellt daher einen Grenzfall dar, ebenso wie CRA Y -1 und CYBER-203 für das Multi­funktions- und Pipeline-Konzept.

Es zeigt sich hier schon, daß eine Klassifizie­rung in eindeutiger Weise nicht möglich sein wird.

Page 74: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 66-

1.3 Klassifizierung der Computersysteme

FL YNN hat eine Klassifizierung der Rechnerarchitekturen vorge­schlagen, die allerdings Überschneidungen zwischen den Klassen nicht ausschließen kann und den Nachteil hat, daß eine Klasse faktisch leer ist.

Flynn unterscheidet 4 Kategorien (Abb. 1.36):

(1) SISD-Systeme:

SISD = Single Instruction -Single Data

Diese Klasse entspricht im wesentlichen den seriellen Mono­prozessoren als Abkömmlingen des von-Neumann-Konzeptes.

(2) SIMD-Systeme:

SIMD = Single Instruction - Multiple Data

Diese Kategorie ist aus heutiger Sicht die wichtigste Klasse sowohl im Hinblick auf die Vektor/Pipeline-Prozessoren als auch auf die algorithmischen Entwicklungsarbeiten, die sich sehr stark an SIMD-Architekturen orientieren.

(3) MIMD-Systeme:

MIMD = Multiple Instructions- Multiple Data

Dieser Kategorie sollten vorwiegend flexiblere Parallelprozes­soren mit Umkonfigurierungskonzepten der Zukunft angehören. Praktisch lassen sich nicht viele Systeme in diese Kategorie heute einordnen. Der ILLIAC IV in seinem vollen Ausbau mit 4 Komplexen zu je 64 Array-geordneten Prozessoren ist ein System dieser Kategorie.

(4) MISD-Systeme:

MISD =Multiple Instructions- Single Data

Diese Kategorie muß heute als faktisch leer angesehen werden, wenn auch gewisse Interpretationen von Konzepten die Einord­nung vorsehen.

Page 75: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 67-

2 Parallelisierung: architektonische Möglichkeiten

In diesem Kapitel sollen noch einmal, ausgehend vom von-Neumann­Konzept und seinen Erweiterungen, die im Kapitel 1 anhand der ver­schiedenen Rechnerstrukturen kennengelernten architektonischen Elemente für Parallelverarbeitung zusammengefaßt werden und die Fragen der parallelen Speicherorganisation und der Verbindungsstrukturen vertieft behandelt werden, da sie die Hardware- und organisatorischen Voraus­setzungen für die effiziente Parallelverarbeitung in vielen Algorithmen sind.

2.1 Erweiterung des Von Neumann Konzeptes: Uberlappung der Funktionen

Das ursprüngliche Konzept des seriellen Von-Neumann-Rechners (Abb, 2.1) war aufgebaut aus den 5 Komponenten

(1) Leitwerk (Control Unit) oder Steuerwerk

(2) Rechenwerk (Prozessor, Arithmetic-Logic Unit)

(3) Hauptspeicher ( (Main) Memory, Storage)

(4) Eingabe-Einheit (Input Unit)

(5) Ausgabe-Einheit (Output Unit)

Abgesehen davon, daß dieses Konzept der Parallelverarbeitung nicht fähig war - und auch nicht dafür vorgesehen war - sondern vielmehr ein Konzept hoher Flexibilität im Hinblick auf die Vielfalt der Verarbeitung von Instruktionen sein sollte, hatte das System entscheidende Nachteile:

Das Rechenwerk (Prozessor) war bei allen Ein- und Ausgabe-Aktivitäten involviert. Die Abarbeitung der Rechnerinstruktionen sowie die Ausführung anderer Operationen des Systems war streng sequentiell, d. h. die einzelnen Komponenten mußten mit ihren Aktivitäten warten, bis die jeweils eine aktive Systemkomponente ihre Aufgabe beendet hatte,ehe die nächste nach einem bestimmten Schlüssel ihre Aufgabe beginnen konnte.

Der erste Nachteil wurde dadurch aufgehoben, daß der direkte Speicher­zugriff als neues architektonisches Element eingeführt wurde (Abb. 2.2):

Die Ein-/Ausgabe-Einheiten konnten jetzt direkt Daten im Hauptspeicher ablegen bzw. aus dem Hauptspeicher Daten erhalten, ohne das Rechenwerk zu beteiligen.

Dieser Schritt führte schließlich zur Einführung der E/ A-Kanal-Konzeption:

Die Kanäle führen als autonome Steuerprozessoren die Ein-/ Ausgabe nach Auftrag durch das Leitwerk selbständig durch.

Diese konzeptionellen Erweiterungen führten zu Differenzierungen der Rechnerstruktur in 2 Richtungen:

(1) Die E/ A-Struktur wurde verfeinert hinsichtlich der spezifischen Aufgaben der Ein-/ Ausgabe durch verschiedenartige Kanäle und Ein­führung von Bus-Strukturen zur besseren Kommunikation und Bedienung der einzelnen Geräte (Abb. 2.3).

Ein Beispiel ist die I/0-Struktur bei der IBM/370-Architektur, die repräsentativ für die schichtenstrukturierte Erweiterung des Von­Neumann-Konzeptes ist (Abb. 2.4).

Page 76: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 68-

(2) Jetzt wurde die Uberlappung der Funktionen der verschiedenen Rech­nerkomponenten möglich: Leitwerk, Prozessor, Speicherzugriff und Ein­/Ausgabe auf externe Speichermedien bzw. E/A-Geräte.

Dadurch wurde ein erster Schritt zur Parallelisierung getan, wenn auch auf der Grundlage der sequentiellen Abarbeitung eines einzigen Instruk­tionsstromes.

Als Prototyp solcher Systeme gilt heute der Prozessorkomplex IBM 3033 (Abb. 2.5).

2.2 Pipelining (vgl. 1.2.3)

Als eine für moderne effiziente Rechnersysteme entscheidende Architek­turkomponente muß das Pipelining-Prinzip angesehen werden, und zwar sowohl bei der Leistungssteigerung der arithmetischen Prozessoren als auch beim Leitwerk.

Das Grundprinzip ist die Segmentierung der Einzeloperationen in k Segmente als Subprozesse.

Obwohl Pipelining als Prinzip die serielle Funktionsweise der konventionel­len Systeme im strengen Sinn nicht aufhebt, wird es doch als wesentliches Element für den Entwurf und die Architektur von Parallelprozessoren im weitesten Sinn angesehen.

Das Pipelining-Prinzip liefert im Idealfall eine Leistungssteigerung, d. h. einen Speedup, vom Faktor k, dem Grad der Segmentierung:

lim S = k p

2.3 Vektorisierung von DO-Loops:

Da die Verarbeitung von zyklischen Schleifen über Datenfelder nach Maßgabe identischer arithmetischer oder logischer Operationen ein Kern­problem darstellt, das sich für Parallelverarbeitung aufschließen läßt, muß jede sinnvolle Architektur von Parallelprozessoren diesen Programmstruk­turen, die ihren Niederschlag in den DO-Loops der höheren Pragrammier­sprachen finden, Rechnung tragen.

Ein Architekturelement, auf das sich DO-Schleifen wirkungsvoll abbilden lassen, ist das Pipelining von arithmetisch-logischen Einheiten im Rechner mit dem idealen Leistungsfaktor k.

Hinzu kommen natürlich die Index-Register und Vektor-Register.

Ein für zumindest einfach strukturierte DO-Schleifen wesentlich wirkungs­volleres Architektur-Konzept ist die Verarbeitung der gesamten Index­menge der Schleife auf individuellen Prozessoren zur gleichen Zeit in einem Schritt.

Der Speedup dieser Parallelprozessoren bei DO-Schleifen ist nicht durch die Art der arithmetischen Operation beschränkt, wie beim Pipelining, sondern im Prinzip nur durch die Zahl der parallel arbeitenden Prozessoren.

Page 77: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 69-

So läßt sich z. B. die DO-Schleife in F ortran:

DO 1 I = 1, N

1 C(I) = A(I) * B(I)

mit einem System aus N Prozessoren, die über geeignete Register verfügen sollen, in einem einzigen Schritt durchführen, wobei jedem der Prozessoren ein definierter Index I zugewiesen wird: SIM (C(I) = A(I) * B(I); I = 1, N); Speedup: SN = O(N).

Als weiteres Beispiel hatten wir die Berechnung des Skalarproduktes zweier N-Vektoren behandelt und gefunden, daß ein Speedup

s 2N-1 _ 0 ( N ) N = 1+log

2N - Tö9zN

resultiert.

2.4 Array-Struktur

Die Array-Struktur parallelarbeitender Prozessoren eignet sich als Archi­tektur besonders dort, wo sich die Struktur auf das Problem abbilden läßt und umgekehrt (Abb. 2.6).

Das ist ideal erfüllt bei Matrix-Operationen, wie sie in der linearen Algebra und daher bei der numerischen Lösung von Differentialgleichungen und in der Bildverarbeitung auftreten.

Als wirkungsvolles Beispiel hatten wir den sog. Cannon-Algorithmus zur Multiplikation zweier quadratischer Matrizen diskutiert.

2.5 Funktionseinheiten

Insbesondere für Systeme, die neben Vektorverarbeitung einen wesentlichen Anteil sog. skalarer Verarbeitung zu leisten haben, bei der keine schleifen­ähnlichen Strukturen anfallen und die Instruktionen und/oder Daten schnell hintereinander wechseln, muß Sorge getragen werden, daß die unterschied­lichen Verarbeitungsaufgaben mit den geeigneten architektonischen Mitteln gelöst werden.

Deshalb haben Vektorprozessoren neben den Einheiten zur Vektorverarbei­tung mit Pipelining und Vektorregistern auch Funktionseinheiten zur Verarbeitung skalarer Daten.

Die Spezialisierung der Funktionseinheiten läßt sich erweitern auf logische Operationen sowie spezielle arithmetische Operationen oder mathema­tische Funktionen wie Wurzeloperationen oder im komplexen Fall auf ganze Algorithmen wie FFT (Fast Fourier Transform).

2.6 Broadcasting

Eine für Parallelprozessoren überaus wichtige Funktion ist "Broadcasting". Dieses architektonische Konzept dient der Kommunikation und Koordina­tion zwischen den einzelnen autonom, aber synchron arbeitenden Prozes­soren in einem Array-Prozessor oder Parallelprozessor-System.

Mit der Funktion des Broadcasting wird identische Information gleichzeitig an alle Prozessoren geschickt, und zwar entweder von der gemeinsamen Control Unit oder einem der Prozessoren.

Page 78: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 70-

So kann z. B. im Rahmen eines Algorithmus eine Konstante, B, zur Multi­plikation der Komponenten eines Vektors, A(I), die im Prozessor I jeweils vorliegen, I = 1, ... , N, an alle Prozessoren geschickt werden und im nächsten Schritt im Prozessor I die (komponentenweise) Multiplikation A(I) * B ausgeführt werden:

BA(I) = A(I) * B für alle I gleichzeitig.

2.6.1 Der Column-Sweep-Algorithmus

Um die wirkungsvolle Funktion des Broadcast zu demonstrieren und gleichzeitig die Möglichkeiten paralleler Verarbeitung bei wichtigen Fragestellungen der Computeranwendungen weiter zu erfassen, soll an dieser Stelle ein Algorithmus dargelegt werden, der für die Lösung von Rekursionssystemen (oder Rekurrenz-Relationen) oder rekurrenden Gleichungssystemen entwickelt worden ist.

Der sog. Column-Sweep-Algor ithmus erweist sich zwar als für praktisch häufig vorkommende Rekurrenz-Systeme nicht überaus effizient, was die Auslastung der einzelnen Prozessoren angeht, ist aber typisch für die Struktur und Funktionsweise paralleler Algorithmen.

Entwickelt wurde der Algorithmus offenbar von Kuck, da er keinen anderen Literaturhinweis gibt.

Definition: Ein lineares rekurrentes System

R (n, m)

R (n, m):

der Ordnung m für n Gleichungen ist definiert für

m~ n -1

durch

xk = { ~k + für k " 0, k-1 ~ ak.x. j=k-m J J

für 1 ~ k ~ n

Ist m = n-1, so wird dieses System ein gewöhnliches lineares rekurrentes System

R (n)

genannt.

In Matrix-Vektor-Notation erhält man mit dem 11Lösungsvektor 11

T X = (X1, ... , Xn) ,

dem 11Konstantenvektor 11

T C = (C1, ... , Cn)

und der 11Koeffizientenmatrix11

die Darstellung

A = (a .. ), 1 ~ i, j ~ n IJ

X = C + AX.

Page 79: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 71-

Die Matrix A = (a .. ) ist eine "echte untere Dreiecks-Matrix" I J

mit: a .. = 0 für i ~ j I J

a .. = 0 für i-j > m. I J

D. h. für m < n-1 ist die Matrix A eine Band-Matrix:

A

Beispiel 1: R(5,2)

0 i I

Für n = 5, m = 2 hat man z. B. das folgende lineare rekurrente System R(5,2):

xl = Cl

x2 = c2 +a21 xl

R(5,2): x3 = c3 a31 xl +a32 xz (bzw. R(S))

x4 c4 ( ca41 Xl) +a42 xz +a43 x3 = xs = es (+a51 xl +a52 X2) +a53 x3 +as4 x4

Beispiel 2: R(S)

Für m = 4 ergibt sich das in der linken unteren Hälfte von A aufgefüllte gewöhnliche lineare rekurrente System für 5 Gleichungen R(S).

In unserer Darstellung des Column-Sweep-Algori thmus wollen wir uns zunächst auf gewöhnliche rekurrente lineare Systeme beziehen:

R(n): {

0 für k ~ 0 ,

k-1

ck + tHo) akjxj , für 1 ~ k ~ n •

Betrachten wir zunächst die Anzahl der Zeitschritte bei der konventionellen Lösungsmethode mit einem Prozessor.

Wir nehmen wieder an, daß jede arithmetische Operation den gleichen Zeitaufwand erfordern möge, d. h. Addition und Multiplikation seien gleich aufwendig in diesem Fall.

Page 80: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 72-

Im seriellen Fall mit einem Prozessor erhalten wir:

für jedes k ~ 2: k-1 k-2 1

Multiplikationen Additionen der (a.x)-Summe Addition von ck zur Summe,

für jedes k:

also insgesamt:

2.(k-l) Schritte.

Da k von 1 bis n läuft, k = 1 aber keine Operation benötigt, da

xl = cl'

ergibt sich insgesamt:

T 1 = 2 (1+2+ ... + (n-1) )

2n (n-1) = 2 2

n . (n-1) = 0 (n ) =

Column-Sweep-Algorithmus:

(0) Initialisierung:

- Eingabe: Konstantenvektor C Koeffizientenmatrix A

- Prozessoren: a) Es werden n-1 Prozessoren Pk mit der Numerierung

-Anfang:

P2, ..... ,Pn

vorausgesetzt, denen ausreichende lokale Register bzw. Hauptspeicher zur Verfügung stehen sollen, um

k = 2, ..... , n

k = 2, ..... , n j=2, ..... ,n

zu speichern. (Es werde eine Broadcast-Funktion vorausgesetzt.)

b) Dabei kann auch eine Einschränkung derart zugelassen werden, daß nach jedem der folgenden Algorithmenschritte jeweils eine Spalte (a .) von einem Speicher den Prozessoren elementwe'~se, d. h. akj für festes j dem Prozessor k zugeführt wird.

Aufgrund der Matrix-Struktur ist X1

von Anfang an bekannt gegeben:

Page 81: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(1) Schritt 1:

- Broadcast:

- Multiplikation:

-Addition:

- C-Update:

Bemerkung:

(2) Schritt 2:

- 73 -

Das apriori bekannte X1

wird mit der BROADCAST­Funktion an alle Prozessoren geschickt: x1~ Pk' n ~ k ~ 2.

In allen Prozessoren P.k . ~ird jetzt x 1 mit dem Spaltenelement akl mult1phz1ert (k = 2, ..... , n).

Anschließend an die Multiplikation wird zu dem Produkt das Element des Konstantenvektors Ck addiert in allen n-1 Prozessoren Pk parallel:

1 ck = akl • xl + ck.

Im Prozessor P2

wird jetzt x 2 als Ergebnis erhalten: 1

(X2 = c2 = a21 xl + c2).

C wird durch c 1 ersetzt.

Da jetzt (neben X1

) die Größe x2

bekannt ist, liegt jetzt nur noch ein gewöhnliches lineares rekurrentes System R(n-1) vor.

Dieses läßt sich entsprechend Schritt 1 für R(n) behandeln und auf ein System R(n-2) reduzieren usw.

- Broadcast: X2 an alle Prozessoren Pk' k ~ 3.

- Multiplikation: parallel in allen Prozessoren wird gebildet:

-Addition:

- C-Update:

ak 2 . x 2 , k = 3, ..... n.

Zu dem Produkt Konstantenvektor, d. h.

1 Ck = aklXl+Ck'

wird der intermediäre

der aus dem Schritt 1 erhalten worden war, parallel addiert.

x3

in Prozessor P3

der intermediäre Konstantenvektor

c~ = ak2 . x2 + c~ ' k = 3, ..... , n.

Page 82: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 74 -

Jeder Zwischenschritt stellt sich folgendermaßen dar:

(k*) Schritt k*:

- Broadcast: Xk* an alle Prozessoren Pk' k > k*.

-Multiplikation: parallel in allen Prozessoren Pk' k > k*, wird das Produkt gebildet:

-Addition:

- xk*+l:

akk* xk*' k > k*.

Zu dem Produkt wird der intermediäre Konstan­tenvektor addiert aus (k*-1)-ten Schritt

k* k*-1 Ck = akk*Xk* +Ck '

für alle k > k*, k ~ n, in allen Pk parallel mit k > k*.

Xk*+l liegt somit im Prozessor Pk*+l vor.

k*-1 (Xk*+l = ak*+l,k*Xk* + Ck*+l

- C-Update: der int~*mediäre Konstantenvektor ck*-l wird durch C ersetzt.

In dieser Vorschrift fährt man fort bis zum Schritt (n-1), der schließlich X liefert. n

Damit wurde der Lösungsvektor X= (X1, ..... , Xn)T vollständig gewonnen.

Die Zahl der Zeitschritte für Addition und Multiplikation ergibt bei insgesamt n-1 Iterationsschritten des Algorithmus:

T p = 2 (n-1).

Die Zahl der notwendigen Prozessoren ist dabei im ersten Schritt maximal:

Daraus ergibt Voraussetzung, gegenüber den Speedup:

Speedue:

d. h.:

p = n-1.

sich für den Column-Sweep-Algorithmus unter der daß die Broadcast-Funktion und evtl. Umspeicherungen arithmetischen Operationen vernachlässigt werden, ein

s Tl

= T p p

n(n-1) = 2(n-l)

n = 2

sP = 0 (n).

Die Effizienz E des Algorithmus ergibt sich daraus zu: p s

p Effizienz: Ep = p

n = 2(n-l)

> l 2

Page 83: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 75 -

Während die serielle Methode die Zeitkomplexität hat

2 T

1 = 0 (n ) ,

liefert der Column-Sweep-Algorithmus einen beträchtlichen Gewinn für gewöhnliche lineare rekurrente Systeme.

Für lineare rekurrente Systeme R(n, m) mit m « n stellt sich dieser Algorithmus allerdings als nicht effizient heraus, so daß andere parallele Algorithmen vorzuziehen sind in diesen Fällen. Wir werden darauf zurückkommen.

2.7 Speicherorganisation

o Bei der Diskussion der verschiedenen Rechnerstrukturen für Parallel­verarbeitung waren wir in Kapitel l stets auf zwei Probleme gestoßen:

(l) die Organisation des Hauptspeichers, die geeignet zu wählen ist, um Konflikte beim parallelen Zugriff auf den Speicher zu vermeiden bzw. zu minimieren;

(2) die Kommunikation zwischen den einzelnen parallelen Prozessoren und - vor allem - zwischen den einzelnen Prozessoren und dem Hauptspeicher, die durch geeignete Verbindungsstrukturen (Interconnection Networks, Alignment Networks) effizient geleistet werden soll.

In diesem Abschnitt soll zunächst die Frage der parallelen Speicher­organisation vertieft werden.

o Speichermedien werden in der einen oder anderen Realisierung und Technologie in allen Rechnerkomponenten benötigt:

(l) in der Control Unit (Leitwerk): Hier findet man neben

i) Registern als Speicherelemente höchster Geschwindigkeit,

ii) ROM-Speicher als Mikrospeicher zur Koordination der Maschinen-Instruktionen,

iii) CAM-Speicher (Content Addressable Memory) zur Adressen-Generierung bei virtuellem Speicher und Paging­Systemen (Page-Tabelle),

iv) RAM-Speicher als Datenpuffer oder Instruktionspuffer.

(2) im Rechenwerk (Prozessor): Hier findet man neben

i) Operanden-Registern und Puffer-Registern für vielfältige Zwischenspeicherung, für schnellen Zugriff. auf Daten und ,,. Ergebnisse,

ii) ROM-Speicher für logische Funktionen und ROM­Arithmetik.

(3) im Pufferspeicher (Cache):

i) RAM-Speicher hoher, dem Prozessor angepaßter Ge­schwindigkeit. Er ist kleiner als der Hauptspeicher (~ 64 KBytes), aber viel schneller (4-20 mal).

Page 84: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

i i)

*

- 76 -

CAM-Speicher dient der Assoziation von Cache-Adressen mit Hauptspeicher-Adressen analog der Funktion im Leitwerk (Cache-Tabelle).

Auf das Cache-Konzept kommen wir zurück.

(4) im Hauptspeicher: RAM

Der Hauptspeicher kann als ein zusammenhängender großer Speicher mit wahlfreiem Zugriff organisiert sein.

Häufig bestehen aber Hochgeschwindigkeitsspeicher aus einer Anzahl paralleler Speicher-Einheiten.

Jede dieser Einheiten kann unabhängig adressiert werden, so daß bei m einzelnen, d. h. parallelen Speichereinheiten m verschiedene Adressen auf einmal adressiert werden und damit m parallele Speicherzugriffe ermöglicht werden.

* Auf die Organisation paralleler Hauptspeicher-Bänke kommen wir gleich zurück.

(5) In (vielen) Großrechnern findet man zwischen Hauptspeicher und der Sekundärspeieher-Ebene (aus Trommeln und Platten) eine weitere RAM-Ebene als "Massenspeicher": Bulk-Memory. Dieser hat Backup-Funktionen im wesentlichen.

2. 7.1 Organisation einer Hauptspeicher-Einheit

Eine oder mehrere Zentraleinheiten (CPU's) oder E/ A-Geräte können mit der Hauptspeicher-Einheit verbunden werden.

Diese stellen Adressen der Speichereinheit zur Verfügung und erwarten Zugang zum Speicher., entweder um Daten zu holen oder abzuspeichern (Abb. 2.7).

Die Hauptspeicher-Steuereinheit stellt die Schnittstelle des Hauptspeichers zur "Außenwelt" her und soll in ihren logischen Funktionen nicht näher betrachtet werden.

Daneben besteht die Speicher-Einheit aus

i) dem Speicher-Bereich, der eine Wort- oder Byte-Struktur haben kann,

ii) den Registern,

iii) der Dekodier-Logik.

Von den Registern sind vor allem wichtig:

(a) das Speicher-Adressen-Register (MAR = Memory Address Register): Es enthält die Speicher-Adressen.

(b) das Speicher-Informations-Register (MIR = Memory Information Register): Es enthält die zu speichernde oder aus dem Speicher geholte Information.

Page 85: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 77-

Grundsätzlich ist die Funktionsweise in der betrachteten Struktur der Speichereinheit die folgende:

Eine CPU (oder ein E/A-Gerät) plaziert eine Speicheradresse im MAR.

Im Falle eines STORE-Prozesses, d. h. der Abspeicherung, wird auch die zu speichernde Information, ein "Wort", im MIR abgesetzt.

Nun durchläuft der Speicher einen "Zyklus":

die Adresse im MAR wird entschlüsselt

die Speicher-Stelle wird selektiert

im Falle der Abspeicherung (STORE) wird der Inhalt des MIR auf den Speicherplatz geschrieben

im Falle des Auslesens (FETCH) wird der Inhalt des selektierten Speicherplatzes in das MIR gebracht

Damit ist der Speicherzyklus abgeschlossen.

Gewöhnlich ist der Begriff "Speicher-Zyklus" verstanden als die Zeitspanne, die erforderlich ist, um eine Adresse von der CPU aus abzusetzen und den Kreislauf bis zur Absetzung der nächsten Adresse zu durchlaufen, d. h. die Zeitspanne, die eine CPU für den gesamten Zugriff auf den Speicher aufbringen muß.

Selbstverständlich enthält die Funktionsweise einer Hauptspeicher-Einheit sehr viele Details, die hier ignoriert werden sollen, ebenso wie die Sicher­heitsvorkehrungen für den störungs- und fehlerfreien Zugriff.

2.7 .2 Parallele Speicher-Einheiten

Die ersten parallelen Speicher-Konfigurationen aus mehreren Hauptspei­cher-Einheiten mit wahlfreiem Zugriff entstanden Ende der 50-er Jahre bei Entwicklung der Systeme STRETCH (IBM) und ILLIAC II (Burroughs, University of Illinois).

Das Prinzip der parallelen Speicher läßt sich an der einfachsten Struktur aus 2 Speichereinheiten illustrieren, indem in der Einheit (Speicher-Bank '0') alle geradzahligen Adressen angelegt werden, in der zweiten Einheit (Speicher-Bank '1') alle ungeradzahligen Adressen (Abb. 2.8).

Sie werden unterschieden durch das Bit niedrigster Ordnung in der Adresse: '0' für gerade Adressen, '1' für ungerade Adressen.

Bei der Ausführung von Instruktionen werden normalerweise die Instruk­tionen entsprechend ihrer Reihenfolge bei der Speicherung geholt.

Neben wir an, daß das Instruktions-Adressen-Register auf den Speicherplatz XXXXO zeigt.

Während wir diese Instruktion aus dem Speicher in der Einheit '0' holen, können wir wegen der parallelen Speicherauslegung bereits auch die darauffolgende Instruktion mit der Adresse XXXX1 aus der Speichereinheit '1' holen als die nächste auszuführende Instruktion.

Page 86: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 78 -

Sofern also in der Instruktion auf dem Adressenplatz XXXXO kein Sprung initiiert wird auf eine andere als die adressenmäßig nachfolgende Instruk­tion, kann das Instruktions-Adressen-Register inkrementiert werden, so daß es auf XXXX1 zeigt; damit kann die Instruktion XXXX1 aus dem Register MIR1 zur CPU gebracht werden, ohne auf einen weiteren Speicherzyklus zu warten.

Dadurch kann oft effektiv eine Verdopplung der Bandbreite des Hauptspei­chers gegenüber der Konfiguration aus nur einer einzigen Speichereinheit erzielt werden.

Ähnlich stellt sich die Situation dar, wenn Datenfelder verarbeitet werden. Hier können die Daten jeweils paarweise aus den Speichereinheiten '0' und '1' geholt werden.

Andererseits ist klar, daß diese Parallelität nicht immer voll ausnutzbar ist; doch hat sich diese Organisation sehr bewährt: Diese parallele Speicherorganisation wird im allgemeinen als INTER­LEAVING bezeichnet. Im Deutschen heißt diese Speicher-Organisation "verschränkter Speicher".

Hat eine Organisation paralleler, getrennt adressierbarer Hauptspei­cher-Einheiten m parallele Speicher-Bänke, in denen die aufeinander­folgenden Adressen über die m Speicher-Einheiten hinweg "modulo m" angeordnet sind, so spricht man von "m-fach-Interleaving" bzw. vom "m-fach verschränkten Hauptspeicher".

Beispielsweise enthält bei 4-fach verschränktem Speicher (Abb. 2.9):

(1) Bank 1: Adressen 4n (2) Bank 2: Adressen 4n+1 (3) Bank 3: Adressen 4n+2 (4) Bank 4: Adressen 4n+3

wobei n = 0, 1, angenommen wird.

, N-1, wenn die Gesamtspeichergröße als 4N

Systeme mit Speicherverschränkung, beispielsweise:

(1) IBM:

360-195 (370-135 370-1.65 370-168 3033

(2) CDC:

6600 7600

16-fach 1-fach) 4-fach 4-fach 8-fach

32-fach 32-fach

2. 7.3 Speicherorganisation für Multiprozessoren

Die Tendenz zu Speichersystemen mit immer höherem Paralleli tätsgrad wurde angestoßen durch den Trend zu Multiprozessor-Systemen.

Wie früher schon angeführt, waren die relativ hohen Kosten für Haupt­speicher eines der primären Motive für Multiprozessoren, um einen großen Speicher von mehreren Prozessoren gemeinsam benutzen zu lassen.

Page 87: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 79-

Andererseits wuchs natürlich mit der Zahl der Prozessoren in einem Multiprozessorsystem der Bedarf an Speicherplatz und höherer Bandbreite. Dadurch unterstützten sich die beiden Ideen: Multiprozessor- und ParaHel­speicher-Archi tektur.

Die quantitative Analyse paralleler Speicher für Multiprozessoren führt naturgemäß auf die Methoden der stochastischen Analyse von Computer­systemen, auf die wir hier nicht eingehen können.

Betrachten wir ein Computersystem aus n Zentraleinheiten und m Haupt­speicher-Bänken (Abb. 2.10).

Jede CPU sei in der Lage, 1 Speicheradresse pro Zyklus zu erzeugen.

Das Prototyp-System sei durch eine Verbindungsstruktur mit Schaltern zwischen Zentraleinheiten und Speicherbänken verknüpft.

Das System kann als ein (n x m)-Koordinatenschalter ("Crossbar Switch") betrachtet werden.

Jede CPU darf mit jeder Speicher-Einheit zu jeder Zeit kommunizieren.

Zu den Datenwegen gibt es Pfade für Steuersignale, mit denen jede CPU jeweils einen der m verfügbaren Schalter setzen kann.

Wenn wir annehmen, daß jede CPU ein unabhängiges Programm ausführt, so finden wir in diesem System das Potential für hochgradige Zugriffs­konflikte.

Solche Konflikte lassen sich in manchen Fällen reduzieren, wenn entgegen der ursprünglichen Absicht jeder CPU eine bestimmte Speichereinheit oder eine Untermenge zugewiesen wird.

Wünschenswert wäre eine flexible dynamische Zuweisungsstrategie. Dies führt jedoch zu sehr komplexen Hardware-Problemen und dynamischen Scheduli ng-Proble men.

Dies kann für die Zukunft ein fruchtbares Forschungsgebiet sein; reale Systeme kennen aber derzeit keine derartige Organisationsstruktur.

Eine direkte Methode zur Auflösung der Zugriffskonflikte besteht in den Speicher-Steuereinheiten (MCU), die über die n Ports jeweils gleichzeitige Zugriffe entdecken können und über eine Prioritätenstrategie die Reihen­folge der Zugriffe regeln können für die jeweilige Speicherbank.

Solche Organisationen sind realisiert in den Systemen, beispielsweise, für Multiprozessoren (Abb. 2.11):

Burroughs B 7700: 8 MCU's mit je 4 Speichereinheiten (je 8 Ports)

UNIVAC 1110: 4 MCU's, 8 (bzw. 16) Ports; jede MCU hat paarweise Subsysteme mit 8 (bzw. 16) Ports; jedes Subsystem hat 4-fach verschränkte Speichereinheiten,

jeweils im Maximalausbau.

Die Konflikte werden von den MCU's aufgelöst; in beiden Systemen haben die E/ A-Kanäle höhere Priorität als die CPU-s.

Page 88: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 80 -

2.7.4 Speicherorganisation für Array-Prozessoren: Skewing

Parallele Speicher sind besonders wichtig für Array-Prozessoren, d. h. Parallelprozessoren im engeren Sinn oder Pipeline-Rechner, wie wir sie kennengelernt haben.

Wir betrachten nun das Problem des parallelen konfliktfreien Zugriffs von Parallelprozessoren auf die m Speicher-Einheiten des Systems.

Wir wollen davon ausgehen, daß Datenfelder, d. h. Arrays von einer, zwei oder mehr Dimensionen in gewissen regelmäßigen Ordungen in den m Speicher-Einheiten abgespeichert seien (bzw. abgespeichert werden sollen).

Wie können wir garantieren, daß z. B. auf die Zeilen, die Spalten oder die Diagonalen einer Matrix A = (a .. ) ohne Konflikt zugegriffen werden kann?

I J "Ohne Konflikt" heißt dabei, daß nicht zur gleichen Zeit von verschiedenen Prozessoren auf dieselbe Speicher-Einheit zugegriffen wird, um verschiedene Elemente der Matrix zu holen.

Die Fragestellung führt uns zur Methode und der Theorie des SKEWING und der SKEWING-SCHEMATA, die etwas in die zahlentheoretischen und algebraischen Grundlagen führen.

(1) Eindimensionale Arrays:

Wenn das System m Speichereinheiten hat, können wir ein-dimen­sionale Felder, d. h. Arrays, über die Einheiten hinweg folgender­maßen abspeichern, wie es für m = 4 illustriert ist:

Speicher -Einheit

0 1 2 3

a1 a2 a3 a4

a5 a6 a7 aB

a9 a10 all a12

al3 . -

. . - -

. . - -

o Während die ersten m Operanden verarbeitet werden, können bereits die nächsten m Elemente aus den Speicher-Einheiten geholt werden, und zwar alle m in einem Schritt.

o Wenn aber die Verarbeitung so verlangt wird, durch das vor­gegebene Anwendungsproblem, daß beispielsweise nur die Elemen­te mit ungeradem Index geholt werden müssen, wie sie sich in der Tabelle unterstrichen darstellen, so kommt es zum Konflikt.

Page 89: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 81 -

o In diesem Falle wird wegen der Zugriffskonflikte die Bandbreite effektiv auf die Hälfte reduziert.

Diese Konflikte lassen sich für dieses Problem vermeiden, indem der Speicher mit den einzelnen Elementen so ausgelegt wird, daß m eine Primzahl ist:

Beispiel: m = 5

Da wir im folgenden in die Modulo-Arithmetik eintreten müssen, indizieren wir die Speicher-Einheiten und die Datenelemente von 0 statt von 1 an.

Speicher -Einheit

0 1 2 3 4

ao a1 a2 a3 a4

a5 a6 a7 a8 a9

a10 all a12 a13 a14

a15 a16 a17 a18 a19

a20 a21 a22 a23 a24

a28

Auf diese Weise lassen sich ohne Konflikt jeweils m Daten aus den m Einheiten holen, wenn der Indexabstand der Array-Elemente relativ prim zu m ist; d. h. daß der Index-Abstand d und m keinen gemeinsamen Teiler größer als 1 haben dürfen: GGT (m, d) = 1.

Der Grund liegt darin, daß bei

GGT (d, m) = 1

die Index-Variable

j = d . i + r (mod m)

für 0 ~ i ~ m-1 und beliebiges r gerade m verschiedene ganze Zahlen zwischen 0 und m-1 in einer festen Permutation durch­läuft.

d nennt man einen Multiplikator zu m oder einen "Sampler".

Diese Aussagen gelten auch für m- Werte, die keine Primzahlen sind, sofern die Indexabstände d, die bei der Verarbeitung der Arrays auftreten, relativ prim (koprim) zu m sind.

Page 90: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 82 -

(2) Mehrdimensionale Arrays: Matrizen

Im Falle mehrdimensionaler Arrays werden die Speicherzugriffs­probleme natürlich erheblich schwieriger, da wir ja je nach Aufgabenstellung des Algorithmus auf

Zeilen Spalten Diagonalen Gegendiagonalen, usw.

und gegebenenfalls, wie in Block-Verfahren der linearen Algebra, auf Unterblöcke der Matrizen zugreifen wollen.

Der Einfachheit halber wollen wir zwecks Anschaulichkeit der Darstellung 2-dimensionale Arrays betrachten.

Wir wollen annehmen, daß wir auf geeignete Zerlegungen oder Untergruppierungen von

n Elementen

der Arrays in

m Speicher-Einheiten

parallel zugreifen wollen.

Betrachten wir das folgende Speicher-Schema für m = n = 4:

Speicher -Einheit

0 1 2

aoo a01 a02

a10 all a12

a20 a21 a22

a30 a31 a32

In diesem Speicher-Schema können wir auf

jede Zeile jede Diagonale jede Gegendiagonale

parallel ohne Konflikt zugreifen.

3

Da aber alle Spaltenelemente in derselben Speichereinheit liegen, würde der parallele Zugriff auf die Elemente einer Spalte zu Zugriffskonflikten führen.

D. h.: die Speicher haben n Zyklen zu durchlaufen,um n Elemente einer Spalte vorhalten zu können.

Page 91: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 83 -

(3) "Skewing"-Methode

Um den gleichzeitigen parallelen Zugriff auf die Zeilen und Spalten von Matrizen und das Auslesen von n-Vektoren zu ermöglichen, kann man nun ein einfaches

"SKEWING-Schema"

anwenden durch zyklische Verschiebung der Zeilen ( m = 4, 1\ = 62 = 1):

Speicher- Einheit

0 1 2 3

aoo aOl a02 a03

al3 alO all al2

a22 a23 a20 a21

a31 a32 a33 a30

Aber jetzt können die Diagonalen nicht mehr konfliktfrei erreicht werden.

Dieses Skewing-Schema bezeichnet man mit den Parametern:

(61 = 1, 62 = 1, m = 4).

(4) Verallgemeinerte Skewing-Schemata

Wir wollen uns nun mit allgemeineren Skewing-Schemata und ihren Eigenschaften bzgl. des konfliktfreien parallelen Zugriffs auf die Speichereinheiten befassen.

Es sei: 1)

2)

3)

M die Anzahl der Speicher-Einheiten

N

&. I

die Anzahl der Prozessoren

der Skewing-Abstand in der i-ten Dimension des mehrdimensionalen Arrays.

D. h.: für eine 2-dimensionale Matrix ist jedes in der ersten Dimension folgende Element &. (modM) Einheiten entfernt vom vorhergehenden

1 Element

gespeichert.

Dasselbe gilt für die 2. Dimension: Zeilen­Dimension.

Für eine 2-dimensionale (NxN)-Matrix lautet die Speicherabbildung des allgemeinen Skewing-Schemas (Öl' 62):

ajk---+- Speichereinheit der Nummer

)J = (j . b1 + k • b2) (modM)

d. h. das Element a.k der Matrix wird in der Speichereinheit jJ abge~eichert.

Page 92: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 84-

Beispiel:

Für ein System mit M = 5, o1 = 2, 52.= 3, d. h. für ein (2, 3) -Skewing-Schema ergibt siCh das folgende Speicher-Bild:

Speicher -Einheit

0 1 2 3 4

aoo a02 X a01 a03

all al3 a10 a12 X

a22 X a21 a23 a20

a33 a30 a32 X a31

Die Skewing-Schemata lassen sich auf Matrizen mit L Dimensionen verallgemeinern und auf Matrizen, deren Dimensionen größer als N sind:

Skewing-Schema (o1, &2, ••••• , ~t):

ak1 k2 ... kc-- J-l = (b1 k1 + ~2k2+ ..... +~t kl) (modM)

Aus dem angegebenen (2, 3)-Schema für M = 5 sehen wir, daß wir zwar auf Gegendiagonalen, Zeilen und Spalten parallel konfliktfrei zugreifen können, nicht aber auf Diagonalen. Den Grund werden wir k ennenlernen.

(5) d-geordnete N-Vektoren (modM)

Definition: Ein d-geordneter N-Vektor (modM) ist definiert als ein Vektor mit N Elementen, dessen i-tes logisches Element in der Speichereinheit der Nummer

J-l = (d • i + c) (modM)

abgespeichert ist; dabei kann c eine beliebige ganze Zahl sein.

Zum Beispiel ist in dem (2, 3)-Schema die

3. Zeile: a 22 , X, a21, a23 , a20

ein

3-geordneter 4-Vektor (mod 5),

da das i-te Element in dem Speicher abgespeichert wird mit der Nummer

J-l = . (3i + 4) (mod 5),

0~ i :::;3,

denn:

i = 0 f-1= 4 a20

1 2 a21

2 0 a22

3 3 a7~·

Page 93: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 85 -

(6) Hinreichende Bedingung

Eine hinreichende Bedingung für einen d-geordneten N-Vektor (modM) für konfliktfreien Zugriff ist die Gültigkeit der folgenden Relation:

M ::?::- N • GGT (d, M),

wobei GGT (d, M) der größte gemeinsame Teiler von d und M ist.

Diese Bedingung folgt aus der Forderung, daß die Menge

{ jJ I )-1 = (di + c) (modM), 0~ i ~ N-1 }

genau N verschiedene Elemente haben muß, damit die Abspeiche­rung in N verschiedene Speichereinheiten der insgesamt M parallelen Speichereinheiten erfolgen kann.

Wegen der Multiplikator- oder Sampier-Eigenschaft teilerfreier Parameter d und M ist dies gerade dann gegeben, wenn diese hinreichende Bedingung erfüllt ist.

~enn wir das (61

, b2

)-Skewing-Schema benutzen, so sind natürlich d1e

Spalten: b1

-geordnet,

Zeilen: &2-geordnet,

Diagonalen: (b1 +6

2)-geordnet,

Gegendiagonalen: (&1-6

2)-geordnet.

Dementsprechend müssen für den konfliktfreien Zugriff auf diese Typen von N-Vektoren die folgenden Bedingungen gelten:

(1) Spalten: M ~ N • GGT (61

, M)

(2) Zeilen: M ~ N . GGT (62

, M)

(3) Diagonalen: M ~ N • GGT (&1

+ &2

, M)

(4) Gegendiagonalen: M ~ N . GGT ((\ - &2

, M).

Im Falle M = N bedeutet dies, daß aufgrund der hinreichenden Bedingung

GGT (61

, M) = 1

GGT (62

, M) = 1

GGT (61 +6

2,M) = 1

gleichzeitig erfüllt sein müssen, um Spalten, Zeilen und Diagona­len mit einem Skewing-Schema konfliktfrei zu haben.

o Wenn M geradzahlig ist, dann müssen

sein, um· diese Bedingungen zu erfüllen. Das kann aber nicht erreicht werden!

Daraus folgt: für gerades M läßt sich konfliktfreier paralleler Zugriff auf Zeilen, Spalten und Diagonalen nicht erzielen.

Page 94: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 86 -

o Beispiel:

Im dargestellten (2, 3)-Schema mit M = 5 hatten wir gefunden, daß die Diagonale (a .. ) der Matrix (a .. ) in der ersten Speichereinheit abgelegt wird una

1 daher konfliktff~ier Zugriff nicht garantiert ist.

Da für Diagonalen in diesem Fall

nicht erfüllt sein kann, denn

also GGT = 5; somit ist Konflikfreiheit nicht gegeben.

(7) Schemata für Gegendiagonalen und Blöcke

Gegendiagonalen sind (ö1

- 62

)-geordnete N-Vektoren.

a) Der konfliktfreie Zugriff auf Gegendiagonalen zusätzlich zum konfliktfreien Zugriff auf Spalten, Zeilen und Diagonalen wird gewährleistet von (6

1, ö

2)-Skewing-Schemata , wenn

N = 22k '

M = 22

k +1 für natürliches k,

k (61, Ö2) = (2 ' 1).

Diese Schemata wurden 1971 von Budnik + Kuck (IEEE Trans. Computers C-20 (1971), 1566-1569) angegeben.

Ein Beispiel für ein solches Schema mit den Parametern (k = 1):

N = 4

M 2

= 2 + 1 = 5

bl = 2

b2 = 1

lautet:

Page 95: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 87 -

Speicher -Einheit

0 1 2 3 4

aoo aOl a02 a03 X

al3 X alO a11 al2

a21 a22 a23 X a20

X a30 a31 a32 a33

Diese Schemata sind auch besonders wichtig für Block­Verfahren der linearen Algebra, da sie den konfliktfreien Zugriff auch auf quadratische Blöcke der Matrizen gewährleisten, z. B. auf

r i aoo I i alO L

oder

b) Eine weitere Klasse von Skewing-Schemata wurde von Lawrie 1975 angegeben (IEEE Trans. Computers C-24 (1975), No. 12, 1145-1155).

Diese Klasse gilt für die Parameter:

N = 22k

M = 2N = 22k+l

ö1

= (N1/ 2 +1) = 2k +1

ö2 = 2

Mit diesem Schema erhält man die Ergebnisse:

(1) Zeilen:

(2) Spalten:

(3) Diagonalen:

(4) Gegendiagonalen:

Für die d.'s gilt, daß I

Nl/2+1 =

Nl/2+3 =

Nl/2_1 =

2-geordnet

(N1/ 2 +1)-geordnet

(N1/ 2 + 3 )-geordnet

(N1/ 2 -1)-geordnet.

(Spalten)

(Diagonalen)

(Gegendiagonalen)

alle ungerade und damit koprim zu M = 2N = 2k+l sind.

Page 96: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 88 -

Daher ist mit Ausnahme der Zeilen

GGT (d., M) = 1, I

und die Bedingung

für

M ~ N • GGT (d., M) I

Spalten

Diagonalen

Gegendiagonalen

erfüllt.

Für die Zeilen finden wir, daß

d = 2 Zeilen

und

GGT (dz .1 M) = 2; e1 en,

damit ist die hinreichende Bedingung erfüllt: da M = 2N, ist auch

M ~ 2N,

so daß auch auf die N-Vektoren der Zeilen konfliktfrei zugegriffen werden kann.

Hinzu kommt die Eigenschaft, daß auch auf

(N112 x N112) - Blöcke

konfliktfrei zugegriffen werden kann.

Es gilt der

Satz: Wird bei M = 2N Speichereinheiten das Skewing­Schema

t 1/2 (61

, o2) = (N +1, 2)

angewandt, so liegen die Elemente eines quadra­tischen

(N1/ 2xN1/ 2) - Blocks

in verschiedenen Speichereinheiten.

Page 97: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 89 -

Bemerkung: Ein (N1

/ 2xN1/ 2)-Block der Matrix (a .. ) hat die Form IJ

a .. I ,J a .. Nl/2 1 I,J+ -

a. 1 . Nl/2 1 1+ ,J+ -

a. Nl/2 1 . I+ - ,J a. Nl/2 1 . 1 I+ - ,J+ ~. Nl/2 1 . Nl/2 1 I+ - ,J+ -

Durch das (N1/ 2 +1,2)-Schema werden die Elemente so abgebildet:

f-lxl'x2

= [Ci+x1) . CN112

+1) + (j+x2) . 2 J (mod2N)

für 0 ~ xl' x2 ~ N112

- l.

Der Beweis des Satzes ist von Lawrie in der zitierten Arbeit angegeben.

Da hierfür einige Grundlagen der Kongruenzen-Algebra nötig sind, soll hier auf den Beweis verzichtet werden.

Beispiel: (k = 1)

Für den Fall N = 22 = 4

M = 2N = 8

öl = N+l = 3

ö2 = 2

soll zur Illustration noch ein solches Schema nach Lawrie an­gegeben werden:

Speicher - Einheit

0 1 2 3 4 5 6 7

aoo aOl a02 a03

al3 alO all al2

a21 a22 a23 a20

a30 a31 a32 a33

o Wie wir sehen, ist die Abspeicherung der Matrix einigermaßen "sparse". Dies kann genützt werden für die Speicherung einer zweiten Matrix in den "Löchern" dieser Speicheranordnung, oder aber die Matrix wird auf die Hälfte der Zeilen zusammengedrückt.

Page 98: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 90 -

a) ILLIAC IV hat 64 Speicher-Einheiten; das System erlaubt Array-Skewing-Schemata einfacher Art.

b) Burroughs' BSP hat 17 Speicher, die konfliktfreien Zugriff zu den meisten der diskutierten N-Vektor-Möglichkeiten bieten.

BSP hat übrigens einen eigenen Programm-Speicher, dadurch werden Zugriffskonflikte zwischen Programm-Instruktionen und Daten vermieden.

(9) Der "Wellenfront"-Algorithmus

Die Illustration der Nützlichkeit, konfliktfreien Zugriff auf pa­rallele Speichereinheiten auch für die Gegendiagonalen einer Matrix zu haben, soll an dem folgenden Algorithmus gezeigt werden, der den Namen

''Wellenfront''-Algorithmus

trägt und 1971 von MURAOKA (Parallelism Exposure and Ex­ploitation in Programs, PhD Thesis, University of Illinois, Dept. Comp. Sei. Report 71-424 (1971) ) als erstem angegeben worden ist (Abb. 2.12).

o Dazu betrachten wir das folgende in F ortran oder Pseudo­Fortran gestellte Problem mit zyklischer Abhängigkeit:

DO 1 DO 1 J

1 w (I,J)

= 1, N = 1, N = A (I-1,J)*W(I-1,J)+A(I,J-1)*W(I,J-1)

Im seriellenFall der Verarbeitung dieses Programmes erhalten wir die Zeitkomplexität

=

Mit einem Parallelprozessorsystem läßt sich die Zeitkomplexi­tät reduzieren auf

T p = 0 (N),

so daß mit N Prozessoren ein Speedup resultiert:

sP = o (N).

Dazu geht man so vor, daß in N Schritten jeweils die Elemente der Gegendiagonalen berechnet werden, so daß sich im 45 °­Winkel eine "Wellenfront" durch die Matrix W bewegt. Die Matrizen A und W können wir uns als gemeinffl alternierend in einem M = 2N Speichersystem mit (N +1,2)-Schema abgespeichert denken zwecks Effizienzsteigerung.

Der Algorithmus läßt sich auf höhere Dimensionen übertragen:

S = 0 (Ne-1). p

Page 99: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 91-

2. 7.5 Cache-Konzept

In den modernen Computersystemen dient das Cache-Konzept des schnellen Pufferspeichers zwischen Prozessor und Hauptspeicher zur Uberbrückung der Geschwindigkeitslücke zwischen Prozessor und Hauptspeicher (Tabelle III.1).

Die Zykluszeit des Cache-Memory ist den Prozessor-Zykluszeiten angepaßt, d. h. in der Regel gleich.

Der Vollständigkeit halber seien hier für dieses Architekturelement moderner Monoprozessoren, Multiprozessoren und Parallelprozessoren eini­ge quantitative Größen angegeben.

Es sei R das "Cache Hit Ratio", die Trefferwahrscheinlichkeit des Puffer­speichers, d. h. der Bruchteil der bei der Verarbeitung erforderten Haupt­speicher-Adressen, die bereits vom Cache befriedigt werden können:

Cache-Größe experimentell bestimmtes Cache Miss Ratio (l- R)

512 Bytes

1024 II

2048 II

4096 II

8192 "

Es sei: T = "Cache Memory Cycle Time" c

T = Hauptspeicher-Zykluszeit m

Dann ist die effektive Speicher-Zykluszeit:

T = R • T + (1-R) T e c m

Der Speedup infolge des Cache ist dann:

T m 5c =r e

S läßt sich explizit schreiben: c

T m

= "'R~T;::---+-(.,...1-.-R"')"T,.,-e m

Da T /T < 1, ist diese Gestalt günstig: c m

s = c 1 T 1 - (1- c ) R T

m

0.30

0.20

0.11

0.07

0.03

Page 100: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 92-

Nehmen wir als Stützpunkt für R

k R = k + 1'

so ergibt sich die praktische Abschätzung

s c

1 =

k 1 +k+1

(k+ 1)J m = T +kT

m c

(Tc T m

=

- 1) k k+1

< k+1

1

T . c + 1 T k+1

m

D. h. während für R = 1/2 der Speedup nicht über 2 gehen kann, erhält man für die in der Praxis gefundenen R-Werte, die über 0.9 liegen in der Regel, ganz wesentliche Faktoren.

So erhalten wir für T /T = 0.12 c m

(was dem Verhältnis T /T = T /T ~ 8 entspricht) m c m p

4K-Cache: R ~ 0.93

BK-Cache:

s4K 'M 5.5 c

R ~ 0.97

SBK~ 6.8. c

Die Vergrößerung um 4K erhöht den Speedup um 24 %, so daß ein Cache­Design mit größerem Cache-Speicher sich auszahlt. Dies zeigen deutlich die Trends bei den heutigen Großrechnersystemen wie IBM 3033.

2.8 Verbindungsstrukturen ("Interconnection Networks'', "Alignment Networks")

Wir wollen uns im folgenden, ausgehend von den Konzepten der parallelen Speicher-Organisation und der Skewing-Schemata, einer weiteren für die Architektur von Parallelprozessoren wesentlichen Komponente zuwenden: den Verbindungsstrukturen, im Englischen: Interconnection Networks und, speziell für Array-Prozessorstrukturen, Alignment Networks (vgl. Abb. 1.33).

Die Verbindungsstrukturen stellen einen der signifikantesten Faktoren für die Leistungsfähigkeit eines Parallelprozessors oder Arrayprozessors dar, denn das System muß in der Lage sein, Datenfelder wie Vektoren und Matrizen in einem Maße den Prozessoren zuzuführen, das der Geschwin­digkeit der Prozessoren angepaßt ist.

Es genügt hier nicht, nur einen Speicher vorzusehen, dessen Bandbreite der Bandbreite der Prozessoren entspricht.

Vielmehr muß sichergestellt werden, daß der Datenzugriff normalerweise ohne Zugriffskonflikte erfolgen kann und daß die Daten in der gewünschten Anordnung und Zuordnung den Prozessoren zugeführt werden.

Page 101: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 93-

Beim Entwurf von SIMD-Systemen, auf die wir uns hier beschränken wollen, stellt die Struktur des Interconnection Network zur Kommunikation zwischen den Prozessoren und Speichereinheiten ein beachtliches Problem dar.

Die Verbindungsstruktur zwischen N Prozessoren und M Speichereinheiten in einem SIMD-System, wo auf~rund ~6 technologischen Entwicklung N in der Größenordnung zwischen 2 und 2 , d. h. zwischen 64 und 64K liegen kann, ist keine triviale Aufgabe.

Ein einziger gemeinsamer Daten-Bus reicht nicht aus, da in einem Parallel­prozessor-System die Notwendigkeit besteht, daß viele Prozessoren gleich­zeitig Daten zu anderen Prozessoren bzw. zu den Speichereinheiten schicken oder von dort Daten empfangen können.

Im Idealfall wäre es wünschenswert, jeden Prozessor direkt mit jedem anderen Prozessor zu verbinden; das ist jedoch für große N weder praktisch machbar noch wirtschaftlich, da jeder Prozessor N-1 Verbindungen brauchte allein für die Verbindungen der Prozessoren untereinander.

2.8.1 Charakteristika

Wir wollen im folgenden unter einem Verbindungs-Netzwerk oder einer Verbindungsstruktur ein System aus

N Eingängen N Ausgängen 1 Block der Verbindungslogik K Eingängen für Steuerung des Netzwerks

verstehen, wobei die Steuereingänge nur im Falle der externen Steuerung des Netzwerks vorhanden sein sollen (Abb. 2.13).

Die Logiken der Netzwerke sind, gegebenenfalls durch die Steuereingänge, derart strukturiert, daß die N Eingänge in einer für die Aufgabe des Systems geeigneten Weise mit denN Ausgängen verbunden werden.

Selbstverständlich haben wir es mit

N ! Verbindungen

zu tun, wenn wir alle möglichen Permutationen zulassen, um die N Eingänge auf die N Ausgänge abzubilden.

(1) Koordinaten-Schaltwerke ("Cross bar Switch" = Kreuzschienen-Schaltwerk)

Eine Möglichkeit für eine Verbindungsstruktur ist das traditionsreiche Kreuzschienen-Schaltwerk, das aufgrund seiner Gitterstruktur in der Lage ist, jede 1-zu-1-Abbildung der Eingänge auf die Ausgänge herzustellen.

Die Zeit für den Transport der Information von den N Eingängen zu den N Ausgängen für dieses Netzwerk ist:

T = 0 (log2

N),

wie aus der Theorie der Telefonnetze bekannt ist.

Page 102: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 94-

U2glücklicherweise ist die Zahl der Schalteinheiten proportional zu N:

s =

Somit wachsen die Kosten für ein solches Netzwerk mit N2

.

Bei der gegebenen Technologie solcher Systeme sind deshalb diese Kreuzschienenschaltwerke nicht tragbar, sobald N über kleine Zahlen hinausgeht.

(2) Permutations-Netzwerke

Ein "Crossbar Switch"-Netzwerk benötigt 0 (N2) Schalteinheiten.

Wenn wir einen linearen Speedup der Prozessoren und ein lineares Anwachsen der Speicher-Bandbreite erzielen mit einem linearen Wachstum der Investitionen in Prozessor- und Speicherentwicklung, erscheint es sehr unvernünftig, für die Steiger~ng der Bandbreite der Verbindungsstrukturen Investitionen von 0 (N ) zu tätigen, um hier eine auch nur lineare Leistungsverbesserung zu erzielen.

Die Frage ist, ob für Ver~indungsstrukturen tatsächlich der Aufwand an Komponenten von 0 (N ) unumgänglich ist.

Ein Standard-Crossbar-Netzwerk kann alle möglichen Permutationen von N Eingängen zu N Ausgängen realisieren.

Es gibt insgesamt bekanntlich N ! solcher Permutationen.

Nach der Stirlingschen Formel gilt die Approximation

N ! ~ (~) N , (2 I(; N)l/2 e

für die Zahl verschiedener innerer Zustände, deren das Netzwerk fähig sein muß, um alle Permutationen auszuführen.

A~f der anderen Seite kann ein "Crossbar"-Netzwerk als ein Array aus N Schalteinheiten betrachtet werden, die jeweils einen von 2 Zuständen annehmen können.

Somit ergibt sich die Zahl der inneren Zustände des Netzwerkes als

z = N2

2 .

Da aber 2 NN /logN,

wie sich durch Logarithmenbildung auf beiden Seiten zeigen läßt:

und da

2 NN /logN >> (N )N • (21C N)l/2

e

Page 103: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 95 -

wird deutlich, daß wir mit dem "Crossbar"-Netzwerk einen zu großen Aufwand betreiben, solange wir nur an Permutationen interessiert sind.

In der Tat ergibt sich unter der Annahme eines Systems aus N • logN 2-Zustands-Schalteinheiten, daß die Gesamtzahl der inneren Zustände eines solchen Netzwerkes als eine vernünftige Näherung für die geforderte Zahl der Permutationen ausreicht; denn

N 2N.logN = 2logN = NN

approximiert das Ergebnis der Stirling-F ormel recht gut für die Zahl der notwendigen Permutationen.

Es wird also deutlich, daß statt O(N2

) Schalteinheiten nur

O(N.logN)

Schalter wirklich nötig sind, um die N möglichen Permutationen zu realisieren.

Diese Tatsache hat in den letzten Jahren der Parallelprozessor­Entwicklung, aber auch bereits vorher im Zusammenhang mit anderen Kommunikationssystemen (wie T elefonnetzen) zu einer Reihe von Lösungen bzw. Lösungsansätzen für einfachere Permutations-Netz­werke geführt.

2.8.2 Vergleich von Verbindungsstrukturen

Ein Vergleich der existierenden Verbindungsstrukturen bzw. der theore­tischen Ansätze dafür ist derzeit sehr schwierig aus den folgenden Gründen:

(l) Es existieren nur sehr wenig theoretische Arbeiten über diesen Problemkreis und dementsprechend sind nur wenige analytische Instrumente zur quantitativen und qualitativen Bewertung bislang verfügbar.

(2) Die Verbindungsstrukturen sind hauptsächlich als Ad-hoc-Lösungen zu Parallelprozessorsystemen entwickelt worden; sie befriedigen deshalb sehr unterschiedliche Anforderungen; wegen ihrer unterschiedlichen Fähigkeiten wird der Vergleich noch schwieriger.

(3) Es existiert kein Basis-Netzwerk, das sich für den qualitativen Vergleich und den quantitativen Maßstab anböte.

Die Tabelle 2.1 soll daher nur einen groben Vergleich der globalen Unterschiede in den Verbindungsstrukturen darstellen, wobei die Größen­ordnung der Abhängigkeiten maßgeblich ist.

2.8.3 Skewing-Anforderungen an Verbindungsstrukturen

Wir wollen im folgenden:

einerseits zurückkehren zu dem Problem der parallelen Speicher­organisation für Array-Prozessoren und den diskutierten Skewing­Schemata und d-geordneten N-Vektoren sowie den algorithmischen Anforderungen, die über die Parallelprozessorstruktur und die Organi­sation paralleler Speicher an die Kommunikationssysteme zwischen der Prozessorebene und der Hauptspeicherebene gestellt werden;

Page 104: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 96-

andererseits eine auch theoretisch anspruchsvolle Verbindungsstruk­tur, nämlich die sog. OMEGA-Netzwerke von Lawrie (1975) eingehen­der behandeln und dabei auch ein gewisses theoretisches Rüstzeug für die Behandlung dieses Problemkreises der Verbindungsstrukturen kennenlernen.

Dabei muß betont werden, daß dieser Problemkreis bisher weitgehend anhand von Ad-hoc-Lösungen abgedeckt wurde und erst in jüngster Zeit eine auch theoretisch stärker untermauerte Forschungs- und Entwicklungs­aktivität auf diesem Gebiet erkennbar wird, so daß der Relevanz dieses Gebietes mittlerweile stärker im theoretischen Bereich Rechnung getragen wird,

Bei der Behandlung der parallelen Speicherorganisation und der Skewing­Schemata hatten wir uns mit verschiedenen Typend-geordneter N-Vektoren befaßt, auf die parallele Algorithmen effizient zugreifen.

Die Skewing-Schemata garantieren zwar den konfliktfreien Speicherzugriff; die N-Vektoren sind dann aber in der Regel nicht in ihrer logischen Ordnung abgespeichert.

Diese gestörte logische Ordnung der Vektoren macht nun Umordnungen und Adjustierungen erforderlich, die vom Algorithmus, der die Daten anfordert, und vom Schema der konfliktfreien Speicherung abhängen.

Betrachten wir zwei N-Vektoren, die nach einem Skewing-Schema abge­speichert sind und die zur Ausführung gewisser komponentenweiser Operationen, z. B. Berechnung des Skalarproduktes oder Baalesche Ope­rationen oder Sortieren bzw. Mischen, neugeordnet werden müssen.

Zuerst müssen wir den einen oder sogar beide Vektoren so verschieben, daß ihre ersten Elemente in derselben physikalischen Position, z. B. einem bestimmten Prozessor zugeordnet, sind.

Sodann, falls ihre Ordnung nicht dieselbe ist, muß diese Ordnung des einen Vektors gegenüber dem anderen geändert werden.

So liegt z. B. bei der Berechnung des Matrixproduktes C = A.A nach dem orthodoxen Schema über die Skalarprodukte aus Zeilen und Spalten, etwa bei der Berechnung von c

0] aus der Zeile 101 und der Spalte 111 die Zeile 101

geordnet vor aus den Speicfiereinheiten 0-3:

wenn wir ein Skewing-Schema nach Budnik-Kuck wählen:

= (2k ,1)

= 22k+1

N = 22k

mit k = 1, also M = 5, N = 4, b1 = 2, b2 = 1, wie wir es vorher diskutiert haben.

Page 105: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 97-

Die Spalte '1' aber würde in der Reihenfolge erhalten aus den Speicher­einheiten 0-3:

so daß Umordnung nötig wäre.

Nach der Ausführung der Operation kann es erforderlich sein, wegen der Garantie konfliktfreien Zugriffs auf dieses Ergebnis, den Ergebnisvektor oder die Ergebnismatrix geeignet umgeordnet abzuspeichern unter Anwen­dung des Skewing-Schemas.

Wir hatten bereits bei der Behandlung des konflikfreien Zugriffs auf quadratische Unterblöcke von Matrizen auf Algorithmen, sog. Block­Verfahren, hingewiesen, die solche spezifischen Aufbereitungen von Unter­blöcken notwendig machen.

Entsprechende Anforderungen werden daher auch an die Verbindungs­strukturen gesteilt.

Wir werden uns im folgenden auf die Anforderungen bzgl. d-geordneter N­Vektoren der üblichen Form für Spalten, Zeilen, Diagonalen und Gegen­diagonalen beschränken, wobei zusätzlich auch quadratische Blöcke mitbe­rücksichtigt werden können:

Es soll darauf hingewiesen werden, daß die .Anforderungen bzgl. dieser Gruppe der d-geordneten N-Vektoren natürlich weder notwendig noch hinreichend sind oder sein sollen; sie stellen vielmehr eine Klasse dar, die als Muster in vielen Anwendungen auftreten, so daß sie für einen Array­Prozessor, der mit diesen Problemen der Anwendung beladen werden soll, natürlicherweise gefordert werden sollten.

2.8.4 "Perfect Shuffle"-System

Zunächst wollen wir uns mit einer Verbindungsstruktur befassen, die einerseits als Baustein im OMEGA-Netzwerk enthalten ist, andererseits aber eine fundamentale Rolle bei der Architektur von Parallelprozessoren zu übernehmen scheint und wesentliche strukturelle Grundlage für wichtige parallele Algorithmen ist: das Prinzip des "Perfect Shuffle".

Das Perfect-Sh~ffle-System entspricht dem Verbindungsschema für einen N-Vektor (N = 2 ), wie es in Abb. 2.14 dargestellt ist.

Das Prinzip des "Perfect Shuffle" hat seinen Namen vom Mischvorgang beim Kartenspiel, denn der "Shuffle"-Prozeß der Elemente eines Vektors ist äquivalent dem Mischen eines Kartendecks, das so vorgenommen wird, daß das Deck halbiert und die Hälften so gemischt werden, daß die Elemente der beiden Hälften alternieren (Abb. 2.14).

Page 106: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 98-

Die Analyse des Diagramms des Perfect-Shuffle-Systems zeigt, daß die Eingänge links auf die Ausgänge rechts entsprechend einer Permutation abgebildet werden, die sich folgendermaßen darstellt:

{

2i für 0 ~ i .{: ~ -1,

P(i) = 2i+1-N für ~ ~ i 4 N-1,

Nach der Analogie des Kartenmischens entsteht die Permutation derart, daß der Vektor halbiert wird in die Teilvektoren

N (0, 1, ..... '2- 1)

N N und ( 2 , 2 + 1, ..... , N - 1)

und die beiden Mengen so elementweise gemischt werden, daß die Elemente aus den beiden Teilvektoren alternieren:

N N N N (0, 2 , 1, 2 + 1, 2, 2 + 2, ..... , 2 - 1, N - 1)

Ein anderer Blick auf das Shuffle-System gründet sich auf die binäre Darstellung der Indizes der Elemente des Vektors.

Durch das "Perfect-Shuffle"-Prinzip wird das i-te Element des Eingangs­vektors auf die Position i1 abgebildet, wobei i 1 die Zahl ist, die durch zyklische Rotation des Bit-Musters der Binärdarstellung von i um 1 Bit­Position nach links erhalten wird.

Nehmen wir an, die binäre Entwicklung von i, 0 ~ i ~ N-1, N = Zn, laute:

. zn-1 . 2n-2 . z1 . = 1n-l + 1n-2 + ••••• + 11 · + 10

wobei i E (0, 1). V

Dann ist die aus resultierende, zyklisch rotierte Permutationsadresse gegeben durch

. I 1 =

. zn-1 . 2n-2 . 21 . 1 2 + 1 3 + ..... + 10 • + 1 1' n- n- n-

Wenn i n-1 = 0 ·' : 1 = 2i, 0 ~ . < N 1 2;

Wenn i n-1 = 1: i' = Zi + 1 - Zn , i ~ ~' i < N •

Der Vergleich der Ergebnisse für i mit der Formel für die Permutation P(i) zeigt die Äquivalenz.

Aus der Regel der zyklischen Verschiebung folgt, daß n-fache Anwendung des Perfect-Shuffle-Schemas zur Ausgangspermutation P 0 = 0, 1, Z, ..... , N-1 zurückführt:

(. . . ) (1) (. . . . ) = 1 1 1 z ..... 10 _..,. 1 2 1 3 ..... 10 1 1 n- n- n- n- n-

(k) (n) (' . . ) . _,.. ..... ~ 1 11 2 ..... 10 = 1. n- n-

__ ""

Page 107: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 99-

Die "Perfect-Shuffle"-Verbindungsstruktur hat also die Eigenschaft, daß ein Eingangselement, dessen Position die Binärdarstellung

s =

hat, auf die Ausgangsposition mit der Binärdarstellung der Nummer des Ausgangs

D =

gebracht wird.

In Matrixform können wir die folgende (n x n) - Matrix P als "Perfect­Shuffle"-Matrix (n = logN) interpretieren:

1010 .......•.. 0 0 0 1 .......... 0 .....................

ll ::::::::::::::::::::: 0 0 0 .......... 1 1 0 0 0000000000 0

p =

Es ist:

0010 .......... 0 0001 ...••..... 0

2 P = P.P =

0000 .......... 1 1000 .......... 0 0100 •...•...•. 0

und n-fache Anwendung liefert die Einheitsmatrix I:

pn = I'

so daß n-faches Perfeet Shuffle den Ausgangszustand des n-Vektors, auf den die Matrix angewandt wird, wieder herstellt.

2.8.5 Konstruktion des OMEGA-Netzwerks

Ein (N x N)-OMEGA-Netzwerk für N = 21 besteht aus 1 = logN identischen Stufen. Jede Stufe besteht aus einer "Perfect Shuffle"-Verbindung, die zu N/2 Schaltelementen führt (Abb. 2.15).

Jedes Schaltelement kann einen der 4 Zustände annehmen, die in Abb. 2.16 dargesteHt sind.

Page 108: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 100-

Jedes Schaltelement kann entweder

oder

(1) seine Eingangsdaten gerade durchlassen,

(2) die Eingangsdaten vertauscht auf die beiden Ausgänge geben

(3/4) eingehende Daten aus einem der beiden Eingänge auf beide Ausgänge schicken: BROADCAST.

Die Schaltung der beiden Eingänge auf denselben Ausgang ist nicht erlaubt.

Die "Perfect Shuffle"-Verbindung hat, wie bereits diskutiert, die Eigen­schaft, die Eingangsdaten auf dem Eingang mit der Binärdarstellung der Position

s =

auf den Ausgang mit der Position D in binärer Darstellung

D =

zu legen.

Das Schaltelement kann dann die Daten auf den Ausgang der 1. Stufe

in Position s2

s3

..... s1

0

oder in Position s2

s3

..... s1 1

verschieben.

Um Daten durch das gesamte Netzwerk hindurchzuschal ten, wird jedes Element des Netzwerkes in einen der 4 Zustände gebracht; die Zustände l;lind nicht notwendigerweise für alle gleich.

Auf diese Weise entstehen

1 : I-Abbildungen

oder

1 : K-Abbildungen ("Broadcast")

2 Fragen:

1) Gibt es einen Algorithmus, der die notwendigen Zustände der Schaltelemente bestimmt, und kann dies in derselben Zeitgrößen­ordnung erfolgen, mit der Daten durch das Netzwerk wandern?

2) Welche Abbildungen von Eingangsmustern auf Ausgangsmuster sind möglich?

Page 109: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 101-

2.8.6 Steuerung des OMEGA-Netzwerks

Es stellt sich heraus, daß es einen effizienten Algorithmus gibt, der die Zustände des OMEGA-Netzwerkes setzt.

Betrachten wir den Fall, daß wir mittels des Netzwerkes über einen Pfad die Eingangs-Nummer S auf die Ausgangs-Nummer D schalten wollen.

Aus dem Diagramm des (8 x 8)-0MEGA-Netzwerkes läßt sich analysieren (Abb. 2.15), daß es zwischen jedem vorgegebenen Eingangs/Ausgangspaar (S,D) einen und nur einen Pfad durch das Netzwerk gibt.

Es sei die Eingangs-Adresse S gegeben in der Binärdarstellung

s =

und

D =

die Binärdarstellung der Ausgangsadresse, mit der die Eingangsposition S verbunden werden soll.

(I) Algorithmus:

(1) Wir starten beim Eingang S:S=s1 s2 ..... sl'

(2a) "Perfect Shuffle"-Abbildung von S:S 1 =s2s3 ..... s1s1•

(2b) Das erste Schaltelement, mit dem S aufgrund des "Perfect Shuffle"-Systerrs (mit S 1) der 1. Stufe ver~unden ist, ~ird so gesetzt, daß s1 = s2s3 ..... sld1' d. h. der Eingang s1 Wird auf den oberen Ausgang des Scha telementes gelegt, wenn

d1 = 0'

oder der Eingang S wird auf den unteren Ausgang des Schaltelementes gelegt, wenn

d1 = 1.

(3a) "Perfect Shuffle"-Abbildung von S~ : s 2 = s3s4

..... s1d1 s2•

(3b) Entsprechend dem "Perfect Shuffle"-System der 2. Stufe wird jetzt ein zweites Schaltelement angesteuert, das nun den Pfad vom Eingang s

2 zu seinem oberen Ausgang schaltet, wenn d2 =

0, zu seinem unteren Ausgang schaltet, wenn d2 = 1, d. h. S{= s3s4 ••••• sld1d2.

(4) In dieser Weise fahren wir fort, indem in jeder Stufe 'i' entsprechend dem Bit · 'd.' geschaltet wird, nachdem das zugehörige "Perfect Shuftle"-System den Pfad dem ent­sprechenden Schaltelement der Stufe 'i' zugewiesen hat, so daß Si= si+l" .... s1d1 d2 ..... si und s( = si+r····s1d1 d2 ••• di.

(5) Auf diese Weise erreichen wir den gewünschten Ausgang der Nummer D : D = d

1 d

2 ••••• d1 nach l Stufen (l = logN).

Page 110: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(II) Beispiel:

- 102-

s = 010 D= llO

Den Pfad verfolge man anhand des Diagramms des (8x8)-0MEGA­Netzwerkes in Abb. 2.17.

Während einer Stufe 'i' geht also ein Eingang, der auf die Position

f s. 1 1- =

durch die vorhergehende Stufe 'i-1' geschaltet wurde,

1) durch ein "Perfect Shuffle"-System und gelangt so in die Position

s. 1

und wird dann

= s. 1

s. 2

..... s1d

1d

2 ..... d.

1 s. ;

1+ 1+ 1- 1

2) durch das Schaltelement der Stufe 'i' in die Position geschaltet:

s.' 1

= s. 1

s. 2

..... s1d

1d

2 ..... d.

1d .•

1+ 1+ 1- 1

Dadurch wird nach 1 = logN Stufen der ursprüngliche Eingang S mit dem angestrebten Ausgang D verbunden.

(III) Umkehr-Algorithmus:

Ein entsprechender Algorithmus wirkt bei Umkehr der Richtung von D auf S, indem der Start bei d

1 d

2 ..... d1 erfolgt, statt dem "Perfect

Shuffle"-System in Umkehrung aes rv1echanismus ein "Unshuffle"­System wirkt und die Schaltelemente jetzt entsprechend s. auf der Stufe 'i' geschaltet werden.

1

Um eine spezifische Abbildung der Eingänge auf Ausgänge aufzu­bauen, folgen wir einfach der im Algorithmus angegebenen Prozedur gleichzeitig für alle Eingänge bzgl. aller Ausgänge.

Es verbleibt nur zu zeigen, daß diese Prozedur vollständig ist in dem Sinne, daß sie jede Abbildung aufbauen kann, deren das Netzwerk fähig ist.

Wir wollen dies hier nicht formal beweisen.

Jedoch bemerken wir, daß der Algorithmus immer nur einen Pfad durch das Netzwerk zwischen irgendeinem vorgegebenen Eingang und Ausgang auswählt.

Damit spezifiziert der Algorithmus für jede Abbildung von Eingängen auf Ausgänge bestimmte Pfade.

Da es jeweils nur einen einzigen Pfad zwischen einem Eingang und einem Ausgang gibt, muß die Menge der Pfade für eine bestimmte Abbildung eindeutig sein und der durch den Algorithmus festgelegten Menge entsprechen.

Page 111: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 103 -

(IV) F alsehe Pfade:

Es muß betont werden, daß jedoch der Algorithmus Pfad-Mengen für Abbildungen spezifizieren kann, deren das Netzwerk nicht fähig ist, d. h. die gegen Bedingungen verstoßen, die an das Netzwerk bzw. die Abbildung gestellt werden. Ein Beispiel sind die Pfade, die für die Abbildung S = (000) : D = (000) und Sb = (100) : Db = (010) aufgebaut werden könn'1n (Abb. 2.lt3).

Wie das (8x8)-0MEGA-Netzwerk im Diagramm zeigt, haben diese Pfade eine Verbindung am Ausgang der l. Stufe gemeinsam. Sie liefern damit eine Bedingung, die zum Konflikt führt und die nach Definition nicht erlaubt sein soll, da ja verschiedene Signale ein und dieselbe Leitung gleichzeitig benutzen müßten.

Wir erfahren also, daß der Algorithmus zwar für jede Abbildung die eindeutige Menge der Pfade im Netzwerk auswählen wird, daß aber die Pfade in einer Menge nicht notwendigerweise disjunkt sein werden, d. h. es können Konflikte entstehen, indem verschiedene Pfade Teilstrecken gemeinsam haben.

2.8.7 Optionen für OMEGA-Netzwerke

Beim Entwurf von OMEGA-Netzwerken verfügt man über gewisse Optionen. Bisher hatten wir für das OMEGA-Netzwerk sog. (2x2)­Austausch/Broadcast-Einheiten vorgesehen.

Es ist aber möglich, OMEGA-Netzwerke auch aus größeren Elementen aufzubauen, z. B. aus (4x4)- und (2x2)-Elementen. Abb. 2.19 zeigt ein (8x8)­Netzwerk aus (4x4)- und (2x2)-Elementen. Dabei können die (4x4)-Einheiten "Crossbar"-Elemente oder aber ihrerseits OMEGA-Netzwerke sein, die aus (2x2)-Elementen bestehen; in diesem Fall sind die Netzwerke identisch mit OMEGA-Netzen, die nur aus (2x2)-Elementen aufgebaut sind.

So könnten etwa als Gruppe 16 Prozessoren mit 16 Speichereinheiten über ein (16x16)-Crossbar-System verbunden werden und dann vier solcher Gruppen mit 2 "Shuffle"-Systemen und Schalt-Stufen weiter verbunden werden. Dies würde sehr komplexe Daten-Abbildungen innerhalb der Gruppen aus 16 Prozessoren erlauben und über OMEGA-Netzwerke die etwas eingeschränkte Kommunikation zwischen allen 64 Prozessoren bieten bei kleinerem Aufwand, als ein großes Crossbar-Switch-System erfordern würde.

2.8.8 Eigenschaften von OMEGA-Netzwerken

Aus der bisherigen Diskussion über den Pfad-Algorithmus und die möglichen Konflikte durch gemeinsame Verbindungsstrecken ist deutlich geworden, daß ein OMEGA-Netzwerk nicht alle möglichen 1 : 1-Abbildungen oder 1 : K-Abbildungen von Eingängen auf Ausgänge im geforderten Sinne leisten kann.

Wir wollen uns deshalb mit den Klassen befassen, die von OMEGA­Netzwerken geleistet werden.

Page 112: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 104-

Für die Analyse solcher Netzwerke benötigen wir einige Grundtatsachen und Definitionen (aus der Zahlentheorie).

(1) Definitionen:

(i) Es sei

mit wobei

Notation:

Die Notation

a = a'm+oG, b = b'm+p,

C(' p < m, a,b, w ,~,a' ,b' ,m nichtnegativ ganzzahlig.

X= y m

heißt:

"x ist kongruent zu y modulo m".

Dann ist in der Terminologie der Zahlentheorie:

a=b 4lil 110 c<-=~ m

Beispiel: a = 18 = 3 . 5 + 3 b=8=1.5+3

~ 18=8 ,da c<.=~=3 5

d.h.: 18 (mod5) = 3 8(mod5) = 3

(ii) Es sei m ein Faktor von N : N = k.m. Mit a und b wie in (i) definieren wir:

m a N b .,.__..,.. a'm N b'm ,

d. h. m •La/mj (modN) = m {b/mJ (modN), und sagen "a ist zu b kongruent modulo N nach m.

Binäres Beispiel:

m = 4 = 100, N = 16 = 10000:

a = 11010 (= 26) b = 01010 (= 10) c = 10010 (= 18)

1) a - b = c, 4 4

da alle in den letzten 2 Bits übereinstimmen.

1L 2) a

16 b ,

da nach Abstreichen der letzten 2 Bits a und b in den Bits 3 und 4 übereinstimmen, die ja den Rest modulo 16 nach Abzug des Restes modulo 4 liefern.

Da a und b in den letzten 4 Bits übereinstimmen, gilt auch noch vorher

a b 16

Page 113: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

3) a JE. c und 16

- 105-

a ~c, 16

da nach Abstreichen des (der) letzten (3) Bits die Bits (2, 3 und) 4, also:

1 (01) 0 (01),

nicht übereinstimmen, die ja den Rest modulo 16 nach Abzug des Restes mod2(8) liefern.

(2) Relationen (ohne Beweis):

(3)

(Al) x + a - y + a ..,. "" X - y m m

(A2) X - y ~ ax - ay m m

(A3) Wenn a koprim zum, d. h. GGT (a,m) = 1, so gilt:

ax ay __..X - y m m

(A4) ax - ay 4--11"- x - y am m

(A5) Wenn 0 ~ x, y < m, dann gilt:

X - y ~~ X - y am m

(A6) Sei x y m

und X N y;

dann gilt:

~ X y

Definition der Abbildungen

Es sei PN als eine Menge ganzzahliger Paare definiert:

PN = [(Si' Di)' 0 ~ i < N},

welche eine Abbildung von Eingängen auf Ausgänge darstellt: (Si' Di) = (S., D.) (modN)

I I

(S., D.) = I I

S ____.,. D q q

q < N'

wobei S. -:f: S., D. -::/; D., für alle 0 .!f i, j < N, i f j. I J I J

Es s~i f21j ein (NxN)-OMEGA-Netzwerk, wie vorher beschrieben,

wobeiN = 2 •

Page 114: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 106-

Wenn J?- N die Abbildung, die durch PN spezifiziert ist, leisten kann, sagen wtr:

"n N

oder JL N

Anderenfalls:

durch"

(4) Satz über geleistete Abbildungen

Von der Diskussion des OMEGA-Netzwerkes wissen wir, daß unter der Vorraussetzung der zwischen S und D herzustellenden Verbindung

(sl s2 ..... sl ' d 1 d2 ••... dl)

nach k Stufen des Netzwerkes der Eingang

s = sl s2 ..... sl

mit dem Ausgang Ak der k-ten Stufe verbunden ist, der die Binär­adresse hat:

' sk+l sk+2 ..... sl dl d2 ..... dk = sk.

Gehen wir nun von der Menge

PN = {(Si' Di), 0 ~ i < N }

aus, die eine Eingangs/Ausgangs-Abbildung darstellen soll nach unserer Defintion.

Dann gilt nach Definition

f2N t PN'

falls kein Konflikt eintritt, d. h. falls nicht zwei verschiedene Eingänge auf irgendeiner Stufe des Netzwerkes mit demselben Stufenausgang verbunden sind; d. h. aber: ein solcher Konflikt tritt ein unter der Bedingung, daß für ein Paar von Verbindungen, sagen wir für Ii f= f' mit s17 ::/=. Su., q,~ Du. ,

/ I (SV ' D V ) t;. p N'

(Sr' 914-) E PN,

O~v' q<N,

D~f~q<.N,

und für ein bestimmtes k gilt:

(I) V v v JA ,t.t k sk+l sk+2 ..... sl = sk+l sk+2 ..... sl

(II) V' V v !'-/'" 1V. dl d2 ..... dk = dl d2 ..... dk

Page 115: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 107-

Das ist aber gleichbedeutend mit der Aussage, daß für ein bestimmtes

1-k / < m = 2, l~k

und für ein bestimmtes Paar Verbindungen

es~ , D.". ),

die folgenden Beziehungen gelten:

(i)

(ii)

(iii)

Sv t Sf- '

sl?' m sf'

m

da ja die Eingänge verschieden sein sollten.

da ja die letzten (1-k) Bits von Slf und r wegen (I) übereinstimmen.

da nach Definition (vgl. 1/ii) die höchsten k Bits gleich sein müssen, um die Relation zu erfüllen; m ist ein Faktor von N, so daß die Voraussetzungen erfüllt sind; wegen (li) gilt daher (iii).

Aus dieser Deduktion folgt aber nun der

SATZ:

Bemerkung:

Es sei eine Menge der gewünschten Eingangs/Ausgangs­verbindungen

PN = {(Si' Di) , 0 ~ i < N}, N = 21

für ein Jl N-Netzwerk spezifiziert, D.*D. für i..f:J vorausgesetzt ist. Dann di

1e A~bildung PN' d. h. als Symbol

flN t PN,

wobei leistet

s:=ts., !J 2 J

N

dann und nur dann, lfenn für alle (S, D)-Paare in PN und für alle m = 2 , 1 ,6. k < 1 die Gültigkeit der Beziehungen für 0~ \lf-<N, 11 :# ,lA-

Sv ~ s)A ,

die Gültigkeit der Bedingung impliziert:

Dv ~ D ,O~V,M.-<.N, '-'*JA.. N I I

Dieser Satz bietet im Prinzip die Möglichkeit, a priori anhand von P = [ (S., D.) /0 ~ i < N} zu prüfen, ob das OMEGA-I:)Jetzwerk

1 di~ Abbildung PN leistet. Der Satz bildet somit ein wichtiges Rüstzeug.

Page 116: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 108 -

(5) Sätze über OMEGA-Netzwerke

(I) THEOREM 1:

Es sei die Abbildung definiert

PN (a,b,c,d, 5) = { (ax+b, cx+d), 0 ~ x < ~}, wobei (ax+b, cx+d) die Verbindungen vom Eingang

S = (ax+b) (modN) X

zum Ausgang

D = (cx+d) (modN) X

darstellt.

Wenn mit N = 21 und

rX, = GGT (a,N), a' = a/cJ.,

':\'"' = GGT (c,N), c' = eh:--, Q v

auch cC~ f, S ~ N/(f vorausgesetzt wird, dann gilt:

J2 N t PN (a,b,c,d, S ). Bemerkung:

a) Wir erkennen aus der Form von PN' daß wir hier zurückgeführt werden auf die Abbildungen von p-geordneten N-Vektoren, für die wir uns ja bei der Konstruktion und Analyse von Verbindungs­strukturen für Parallelprozessoren interessieren.

b) Der Beweis ist so angelegt, daß er auf den abgeleiteten Satz über die Verbindungskonflikte (Abschnitt 4: SATZ) und die Erfüllung der dort angegebenen Bedingungen führt; der Beweis findet sich bei Lawrie (1975).

BEWEIS:

Für den Beweis müssen wir zeigen, daß die Bedingungen des Satzes über das OMEGA-Netzwerk, wie er in Abschnitt 4 abgeleitet wurde, erfüllt sind, wenn

o' N - "' 0

Page 117: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

D. h.: für alle

für alle

und

- 109-

o~ x,y<$ k

m=2 ' 1

N = 2,

muß die Gültigkeit der Beziehungen

(1) ax + b ~ ay + b,

(2)

(3)

und

ax + b = ay + b m

implizieren, daß

cx + d ! cy + d.

Wir gehen aus von der Annahme (2)

(i) ax + b = ay + b. m

Mit der Relation (Al), d. h.

(Al) X+A - Y+Adl!4 ......... X- Y, m m

erhalten wir mit

ax = X, b = A

die Kongruenz:

(ii) ax = ay m

und

wobei 1~ k<l

Exkurs über die Teilerfremdheit von a' bzw. c' mit N bzw. m:

Aufgrund der Voraussetzungen ist ja

()(, = GGT (a,N), d. h. a = o<> a'

r = GGT (c,N), d. h. c = f·c'.

Da N = 21

und m = 2k, können wir behaupten, daß sowohl a' und m bzw. N als auch c' und m bzw. N teilerfremd sind.

De.nn nehmen wir z.B. für c folgendes an:

(Fall 1) c < N: c = 2 'i . c' , 0 ~ ~ < 1,

(Fall 2)

dann ist: c' und N teilerfremd, wobei?{= 2f < N.

c ~ N: c = 2 <? • c' ;

Hier unterscheiden wir:

a) '5 < 1: Daraus folgt: c' und N sind teilerfremd.

b) Cf ~ 1: Daraus folgt:

/f = GGT (c,N) = N und somit s 6 N/r = 1.

Page 118: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- llO -

Daraus folgt aber für die Abbildung P N' daß nur

mit x = 0

eine Verbindung repräsentiert und in PN enthalten ist; so sind Konflikte trivialerweise vermieden. Darüber hinaus ergäbe sich:

mit c = N • c' folgt auch

(cx + d) (modN) = (c'Nx + d) (modN) = d (modN)

für alle x, so daß trivialerweise keine sinnvolle Ab­bildung möglich wäre für x > 0.

Dieselben Uberlegungen lassen sich für a' und N anstellen.

Somit können c' und a' als zu N teilerfremd angenommen werden.

Bezüglich der Teilerfremdheit von a' und m läßt sich folgendermaßen argumentieren:

Es sei: N = 2q (2 1 -~), a = 2~. a' ,

-21 a" - . ' m = 2r (2k-r).

Da N > m, gilt jedenfalls :

a) den Fall r,~ ~ 1 können wir als den Trivialfall ausschließen gemäß b) in Fall 2 (für a ~ N).

b) in den anderen Fällen ist: ~ < 1, so daß a' auf keinen Fall mehr den Teiler 2 enthält, der ja der einzige Teiler von N und m ist.

Dieselbe Argumentation läßt sich auf c' und m anwenden.

Schlußfolgerungen:

Außer im Trivialfall x = 0 sind jeweils teilerfremd:

1) a' und N, 2) a' und m, 3) c' und N, 4) c' und m.

Aus der Relation (ii) ergibt sich zusammen mit der Aussage (A3), nämlich daß:

"Wenn a' koprim zu m ist, so folgt aus

a'X = a'Y ~ X =: Y", m m nun die Kongruenz (mit X= tt-x, Y = o<.y):

(iii) <X,x = o<-y. m

Page 119: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 111-

Da nach Voraussetzung ttlrL ~ 1 ist, wobeilX-und 0Potenzen von 2 sein müssen, erhalten wir mit

(c' ( 0/otv )) clv = c

und der Relation (A2), daß nämlich gilt:

X . y m

---111--~ A X = A Y , m

die Beziehung aus (iii):

(iv) cx = cy m

und daraus mit der Relation (Al), daß gilt:

X+ A = Y + A "ill~ X := Y, m m

das erste Ergebnis:

(v) cx + d = cy + d m

Als weitere Voraussetzung haben wir die Beziehung bzgl. der Un­terschiedlichkeit der Eingänge:

(vi) ax + b ~ ay + b

Daraus folgt mit den Aussagen (Al) und (A2) die Inkongruenz:

(vii) x ~ y,

da sonst aus x N y mittels (Al) und (A2) der Widerspruch zu (vi) herbeigeführt würoe, daß: ax + b N ay + b.

Aus der Relation (A4), nämlich:

AX AN AY <4---I,._~~P X N Y,

folgt für (vii):

(viii) 0 x ~ '(Y·

Da nach Voraussetzung

so ist auch:

J'"X, tfY < N.

Aus (viii) folgt mit der Relation (A5), nämlich:

wenn O~X,Y<N,sogilt:

X AN y "'iil--\!11- X N Y,

die Inkongruenz

(ix) rx ~ TY·

Page 120: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 112 -

Da ja c' koprim zu N und m gezeigt worden war, erhalten wir mit der Relation (A3) aus (ix) durch Umkehrschluß

(x) cx ~ cy,

da sonst mit (A3) aus cx N cy ein Widerspruch zu (ix) hergestellt würde.

Daraus ergibt sich aber als zweites Ergebnis:

(xi) cx + d ~ cy + d

und somit eine Aussage über die Eindeutigkeit der Abbildung.

Aus den Ergebnissen (v) und (xi) erhalten wir entsprechend der Relation (A6) das Resultat

(xii) cx + d ~ cy + d.

Da dieses Ergebnis für alle infrage kommenden m gilt, ist damit THEOREM 1 bewiesen.

Aus THEOREM 1 ergeben sich nun Folgerungen:

Ia) Korollar 1:

Definieren wir IN= [(x,x), o:::;:x~N-1 J als identische Abbildung.

Dann folgt aus Theorem 1 für

a = c = 1 und b = d = 0

mit o(. = t= 1, ~ ~ NI'( = N

und daher in Erfüllung der Bedingungen

und X < ~ ~ N/r 'd. h. X< N,

daß: JlN t IN •

Ib) Korollar 2:

Es sei PN = [(ax+b,x), 0 ~ x < N }

und a ungerade, d. h. GGT (a,N) = 1.

Da (}(; = r = 1 und

$ =N

und somit die Bedingungen erfüllt sind:

~ ~ 0 ' s ~ Nlr , so folgt aus Theorem 1:

J2N t

Page 121: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

II)

- 113-

Bemerkung: Das OMEGA-Netzwerk kann also jeden a-geord­neten Vektor mit ungeradem a in die ur­sprüngliche logische Ordnung zurückführen.

THEOREM 2:

Wenn _flN t und a ungerade, dann gilt, mit 0 ~ S., D. < N und

I I

PN = t (Si,Di)' 0 ~ i < N }

und (a*P n)= { (a.Si (modN),Di)' (spi)E PN }

daß: .fl N t (a*P N)

Bemerkung: a.S. (modN) liefert mit dem "Multiplikator" a eine ~olle Permutation der Eingangsadressen S .•

I

Beweis:

Annahme:

N = 21

.J1 N t (a*PN), d. h. m und (aS.,D.) existieren k I I

mit (aS.,D.)E (a*PN)' m = 2 , so daß: J J

aSi ~ aSj,

aS. - aS., 1 m J

m

Di N Dj.

Da a ungerade: GGT (a,m) = 1, so daß wegen (A4): aS. - aS. ~ S. - SJ. , und da

1 m J 1 m m

Di N D.' ~ J

folgt J2N 1 PN (Widerspruch!).

Deshalb muß die Annahme falsch sein.

III) THEOREM 3:

Wenn j)_ N t PN

mit 0 ~ (S.,D.) < N und I I

so gilt mit

daß

Beweis:

PN={(Si,Di), 0~ i <N},

(PN+a) = f ( (Si+a) (modN), Di)' (Sp)€PNJ'

J2N t (PN+a).

Analog zum Beweis von THEOREM 2.

Bemerkung: Die Abbildung (PN+a) heißt "gleichförmige Ver­schiebung" von P N um a.

Page 122: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 114-

Das THEOREM besagt, daß, wenn das OMEGA­Netzwerk die Abbildung PN leistet, das Netzwerk auch eine gleichförmige Versd'uebung der Abbildung, d. h. der Eingangs- und Ausgangsadressen, leistet.

IV) THEOREM 4:

Es sei mit 0 ~ (S.,D.) <N die Abbildung definiert 1 1

P = [ (Si,Di)' 0 ~ i < N} •

Wenn Jl N t P ,

so gilt auch:

Jl2N t p.

Beweis:

Wir stellen die Eingänge und Ausgänge binär dar:

1) s. 1 =

i i i 0 i = cii ~ ..... d 1 '

für N = 21•

+ 2) für N+ = 2N = 21+ 1 = 21 :

Eingangsadresse (mod 2N)

s: = 1

=

Ausgangsadresse (mod 2N)

DT = ~ ~ ..... öil+

= i i

0 cii ..... dl

also: 6'~+ 1 i ",...i = s\>, o 1 = 0.

ö~+1 i _( i

= dl'' 01 = o.

Zum Beweis nehmen wir an, daß

J12N t p;

d. h. aber:

Es existiert ein m = 2k , so daß

(i) + ::1= + 5i 2N 5j

(ii) s: - s: 1 m J

o: m + (i ii)

2N D .•

1 J

Page 123: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 115-

Das ergibt explizit:

(i1) s i 6' ~ ..... 01~

Diese Bedingung ist erfüllt, da sie nichts anderes ist als

S.:f=S.; 1 J

~ i .,.~i """i - c-'j O"j C"j u k+1 u k+2 ..... v 1+1 - 0 k+1 k+2 ..... \J 1+1 '

und das ist gleichbedeutend mit

i i i j j j \ 1<+1 ..... 1 = ~ ~+1 ..... 1 i

(iii1) eS iö~ ..... d~ = 6161 ..... 6 J'

das ist gleichbedeutend mit

0 ~ ~ ..... ~-1 = 0 ~ ~ ..... ~-1 •

a) Nehmen wir an: m = 2N, d. h. k = 1+1.

Dann wäre: 0 ~ ~ ..... qi = 0 ~ ~ ..... qj

und damit entgegen der Voraussetzung:

D. = D .. 1 J

Das wäre ein Widerspruch!

b) Also muß sein: k ~ 1, d. h. m ~ N.

1) Nehmen wir an: k = 1. Dann wäre:

1i = 1j'

~ ..... qi-1 = ~ ..... qj-1 '

und somit: i i i 1 <1 ..... q_1 = j riJ rlj 1 -1 eeooo 1-l '

d. h. aber:

Es existierte m1

= 21-1 , so dafl ein Konflikt bei der Abbildung von P durch J 2. entstünde, denn: n

si ~ sj,

s. - s.' 1 m1 J

und m

D =1 D i N j'

Das wäre ein Widerspruch zur Voraussetzung

J2N t p •

Page 124: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

2)

3)

- 116-

Für 1 L. k <. 1 läßt sich dieselbe Argumentation wie in 1) durchführen, die ebenfalls zum Widerspruch führt.

k = 1 führt zum Widerspruch zu S. =/= S .• Damit ist THEOREM 4 bewiesen.

1 J

V) THEOREM 5:

Es sei mit 0 ~ (S.,D.) < N I I

PN = t (Si,Di)' 0~ i <N}

und

(P zN * z) = f (Si'z.Di (mod(zN))) , 0~ i < N }.

Wenn

z = 2 ~ , ~ ganzzahlig positiv,

und

so gilt:

VI) THEOREM 6:

Es sei mit 0~ (S.,D.)<N I I

PN = {(si,Di)' O~i<.N} und

(Z * PzN * Z) = { (ZSi,ZDi) (mod(ZN)), O~i<N}. li(e.nn z. = 2 ~.und J2 N f PN , wobei ~ ganzzahlig po­sitiV sei, so gilt

1L ZN t (Z * p ZN * Z) '

Page 125: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 117 -

VII) THEOREM 7:

Ist M = 2n2

und n = 2" mit

P (xl'x2) = { (2x~+(n+1)x 2 , 2x 1+2nx2), O~(xl'x2 )$1-1} ,

2',) d. h.: M = 2N, N = 2 ,

so gilt:

VIII) THEOREM 8:

Ist n = 2 ~ und M = 2n2

Q(xl'x2) = t ( [n+1] • x1+2x2,2x1 +2nx2) , 0 ~ (xl'x2~n-J} ,

so gilt

IX) THEOREM 9:

Mit

F(x1 x2) = [cx1,Cx1+x2)), 0~ (x1 ,x2 )~ n-1},

wobei n = 217, N = 2 2 ~ gilt:

fl 2 t F(x1 x2) n

(N)

X) THEOREM 10:

Mit

und

gilt:

G(x1 x2) = { (xl'x1 +n.x2), 0~ (xl'x2)~n-1}

" n = 2 ,

(N)

Page 126: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

XI)

- 118-

Darüber hinaus gilt dx_r Zusammenhang zwischen den Umkehr-Netzwerken J l'N und den Umkehr-Abbildungen P '· N'

fl N t PN~_n~ t P'N

Diese Sätze zeigen, daß gewisse Grundklassen von Permu­tationen und Verbindungen durch das OMEGA-Netzwerk ge­leistet werden, die stark an den d-geordneten N-Vektoren orientiert sind.

(6) Anwendung des OMEGA-Netzwerks auf Array-Prozessoren

Wir wollen jetzt Verbindungen betrachten, die für Arrayprozessoren interessant und wichtig sind. Es stellt sich heraus, daß das OMEGA­Netzwerk solche Verbindungen leistet.

Wir gehen aus von einem Arrayprozessor mit

N = n2 Prozessoren.

Dabei soll n = 2 r sein.

Die N Prozessoren sollen entsprechend dem diskutierten Skewing­Schema mit M = 2N Speichereinheiten über ein

(2N x 2N) -f22N-Netzwerk

verbunden sein.

Dabei sollen die Speichereinheiten mit den Eingangs-Ports des Netzwerkes verbunden sein:

Speicher i "~~~~ Port i .

Entsprechend seien die Prozessoren so verbunden, daß:

Prozessor i o!!ll!<!lll...__~.,.."" Ausgangs-Port (2i);

d. h.: die ungeraden Ausgänge werden nicht benutzt. Dadurch läßt sich im Prinzip die letzte Netzwerk-Kolonne der Schaltelemente im Netz durch einfache OR-Elemente ersetzen.

Entsprechend wird ein zweites Netzwerk als inverses OMEGA­Netzwerk zwischen Prozessoren und Speichereinheiten eingerichtet.

Wir legen weiter das Skewing-Schema

( ~( 1/2 ( o 1

, o 2

) = (N + 1, 2 ; M = 2N)

zugrunde.

Page 127: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 119-

Dann sind die folgenden Daten-Abbildungen erforderlich, um Zeilen,

Spalten, Diagonalen, Gegendiagonalen un?J_;~ 1 / 2 x N1

/2

)-Blöcke geeignet zu übertragen und zu ordnen: (n = N )

(1) P(Zeilen) = [C2x+b, 2x), O.:!Sx~N-1} _

(2) P(Spalten) = [ (x(n+1)+b, 2x), 0~ x:>;; N-1}

(3) P(Diagonalen)

(4) P(Gegen­diagonalen)

(5) P((N1/ 2xN112) -Blöcke)

bzw.

= {Cx(n+3)+b, 2x), O~x~N-1}

= [ (x(n-1)+b, 2x), 0 ~ x ~ N-1 ]

= t 2x1+(n+1)x2+b,2(x1

+nx2

), O~(xl'x2)~n-1} = { (x1(n+l)+2x2+b,2(x1+nx2)) , O~(xl'x2 )~ n-1}.

Wir wollen uns hier auf diese Grundstrukturen beschränken. Das OMEGA-Netzwerk leistet jedoch noch mehr für eine Vielfalt von sinnvollen Abbildungen (beim Broadcasting zum Beispiel).

Mit den THEOREMEN läßt sich zeigen, daß das J22N-Netzwerk die

Abbildungen (1)-(5) leistet, und zwar ergibt sich die Leistung von:

(1) wegen Theorem 1: ~ = (f= 2, g = N, daher: S ~ (2N)/f.

(2) wegen Theorem 1: n+1 koprim zu 2, dv = 1, a' = n+1 ,

o= 2, s= N, d. h. rl.-~ O, f ~ (2N)/(.

(3) wie für (2): da n+3 koprim zu 2.

(4) wegen Theorem 1: n-1 koprim zu 2.

(5) wegen Theorem 3 und 7 bzw. 3 und 8.

Damit ist ein theoretisch fundiertes System von Verbindungsstruk­turen von Lawrie entwickelt worden, das weitgehende Funktionen anbietet und sich harmonisch in die anspruchsvolle Familie der Skewing-Schemata einpaßt.

Es sollte erwähnt werden, daß Burroughs in der Studie über die Entwicklung des sog. Flow Model Processor - FMP für die NASA ein OMEGA-Netzwerk vorsieht.

Es muß darauf hingewiesen werden, daß das Gebiet der Verbindungs­strukturen im Zusammenspiel mit den Skewing-Schemata ohne Zwei­fel noch für zukünftige Forschungen offen ist, insbesondere im Hinblick auf die technologie-bedingten Array-Prozessoren mit sehr großem N.

Page 128: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 120-

3 Parallelisierung: algorithmische Möglichkeiten

3.1 Einführung

Nachdem wir in Kap. 2 die architektonischen Elemente behandelt haben, die für den Entwurf und die Implementierung von Parallelprozessoren notwendig und nützlich sind, wollen wir in diesem Kapitel auf Strukturen in Algorithmen eingehen und diese im Hinblick auf Parallelisierungsmög­lichkeiten analysieren.

Im einzelnen sollen die Möglichkeiten zur Transformation arithmetischer Ausdrücke auf effektive parallele Form, das Prinzip des rekursiven Doppeins und noch einmal rekurrente Systeme und ihre Lösung behandelt werden. Dabei werden Sätze angegeben, die, als Ergebnisse der letzten Jahre vornehmlich, die Zeitkomplexität und notwendigen Prozessorzahlen angeben bzw. eingrenzen. Schließlich wird noch auf die Abhängigkeiten und die Auflösung von Schleifen in Programmen eingegangen.

Die hier zu diskutierenden Algorithmen, Transformationen und Prinzipien sind nicht nur geeignet, um grundsätzlich die Parallelität in Problemen zu beschreiben und zu erfassen; vielmehr geben sie in der Regel auch qualitative und quantitative Maße für die Möglichkeiten, ursprünglich mit sequentiellen Programmiersprachen und Computern realisierte Programme zu parallelisieren.

Diese Möglichkeiten sind für die Praxis nicht zu unterschätzen, da sie es ja gestatten, ausgetestete Programmsysteme, die sehr oft einen sehr großen Entwicklungsaufwand erfordert haben, auf neue Rechnerarchitekturen mit paralleler Verarbeitung zu übernehmen, ohne sie neu programmieren zu müssen.

Diese Fragestellung erhebt sich heute vor allem im Hinblick auf Systeme wie CRA Y -1, CYBER-203 oder durch kleinere Pipeline-Systeme.

Die Frage nach den algorithmischen Möglichkeiten ist immer auch die Frage nach den Berechnungsgeschwindigkeiten eines Algorithmus.

Ob eine Berechnung auf Bit-, Byte-, Wort- oder Datenfeld-Ebene ansetzt, stets stellt sich die Frage, wie schnell die Berechnung ausgeführt werden kann.

Handelt es sich zunächst um einen seriellen Algorithmus, der zu einer Zeit jeweils nur ein einziges Datenelement berechnen kann, so fragen wir, ob eine Beschleunigung des Algorithmus möglich ist durch Parallelverarbei­tung. Wenn ja, so müssen wir uns fragen, wie der Speedup erreicht werden kann.

Schließlich streben wir nach Aussagen über die oberen Grenzen der Geschwindigkeit einer Berechnung, nach dem - unter Umständen nur theoretisch möglichen - schnellsten Algorithmus.

In gewissem Sinne ist die Frage nach dem "schnellstmöglichen" Algorithmus philosophisch, denn im allgemeinen kann nicht abschließend behauptet werden, daß alle möglichen Wege zur Berechnung einer gegebenen Funktion überprüft wurden oder - gar - überprüfbar sind.

Mit diesen grundsätzlichen Problemen wollen wir uns hier aber nicht weiter befassen, obwohl sie für die Theorie der Algorithmen wichtig sind.

Page 129: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 121 -

Betrachten wir als Einstieg in die Kategorie von Fragestellungen dieses Kapitels die Aufgabe, mit zwei n-Bit-Worten

logische Operationen bit-weise auszuführen.

Wenn also: a = (101101), b = (011001),

so ist das Ergebnis der logischen OR-Operation ('ODER'), d. h.

c = (a+b): c = (111101)

Das logische 'AND' liefert entsprechend, d. h. für d = (a • b) das Bit-Muster:

d = (001001).

Da die logischen Funktionen 'OR' und 'AND' auf Paare von Bits aus a und b wirken, d. h. unabhängig von den anderen Bits in den Worten operieren, ist selbstverständlich, daß anstelle der n Zeitschritte erfordernden seriellen Verarbeitung der Operationen jede der Funktionen, und zwar unabhängig von der Wortlänge n, in einem einzigen Zeitschritt ausführbar ist, sobald wir genügend unabhängige parallele logische Einheiten zur Verfügung haben. In diesem Fall ist die Zahl der notwendigen Einheiten proportional zu n, d. h. 0 (n):

T = 0(1), p

P = O(n) ;

gehen wir von logischen Operationen über zu arithmetischen Operationen und betrachten jetzt als a und b ganze Felder

a = (a1' ..... ' an)

b = (b1' ..... ' bn)

wobei a. und b. jetzt Zahlen seien, z. B. I I

a = (3,5,2,1,0,7)

b = (1,2,3,4,5,6),

dann gelten für die Vektor-Addition

c = (4,7,5,5,5,13)

und für die komponentenweise Multiplikation der Vektoren

d = (3,10,6,4,0,42)

dieselben Gesetzmäßigkeiten; d. h. unabhängig von der Dimension der Vektoren, n, läßt sich sowohl c als auch d in einem Additions- bzw. Multiplikations-Schritt berechnen, sofern wir n Addierwerke bzw. Multi­plizierwerke zur Verfügung haben.

Dabei ist natürlich der einzelne Addier- bzw. Multiplizier-Schritt länger als der Elementarschritt der logischen Operationen 'OR' bzw. 'AND'.

Page 130: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

122-

Schwieriger wird es, wenn wir zu globalen logischen Aussagen übergehen:

Nehmen wir beispielsweise an, in dem Wort

charakterisiere das Bit a. das Eintreten eines Ereignisses 'e.', z. B. 1 1

a. = 1 , wenn e. eingetreten ist, 1 1

a. = 0 sonst. 1

b und c seien jetzt 1-Bit-lndikatoren und folgendermaßen definiert:

und

b = 1, wenn mindestens ein ei' 1 ~ i ~ n, eingetreten ist,

b = 0, wenn kein Ereignis e. eingetreten ist; 1

c = 1, wenn alle Ereignisse e. eingetreten sind, 1

c = 0 sonst.

Frage: Was ist die schnellstmögliche Methode, um b und c zu berechnen?

Intuitiv ist klar, daß die Fragestellungen nach b und c schwieriger sind als die paarweise logische Verknüpfung bei 'OR' bzw. 'AND', denn hier sind alle Bits in (dem Wort) a involviert in der Berechnung von b und c.

Es hat sich gezeigt, daß eine einfache Methode der Lösung dieser Aufgaben auch die schnellste ist: das Prinzip des rekursiven Doppeins ("Recursive Doubling").

3.1.1 Prinzip des "Recursive Doubling"

Verfolgen wir das Beispiel der logischen Operationen bzgl. b und c weiter, so lassen sich b und c entsprechend schreiben:

n

b = -L1

a., 1= 1

wenn'+' = 'OR',

n

c =I ai' wenn'.' = 'AND'.

Um b zu bestimmen, gehen wir nun nicht seriell vor, was n-1 Einzelschritte der logischen Operation 'OR' verlangen würde, sondern zerlegen das Problem derart, daß wir parallel mit n/2 OR-Einheiten (di~ je zwei Eingänge haben) unter der nicht-einschränkenden Annahme n = 2 zunächst die Teilergebnisse berechnen:

(a1 + a2)' (a3 + a4)' ..... ' (an-1 + an);

in einem 2. Schritt kombinieren wir erneut paarweise, jetzt aber die jeweiligen Zwischenergebnisse, und zwar mit n/4 'OR'-Einheiten:

Page 131: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 123 -

und fahren in dieser Weise fort, bis wir nach insgesamt

k = log2n

Schritten das Ergebnis b erhalten.

Entsprechend verfahren wir bei der Bestimmung von c, indem wir die logische Addition (OR) durch die logische Multiplikation ersetzen.

Gegenüber der seriellen Berechnung erhalten wir für die Parallelverarbeitung eine Zeitkomplexität

T p = 0 (log n) mit P = ~

und somit den Speedup S = 0 C-1n ) • p ogn

Dieses "Prinzip des rekursiven Doppelns" läßt sich nun nicht nur entsprechend auf arithmetische Addition und Multiplikation von Elementen a. von Vektoren übertragen, sondern ganz erheblich verallgemeinern:

I

Sie jetzt a = [a1, ..... , an} eine Menge mit (der Einfachheit halber)

n = 2k Elementen und sei die Operation "o" eine beliebige assoziative binäre (d. h. zwei Elemente jeweils verknüpfende) Operation auf der Menge a, d. h. "o" kann definiert sein z. B. als Addition oder Multiplikation von Skalaren, Vektoren oder Matrizen oder als logisches 'ODER' bzw. 'UND' usw.).

Dann liefert das Prinzip des rekursiven Doppeins für die Berechnung von

die Zeitkomplexität

bei

T = 0 (logn) p

P = n/2

Operationseinheiten.

Gegenüber der seriellen Berechnung, die

T 1

= n-1 = 0 (n)

Zeitschritte benötigt, ergibt dieses Prinzip nicht nur den Speedup

S-0 1 n ·)· p- ~'

der Algorithmus des rekursiven Doppeins erweist sich auch als der schnellst mögliche.

Page 132: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 124-

Die Methode beruht allgemein auf dem Aufspalten eines Ausdruckes A in 2 einfachere, kleinere Ausdrücke A und A

2, die einzeln von je Snem

Prozessor (bzw. Prozessorkomplex) @eichzeit:Jg berechnet werden können.

a) Dazu muß eine Funktion f existieren mit A0

= f (A1

, A2

)

b) Die Berechnungen von A1

und A2

sind unabhängig voneinander; A1

und A2

haben gleiche Komplexität

c) A1

und A2

erfordern die gleiche Operationsfolge zur Berechnung.

Wie wir bereits früher gesehen haben, lassen sich die Verhältnisse sehr gut mit Parser-Bäumen verdeutlichen.

So ergibt si~~ für den serie~~en Alg~r.ithmus die folgende Baumstruktur (mit der Baum-Hohe n-1), z. B. fur n = 2 9 In Abb. 3.l.a. Für den parallelen Algorithmus aus dem Prinzip des rekursiven Doppeins folgt eine Reduktion der Baum-Höhe von n-1 auf log

2n, wie die Struktur

Abb. 3.l.b zeigt.

Aus der Darstellung wird deutlich, daß für allgemeines (ganzzahliges, positives) n für den Algorithmus des rekursiven Doppeins die Zeitkom­plexität als die Zahl der notwendigen Parallelschritte auf n/2 Prozessor­elementen erhalten wird als

= P = L n/2 J , wobei

die kleinste ganze Zahl S ~X bedeutet,

=

die größte ganze Zahl ~~ y bedeutet.

Für das Beispiel n = 8 fplgt für den Speedup: S 4

= 7/3 > 2, doch wächst er mit zunehmendem n = 2 schnell an:

k = log2

n n Sp=O~) n P=z ogn

4 2 2 2 8 3 4 2.3

16 4 8 4 32 5 16 6 64 6 32 10

128 7 64 18 256 8 128 32 512 9 256 57

1024 10 512 102 2048 11 1024 186 4096 12 2048 341 8192 13 4096 630

16384 14 8192 1170

Page 133: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 125 -

3.1.2 Algorithmus-Typen

Wir hatten bereits im Zusammenhang mit der BROADCASTING-Funktion in Parallelprozessoren eine Problemklasse kennengelernt, die in den verschiedenen Ausprägungen bei Computeralgorithmen eine erhebliche Bedeutung hat: die rekurrenten Systeme.

Gehen wir wieder aus von zwei n-Bit-Worten

X

y

=

= (x1, ••... xn)

(y1, .•... yn)'

so läßt sich für die binäre Addition zweier Binärzahlen

a =

und

b =

mit den logischen OR-Verknüpfungen

x. 1

= a. + b. 1 1

und AND-Verknüpfungen

y. 1 = a .. b.

1 1

für den Übertrag das scheinbar einfache rekurrente System formulieren:

(*) c. 1 =

wobei erneut sein soll:

"+" = " " =

0 für i = 0,

y i + x i • c i _1 für 1 ~ i ~ n

'OR'

'AND'

Die Frage ist wieder: Wieviele Zeitschritte logischer Operationen sind notwendig, um den Bit-Vektor der Überträge c = (c

1, •••.. , cn) zu

berechnen?

Ein analoges arithmetisches Problem ist mit der Berechnung eines Polynoms verbunden. Es sei das Polynom vom Graden in der Form gegeben:

n n-1 pn(x) = anx +an_1 x + ..... +a1 x+a

0,

wobein ~1 und die Koeffizienten a. reell seien. 1

Wenn wir davon ausgehen, daß die Berechnung von p (x) für ein gegebenes x nicht in der gliedweisen Auswertung der Potenzennvon x ohne Zwischen­speicherung von x und anschließender Multiplikation mit a und Addition zur Zwischensumme vorgenommen wird, die

N m = 1+2+ ..... +n = n(n+1) 2

Page 134: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 126 -

Multiplikationen und n Additionen erfordern würde, somit eine Zeit­komplixität (der Rechenschritte)

=

hätte, so wäre die naheliegende Methode zur Berechnung von p (x) die gliedweise Berechnung der einzelnen Terme mit iterativer Best~mmung aller Potenzen x17 •

Dem würde der folgende Algorithmus entsprechen mit 2n-1 Multipli­kationen und n Additionen:

ALGORITHMUS PN1:

Input: Koeffizienten von p (x) im Feld A(I), I= D,1, ..... ,N; N; X; n

Output: P;

PN1: P = A(D) + A(1) * X XPOTENZ =X

DO S I= 2, N XPOTENZ = XPOTENZ * X

S P = P + A(I) * XPOTENZ

Die Frage nach einer besseren sequentiellen Methode zur Berechnung von p (x) entspricht der Frage, ob sich der Ausdruck n

a.b+a.c

bei gegebenem a, b und c mit weniger als 2 Multiplikationen berechnen läßt. Die Antwort auf diese Frage ist bekanntlich positiv, denn die Fak­torisierung liefert

a . (b + c) ,

bedarf daher nur 1 Multiplikation (und 1 Addition).

Nach diesem Schema lernt man in der numerischen Mathematik, die Berechnung eines Polynoms entsprechend der Faktorisierung des sog. HORNER-Schemas durchzuführen:

( ..... ((a x+a 1

)x+a 2

)x+ ..... +a1

)x+a n n- n- o

Der entsprechende Algorithmus läßt sich in einfacher Schleife angeben, wobei die Eingaben dem Algorithmus PN1 entsprechen:

ALGORITHMUS PN2:

PN2: P = A(N)

DO S I = N -1, 0, -1 S P = P * X + A(I)

Dieser HORNER-Algorithmus braucht n Multiplikationen und n Additionen, hat also eine Zeitkomplexität

= O(n)

wie PN1; die Anzahl der Multiplikationen ist aber halbiert worden.

Page 135: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 127-

Auch beim HORNER-Schema stellt sich die Frage, ob es schneller als O(n) berechnet werden kann, wenn genügend parallele Addierer und Multipli­zierer zur Verfügung stehen; denn das HORNER-Schema ist analog dem System für Ubertrag der binären Addition ein rekurrentes System. Auf den ersten Blick sehen diese rekurrenten Systeme nicht so aus - wegen der inneren Abhängigkeiten - daß beschleunigende Algorithmen möglich seien, die besser als O(n) sind. Dieses allgemeine Problem ist vielfach untersucht worden.

Es zeigt sich, daß durch äquivalente parallele Algorithmen

(1) das Ubertragsproblem in der Zeitkomplexität

T p = O(logn)

unter Verwendung von O(nlogn) logischen Gattern

(2) das Polynom n-ten Grades mit O(n) arithmetischen Prozessoren in der Zeitkomplexität von ebenfalls

T p = O(logn)

berechnet werden kann.

Während der sog. "Column Sweep"-Algorithmus die Zeitkomplexität O(n) bei allgemeinen linearen rekurrenten Systemen lieferte, werden wir sehen, daß lineare rekurrentz Systeme mit einem anderen Algorithmus mit der Zeitkomplexität O(log n) berechnet werden können.

Entsprechend der Speedup-Hierarchie lassen sich 4 Typen von Algorithmen unterscheiden; diese 4 Typen kennzeichnen den maximalen Speedup, der durch Parallelalgorithmen gegenüber dem schnellsten seriellen Algorithmus möglich ist, dessen Zeit für die Berechnung mit T

1 bezeichnet werde.

(0) TYP-0-Algorithmen:

Typ-0-Algorithmen zeichnen sich durch einen maximalen Speedup

aus; Beispiele sind die Ausführung logischer Operationen 'OR' bzw. 'AND' auf die einzelnen Bits zweier Worte aus n Bits oder die komponentenweise Addition zweier Vektoren (wie wir es in Abschnitt 3.1.1 kennengelernt haben). Dies entspricht der Auflösung einfacher DO-Loops in seriellen Programmen durch Parallelisierung.

(1) TYP-1-Algorithmen:

Diese Klasse ist gekennzeichnet durch den maximalen Speedup

Tl sp = o (logT 1 ) •

Beispiele dafür sind alle Algorithmen, die sich auf das Prinzip des rekursiven Doppeins stützen.

Page 136: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 128-

Im allgemeinen ist die Berechnung eines arithmetischen oder Baaleschen Ausdrucks wie auch die Lösung gewisser arithmetischer oder logischer linearer rekurrenter Systeme von dieser Typ-I­Kategorie (rekurrente Systeme mit konstanten Koeffizienten und rekurrente Systeme erster Ordnung R (n, 1) ).

(2) TYP-2-Algorithmen:

Diese Algorithmenklasse zeichnet sich aus durch einen maximalen Speedup

T = 0 ( 12 ) •

log T 1 Beispiele dafür sind bei bestimmten rekurrenten Systemen zu finden, wie später noch zu diskutieren sein wird (vgl. "Produkt-Form­Algorithmus" in Abschnitt 3.3.3).

(3) TYP-3-Algorithmen:

In dieser Kategorie werden Algorithmen zusammengeschlossen, deren maximaler Speedup in der Größenordnung unterhalb der Typ-2-Kategorie liegt.

Hierher gehören z. B. gewisse nicht-lineare rekurrente Systeme, deren bester bekannter Speedup von der Ordnung 0(1) ist.

3.2 Reduktion der Baumhöhe

Im folgenden wollen wir uns damit befassen, wie vor allem arithmetische Ausdrücke durch geeignete Transformationen in Strukturen übergeführt werden können, so daß sich mit Parallelprozessoren eine Beschleunigung der Berechnung solcher Ausdrücke ergibt.

3.2.1 Definitionen und Nomenklatur

Wie wir bereits gesehen haben, ist es wichtig, die Zahl der Zeitschritte eines Algorithmus oder die obere bzw. untere Grenze bzw. die Ordnung dieser Zeitkomplexität als Funktion der Anzahl der Eingaben an Kon­stanten und Variablen zu fassen.

Selbstverständlich ändert sich der Kontext der Konstanten, Variablen, Felder und Operatoren von Algorithmus zu Algorithmus, und im allge­meinen hängt der explizite Zeitaufwand von der Realisierung des Rechner­systems und der Implementierung von Hardware und Software ab; dennoch ist es nicht nur üblich für die Analyse von Algorithmen sondern auch notwendig, einen weitgehend einheitlichen Satz von Annahmen und Defini­tionen zu formulieren und Vergleichen zugrunde zu legen.

So hat man definiert:

Atom = (i)

(ii) Boolesches Atom = Konstante oder Variable,

logische Konstante oder Variable mit den Werten 0 oder 1 (bzw •• F ALSE. oder .TRUE.)

Page 137: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(ii i)

(iv)

- 129-

arithmetisches Atom = Atom, das eine Zahl darstellt

Array-Atom = Array aus Baaleschen oder arithmetischen Atomen.

Dementsprechend bezeichnen, wie bisher bereits verwendet, die

dyadischen Operatoren "+", "." bzw. "*"

logisches 'ODER' ('OR') und logisches 'UND' ('AND'), arithmetische Addition und Multiplikation oder Addition und Multiplikation von Arrays (Vektoren, Matrizen usw.), je nachdem welche Art der Atome zugrunde gelegt ist.

Die aktuelle Bedeutung folgt aus dem Kontext.

Dementsprechend ist ein Boolescher, arithmetischer oder Array-Ausdruck ("Expression") E < e > als eine den ordentlichen logischen oder arithme­tischen Verknüpfungen von Atomen gehorchende Kette von (e) Atomen und zugehörigen Operatoren definiert:

E < e > : e = Zahl der Atome.

Bei der Bestimmung der Zahl der Atome eines Ausdruckes zählen wir jede Konstante oder Variable in einem Ausdruck als 1 Atom einschließlich des mehrfachen Auftretens desselben Symbols.

Beispielsweise:

E < 3) =

E < 5 > = E < 7 > =

a+b+c

(a + b). (c + d/2)

(a + 5) I (2 • b + a • 5 + c),

Auf der Ebene arithmetischer Operationen haben wir schon bislang stets vorausgesetzt, daß die infrage kommenden arithmetischen Prozessoren die Addition, Multiplikation und Division sowie natürlich die Subtraktion jeweils in einem, für alle vier Typen gleichen Zeitschritt ausführen können,

Dieser Zeitschritt ist größer als für logische Operationen und entspricht bei den meisten realen Rechnersystemen einigen Zykluszeiten der Zentral­einheiten bzw. Prozessoren.

Die Annahme identischer Zeitschritte ist, mit Ausnahme der Division, für die meisten Systeme nicht unberechtigt; auf jeden Fall bleiben die Aussagen wesentlich richtig.

Wie bisher wollen wir auch in der Regel die Zeitaufwendungen für den Zufluß von Instruktionen und Daten sowie für die Kommunikation innerhalb des Systems nicht veranschlagen.

Wenn wir also p Prozessoren verwenden, so setzen wir voraus, daß alle p Prozessoren oder eine definierte Untermenge zu jedem Zeitschritt einge­setzt werden können und daß alle p Prozessoren im darauffolgenden Zeitschritt erneut verfügbar sind.

Page 138: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 130-

Mit der Zeitkomplexität T P' die wir bereits früher - etwas großzügig -definiert haben, bezeichnen wir die Anzahl solcher Zeitschritte, in denen die p Prozessoren verfügbar sind und alle bzw. eine Teilmenge der p Prozessoren eingesetzt werden.

3.2.2 Zeitkomplexität algebraischer Ausdrücke

Es sei E < e > ein algebraischer Ausdruck bestehend aus e Atomen; es seien für die Ausführung der dyadischen Operationen P Prozessoren gegeben, die zwei Eingänge für die zu verknüpfenden Atome haben ("Fan-in"= 2).

Dann gilt der

SATZ:

r log e l BEWEIS:

T p ( E < e >) ~ e-1

Der Beweis läßt sich führen, indem die Darstellung der Berechnung des Ausdruckes mittels einer Baumstruktur herangezogen wird, also beispiels­weise für den arithmetischen Ausdruck

E < 10 > = a+h+b*c+b*g+b*d*e*f

mittels des Baumes in Abb. 3.2.

(1) Zunächst läßt sich die obere Grenze e-1 durch die binäre serielle Verknüpfung, d. h. ohne jede Parallelarbeit, bestimmen, denn die Anwendung dyadischer Operatoren erfordert e-1 Zeitschritte, wenn nur ein Prozessor verfügbar ist oder die Struktur des Ausdruckes sich nicht auflösen läßt in parallele Segmente; d. h.

T p (E < e >) ~ e-1.

(2) Nehmen wir an: e = 2q, und betrachten wir einen Baum für E < e >, der die maximale Anzahl an Knoten auf jeder Ebene hat (Abb. 3.3a).

Auf jeder der Ebenen repräsentiert jeder Knoten einen Operator, der zwei Operanden verknüpft.

Damit können auf der l. Ebene höchstens e/2 solcher Knoten sein:

l. Ebene: mE!ximal e/2 Knoten.

Analog können nach Durchgang durch die l. Ebene auf der 2. Ebene höchstens e/4 Knoten sein: (e/2)/2.

2. Ebene: maximal e/4 Knoten.

Somit kann die k-Ebene auch höchstens e/2k Knoten enthalten:

k-Ebene: maximal e/2k Knoten.

Page 139: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 131-

Für die Wurzel des Baumes gilt:

Damit folgt als Baumhöhe des maximal besetzten Baumes:

w = log e = q •

Da jeder andere Baum für E < 2q) in nicht-maximaler Besetzung eine größere Baumhöhe als der eben konstruierte haben wird, der ja auf jeder Ebene die maximale Anzahl von Knoten und damit von Verknüpfungen der Atome des Ausdruckes enthalten soll, gilt auf jeden Fall für die reale Anzahl der Zeitschritte

T p (E < 2q > ) ~ q = loge

(3) Nehmen wir jetzt an:

2q< e~ 2q+l.

Jeder Knoten, den wir an den für E < qq > konstruierten Baum minimaler Höhe anfügen, muß die Höhe des Baumes um eine Ebene vergrößern, da ja der vollbesetzte binäre Baum keinen freien Knoten hat (Abb. 3.3b).

Maximal lassen sich q Knoten an den binären Baum anfügen, ohne daß die Baumhöhe um mehr als eine Ebene vergrößert werden muß, und zwar indem anstelle jedes der 2q originalen Atome unter der l. Ebene ein Knoten gesetzt wird.

Daraus folgt aber für den Übergang q ----J~>o q+ 1 zunächst

( q+1 T p E < 2 > ) ~ q+ l.

Damit ergibt sich für jedes ganzzahlige e mit 2q<e~2q+ 1 , daß gegenüber dem minimal hohen Baum eine Ebene zusätzlich notwendig ist:

T p (E < e > ) ~ r loge l , denn für 2q < e ~ 2q+ 1 ist

q < loge ~ q+1

und damit

r loge l = q+l.

Damit ist der Satz bewiesen.

Page 140: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 132-

3.2.3 Transformation von Ausdrücken

(1) Definitionen:

Da es bei Parallelprozessoren durchaus sinnvoll sein kann, zugunsten einer kürzeren Gesamtrechenzeit für eine gegebene Berechnung zusätzliche Operationen auszuführen, wenn dies zu einer Beschleunigung des Algorithmus führt und entsprechende Prozessoren zur Verfügung stehen, ist es angemessen, als Maßzahl auch die Gesamtzahl der mit p Prozessoren für die Berechnung auszuführenden Operationen zu betrachten.

Definitionen:

Die Gesamtzahl der Operationen auf p Prozessoren werde mit Z bezeichnet. P

Dann läßt sich die Operationsredundanz R definieren: p

R = p

wobei Z 1 = T 1

.

~ 1,

Die "Auslastung" ("Utilization") ist dann definiert durch

u = p

z _p_ p.T

p 1;

dabei ist p • T die maximale Zahl der Operationen, die mit p Prozessoren in T P Zeitschritten ausgeführt werden könnte.

p

Die Auslastung U läßt sich mittels der Redundanzgröße R um-schreiben: P P

u = Rpz1

= Rp.T 1

p p.T p.T p p

= R.E p p

Daraus ergibt sich der Hinweis: Wenn die Beobachtung eines ParaHel­prozessorsystems ergibt, daß alle p Prozessoren ständig rechnen, können wir zunächst nur schließen, daß

u = 1, p

und nicht (wegen der Möglichkeit R > 1): --- p

E = 1. p

Page 141: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 133-

Für verschiedene Algorithmen und Berechnungsklassen interessiert man sich für den maximalen Speedup durch einen Algorithmus bei minimaler Zahl von Prozessoren. In diesen Fällen wird oft diese Minimalzahl von Prozessoren, die maximalen Speedup leistet, mit 'P' und entsprechend auch die Komplexität, der Speedup und die Effizienz mit dem Großbuchstaben im Index bezeichnet:

P : T P' SP' EP' usw.

Die Zeit- und Prozessorzahl-Grenzen werden bezüglich einer Be­rechnung A oft auch, wie wir es ja bereits verwendet haben, mit

und P(A)

im Optimalfall bzw. mit

bezeichnet.

T (A) p

für

(2) Transformationen:

Setzen wir einen Ausdruck E < e ) voraus, der nach Definition e Operanden, d. h. Atome, enthält, so sind im seriellen Fall der Auswertung mit einem Prozessor

e - 1 Zeitschritte

notwendig.

Setzen wir voraus, daß wir über beliebig viele Prozessoren verfügen können, so ist aus verschiedenen Beispielen, aus dem vorher disku­tierten Prinzip des rekursiven Doppeins und aus dem in Abschnitt 3.2.2 angegebenen Satz über die Komplexitätsgrenzen von Ausdrücken klar, daß einige Arten von Ausdrücken in paralleler Verarbeitung in

log e Zeitschritten

berechnet werden können.

Andererseits lassen sich Ausdrücke E < e) konstruieren bzw. aus der seriellen Numerik oder Programmierung finden, deren Zeitschritte sich mit parallel verfügbaren Prozessoren nicht verringern lassen, wenn ihre Gestalt unverändert bleiben soll.

Ein Beispiel ist die Berechnung eines Polynoms nach dem HORNER­Schema, dessen Klammerschachtelung eine strikte sequentielle Ord­nung auferlegt:

h (x) = n a +x.(a 1

+x.(a 2+-----+x(a1+x.a ) ..... )) n n- n- o

bzw. bei umgekehrter Zuordnung der Koeffizienten zu den Potenzen im Polynom, wie wir sie schon früher verwendet hatten:

( ..... ((a .x+a 1

).x+a 2

).x+ ..... +a1

)x+a n n- n- o

Die Berechnung erfolgt iterativ, von innen nach außen die Klamme­rung abarbeitend.

Page 142: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 134-

Im Prinzip gibt es aber keine Vorschrift oder Einschränkung, die Verarbeitung der Ausdrücke, wie sie aus anderen Quellen (Program­men, mathematischen Verfahren, Algorithmen) vorgegeben sind, durchzuführen.

Vielmehr stehen Gesetzmäßigkeiten für arithmetische Operationen zur Transformation gegebener Ausdrücke zur Verfügung, um eine schnellere Abarbeitung zu erzielen unter Garantie der formalen Äquivalenz des Ausdrucks.

Diese Gesetzmäßigkeiten sind ('o' = (+, .)):

(i) das assoziative Gesetz:

a o (b o c) = (a o b) o c

(ii) das kommutative Gesetz:

aob=boa

(iii) das distributive Gesetz der Multiplikation:

a • (b + c) = a • b + a . c

Beispiel 1: E < e > = (((a+b)+c)+d)

a) seriell original: 3 Schritte (e-1): T 1

= 3. (Abb. 3.4.a)

Wir sprechen also von der Baumhöhe 3 dieses Ausdruckes.

b) Das assoziative Gesetz der Addition gestattet nun die Trans­formation in die Form:

E < e > = (a + b) + (c + d),

und für diesen Ausdruck läßt sich das Prinzip des rekursiven Doppeins anwenden, das einen in der Höhe reduzierten Baum (der Höhe 2) ergibt, so daß sich der neue Ausdruck parallel mit 2 Prozessoren berechnen läßt: T 2 = 2, p = 2 (Abb. 3.4b).

Das liefert

den Speedup: 52 = 3 2

die Effizienz: E2 = 3 4

die Redundanz: R2 = 1, da z2 = z 1 = 3.

Beispiel 2: E <e > = (a+b.c)+d

a) original: 3 Schritte (e-1): T 1

= 3. (Abb. 3.5a)

b) Das kommutative Gesetz gestattet die Transformation

E < e > = (a + d) + (b • c).

Dieser neue Ausdruck gestattet eine Reduktion des Baumes, so daß er mit einem Addier-Prozessor und einem Multiplizier­Prozessor parallel abgearbeitet werden kann: T 2 = 2, p = 2 mit

s2 = 3/2 und E2 = 3/4, R2 = 1 (Abb. 3.5b).

Page 143: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 135-

Bemerkung: Dieses Gesetz läßt sich natürlich bei der Multi­plikation von Matrizen nicht verwenden zur Transformation von E < e >.

Beispiel 3: E < e > = a . (bcd + f)

a) original: 4 Schritte (e-1): T 1

= 4 (Abb. 3.6a).

b) Das distributive Gesetz liefert die Transformation

E < e + 1 > = a • b • c . d + a . f,

die aber im Gegensatz zu den Beispielen 1 und 2 eine zu­sätzliche Operation erfordert: e ~ e + 1. (Abb. 3.6b).

Die Redundanz liegt jetzt über 1:

R 2 = 514 > 1.

(3) Sätze über Transformationen

Die diskutierten Beispiele der Baumhöhen-Reduktion durch Trans­formationen führen zu der Frage, welche Reduktion für beliebige arithmetische Ausdrücke erzielt werden kann und ob die allgemeinen Grenzen und auch Algorithmen gefunden werden können.

In den letzten Jahren sind hierzu sehr wesentliche Ergebnisse erzielt worden.

SATZ (Kuck und Muraoka, 1974; Brent und Towle, 1976):

Es sei E < e I d > ein Ausdruck mit der Tiefe d der Klammerschachte­lung und e Atomen.

Mittels der Assoziativität und der Kommutativität läßt sich der Ausdruck E < e I d > so transformieren, daß mit

p ~ Prozessoren

gilt:

( rloge l ~ ) T p (E < e I d >) .$ rloge l + 2d + 1,

zp = e- 1.

Bemerkung: Wenn die Tiefe der Schachtelung d klein ist, kommt T dem idealen Wert der unteren Grenze nage 1 sehr nahe. p

Denn rlogel hatten wir ja als untere Grenze eines beliebigen Ausdrucks gefunden.

Beispiel 4: E < 8 I 1) = a + b (c + ijf + g) + h

Da e = 8: T 1 = e-1 = 7; d = 1.

Aus dem Satz ergibt sich:

T p (E < 8 I 1 >) ~ 3 + 2 . 1 + 1 = 6'

mit

Page 144: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 136-

a) Transformation mittels assoziativem und kommutativem Gesetz:

E < 8/1 > = a + h + b . (c + g + i . j • f)

Daraus läßt sich der Baum bilden, wie in Abb. 3.7a dargestellt.

Auf der Grundlage von P = 2 Prozessoren ergibt sich daraus: T = 5; d. h. die Grenzen des Satzes liefern 1 Zeitschritt mehr als der konstruierte Baum und verlangen statt zwei Prozessoren drei.

b) Wird zusätzlich das distributive Gesetz angewendet, so läßt sich der Ausdruck in folgende Form transformieren:

E < 10 ) = a + h + b . c + b . g + b . i . j • f

Daraus gewinnt man auf der Basis von

P = 3 Prozessoren

einen Baum der Höhe T 3

= 4 (Abb. 3. 7b).

Für den Einsatz der 3 Gesetze gilt der

SATZ (Brent 1974):

Ist E < e >, e >Z, irgendein arithmetischer Ausdruck, so läßt sich durch geeignete Transformation mit dem assoziativen, kommuta­tiven und distributiven Gesetz der Ausdruck so transformieren, daß

T p (E < e >) ~ r 4 loge l- 1

und

zp < 10 e

mit

p < 3 e.

Unter der Voraussetzung, daß die Zahl der Prozessoren

P > 0 (e),

läßt sich dieses Ergebnis noch verbessern:

TP ~ !z,BBlogel-1

(Muller und Preparata, 1976).

Für die Komplexität des von Brent (1974) angegebenen Algorith­mus für die explizite Durchführung der Baumhöhen-Reduktion wurde gefunden, daß

0 (e loge) Schritte

notwendig sind.

Page 145: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 137-

Die Grundidee der Baumhöhen-Reduktions-Algorithmen auf der Grundlage der assoziativen und kommutativen Gesetze allein ist, Unterstrukturen der Bäume als Teilbäume mit gleichen Operatoren unter Ausnutzung des kommutativen Gesetzes zu isolieren, um anschließend mit Hilfe des assoziativen Gesetzes einen minimal hohen Teilbaum für jeden zu konstruieren.

Es gibt jedoch Klassen von Ausdrücken, wie die Polynome nach dem HORNER-Schema oder wie die Kettenbrüche, die sich nicht mit Hilfe des assoziativen und kommutativen Gesetzes allein geeignet transfor­mieren lassen, so daß eine Beschleunigung der Berechnung resultiert.

Baumhöhen-Reduktions-Algorithmen unter Ausnutzung aller 3 Ge­setze wurden von Muraoka (1971) angegeben und untersucht.

Für Ausdrücke mit und ohne Division ergeben sich unterschiedliche Grenzen für die Komplexität und die Zahl der Prozessoren:

(i) Ausdrücke mit Division :#: ~

Zeitschritte Prozessoren

Muller & Preparata 2,88 loge+0(1) O(e1,44) (1976)

Brent (1974) 4 loge+0(1) 3e = O(e)

Winograd (1975) 2 Se +O(log e) p 2P

(ii) Ausdrücke ohne Division: :#= =lf

Zeitschritte Prozessoren

Muller & Preparata 2,08 loge+0(1) O(e1,82)

Brent (1974) 4 loge+0(1) 3e = O(e)

Winograd (1975) 2 3e +O(log e) p 2P

Bemerkung:

Die Faktoren ergeben sich aus der Analyse von Muller & Preparata:

2 2,88 . 1 ~ 2,08' ~ ' log2<X. log2~

wobei

r;l_; = positive reelle Wurzel von z2 = Z+1,

~ = positive reelle Wurzel von z4 = 2Z+l.

Page 146: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 138-

Ergänzung:

Für endliche Prozessoren gilt der Satz von Brent:

SATZ (Brent):

Wenn Q eine parallele Berechnung ist, die aus q Operationen besteht und t Zeitschritte bei einer nichtbegrenzten Zahl von Prozessoren braucht (unbegrenzter Parallelismus), dann kann diese Berechnung mit p Prozessoren in einer Weise ausgeführt werden, die

T p = (q-t) + t p

Zeitschritte erfordert.

Beweis:

Sei q1, q7 , ..... , qt die Zahl der Operationen, Zeitschritten 1, 2, ••••. , tausgeführt werden.

t Dann ist: q = _2: qi

i=1

die für Q in den

Wir benutzen die p Prozessoren,um die Berechnung Q zu "simulieren".

da Q mit unbegrenzter Zahl der Prozessoren q1 in der Zeit 1 ausführt (gleichzeitig), brauchen p Prozessoren

r :1 l q2 : analog r q2l

p

Zeitschritte;

Zeitschritte anstelle des 2. Schrittes; usw.

Also benötigt ein Algorithmus mit p Prozessoren:

Tp t r q.l t

= L -f ~L (q. + p - 1) /p 1

i=1 i=1

= l: 2: qi + t -! p 1 p

also: Tp ~ (q-t) + t (q • e • d) p

Für den Beweis braucht man:

+ 1 - /( f

Page 147: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 139 -

(4) HORNER-Schema-Ausdruck und Kettenbruch

Anhand zweier Beispiele soll die Idee hinter dem Satz von Brent zur Baumhöhen-Reduktionverdeutlicht werden; sie führt in einigen Fällen sogar zur Minimierung der Baumhöhe.

i) BEISPIEL 5:

Wir betrachten den Ausdruck

E < 8) = a (b + c(d + e(f+ gh))),

der dem Horner-Schemafür Polynome ähnlich ist.

Beim Horner-Schema entspräche:

1) g = e = c = a = X '

2) h = a = a4 n

f = a n-1 = a3

d = a n-2 = a2

b = a n-3 = a1

0 = a n-4 = a 0

Wenn wir mit Hilfe eines Distributions-Algorithmus die Klammer­schachtelung vollständig auflösen, ergibt sich:

E1 < 14 > = ab+ acd + acef + acegh.

Der entsprechende Baum mit 4 Prozessoren hat die Gestalt in Abb. 3.8a.

Wir sehen, daß wir mit p = 4 Prozessoren das folgende Ergebnis erzielen:

p = 4: T4 = 5,

54 = 7 ' 5 E4 = 7 t'V 1 '

20 3

R4 = 13 .<.. 2 • 7

N

Halbieren wir aber den Ausdruck und wenden das distributive Gesetz geeignet an, so finden wir einen noch günstigeren Ausdruck:

E2 < 10 > = a (b + cd) + ace (f + gh).

Daraus läßt sich der Baum für 3 Prozessoren konstruieren, wie er in Abb. 3.8b dargesteHt ist.

Page 148: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 140-

Hiermit folgt als Resultat:

p = 3: T3 = 4,

s3 = 7 ' 4

E3 = 7 > 1 ' 12 2

R3 = 9 /V 1,3 • /'/

7

Bemerkung:

1) Aufgrund des Satzes über die Zeitkomplexität von Ausdrücken bei beliebigen Prozessoren können wir nicht eine bessere Zeit als log 8 = 3 Schritte erwarten.

2) Die Prozedur des "Halbierens" des aufgelösten Ausdrucks in 2 Teilausdrücke, die dann ihrerseits geeignet behandelt werden, erinnert an das Prinzip des "rekursiven Doppelns" bei assoziati­ven Operatoren;dieses Prinzip lieferte ja minimal hohe binäre Bäume mit (logn)-Zeitkomplexität. Der für E

2 < 10 >erstellte Baum hat deutlich noch Ähnlichkeit

mit den Baumen aus dem "rekursiven Doppeln".

(ii) BEISPIEL 6:

Wir betrachten den Kettenbruch

Diesen Kettenbruch "halbieren" wir, indem wir in ihm den Ausdruck

X = d + e T+"Q

h substituieren; das ergibt nach Hochmultiplizieren:

aX bX + c

und explizit:

E1

= (a.d+a.el(f+glh)) I (c+b.d+b.e I (f + glh))

Mit 4 Prozessoren ergibt sich der Baum in Abb. 3.9a mit p = 4:

T 4

= 5, s 4 = ]_, E4 = ?_, R4 = 2 • 5 20

Page 149: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 141-

Berücksichtigt man den gemeinsamen Unterausdruck in Zähler und Nenner, f + g/h, und besteht die Möglichkeit, Zwischenergebnisse gleichzeitig mehr als einem Prozessor zugänglich zu machen, so läßt sich der Ausdruck E

1 umstellen in die Form, um einen

Prozessor einzusparen:

E 1

= (a.d+a.e/(f+g/h))/(b.e/(f+g/h)+b.d+e).

Mit diesem Ausdruck läßt sich ein "Baum" für 3 Prozessoren aufstellen, der die Resultate zeigt (Abb. 3.9b):

p = 3 : T3 = 5,

s3 = 7 ' 5

E3 = 7 15

R3 = 12 < 2. 7

(5) Blöcke von Zuweisungen

In realen Programmen, die a posteriori mit Hilfe von Compilern parallelisiert werden sollen, können in der Regel mit den Möglich­keiten der Transformation von Ausdrücken keine allzu großen Speedups erwartet werden, denn die Zahl der Atome realer Pro­grammanweisungen ist relativ klein; im allgemeinen werden - von wenigen Ausnahmen abgesehen- die Atomzahlen in den Ausdrücken weniger als 8 bis 10 ausmachen.

Um dennoch die praktische Bedeutung der Transformationen zu unterstreichen, sollen Blöcke von sog. "Assignment Statements" betrachtet werden, wie sie als Bausteine realer Programme geläufig sind. Wir wollen hier den Begriff "Zuweisung" verwenden.

Ein Block von Zuweisungen ("block of assignment statements"), BAS, ist eine Folge aus einer oder mehreren Zuweisungen ohne unter­brechende Anweisung anderer Art, z. B. also:

X= B*C*D+E

Y = A *X

Z = F*G+X.

Die linken Seiten werden durch Variablen eingenommen, die entweder skalare oder Feld-Variablen sein können, während die rechten Seiten von wohldefinierten arithmetischen Ausdrücken gebildet werden.

In dem als Beispiel angegebenen BAS wird die Variable X in den folgenden Ausdrücken benötigt, nachdem sie durch Zuweisung eines arithmetischen Ausdrucks bestimmt wurde.

Page 150: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 142 -

Vernachlässigt man den Zeitaufwand für Speicherzugriffe, beispiels­weise, so benötigt ein Monoprozessor 6 Schritte um den BAS zu berechnen.

Es muß darauf hingewiesen werden, daß in dem gegebenen BAS kein Ausdruck durch Baumhöhen-Reduktion in der Ausführung mit Pa­rallelprozessoren beschleunigt werden kann.

Die Substitution von Anweisungen ist nun ein Prozeß, bei dem Variablen, die in arithmetischen Ausdrücken auf der rechten Seite von Zuweisungen auftreten, ersetzt werden durch die expliziten Aus­drücke auf der rechten Seite von vorher definierten Variablen der linken Seite.

Für das angegebene Beispiel erhält man damit 3 Anweisungen, in denen bei Y und Z die Variable X durch den zugehörigen Ausdruck der rechten Seite im ersten Statement substituiert wurde:

X= B*C*D+E

Y = A*B*C*D+A*E

Z = B * C * D + E + F * G.

Diese neuen Anweisungen, die auf die Menge der "Atome" (A, B, C, D, E, F, G) zurückgeführt wurden, lassen sich nun durch Techniken der Baumhöhen-Reduktion geeignet transformieren, damit sie der Verar­beitung mit Parallelprozessoren zugänglich werden.

Diese Ausdrücke lassen sich jetzt gleichzeitig, mit zunächst 5 Prozessoren, in insgesamt 3 Schritten auswerten, wie die zugehörigen Bäume zeigen (Abb. 3.1Da).

Daraus folgt:

p = 5, s5 = 2, E5 = ~' da T 5 = 3 gegenüber T 1 = 6. 5

Die geringe Effizienz kommt dadurch zustande, daß infolge der Substitution gemeinsame Terme mehrfach ausgewertet werden müs­sen.

Setzen wir voraus, daß das Parallelprozessorsystem in der Lage ist, Zwischenresultate gleichzeitig mehreren Prozessoren zugänglich zu machen, in unserem Beispiel also von den Prozessoren für 'X' und 'Z' gleichzeitig weiterverwenden zu lassen, so läßt sich die Effizienz durch die erzwungene Erniedrigung der Prozessorzahl erhöhen; in dem Beispiel läßt sich damit 1 Prozessor eliminieren und die Effizienz auf E 4 = 1/2 erhöhen.

Unter Berücksichtigung dieser 'Share'-Technik ergeben sich die "Baum"-Strukturen in Abb. 3.1Db:

p = 4: T4 = 3

54 = 2

E4 = 1 2

Page 151: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 143-

3.3 Rekurrente Systeme

Im folgenden wollen wir die sog. rekurrenten Systeme, die wir bereits im Zusammenhang mit der BROADCAST -Funktion kennenlernten, weiter­verfolgen ( vgl. 2.6).

3.3.1 Einführung und Definitionen

Im früheren Zusammenhang wurde schon erkannt, daß lineare rekurrente Systeme ähnlich wie arithmetische Ausdrücke von zentraler Bedeutung sowohl für den Rechnerentwurf - wenn wir an die binäre Addition mit dem Problem des Übertrags denken - als auch für die Rechneranwendungen sind, wie das HORNER-Schema oder rekursive Filtersysteme zeigen.

Während arithmetische Ausdrücke quasi ein statisches Berechnungsschema spezifizieren für ein skalares Resultat, spezifizieren rekurrente Systeme dynamische Prozeduren zur Berechnung von skalaren Größen oder von Datenfeldern wie Vektoren.

Wegen der relativen Häufigkeit rekurrenter Systeme ist es wichtig, schnelle effiziente Algorithmen zu ihrer Berechnung zu finden.

(1) Beispiele rekurrenter Systeme

Wir wollen uns hier auf lineare rekurrente Systeme beschränken, obwohl es inzwischen auch für einige nichtlineare rekurrente Systeme Techniken zur Erhöhung der Berechnungsgeschwindigkeit gibt.

Um die Vielfalt der Einsatzgebiete anzudeuten,sollen einige Beispiele angegeben werden.

i) Skalarprodukt zweier Vektoren

Betrachten wir das Problem der Berechnung des Skalarpro­duktes zweier n-dimensionaler Vektoren

a = (a1 , ..... , an)

b = (b1 , ..... , bn)'

das wir gewöhnlich in der Summe schreiben

x = 2= a .• b .• . 1 1 1 1=

Dieses Skalarprodukt läßt sich in einer Programmschleife als eine lineare Rekurrenzrelation der Form schreiben:

{

X = 0,

X = X + a .. b., 1 1

i ~ o, 1 ~ i~ n.

Durchläuft der Index i die Folge i = 1, ..... , n mit dem Anfangswert x = 0, so resultiert das Skalarprodukt von a und b.

Page 152: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 144-

Die Ubersetzung des Systems in eine Programmschleife hat, wie wir schon früher verschiedentlich diskutiert haben, die Zeitkomplexität

T 1 = O(n),

denn es sind n Multiplikationen und n Additionen (bzw. n-1 Additionen) notwendig.

Wir hatten bereits früher gesehen, daß mit Hilfe von n Parallelprozessoren unter Anwendung des Prinzips des rekur­siven Doppeins

alle n Multiplikationen in 1 Schritt

die Additionen in logn Schritten

durchfUhrbar sind, so daß sich für das Skalarprodukt die Zeitkomplexität

T = O(logn) p

erreichen läßt.

Demnach gibt es Möglichkeiten, die Zeitkomplexität rekurren­ter Systeme auf die Ordnung O(logn) herabzudrücken.

ii) Das HORNER-Schemafür Polynome

Ein zweites Beispiel eines linearen rekurrenten Systems, das schließlich ein skalares Ergebnis liefert, ist die Berechnung eines Polynoms vom Grade n nach dem HORNER-Schema, das wir hier in der Farm schreiben wollen:

{h=a, i=O,

h = a~ + x • h , 1~ i ~ n.

In eine Programmschleife übertragen, liefert das HORNER­Schema bekanntlich eine Zeitkomplexität linear im Grad des Polynoms:

T 1 = O(n).

Entsprechend dem Skalarprodukt läßt sich auch die Rekurrenz­relation des HORNER-Schemas an Parallelprozessoren an­passen, so daß eine Erniedrigung der Zeitkomplexität resul­tiert. Entsprechend den Uberlegungen bei der Reduktion der Baumhöhe arithmetischer Ausdrücke läßt sich das Schema schrittweise expandieren durch Substitution auf der rechten Seite:

Page 153: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 145 -

Substitution-Schritt 0:

Substitution-Schritt 1:

"

" "

Substitution-Schritt n:

x = a b0

0 0

n n n x = a

0b

0 + a1 b1 + .... + anbn

wobei jetzt nach n Schritten:

bn n-1 1 = X

bn n-1 = X

bn = l. n

Dieser Ausdruck läßt sich jetzt natürlich auf einen Baum abbilden, der die Höhe rtog(n+l) l hat; da bn = 1, sogar r logn l. n

Es kommt nicht von ungefähr, daß die Resubstitution wieder die ursprüngliche Gestalt der Polynomdarstellung liefert.

Dieser - scheinbar triviale - Effekt ist im Grunde charak­teristisch für den Ubergang vom Monoprozessor zum Parallel­prozessor: in der Regel wird eine Abkehr von den in der seriellen Numerik etablierten Verfahren nötig.

Für derartige rekurrente Systeme können wir also erwarten, daß sie in

T p = O(logn) Zeitschritten

mit

P = O(n) Prozessoren

berechnet werden können.

Es gibt jedoch einfache rekurrente lineare Systeme und Relationen, die schwieriger lösbar aussehen:

Page 154: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 146-

iii) Fibonacci-Zahlen

Beispielsweise ist die Folge der sog. Fibonacci-Zahlen definiert durch die Beziehung

f. = f. 1

+ f. 2

, 3 ~ i ~ n, I 1- 1-

wobei

Das Ergebnis wird hier in Vektorform

F = ( f 1

, f 2

, ..... , f n)

für beliebiges n (ganzzahlig positiv) erhalten bzw. verlangt.

Schon daraus läßt sich hinsichtlich der Suche effizienter Lösungen ein erheblich größerer Aufwand vermuten.

iv) Binäre Addition mit Übertrag

Wir hatten die Propagation des binären Übertrags bei der Addition zweier n-Bit-Binärzahlen a und b:

a =

schon früher formuliert:

Interpretieren wir "+" als logisches 'OR' und "." als logisches 'AND', so ist mit

z. = a. + b. I I I

y. = a .. b. I I I

und der Anfangsbedingung

X = 0 0

die Fortschaltung des Übertrages beschrieben in der rekurren­ten Beziehung

1 ~ i ~ n.

Auch hier wird das Ergebnis als Vektor x erhalten bzw. gefordert.

v) Rekursive lineare Filter (Prediktor)

x 1

= c + Ax ; c = f (z 1;V) n+ n n+

A = lineare Systemmatrix

Page 155: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 147-

(2) Definitionen

In Abschnitt 2.6 hatten wir lineare rekurrente Systeme bereits definiert:

Definition: Ein lineares rekurrentes System

R (n, m) :

R (n, m)

der Ordnung m für n Gleichungen ist definiert für

m ~ n-1

durch

xk = 0 für k 6 0,

k-1

xk = ck + > akj . xj j=k-m

für 1~ k ~ n.

Definition: Ist m = n-1, so wird das System ein gewöhnliches lineares rekurrentes System, mit der Bezeichnung

R (n),

genannt.

In Matrix-Vektor-Notation läßt sich das System mit dem "Lösungsvektor" T

x = (x1

, ..... , xn) ,

dem "Konstantenvektor" T c = (cl' ..... , cn)

und der "Koeffizientenmatrix"

A ( ) 1 ~· ·~ = a.. , _ 1, J- n 1 J

darstellen in der Form

x = c + Ax.

Dabei ist die Matrix A eine echte untere Dreiecksmatrix:

A: a .. 1 J = 0 füri~j,

a .. = 0 für i-j )' m. 1 J

Für m < n-1 ist die Matrix A also eine "Band-Matrix" (Abb. 3.11).

Im Beispiel der Fibonacci-Zahlen besteht die Matrix A aus dem Band der zwei unteren Nebendiagonalen, deren Elemente 1 sind, wenn als Lösungsvektor

xk = f k , k = 1, 2, ..... , n

interpretiert wird, wobei x1 = x2

= 1.

Page 156: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 148-

Als Beispiel hatten wir R(S,2) für n = S und m = 2 explizit aufgeschrieben:

xl = Cl

x2 = c2 + a2lxl

R(S,2): x3 = c3 + a31 xl + a32x2

x4 = c4 + a42x2 + a43x3

xs = es + aS3x3 + aS4x4

Für m = n-1 = 4 ergibt sich das in der linken unteren Hälfte von A aufgefüllte gewöhnliche linear rekurrente System R(S):

xl = Cl

xz = c2 + a2lxl

R(S): x3 = c3 + a31 xl + a32x2

x4 = c4 + a41 xl + a42x2 + a43x3

xs = es+ aSl xl + aS2x2 + aS3x3 + aS4x4

In der Matrix-Schreibweise sieht also R(S,2) folgendermaßen aus:

I I r .., I

xl i 0 0 0 0 0 xl i ' Cl I I I l

x2 I I c2 l I a21 0 0 0 0 x2 I

I I i

x3 I

= :: j +I a31 a32 0 0 0 ' . x3 !

x4 I 0 a42 a43 0 0 x4

xs J es 0 0 aS3 aS4 0 X !

L ~ s __.

3.3.2 "Column-Sweep"-Algorithmus

Der "Column-Sweep"-Algorithmus lieferte eine erhebliche Verbesserung der Berechnungsgeschwindigkeit für gewöhnliche lineare rekurrente Systeme R(n).

Page 157: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 149-

Wir hatten dabei festgestellt, daß

1) im seriellen Fall mit 1 Prozessor für jedes k ~ 2:

k-1 Multiplikationen (ax), k-2 Additionen (ax), 1 Addition von ck zur Summe,

insgesamt also:

2 • (k-1) Operationen

nötig sind; k = 1 bedarf wegen x1 = c1

keiner Operation; damit folgt für die Zeitkomplexität

T 1 = 2 • (1 + 2 + ..... + (n-1))

= n (n-1)

= 0 (n2

).

2) der "Column-Sweep"-Algorithmus mit einem Parallelprozessorsystem aus p = n-1 Prozessoren insgesamt

T = 2 (n-1) p = O(n)

Operationen erfordert, wobei die BROADCAST -Funktion hinsichtlich des Zeitaufwands vernachlässigt worden war.

Es ergab sich somit für den Column-Sweep-Algorithmus:

s n O(n) = 2 = p

E n > 1 p = 2(n-l) 2

für p = n-1.

Überträgt man den Column-Sweep-Algorithmus von den gewöhnlichen Systemen auf die linearen rekurrenten Systeme mit m < n-1, so ergäbe sich analog für den Speedup bei nur m notwendigen Prozessoren:

R(n,m): S = m

O(m).

Daraus folgt die Kritik am Algorithmus für kleines m, da nicht nur der Geschwindigkeitsgewinn S , sondern auch die Ausnützung der Prozessoren in einem System aus p >> ffi Prozessoren sehr schlecht wäre.

Da in der Praxis jedoch die Fälle mit m << n sehr oft auftreten, empfiehlt sich die Suche nach besseren Algorithmen für m « n.

Andererseits ist bekannt, daß rekurrente Systeme wie die Berechnung des Skalarproduktes, für das ja m = 1 gilt, eine Zeitkomplexität

O(logn)

erreichen.

Page 158: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 150-

Dahin führt auch eine Plausibilitätsüberlegung.

Die Gesamtzahl der Eingabedaten aus dem Konstantenvektor c und der Matrix A in einem R(n,m)-System ist

0 (m . n).

Nehmen wir an, daß diese Zahlen zur Berechnung der Lösung in Wechsel­wirkung treten müssen, so folgt aus dem Satz über die Ausdrücke aus e Atomen, daß mindestens

0 (logmn) Schritte

erforderlich sind.

Da bei einem gegebenen System R(n,m) m konstant ist und in den uns hier interessierenden Fällen m << n sein soll, ist

0 (logmn) = O(logn).

Zu O(n) für den Column-Sweep-Algorithmus tut sich somit eine große Lücke auf, die es zu überbrücken gilt.

3.3.3 Der "Rekurrente Produktform-Algorithmus"

Die schnellste bekannte Methode zur Berechnung von R(n,m)-Systemen liefert der "Rekurrente Produktform-Algorithmus".

Es stellt sich heraus, daß für großes m die Zahl der erforderlichen parallelen Prozessoren recht hoch wird; für kleines m, und für solche Fälle interessieren wir uns hier, ergeben sich aber ganz realisierbare Prozessor­zahlen.

Der Einfachheit halber sei im folgenden vorausgesetzt, daß n und m Potenzen von 2 sind:

n = 2 17 '

m = 2 fk.

Der Produktfarm-Algorithmus wird (vor allem) von Sameh und Brent 1977 (A. H. Sameh, R. Brent: Solving Triangular Systems on a Parallel Computer, SIAM J. Num. Analysis 14 (1977), No. 6, 1101-1113) gründlich untersucht.

(1) Satz von Sameh und Brent über R(n,m)

SATZ: Ein lineares rekurrentes System R(n,m) kann berechnet werden mit den Grenzen:

1) n wenn 1 ~ m ~ 2 :

1 2 T p ~ (2+logm)logn - 2 (log m+logm),

2 n n Zp ~ m n log 2m + O(mnlog 2m ),

m 3) P ~ 2 (m+1)n + O(m ;

Page 159: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 151 -

2) n wenn 2 < m~ n-1:

T wie unter 1), p

z ~ 2 3 2 21 n + O(n ),

p

3 2 p ~ n 68 + O(n ),

Explizit wurden die folgenden Ergebnisse erhalten für Z und P: p

1) 1 ~ m ~ n/2:

z = rm2nc43 + log~ ) + mn (log~ _l) p I' 42 4m m 4

4 15 3 2 10 n 41 + 3n + 14 m + 2m + 21 ' m -2m - 7

_ { ~ (m+1) n - m3

für 1 ~ m < ~, p - r21 2 5 n l f" n

128 m .n + 16 mn + 8 ur m = 2

BEISPIEL: Wir wollen die Zeit und die Prozessorzahl betrach­ten, die notwendig sind, um ein System R(n,2) mit sehr großem n zu berechnen.

Aus den Aussagen des Satzes von Sameh und Brent ergibt sich:

T ~ p

=

1 2 (2+log2)logn- 2 (log 2+log2)

3 logn- 1,

P ~ 3n- 8.

Wir sehen daraus, daß ein R(n,2), oder allgemeiner: R(n,m) mit kleinerem m, in etwa der gleichen Zeit berechnet werden kann wie ein Ausdruck mit n Atomen; dafür hatte Brent ja 1974 gefunden:

T p ~ r 4 log e l -1

mit

P < 3e,

Page 160: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 152 -

Der Faktor 4 wurde 197 6 von Mull er und Preparata auf 2,88 (~ 3) reduziert unter der Voraussetzung, daß die Zahl der Prozessoren

P > 0 (e).

Die Zahl der erforderlichen Prozessoren ist mit

P ~ 3n-8

vergleichbar dem Ergebnis P < 3e.

Während in einem Ausdruck die Zahl der Atome e war, ist die Zahl der Atome in einem System R(n,2) aber ungefähr 3n.

(2) Funktionsweise des Algorithmus

Der "Rekurrente Produktform-Algorithmus" ergibt _1sich aus der Produktfarm-Darstellung für die inverse Matrix L , welche das lineare rekurrente Gleichungssystem

x = c + Ax

löst; ist I die (nxn)-Einheitsmatrix, so gilt:

(I - A) X = c, also: LX = c'

und unter geeigneten Voraussetzungen, die hier erfüllt sind:

1 -1 X = (I - Af c = L c,

r-' 1 wobei

L /{

-A 0

..

Ist A eine echte untere Dreiecksmatrix, so gilt die folgende Produktfarm-Darstellung für

L -1 = (I-Af1

,,,.·\::'

(vg. A. S. Householder, The Theory of Matrices in Numer cal Analysis, Blaisdell, New York, 1964):

-1 L = M • M 1• M 2 ..... M1 n n- n-

wobei für 1.6 i ~ n-1:

Page 161: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(3)

M. = I

- 153-

/fO ···~ 0 "

;f 0 0 !f 0 0 q, 1

.t+-1,-t , . . . • • • •

0 0

I l 0 , • • 0 a .0 •.• ~ !f L n-t

D. h.: M. wird dadurch erzeugt, daß zur Einheitsmatrix in der i-ten Spalte dre i-te Spalte der Matrix A hinzuaddiert wird. M ist hier identisch mit I. n

Die Lösung x ergibt sich sodann als Vektor

X = M 1 M 2 ..... M1 • c n- n-

Diese Kette von Matrixmultiplikationen eignet sich aber jetzt zur Anwendung des Prinzips des rekursiven Doppelns.

Da n Arrays enthalten sind (M., i = 1, ... n-1, und c) läßt sich die Kette in

1

T Kette = r logn l Array-Multiplikationen berechnen.

Jede dieser Array-Multiplikationen ihrerseits läßt sich in R(n) -Systemen in

T = 0 (logn) Array

Zeitschritten berechnen, da ja im wesentlichen immer nur eine Spalte bzw. Zeile in der Skalarproduktbildung involviert ist.

Insgesamt liefert die Plausibilitätsüberlegung eine Zeitkomplexität

T 2 = 0 (log n). p

Durchführung und Baumstruktur bei R(4,2)

BEISPIEL: R(4,2)

I 0 0 0 0

A a21 0 0 0 = a31 a32 0 0

L 0 a42 a43 0

1 0 0 0 L = -a21 1 0 0

-a31 -a32 1 0

0 -a42 -a43 1

Page 162: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 154-

X = :-i 1 0 0 0

1 o 1 o o 9

" l ~ ~ ~43~

Cl

= (c2+a2lcl)

M3

M2

M1

c

1 0 0 0

0 1 0 0

0 a321 0

0 a420 1

0

0 D

0

1

1 0 0 0

a2ll 0 0 a

a31

o 1 0 c3

0 0 0 1 c4

Cl

c2 + a21 cl

c3 + a31 cl

c4

(c3 + a31 cl) + a32 (c2 + a21 cl)

c4 + a43 (c3 + a3lcl) + (a42 + a43a32) (c2+a2lcl)

Konstruiert man für dieses Beispiel den zu x gehörigen Baum bzw. die zu x. gehörigen Teilbäume und setzt man voraus, daß die ZwischenJrgebnisse weiterverwendet werden können von verschie­denen Prozessoren im gleichen Zeitschritt, so findet man, daß x in

T 3

= 5 Schritten

mit

P = 3 Prozessoren

berechnet werden kann (Abb. 3.12).

Der Satz liefert für n = 4 und m = 2 T =5,

P aber p ~ lf- •

(4) Allgemeiner Produkt-Form-Algorithmus

Im folgenden wollen wir den "Rekurrenten Produktform-Algorithmus" in der allgemeinen Form darstellen, wie er sich z. B. bei Sameh und Brent (1977) (SIAM J. Numer. Anal. 14 (1977), No. 6, ll01-lll3) findet. -

Page 163: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 155 -

(i) Annahmen über Parallelprozessorsystem

Hinsichtlich des verfügbaren Parallelprozessorsystems wollen wir wieder die folgenden Annahmen machen, die wir ja schon früher bei der Diskussion von Algorithmen oder der Komplexi­tät und Effizienz von Algorithmen auf Parallelprozessoren gemacht haben:

a) Es soll zu jeder Zeit jede beliebige Anzahl von Prozessoren zur Verfügung stehen.

b) Jeder Prozessor soll in der Lage sein, ohne zu berücksichti­gende Aufsetzzeiten jede der vier arithmetischen Opera­tionen (+, -, *, /) in einem einzigen Zeitschritt auszuführen; Unterschiede in der realen Ausführung der Operationen wollen wir nicht berücksichtigen.

c) Zeitverzögerungen oder Zeitaufwendungen durch Speicher­zugriffe und Anpassungen von Datenfeldern an die gefor­derte Struktur, wie z. B. bei Vektoren und Matrizen, sollen nicht einbezogen werden; d. h. es werden weder ent­sprechende Gewichtungen vorgenommen noch den Speicher­und Datenstrukturen angepaßte Kostenfunktionen einge­führt.

Der Einfachheit halber wollen wir weiterhin voraussetzen, daß n = 2" und m = 2,"\...

(ii) Das allgemeine Dreiecks-System

Wir wollen das allgemeine Problem der Lösung linearer Gleichungssysteme der Dimension n,

(ii.1) L X = f ,

behandeln für den Fall, daß L eine untere Dreiecksmatrix ist:

111 0 0 . . . 0

L = 121 122

0

• .. • ..

0

1 n1

1 n2 e. ,._ e & (!) 1

nn

= 0 1.. * 0 IJ

wobei 1 .. =/= II

0 für alle 1~ i::;; n sei.

Page 164: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 156 -

Die Lösung des Systems (ii.1) ist formal gegeben durch Inversion von L:

(ii.2) L -1 f = X •

Bemerkung: Im Falle rekurrenter Systeme setzt sich L, wie vorher gezeigt, aus der Einheitsmatrix und der Koeffi­zientenmatrix A in der Form zusammen

L = I-A,

d. h. 1.. = 1, 1 ~ i ~ n; L kann (für m < n-1) eine Bandmatrix ll

sein.

Nach Hauseholder kann die Inverse von L in der bereits angegebenen Weise dargestellt werden:

(ii.3) L -1 = M • M 1

•.••• M1 n n-

wobei jetzt in dem allgemeinen Fall für M. gilt: l

(ii.4)

M. l =

0 "

0

0 I .

• I • ~~I 0

I 1/1 .. I

ll I

I -1. 1 ./1.., 1 . l+ ' l ll

I

I -1 • I 0 ni 1 .. ll

i-te

Spalte

0

1

Die Lösung des Systems berechnet sich daher in der Weise

(ii,5) X = M • M 1

..... M1.f

n n-

wobei jetzt wegen der Allgemeinheit M mitgenommen wird; M ist bis auf das Element m = l/f identisch mit der Ei~heitsmatrix, so daß sich dern~etzte Rfilultiplikationsschritt besonders einfach gestaltet.

(iii) Der Algorithmus

Die Berechnung des Produktes

M 1

• M 2

.... M1.f

n- n-

mittels eines Parallelprozessormodells gemäß unseren An­nahmen eignet sich für das Prinzip des rekursiven Doppelns.

Page 165: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 157 -

Die Ausführung benötigt dementsprechend:

JA- = log n Stufen (j = 0,1, ..... ,f-1).

Wir setzen:

s = 2j '

f(O) = f '

M\0)= M .• 1 1

Auf jeder Stufe (j+1)=1,2, ..... ,J-l berechnen wir die zugehörigen Matrizen, die entsprechend dem Prinzip des rekursiven Dop­peins definiert sind durch

(a) =

2i+1 2i

für j = 0, 1, ..... , j-l-2

und i = 1, 2, ..... , C2~) - 1 ,

und den zugeordneten Vektor, der gegeben ist durch

(b) = M(j) • ij)

1

für j = 0, 1, ..... , JJ-1.

Der Prozeß des übergeordneten rekursiven Doppeins stellte sich für das Beispiel n = 8 wie in Abb. 3.13 dar.

Jede Matrix M(j)ist von der Farm

0

0

/~(j)

0

0

dabei ist

(a)

(b)

(c)

t_ (j) eine untere Dreiecksmatrix der Dimension (oder Ordnung) s = 2J,

I(j) eine Einheitsmatrix der Dimension q(jl i.s- 1,

JCj) eine Einheitsmatrix der Dimension r(j)

= (n+l)-(i+1)s.

Page 166: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 158 -

Die Dimension der Matrix M(j) ist stets n, denn:

dM = dl + clt_ + dJ = s + (i.s-1) + (n+1-(i+1).s)

= s + i.s - 1 + n + 1 - i.s - s

= n.

Entsprechend der Konstruktion ist:

/\ (o) 1 L =

i iji (a) das Element m .. von M. ,

11 1

(b) S(o) = (-1/1 .. ). (1. 1 ., 1. 2 ., ..... '1 .)T II I+ 11 I+ 11 nl

der untere Teil des Spaltenvektors in M. : -lk./1 .. , k > i.

1 1 11

Wir wählen nun für S(j)die Zerlegung i

worin

s(j) = \ u.(j) 1

v(j)

Li

U(j) = quadr. Matrix (sxs). i

Zur Bestimmung der Rekursion der einzelnen Matrixblöcke in

M.(j+ 1\ M2(j)

1, M2(~) veranschaulichen wir uns die Verhältnisse

1 I+ 1

in den Matrixdiagrammen (Abb. 3.14); die Dimensionen sind dabei: .

s = zl

q (j) = i . s- 1

/j) = (n+1)- Ci+1)s i

Demnach erhalten wir die folgenden Matrixrelationen:

/\(' 1) AL(J') (iii.1) L J+ = 0

2i t (j) • u(j) 1 (j)

2i+1 2i 2i+1

(iii.2) s(j+1) = [

s(j) " u(j) + v(j), 2i+1 2i 2i

s(j) ]· 2i+1

Page 167: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 159-

Für die Dimensionen der Blöcke gilt die Rekursion:

q (j+ 1)

= q(j)

i 2i

r (j+1)

= r (j)

2i+1

sj+ 1 = 2sj

Da der Vektor f(j+ 1) stets durch die Multplikation von f(j) mit

Mij) von links her entsteht, gi.lt also jeweils für die

entsprechenden Dimensionen von MiJ):

q(j) = s. - 1 = 2j-1 ' 1 J

/j) = n + 1 - 2s .• 1 J

Zerlegen wir entsprechend den Vektor ij) in Teilvektoren nach

wobei

/j) = (g(j~ g(j~ g(j)) T ' 1 2 3

g(j)

1 g(j)

= (s.-1)-dimensional J

= s.-dimensional 2

und daher

J

g(j) = (n+1-2s.)-dimensional 3 J

= /j) -dimensional, 1

dann erhalten wir für den Vektor der nächsten Stufe eine entsprechende Zerlegung

/j+1) = (f(j+1) , /j+1) , /j+1) ) T ,

1 2 3 (') wobei entsprechend dem Diagramm für M J gilt:

/j+1) = g(j)

1 1 /j+1) = ~ (j) • g(j)

2 1 2 f(j+ 1) = sU) "g(j) + g(j)

3 1

2 3

wobei die ersten zwei Subvektoren die ersten 2s.-1 Elemente des Lösungsvektors x bilden. J

Page 168: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 160-

(iv) Zeitkomplexität und Prozessorzahlen

a) Unter den Annahmen über das Parallelprozessorsystem können wir jede Matrix M. in (ii.4) in

I

t = 2 Schritten berechnen, a

nämlich: mit 1 Division der i-ten Spalte von L durch 1 .. und dann 1 Subtraktion der erhaltenen Element

1J l. ./1 .. von der i-ten Spalte der vorgegebenen Ein­h1~K~mMtrix, d. h. durch Substitution der i-ten Spalte in der Einheitsmatrix durch den Spaltenvektor

l ~~ ' ' lo

y. I

= ! 1/l .. II

-1. 1tl .. , I+ iJ-11

: I ~I /1.. I

ni 11 J dafür brauchen wir parallel

(n-i+1) Prozessoren,

entsprechend der Zahl der von Null verschiedenen Elemente der i-ten Spalte.

Das heißt: Die Bildung aller Matrizen M. , i = 1,2, ..... ,n, erfordert 2 Schritte mit

1

=

=

Prozessoren.

n n ~ p. = .:2:= (n-i+1)

. 1 I . 1 I= I=

2 n + n - n(n+1)

n(n+1) 2

2

b) Ähnlich lassen sich die Produkte

t (j) 2i+1

s(j) 2i+1

L_ (j) 1

s(j)

1

uCj)

2i uCj)

2i

g (j)'

2

g (j)'

2

'

'

Page 169: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

c)

- 161 -

parallel gleichzeitig berechnen, und zwar, da es sich hier um die Bildung von Skalarprodukten je zweier Vektoren der Dimension s. handelt, in

J

= 1 +j Schritten.

Die Summen

s(j) uCj) + v(j) 2i+1 2i 2i

und

können in 1 zusätzlichen Additionsschritt berechnet werden.

Damit erfordert jede Stufe (j+1) insgesamt an Zeit­schritten

= tb + 1 = (2+j)

Deshalb ergibt sich für die Lösung des Systems der Zeitaufwand

t = 2 + )>1 t(j+ 1) + 1

j=o

= N-1

3 + ~ (2+j) j=O

= 3 + ~ (j+1) j=1

= 3 +/u\JJ2+3)

2 1 log n + 3 logn + 3 ; = 2 2

gesamten

dabei haben wir für die Berechnung des letzten Produk­

tes M fCji; einen weiteren Schritt hinzugefügt. n

Page 170: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 162 -

d) Die Bestimmung der zugehörigen Zahl notwendiger Prozessoren ist in jedem Fall etwas komplizierter als die Berechnung der Zeitgrenzen.

1) Betrachten wir zunächst die Zahl der Prozessoren zur Bildung von

= M(j) M(j).

2i+1 2i

Hier bilden wir die Produkte parallel:

~ (j) • uCj)

2i+1 2i

und

s(j) • u(j)

2i+1 2i

Die Bildung jeder Spalte von~ (j) • U(j) 2i+1 2i

impliziert

s. Skalarprodukte J

von

s. Vektorpaaren der Dimensionen J 1, 2, 3, ..... ' s ..

J

Somit erfordert jede Spalte

s. (s.+1) / 2 Prozessoren; J J

das gesamte Produkt aus s. Spalten braucht daher zur Parallelverarbeitung: J

(1) p =

c(j)

Das Produkt

sO) uCj)

2i+1 2i

errechnet sich über

2 sJ .• p c(J') = s (s.+ 1)/2 Prozessoren.

j J

= s .. /j) Skalarprodukte J 2i+1

von Vektoren der Dimension s .• J

Page 171: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 163-

Dafür sind notwendig:

P(2) = s2 /D 2 = s r(j+1) Prozessoren

c(ij) j 2i+1

Insgesamt erfordern deshalb diese Matrixprodukte der (j+1)-ten Stufe:

p c(ij) = p(1) + p(2)

d.h.: P c· .)= C IJ

=

Prozessoren.

c(j) c(ij)

2 2 (' 1) 1 s. • (s.+1) + s • r J+ -2 J J . . J I

1 6 (2n+3) s2 - l (4i+3) s3

2 j 2 j

Für die parallele Summenbildung

(s(j) • uCD + vCj)) 2i+1 2i 2i

sind anschließend

p(3) = s .. /j) Prozessoren c(ij) J 2i+l

erforderlich; das sind

(3) p

c(ij) =

(j+1) s .• r J

= s .• ( (n+1)- 0+1). s. 1 ) J J+

= s. . ( ( n+ 1) - 2 ( i + 1) • s. ) J J

2 = (n+1) s. - 2(i+1) s.

J J

Da ja s. = 2j und j = o, 1, ..... , JJ-2 sowie i = 1, 2, ..... ,

(n/(2s)-l) bei der Bildung aller M. (j+ 1) durchlaufen I

werden, ist die Zahl der notwendigen Prozessoren

gegeben durch das Maximum von p (' ') und p ( 3(~ ') für (' 1) C IJ C IJ

jedes vorgegebene M J.+ : I

(j+1) (3) p = Max (pc(ij)' p c(ij)) = Pc(ij),

wie sich aus den Darstellungen in s. und !)+1) direkt J I ergibt.

Page 172: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

d)

- 164-

In gleichex·fi~ise können wir ableiten, daß die Berech­nung von f J

(j+1) p 0 =

Prozessoren verlangt. Also brauchen wir auf jeder Stufe mit j = 0, 1, ..... , f-1-2 durch Summation über den i­Index:

!:!.. - 1 p(j+l) = zj

k=D

(j+ 1) p • k

Das liefert explizit:

p (j+ 1) = 3 s3 - 1 (5n+12) s2 + 1 (n2 + 7n+6) s. 2 j 4 j 4 J

Der ganze Algorithmus braucht also an Prozessoren:

Max (Max { p(j+ 1)}; n(n+1) ) O~j~p-2 2

= p

Für n ~ 16 ergibt sich das Maximum für s. = n/8. J

Damit ergibt sich

p = n (15 n2 + lln + 12) 64 16

Für n ~ 256 ist:

3 p <. n •

- 64

e) Daraus läßt sich dann der Satz für m = n-1 nach Sameh und Brent als Spezialfall formulieren:

SATZ: Das Dreieckssystem Lx = f, wobei L eine untere Dreiecksmatrix ist mit der Dimension n, läßt sich lösen in

T = p 1 2 3 2 2 log n + 2 logn + 3 = O(log n)

Zeitschritten mit höchstens

p = 15 3 2 ~1024 ) n + 0 (n )

Prozessoren. Die '3' in T tritt hier auf, weil p

wir hier die Division durch l .. , die Subtraktion

und den abschließenden S~1

hri tt M • f(jJ) n

berücksichtigt haben.

Page 173: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 165 -

f) In analoger Weise kann man vorgehen im Falle m < n-1, wo A und damit L eine Bandmatrix der Bandbreite m bzw. m+1 ist.

Die explizite Durchrechnung des zugehörigen Algorith­mus liefert entsprechend die im Satz von Sameh und Brent angegebenen Grenzen für die Zeitkomplexität und die ProzessorenzahL

3.3.4 Ergebnisse für beschränkte Prozessorzahlen

In der Praxis können wir mit der Situation konfrontiert sein, daß das verfügbare Parallelprozessorsystem eine begrenzte Zahl p < P von Pro­zessoren hat, wobei diese kleiner als die vom Algorithmus für die optimale Berechnung vorgeschriebene Zahl P ist.

Damit kann der Satz von Sameh und Brent nicht direkt angewendet werden.

Um das Problem zu umgehen, beschneidet man das Problem entsprechend auf die ersten k Gleichungen; mit der Lösung werden in den restlichen n-k Gleichungen die nächsten k Unbekannten entsprechend dem Column-Sweep­Algorithmus bestimmt, indem nach Einsetzen der ersten k Lösungswerte das (n-k)-Problem erneut auf k nächste Gleichungen beschnitten wird.

Dieser Prozeß wird n/k -mal wiederholt.

Für die praktischen Fälle, in denen m sehr klein gegen n ist, gilt das folgende für eingeschränkte Prozessorzahlen gedachte Ergebnis:

SATZ: (Chen, Kuck & Sameh 1978)

Wenn p Prozessoren verfügbar sind, wobei

2 2m ~ p << n,

dann läßt sich jedes R(n,m) berechnen in

T .::; (2m 2 + 3m)~ + O(m2log E ) • p p m

Für 2m2 > p ist der Column-Sweep-Algorithmus der schnellste und effi­zienteste.

3.3.5 Rekurrente Systeme mit konstanten Koeffizienten

Definition: Ein lineares rekurrentes System m-ter Ordnung mit konstanten Koeffizienten aus n Gleichungen

IV

R(n,m)

ist definiert für m ~ n-1 durch

IV R(n,m): { x1 = 0 1ür i .; o,

a .• x .. x. = c. + J 1-J

I I

j=1

für 1 ~ i ~ n.

Page 174: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 166-

fV Definition: Wenn m = n-1, so heißt R(n,m):

gewöhnliches, lineares rekurrentes System mit konstanten Koeffizienten:

N R(n).

Dafür gilt das folgende Ergebnis:

SATZ: (Sameh 1977): N

Jedes R(n,m) kann berechnet werden in

T ~ 2 (3+2logm) logn -(log m + logm + 1)

p

mit 1) z ~ 21mn-9n-25m 2 - m, p 4 2 4

p ~ mn + n ' für m << n 2 4

oder

2) z ~ 9 n 2 - 7 n, p 4 2

p ~ 2

für 1 << m ~ n-1. n 4

N Für den Spezialfall erster Ordnung R(n,1) wurde entsprechend erhalten:

Korollar: N

Ein R(n,1) läßt sich in

mit

T ~ 1 + 2 logn p

n 2

berechnen.

fV Vergleicht man die Ergebnisse für allgemeine R(n,m) und R(n,m) bzw. R(n,1), so wird die erhebliche Einsparung an Prozessoren deutlich, die bei

0 (m) bzw. 0 (n)

liegt.

Vergleichen wir das Ergebnis mit dem früheren Resultat für das Skalarpro­dukt, das wir in

T = p logn + 1

berechnen können, so liegt die Aussage des Satzes um den Faktor 2 höher. Wir müssen aber berücksichtigen, daß die Rekursion den gesamten Vektor X, d. h. in diesem Fall alle Zwischenergebnisse x. liefert.

1

Allerdings ist für die Rekursion nur die Hälfte der Prozessoren, n/2, erforderlich, während für die Multiplikation der Komponenten im ersten Schritt n Prozessoren für das Skalarprodukt nötig waren.

Page 175: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 167-

Das Fibonacci-System (mit m = 2) läßt sich berechnen in

T p

mit

p

für große n.

~

~

5 logn- 3

5 n 4

3.4 Vektorisierung von Loops

Im folgenden Abschnitt wollen wir uns abschließend - und im wesentlichen anhand von Beispielen mit der Frage der Vektorisierung von Programm­schleifen und dem damit zusammenhängenden Problem der Datenab­hängigkeit und der Abhängigkeitsgraphen und ihrer Umsetzung in Struk­turen befassen, die sich für die Parallelverarbeitung eignen. Hier tritt auch das Problem der IF -Bedingungen in den Vordergrund.

3.4.1 Innere, bedingungsfreie DO-Schleifen

Wir hatten bereits sehr früh kennengelernt, daß sich einfache Schleifen, die als innerste Stufe einer Loop-Schachtelung auftreten können, wenn sie frei von IF -Bedingungen und von Verzweigungen sind, entsprechend einfach "vektor isieren" lassen.

So läßt sich beispielsweise die Schleife

P1:

10

DO 10 I= 1, N

C (I) = A(I) + B(I)

die auf der sequentiellen Maschine

T 1 = N Schritte

benötigt, direkt auflösen, indem jedem von N Prozessoren die Aufgabe zugewiesen wird, je eine Addition auszuführen:

Prozessor Nr. I: C(I) = A(I) + B(I)

Dadurch wird das Programm P1 in einem einzigen Schritt ausgeführt:

p = N: T = 1. p

Dadurch erzielten wir bekanntlich den Speedup

s p = 0 (N).

3.4.2 Zyklische Abhängigkeit und Wellenfront

Wir hatten ebenfalls früher anhand eines Beispieles, als wir die Skewing­Schemata behandelten, die Frage der zyklischen Abhängigkeit in Schleifen diskutiert:

Page 176: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 168-

DO 10 I = 1, N

DO 10 J = 1, N

10 W (I,J) = A(I-1, J) * W (I-1, J)

+ A (I, J-1) * W (1, J-1)

Die Ausführung dieser "genesteten" Schleifen benötigt, wie wir an der Struktur sehen,

Mittels des sog. Wellenfrant-Algorithmus hatten wir eine Methode kennen­gelernt, die zwar hinsichtlich des Speicherzugriffes nicht einfach ist, die aber nur

Tp =

benötigt, also den Speedup

liefert.

s = p

0 (N) mit P = N

0 (N)

Nicht in jedem Fall läßt sich die sequentiell formulierte Struktur geeignet und einfach in eine für Parallelverarbeitung geeignete oder gar optimale Farm überführen.

In der Regel ist ein beachtlicher analytischer Aufwand erforderlich.

3.4.3 Daten-Abhängigkeit und Graphen

In der Regel enthalten die Programme sehr komplexe Abhängigkeiten hinsichtlich ihrer Daten und des Kontrollflusses.

Betrachten wir zu diesem Zweck die Berechnung eines rekurrenten Systems als einfaches Beispiel:

P2: X(1) = C(1)

DOS = 2,4

X (I) = C(I)

DOS J = 1, I-1

s X (I) = A(I,J) * X(J) + X(I)

Charakterisieren wir nun jedes Statement durch einen Knoten, dessen Label das zugeordnete Statement-Label in dem zugehörigen Daten-Dependenz­Graphen ist, so lautet die Zuordnung für das Programm P2:

51: X(1) = C(1)

52: X(2) = A(2,1) * X(1) + C(2)

53: X(3) = A(3,1) * X(1) + A(3,2) * X(2) + C(3)

54: X(4) = A(4,1) * X(1) + A(4,2) * X(2) + A(4,3)*X(3)

+ C(4)

Diese Darstellung beschreibt die explizite Ausführung des Programmes auf einem sequentiellen Rechner.

Page 177: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 169-

Daraus erhalten wir den Daten-Dependenz-Graphen, der ausdrückt, welche "Output"-Daten ein Knoten von den übrigen Knoten verlangt (Abb. 3.15a).

Transformieren wir aber das gesamte Problem von P2 entsprechend den Vorschriften des rekurrenten Produkt-Form-Algorithmus für rekurrente Systeme, so ergeben sich 4 neue Knoten, die jetzt keine Daten-Abhängig­keit mehr enthalten:

f X(1) C(1) s 1: = f X(2) C(2) + A(2,1) * C(1) 52: =

s'· 3' X(3) = C(3) + A(3,1) * C(1) + A(3,2)

* ( C(2) + A(2,1) * C(1))

' X(4) C(4) + A(4,1) * C(1) + A(4,3) 54: =

* ( C(3) + A(3,1) * C(1))

+ ( A(4,2) + A(4,3) * A(3,2)) * ( C(2)

+ A(2,1) * C(1))

Der zugehörige Dependenz-Graph hat natürlich die entsprechend einfache Gestalt der Abb. 3.15b.

Im allgemeinen stellt sich die Frage, ob durch die Transformation tatsächlich ein Speedup erzielt wird.

Im vorliegenden Beispiel wissen wir vom Column-Sweep-Algorithmus und vom Produkt-Form-Algorithmus, daß ein beachtlicher Gewinn erzielt wird. Insbesondere ließen sich noch Prozessoren einsparen, wenn Ergebnisse mehreren Prozessoren gleichzeitig zugänglich sind.

Im Rahmen dieser Ausführungen soll nicht mehr im Detail auf die kom­plizierten Compile-Probleme eingegangen werden.

Deshalb wird im folgenden das Gebiet der Loop-Verteilung und des Loop­Verteilungsalgorithmus anhand eines typischen Beispieles dargestellt.

Auch auf eine rigorose Einführung der Definitionen von Loops und den verschiedenen Abhängigkeiten und Ausführungsordnungen sei hier ver­zichtet.

Page 178: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 170-

3.4.4 Loop-Verteilung

Wir hatten früher auch schon die Möglichkeit der Substitution von Variablen durch die rechten Seiten der Zuweisungen kennengelernt, um so eine Art der Unabhängigkeit zwischen einzelnen Statements eines Blockes zu erzielen und so die Möglichkeit der Baumhöhenreduktion zu schaffen.

Diese Substitution ist wegen der neu geschaffenen redundanten Operationen innerhalb von Schleifen im allgemeinen weniger nützlich als außerhalb, da wir es ja hier mit redundanten Operationen auf ganzen Datenfeldern statt auf Skalaren zu tun haben.

Nur auf Maschinen hohen Parallelitätsgrades ist dies sinnvoll.

Im allgemeinen haben wir es mit zyklischen Graphen zu tun, die mehrere voneinander abhängige Knoten enthalten.

Der Begriff der Loop-Verteilung bedeutet, daß die Loop-Steueranweisungen über einzelne oder Blöcke von Zuweisungs-Statements verteilt sind bzw. durch Anwendung eines Algorithmus neu verteilt werden.

(1) Globale Prozedur

Der analytische Prozeß hat die folgenden Stufen:

(i) Bestimmung des Dependenz-Graphen G, des Loops L = CI1, r2, ..... Id) (51' 52' ..... Ss)

(ii) Konstruktion einer Knoten-Zerlegung 7[ in Teilmengen der voneinander gegenseitig abhängigen Knoten:

1C ( ~ ' 1Cz ' •• , . ) (iii) Auf der Zerlegung 1[ wird eine sogenannte partielle Ord­

nungsrelation aufgebaut.

(iv)

(v)

Ersetzen des Loops durch eine Loop-Struktur (L.).

I

neue,

Wenn der neue Graph G. azyklisch ist: I

durch tC bestimmte

Behandlung wie arithmetischer Ausdruck, sonst: Rekurrenz­methode.

Beispiel:

Zur Erläuterung der Vorgehensweise bei der sogenannten Loop­Verteilung betrachten wir das folgende Beispiel:

P3: DO 55 I = 1, N

51: A(I) = B(I) * C(I)

DO 53 J = 1, N

52: D(J) = A(I-3) + E(J-1)

53: E(J) = D(J-1) + F

00 54 K = 1, N

54: G(K) = H(I-5) + 1

55: H(I) = SQRT (A(I-2))

Page 179: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 171-

Der zugehörige Dependenz-Graph G hat die Gestalt in Abb. 3.16.

(2) Beispiel:

Daraus läßt sich die folgende Knoten-Zerlegung erstellen für das Beispiel in 3.4.3 (Abb. 3.16):

1[ ( 7[-1 ' 7[2 '1[3 '1Clf) wobei die einzelnen Teilmengen der Knoten S. in der Weise verteilt sind, daß J

1Cl = (S 1) '

1[2 = (S2,S3) - (S4) 1/... 3 =

1[4 = (ss)

Entsprechend dem Graphen G ergibt sich für T[ -Zerlegung die folgende Ordnungsrelation:

/Cl d~ 7C2 ' 1C

-:-C(

!L.- 4 ' 1

1[4 ---~ IL- 3 .

Daraus läßt sich der neue verteilte Graph entwickeln, der in Abb. 3.17 dargesteilt ist.

Aus diesem verteilten Graphen läßt sich jetzt ablesen, welche Knotenmengen parallel verarbeitet werden können:

1)

2)

3)

4)

-rr. ,(.... 1.

1{. ,(..,. 2.

(S 1

) = Vektor-Multiplikation

(S2

,s3)= lineares rekurrentes System R(2N,3)

Die Arrays D und E werden zum Vektor X kombiniert:

X(l) = D(l)

X(2) = E(l)

X(3) = D(2)

X(4) = E(2)

= Vektor-Quadratwurzel

(S4

) = Vektor-Operation (für alle I und K gleichzeitig) mit Broadcasting-Funktion.

Daraus folgt, daß sich 1[A ' 1C3 ~ 1C~r in einem Schritt jeweils, mit O(N) Prozessoren, parallel ausführen lassen.

Page 180: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

- 172 -

Die Gesamtausführungszeit wird durch 1C2 dominiert; da sich 7Cz auf ein lineares rekurrentes System mit konstanten Koeffizienten zunick­führen läßt, ist also

mit

P = 0 (N).

Bemerkung: Der sogenannte "Loop Distribution"-Algorithmus ist in den letzten Jahren auf "GO TO"-Statements und "IF"-Statements ausgedehnt worden.

3.4.5 Substitution von IF -Bedingungen

In den Loops sind natürlich hinsichtlich einer Parallelisierung die IF­Statements besonders problematisch.

Man unterscheidet 4 verschiedene Kategorien von IF -Statements ent­sprechend ihrer Struktur und ihrer Behandlungsmöglichkeiten zwecks Vektorisierung.

(I) Typ A: Solche IF -Statements sind unabhängig von den Variablen, die innerhalb der betreffenden Schleife ge­setzt werden.

Solche IF -Bedingungen lassen sich trivialerweise aus dem Loop herauslösen.

(II) Typ Präfix-B: Diese Kategorie enthält IF -Bedingungen der folgenden Gestalt:

Beispiel: DO 1

IF (I 5)

1 CONTINUE

I = 1, N

THEN X(I) = Y(I) * Z(I)

ELSE X(I) = Y(I) **2

In diesen Fällen wird die Index-Menge (I) in zwei Teilmengen zerlegt:

(Il): 1~ I~ 4,

(12): 5-:SI~N,

und die 2 Teil-Loops gleichzeitig in Parallelverarbeitung ausgeführt, etwa nach der Anweisung:

DO SIM (X(Il) = Y(Il) **2; X(I2) = Y(I2) * Z(I2) )

(III) Typ Postfix-B: In diesem Fall läßt sich eine Index-Zerlegung apriori nicht durchführen. Beide Seiten der IF -Bedingung müs­sen für den vollen Index-Satz berechnet werden und entsprechend den Konditionsprüfungen die Ergebnisse anschließend geeignet gemischt werden.

Page 181: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(IV) Typ C:

- 173-

In diesen Fällen ergibt sich dieselbe Speedup-Ordnung wie im Fall (II); wegen des zweifach vollen Indexsatzes ist die Effizient geringer.

In dieser Kategorie sind all diejenigen Formen von IF­Statements in Loops zusammengefaßt, die sich nicht anders auflösen lassen. Sie müssen seriell abgearbeitet werden.

Page 182: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de
Page 183: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLEN

Page 184: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

MODELL REL~ PER FAKTOR

(+)

IBM/360 - .50 67 75 85 91

195 IBM/370 -165

195 158 35 158-3 45 168 110 168-3 124

IBM 3031 54 3032 124 3033 223 3033* 223

~ rTJ

AMDAHL V/5 130 V/6 177

~ V/61 I 200 V/7 290

~ V/8 360 -- ------- --

DATEN VON RECHNER-FAMILIEN CIBM, AMDAHL)

CP~ CY LE CNSED

500 200 195

80 60 54 80 54

115 115

80 80

115 80 58 58

32,5 32,5 32,5 29 26

HAUPTSPEICHER CACHE MAX. AUSBAU CYCLE MAX. AUSBAU

CMBYTD CNSED CKBYTES)

1/4 2000 -1 750 -1 750 -4 960 32 6 780 -4 756 32 3 2000 16 4 756 32 6 920/1035 8 6 920 16 8 320 16 8 320 32 6 920 32 6 320 32 8 290 64

16 290 64 8 325 16 8 325 16 8 325 32

16 290 32 16 260 64

- -- ----

(+)QUELLEN: CACM 21 (1978), No. 1 COMPUTERWORLD JANUARY 8 (1979)

ANN. 1. INST.

64- 4 65- 8 65- 8 66- 6 65- 4 66- 1 68-11 69- 8 66- 1 67-11 69- 8 71- 4 70- 6 71- 4 71- 6 73- 5 72- 8 73- 4 75- 3 76- 9 72- 8 73- 8 75- 3 76- 6 77-10 78- ? 77-10 78- ? 77- 3 78- 5 78-12 75- ? 76 (?) 75- ? 76 (?) 76- ? 77 (?)

78- ? 78/79 78-10 79/80

Page 185: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE I.2

Matrix-Multiplikations-Schritte

Matrix- orthodox parallel Dimension sequentiell (CANNON)

2 T =3n(4n) n T 1=n (2n-1) p

10 1900 30 (40)

100 1.990.000 300 (400)

Page 186: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE III.1

Hauptspeicher- versus Prozessor-Zykluszeit einiger Großrechner verschiedener Hersteller

Computer- Liefer- Hauptspei- Prozessor- TM Typ jahr cher-Zyklus- Zykluszeit -

zeit T (usec) (usec) p

TM Tp

IBM 704 1955 12 12 1

IBM 7090 1960 2.2 2.2 1

IBM 7030 1961 2.1 0.6 3.5

CDC 6600 1964 1.0 0.1 10

UNIVAC 1108 1965 0.75 0.125 6

IBM/360-75 1965 0.75 0.195 3.8

IBM/360-85 1969 0.96 (C) 0.08 12

CDC 7600 1969 0.275 (C) 0.0275 10

IBM/360-195 1971 0.756 (C) 0.054 14

Burroughs B 7700 1972 1.5 (C) 0.0625 24

UNIVAC 1110 1972 1.5 (C) 0.075 20

IBM/370-168 1973 0.320 (C) 0.080 4

Amdahl V/6 1976 0.325 (C) 0.0325 10

IBM 3033 1978 0.290 (C) 0.058 5

Amdahl V/7 1978 0.290 (C) 0.029 10

CRAY-1 1978 0.050 0.0125 4

Page 187: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE 1.1

A B (A.B) (A.B) (A.B) (A.B).(A.B)

1 1 1 0 0 1

1 0 0 1 1 0

0 1 0 1 1 0

0 0 0 1 1 0

Page 188: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE 1.2

Typ Wortlänge Fabrikat

Mikroprozessoren 8/16 bit Intel 8080 u.a.

Minicomputer 12/16 bit PDP-8/-11; Prime

Midicomputer 32 bit VAX

Großrechner 32 bit IBM/360-370; Siemens 7000

60 bit CDC CYBER 170

36 bit PDP-10; UNIVAC 1108

48 bit TR-440; BURROUGHS 6700

Supercomputer 64 bit CRA Y -1; CDC CYBER 200

32 bit TI-ASC

Page 189: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE 1.3

Der Speedup des Skalarproduktes mit N parallelen Prozessoren

Vektor- Zeitschritte Speedup n Dimension (parallel) SN=2N-1

N=2n T N=1+log2N 1+log2N

1 2 2 1.50

2 4 3 2.33

3 8 4 3.75

4 16 5 6.20

5 32 6 10.5

6 64 7 18.1

7 128 8 31.9

8 256 9 56.8

9 512 10 102.3

10 1.024 11 186.1

11 2.048 12 341.3

12 4.096 13 707

13 9.192 14 1313

14 18.384 15 2451

15 36.768 16 4596

Page 190: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

TABELLE 2.1

Vergleich von Verbindungsstrukturen

Parameter Daten- Zahl der Typ der obere Grenze Ubertr. Zell-Elemente Zell-Elemente der Zyklen Bemerkungen

Netz- Zeit für eine bel. werk-Typ Permutation

O(x) O(y) O(z)

Barrel variabel, Selektor- übliches Element Shifter logN abhängig Chips logN in Rechner-

von Chips systemen

Crossbar N2

Kreuzpunkt übliches Element Switch logN Schalter logN in einigen Rech-

nersystemen

2logN NlogN 2 -Eingangs- frühes aber sorg-Benes (Net- - N+1 2-Ausgangs- 2logN fältig analysiertes

work- Schalter rearrangierbares Setup: Network-Konzept NlogN)

2 2-Eingangs- "Bitonic 2

N((logN) -2 Bateher (logN) 4 2-Ausgangs- (logN) Sorter"

logN+4) Schalter

N2 bis 2-Eingangs- viele verschiedene Kautz N-1 2 2-Ausgangs- N-1 Lösungstopologien

NlogN Schalter

N2 Schiebere-N2 bis N

viele verschiedene Thurber bis N 2N.P gister- Lösungen mit un-

Zellen terschiedl. Hard-ware-Aufwand

Lawrie variiert, math. anspruchs-

~ logN NlogN normal: logN volle analytische N (2x2)- u. synthetische

Schalter Hilfsmittel

Gake logN NlogN N variabler Auf-wand

Page 191: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

ABBILDUNGEN

Page 192: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

r-. ~ ~

~ 0 IBM =t: ~

::J AMJ>AHL- 3G.33 ~

)6 ~ V/9 V\ ::J ~ I & I ~ - I ~

4.t ~ I ~ I ~

~ I . >< I ""< 3-70-~ 46i --- -d 3033 8 ?--

V/6 300-'/-1

I lt/5 p 3':10- 303-1 ;(SJ 0 3031

3~- I ~s 1

300-j---0 3~-

d -195 lS

310-46S

{;feST!IVSIALLAT!ON 0+-~--------~----------~----------~---

Ati~S

A:&B. I.1

Page 193: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

MfE:MORY CYC~t; [ nsec]

lßM 3ro- 310-50 \ -!65 AMDAHL

\ 4500 \

\ 1000

.%0- \ 310-ltS 0 /fStl

\ 3~-0 3031

3«)---- --o Aqs

360-?S -1'15 \

\ V/6 V/1 030~ 0 • 313- V/6 .. ---~--

468 3033 v/iJ-CRAY-1

0 1qb5 4rKJ 1r15 4980

ER.STINSTJ\LLAIION

A.BB. I@

Page 194: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

3~­so

CPU CYCL [rtsec]

360-0 ''~

.%0-':/S

3~-15g 0

310- 3~ A~ 168 o- -o---

o I M

AMDAHL

0 303,2.

-.._ 0..3033 V/S --V/6 V/I v/8--

--CRAY-1

0 +-~------~----------~--------~----A(/~5 /(f}() 191-S 4f/80

ERSTINSTALLATION

Page 195: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

PE p~ 1---- • • 411

(-1 > N) --(1,1)

• ®

• •

PE PE • fll • --

(Nj1) (N)N) ~

dl

(N ,N )-AR R. AY- PRO l.f.SSOR -STRUK1VR

MIT NÄCHST~R.-NACH.BAR-N~R.W~RK

A:B:B. I. Lf

Page 196: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Substrate j Silicon

material Silicon on sapphire

"'' j Ba sie device

j 8 Ba sie PMOS

device structure

NMOS

8 EFL TTL TTL 8 ECL 8 8 8

Circuit ECL MNOS forms

~e DTL DMOS

RTL VMOS

8 BMOS 0 CCCL

Microprocessor use

H A L B L E I T E R - T E C H N 0 L 0 G I E N

.ABB, II I. 1

Page 197: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

1955 Tubes

Relative Volumo: 1

1960 Transistors

1965 Hybrid

1 10

1 40

1980

1 500

Logic Circuits: Volumetrie Evolution.

CIRCUITS/CHIP

10,000.0

100C.O

100.0

10.0

1.0

Logic Circuits Integration Level.

MINIATURISIERUNG UND INTEGRATION LOGISCHER SCHALTKREISE

ABB, I I r.2

Page 198: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

1953 Drum

Relolivo Voiu1ne: 1

1959 Core

_!_ 4

, , ..!.. iö To 400

[J LJ 1976 1980 FET FET

__!_ 1 , 800 1600 6400

Main Memory Trends - Physical Size Comparison.

System Capacity No. of Bits

n111 600

400

200

'60

106

10~

10"4

Access Time (sec)

Storage Technology Comparisons.

Core

Bipolar

'65 '70 '75 '80

Main Memory Access Time.

VERGLEICH VON HAUPTSPEICHERTECHNOLOGIEN

ABB, I I I.3

Page 199: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Speicherdichten ( I B M )

bits mm2

12000

11000

10000

9000

8000

7000

6000

.sooo -

4000

3000

2000

1000 2314/19

1962 64 67

3370

70 73 75 79

Technische Entwicklung von Magnetplattenspeichern (l~)

Typen- Erscheinungs- Übertragungs-bezeichnung jahr auf dauer für

131.1

2311

2314/2319

3330

3340

3350

3370

dem Markt 5.000 Zeichen von der Platte in den Haupt­speicher ~Millisekunden)

1962 72,0

1964 32,0

1967 16,0

1970 6,2

1973 5,6

1975 4,2

1979 2,6

Anzahl Anzahl Speicher-Zeichen Spuren kapazität pro 1 cm pro 1 cm pro Einheit Spurlänge Platten- in Mi II. Zeichen

radius

197 20 2,0

433 39 7,5

866 39 19,1

1590 76 100,0

2219 146 70,0

2530 188 317,0

4766 250 570,0

ABB. III.4

Page 200: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

IRCUIT- HNOLOGIE'

ABJlJ[.

Page 201: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

AOOr--------------

HA R.DidARE

SOFTWARt=:

0~-----------------------~$ ~~ Mß

(NACH: :DOLOIIA t;.r AL., 5/LT-RtE:PoRT, SHARE: 41=!/r)

Page 202: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

DV­KOSTEN

SIART­

PttASE

EX'PANSIOIJS­PUASIE

I UMSIRUKfURIERWG.S­PHASE

I RE"I I fHASE I

I I I I I I I

I

11DATA

SOURCE11

(JJß/:DC; TP)

:DV- t:.NfW!CK'l-UAIG,SPHAS~IJ EIIJE;S UIJfERIJEHMEJJS ( 1\JACJ-1 R. IJOL-A N )

Page 203: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Gate logic Symbol Time Delay in Terms function (Positive logic) of Multiple of ~

NANO ~~B ~

NOR ~~ tJ.

NOT A--{>o--A ~

AND ;~B 2tJ.

OR ;~B 24

XOR ~~B 34

XNOR ;~B 34

A

lJ -AOI tJ.+~ c

AB+ CD D -

INPUTS NOT AND NANO OR NOR EXOR

A B B A·B A·B A+B (A+B) AffiB 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 , 0 , , 0 1 1 1 0 1 0 1 0 0

LOQ/SCHt 5YfvfJ30LE DER G.ATIE:.RFUNKI!ON~N IN A 1-1 Ri=l f: I TS T ABELL!ZN -

Page 204: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Register 1 Register 2

~ -2_ 1 -,3... 2.

Combinational logic

F- -r s

"-- -

SCHALTNET~

(COMßi~ATIONAL LOG./C)

Inputs Outputs

Combinational Logic

~ r-:-

(a)

(~)

1- l RegisteN

c Clock

SCHALTWERK (SfQlJ&:NTIAL LOGIC CIRCUIT)

Page 205: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

r-1 I

----- Control Unit

I 1--1

-- -------; I I I I I I r--

Combinational

r+' Logic

-- r-~ ------, t y Registers

Main Memory ----~

Processor

1--

r-

I

LI:ITWERK

PR(YlfSSOR O:J>ER

RECHEAJW~RK

HAUPT.SPf:ICH[R

ELEMENfARES RfCJiN~RSYS/G;M

1- Ward~ Location I Length I

0

,;I# 1+-MAR /;~ I a r// Memory Address

Register

m

MIR r-

Memory Information Register

SP~ICI4ER MIT WAf.IL'FRt;:tEM ZU'RIFF (RANDOfvt ACCfSS /vff./VfORY - RAM)

Page 206: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

--------l

I nstructions

I I I I I I

H AUPfSfE:/ CHEF<

FUNDAMENTAL~S RECHNERKONlfPT

:PA1l!NfLVSS - - - - -~ KONIF20U..'FLUSS

r----1 r-1 I r I I I I I I I I I

Commands ~ I l I I I I I I I I I

IL / I

I E/A- KAWAL L_

-------, I I I I

lnstructions l I I

ABB. A o

Page 207: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

c. 0

j ... <> = .s

Step Instruction Fetch Control Unit Data Fetch Processor

I STOZ T

2 STOZ T

3

4 SETX 1,0

s SETX I,O

6 TESTX I,N,OUT

7 TESTX I,N,OUT

8 FETCH A(I)

9 FETCH A(I)

10 A(l)

11 MPY B(l)

12 MPY B(I)

13 B(l)

14 A(I)•B(l)

lS ADD T

16 ADD T

17 T

18 (A(l)•B(l))+T

19 STORE T

20 STORE T

21

22 JUMP LOOP

23 JUMP LOOP

24 TESTX I,N,OUT

25 TESTX l,N,OUT

II

PROGRAMM-AUSFUf.IRUNQ ~II Rf'CHN€RSY.SI~M OUIJE O.Sr.RLAPPUNQ.

Step Instruction Fetch Control Unit Data Fetch Processor

1 STOZ T

2 SETX 1,0 STOZ T

3 TESTX I,N,OUT SETX I,O

4 FETCH A(I) TESTX I,N,OUT

5 MPY B(I) FETCH A(I)

6 ADD T MPY B(I) A(l)

7 STORE T ADD T B(l)

8 JUMP LOOP STORE T T A(l)•B(l)

9 JUMP LOOP (A(l)•B(l))+T

10 TESTX I,N,OUT

11 FETCH A(I) TESTX I,N,OUT

12 FETCH A(I)

13 A(2)

Data Store

T

T

Data Store

T

T

PROQ.RAMM-AUSFÜNRUNG BE:/ RE:CHNt::RsYSTEM MIT ÜßERLA?>PU N(;l

VON Lr.rrwr;RK-J RECMEIJWERK- UND SPE:IC~r;R­FVIJK/10/JEN

(a.)

(~)

Page 208: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Sf~P

- 8

- 1

' - 5 - lf

3 - 2

A

T '"0 + A.(1) • Blll + A.\2) • Bl2)+ A(3)• B\3) + A.(4) • B(4l

Page 209: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

HAUPT­SPEICHER

M

Main Storage

'

Centrat Processing Unit fCPU)

CPU ZENTRAL­EINHEIT

f4- ,....

r--

..____

KANALE CH

Byte Multiplexer Channel

Block Multiplexer Channel

Selector Channel

i

l ~~-

STEUER­EINHEITEN

CU

PERIPHERIE­GERATE

1/0

Console I L - Printer-I J Keyboard

J L Card Read

l J l Punch

~I ~ '"'' """''{ I L

l J

~"""{ ~I

J l § l J Tape

=

IBM SYSTEM/370 ORGANISATION

Aßß. 4.14

Page 210: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

MATRIX A

(I) -----(:1[)

ALTf:R NI~RfNDE lUORJNVNQ. VON 'l.E:t LE:N 1JlJ~. S'PAL. T~N eu l>EIJ SPt::IOHE.R:BÄIJ KEN I - J1l

0 I

(I)

MAIRIX B

cnr>

(Je)

PROlfSSOR

® I

'PHASE /1 "'/ I

(11f) :

(][) 'PHAy~ 1

1 I

I (.][) I

PHASE I ~ I

(.][)

'PHASE I :t I

I

(JI[)

MATRIXMULTf~LIKA/!0/J MJI J)O'PP~LPROlESSOR IN 11\1~1 'PHA.S~N

(a)

(,&)

Page 211: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Processor

lntlln:onnllCtion Network (Switdl)

Main Memory

Bus

General Registers

MUL Tl PROlE'SSOR­SYSTEM

AJ3B. A. 4

MUL Tl FUNKTIONS­PROZESSORSYSTEM

Page 212: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

' T=.O+ A(1)•8(t)+A(2)• 8(2)+ A(3)• 8(3)+A(4) • 8(4)

sr~P

5

-3

1 A

MIT MULTIFVNKTIONSSYSTtM :B~RECI-I­

NET[S 5KALARPRO]UKT

ASß. ;1. AS

Page 213: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

VECTOR REGISTERS

ß V7

V6 -j VS

( (AO)+(Ak )J('f V4 I Shi t

VJ Logical

11 vz Add

V I

vo VECTOR

71 Sj r-V j

II Vk 1-E= - _// V t=== ·=c= w V J

!Recir ~ Mu t i p1y

6.\'.4 Arid I 71 Vector

Coni.rol ~ s s; FLOATING r VM

MEMORY ~· Sj POINT

RTC r:- Sk ........ /_ / SCALAR REGISTERS 1-

TOO

~ Si ~ Pnn

th rough s.f' >n'

// .:.>. S.i Add T77

V~ ~// ~· so 1!-.t

((Ahi + jkm)

Exchange SCALAR con~r,o'

r XA I Vector

ADDRESS REGISTERS -rS5 /

~ soo

" ~ L

through - Bik ,r--;:1 A6 Ak Mu1tin.

877 Add /,L...-( ~. Aj l! ~< ~ -I t::! -/, -. ADDRESS ( (Ah) + jkm) fL-{ AO _1::!:

Ak j_ 1 Ak 1

~c ~ j\\ illj ~lo .J p

~-.;J I ;~~\11111 _#i:1t/ I

3 I 2 I I cA, ) I c~ I

2 FUNCTIONAL I I UN I 00 : l/0 I I

' control • I

ITS

I

c f-1 I I NIP CIP i

t- l..-- -~~>

t-- ~------- _;xecution LIP 1

INSTRUCTION BUFFERS

CRAY-1: LOGISCHER AUFBAU DER REGISTER

AB:B. 4.46

Page 214: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(A) ( )

STEP

STEP /f

( .D + E) G+H+I+J

(H)

STEP .2

STEP -1

K )( L X M

OPTIMAL S SCH MA

AßB. 1.11

Page 215: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(a)

-a{) s1) ~J s)~--~ ~ A<J(QN{)ftb ftOJ)UU:::: ( $,)

"""'

~1 M1 I ~Ir----------,~~ I 1 1131 ~ ... -1 fi I~~

ABB. 11.18

Page 216: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

ALGORITHMISCHES SCHEMA J>t:R GLEITKOMMA­ADDITION

[")( f()AJ.­

s" Va..G:L.

S NOR.HA-ll- L./Sif'R.~

0 CD

a ~

CD~~~~~~

0 0~~~~~~

@ ~ft()l~-P-r!H rMr-1)01". MAIJc, ftQ\.Y

~ ~~

c

Page 217: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

ALG.OR lTHM JSCHES SCHEMA J>ER GLEITKOMMA-MULTIPLIKATION

\

\~

V

-c

Page 218: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

EXPO/U€NTEIJ-V€.Rll.LEtCH ( COMPARE.) MAkJTfggfJ.)- v'e:R~C!HIE:BUAJG. (~-lUFT) ~~".rng~EA.J- AJ])IT/Of.J ( AJ])) 1-JORHAL.frlUEJ~.UIJCi AUF QLE,rKOHkA­/JOIQ.Mr=?J~Af ( WeHALt ?JE:.)

COMPARE ( Q - p)

SI-liFT

ADD

NORMALIZE

c-=A+

Page 219: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

A t..LfZr; 11 EtJJr; 12~ G:t :sr ~P-Afl(A) f\R_(:ß) AR.( X)

Page 220: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

EIN <lA.:Bt: II fl> 111 II

UHR R~&ISfe<. (Lkrc!f)

~ , tll •

slj A-elllfHr;f. LOBe I t( ~t:G:i-1€::101 /f

1111 111 ,

Rt'GtfS'r~~ (l-klctf) 111 111 •

s~ Ateti~HG'/, Lf)Q-J1{ ~C~hr:;P01'" ,t

111 " • 111

RE"G:-1 sr~e (LA"$+) @I fl> •

~.., lrR-t'fHHfl. LOQIK ~~&Hr;fJ/ 3

lil II e

Qf:Gt SIE12 (LA T(;J+) (I

(I

• tll

• • • tll

f(t{}tiT"~R.. (LATef.}) • • •

sk AF2 I fl+ M fT. LOQI/X ~ EG:k~f .. r( k

Rf&1~T727e. (LA-feJr)

A U S G,A:B t;:

ORGANISATION ARITHMETISCHER 7/PEL-//J[S

ASS, 11 • .23

Page 221: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

I

RAUH- te::JT- J)!AGRAM M

tiiJfR. PI PE 1- I !Jt

(~ = s)

Page 222: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

I I I I L­I I I I I '=--

PIPE LI NE- PROt.ßSORSYSI~fv1

Page 223: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

M CENTRAL PROCESSOR UNIT Floating point

Floating Memory r-- r- point

Storage r- 1- Pipe 1

Access Stream r----, Control Floating : Optional ~- -· point pipe 2

~e~o2 _ _, 1.---~ multi purpose

Mo t t ) t I I ~ I I I I

String CPU I I I I I I I I '-I I MCU I I I I I I

LOGISCHER AUFBAU DES CDC STAR-100

REG + - X

VECT + - X

REG

+v­VECT.

+ - X

Page 224: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

AUTONOME SEG.Mt:Nf- MOJ>UL.E:

IF ID OF ... [XEC -... - -

MODUL RAUM- l.E:.tf- JIAG.RA/VJM

t ])ER 1/JSTRUKTIOAJS- PIP~I-IN~

-._

f.X~C 1 ! 3 '+ (fJ ' -

-Fm-

OF 1 ~ 3 '+ 5 t • •

-F-

ID 1 !l 3 Lf 5 6 t " •

IF 1 2 3 Lf. s 6 t II t fP

~tiT- SCHR.ITTE

Page 225: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

~ ()::) b::l .. ~ .. ~ Co

8 X MI

Memory Module 0

Memory Module 1

Memory Module 2

Memory Module 3

Memory Module 4

Memory Module 5

Memory Module 6

Memory Module 7

Memory Extension

MCU

Access 160 ns Cycle 320 ns

MOS

Memory Control Unit

8 Banks

-r; X IPU

Port IL--------11 Exp

Port l------11 Exp

Channel(s)

e e •

Channel(s)

One or two Instruction Processing Units (IPU)

Peripheral Processor

CH' s

4 X AU

LOGISCHER AUFBAU DES TI-ASC CTEXAS INSTRUMENTS ADVANCED SCIENTIFIC COMPUTER)

--, I I I I I

Page 226: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

SfG.Mf:.NT ~ VfR:BJNJ)UNQJZN IN J)~R TJ- ASC-ARrntM~T/K'-Pf'PEL//Jf"

FÜR ~RSCHif.J>f.Nf JNSTRUKfiON[N

Page 227: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Memory banks (4 million bytes)

0-3 3 2 0

4-7 4

8-11 8

12-15 12

16-19 16

20-23 20

24-27 24

28-31 31 30 29 28

8 x 128 bits

Write Bus Write

Pipeline processor 1

r-------------1 Multipurpose Pipeline

F LP Add Pipeline

I I I I I I

I I I I

L------- ----- __ J

F LP Add Pipeline ~~~~----~----~1

I I Multiply Pipeline I L ____________ j

Pipeline processor 2

BLOCJ<J)/AGRAMM .DES SYSIEMS CDC STAR-100

STRUKfUR :PtR f 11' E: LI N E fÜR Gt.L.f I T­KOMMA- MVL1tPL/KAfloN S~l CJ>C STA'R- AOO

Cnption: CSA • Carry Save Adder

R • Register S • Partial Sum C • Partial Carry

c

Multiplier Decode.and Multiplicand Gating

A Operand B Operand

Aß.B- A.30

Page 228: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

I

S'fRUK1UR J)rS ARtiHM~IIK­'PrPr;:LlNE­fRO l.ESSORS -1 DES SfAR-AOO Multipurpose

Multiply Pipeline

(Fig. 11.30) ,--- ---,

I Multiply I I 1 I

I I I I I I I I I I

~ Merge 1 : I 1-----1

Merge 2 I I

Pipeline

I Multipurpose (24 Segments)

~

Add

Data from

Stream Pipeline ---. +

Exponent Campare

Coefficient Alignment

Add

Normalize Count

Normalize Shift

Data to

Stream

I

From Stream

.--!--4---I

Add Pipeline

-, I ! l

I I I

I I lnitialize I

I

l l Register l Divide

Merge 1

Merge 2

\..

Normalize Count

\.

Receive

J 1

Exponent Campare

Coefficient Alignment

Add

L_

"" Normalize Count

Normalize Shift

I I I I I I I ! I I I l ! I ! I I l

L __ --- -I

_J

STRUKIUR J>ES Af<.ITHI.If&-11 K-1' I"PEJ-1 Nt:­'PRO~f:Z SSOR.S :t .J>EE:S SfAR- AOO

1 Transmit

J Data to

Stream

~

l

ASS. A. 311

Page 229: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

STE:? 16 ______________ _

15 ______________ _

14---------------

12 ________ ..,....-:::;._

11---------1-+-----------+-+---J

10________ + ----------+----J

9---------1-----l-s ________ ~_J._

5----~._.---

4 ____ -+-----1-

3------1---+-

2 ____ -+----1

A(1) * B(1) + A(2) • B(2) + A(3) • B(3) + A(4) • B(4)

'PJPEL/1\/f- AUS~ÜHRUNQ. ])ES SKALARPRO:PUKI5 !~JJEt~R. YT;J<TORE.N (N=Lf): /{ 1'/'PELIN~ FÜR

AlJ) 1110/J I MULTIPLI KAIION

Page 230: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

r-----..L------,

Alignment Network

A:B.ß, A. 33

STEP

3

A(1) * B(1) + A(2) * B(2) + A(3) • B(3) + A(4) " B(4)

PARALLEL :Br:RG:"CHNETE:S SKAL.AR1'RO:DVKT

A:BS. A. 3'+

Page 231: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

64 X p 64 X p

Array of 64 Control Array of 64 Control processor processor processor processor elements elements r- -

(M) (M)

(M) <M)

Array o f 64 Control Array of 64 Control processor processor processor processor elements elements r-- I---

64 X p I 1 64 X p

Input/output switch

I Centra 1 Mass control memory processor

ILLIAC IV: 4-QUADRANT-ORGANISATION

Page 232: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

I

Processing unit p

S I S D r i

Control unit CU

' I t~emory

M S I M D

Control CU

• • t

I I Processing element PI ~ Processing element PI "e" I Processing element PI I I I

I Memory M I L-------------------------------------------------------------~

Memory M

M I M D

Control

M I S D

Memory

COMPUTER

ARCHITEKTUR:

4 KATEGORIEN

NACH FLYNN

ABß. ;/.36

Page 233: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

~----------~-------------------------------~

---·-

f1emory ,---- unit

M -,

I I I I I I

Arithrnetic-I

Input I Output unit

logic

1

unit

I unit ALU I

1 I I I I I I I I I I I I I I I I I I I I I I __.

Control [ ______ unit

CU ~~---J

GRUNDSTRUKTUR DES

VON-NEUMANN-RECHNERS

0 +-·--

ABB~ 2.1

Page 234: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Memory

r-- unit M ~<'-l

I I I I I I I I

Input Ari thmet i c- I Output unit r- logic unit I 4 unit

I ALU I 0 -4-----te>-

---t r

I t I I I I I

I I I I I I I I I I I I I I I I I I I I I r_j I I

L___,_

Control I L _______ uni t CU 1---~---J

EIN-PROZESSOR-SYSTEM MIT DIREKTEM

SPEICHERZUGRIFF

ABB~ 2.2

Page 235: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

1/0 Input/output channel CH

r I

~ Memory unit

M r- ---, I I I I I I - f-------I r--- ~ Input Arithmetic- I Output

unit I lAtUunit I unit 0

---· ..,. __ .. I .._ __ ." ...,_.,.. I

~

1 I I I

l I I I I I I

t---J I

'------- Control I I

uni t CU __________ j

EIN-PROZESSOR-SYSTEM MIT

EIN/AUSGABE-KANAL

Page 236: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Internat Data Bus

I B M

Byte Multiplexer

Disk Control

Unit

Channel Bus

Disk Control

Unit

Channel Bus Channel 1-.----..,.----------,--------='

Block Multiplexer

Channot

Device Control

Unit

Device Control

Unit

Device Control

Unit

Channel Bus

Device Control

Unit

I/0-STRUKTUR

ABB. 2.4

Page 237: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

R llcl1 fillf

Hauptspeicher

SIJ(IicherstGUI!fUil{l

Kanalpuff~~r- Dynam. Adreu- Puffer· Steuerung umsetzung speieher

Kanäle Instruktions- ~ Ausführungs-werk werk

t i

Überwechungs- und Wiederholungslogik

Konsoleinheit

Badionerkonsol Wartungskonsol

AUFBAU D E S S Y S T E M S 3 0 3 3 ( I B M )

(nach GA 12-2239-2)

ABB. 2.5

Page 238: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

I : I

• • • I I I I

~

SUPER­VISOR

1

CONTROL PROCESSOR <NETWORK)

GRUNDSTRUKTUR EINES ARRAY-PROZESSORS

I

ABB. 2.6

Page 239: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

r1 CPU or 1/0 Device

1Ciock

t I Memory Control Unit

I I I I I I I I

~

r Address Decoder

Memory Address

Memory Unit

Rl!j]ister (MAR)

I I I I

-1

Memory Control Unit (MCU)

I L--

Memory Unit 0

gerade

~

! J

word length

I I I I I L--

Adressen der

Memory Information Rl!j]ister (MIR)

number of locations

r-

Memory Unit 1

ungerade

Speicherplätze

SPEICHEREINHEIT

UND

REGISTER

ABB. 2.7

PARALLELE SPEICHERORGANISATION:

"INTERLEAVING" BEIM MONO­

PROZESSOR

ABB. 2.8

Page 240: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

M E M 0 R Y

BANK 1 BANK 2 BANK 3 BANK 4

131(68 131r69 131(70 131(71

0,4,8,12, .. 1 ,5,9, 13, .. 2.6 r 10,14 •. 3,7111,15,.

I I 000,000 000,001 000,002 000,003

A = 4N A = 4N + 1 A = 4N + 2 A = 4N + 3

Interconnection subsystem

I c s

p I/0 Processors l/0 processors

VIERFACH-VERSCHRÄNKTER SPEICHER

<FOUR WAY INTERLEAVING)

ABB. 2.9

Page 241: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

Requester Requester ... Requester 0 1 n-1

I : l port n I I ~ I I I I I I

port 2 I ~- I

I I I ~-

I I port 1

I I I I I I ~-I I I I I

1 I I ~-

I I I ~- i I I I I ... I I I L port n

I I I I I L1 port 2

I L-

port 1

Requester: CPU oder E/A-Kanal

Ad

M c Memory Unit u 0

M c Memory Unit

u 1

M Memory Unit c

u m-1

ressen

0 m

k-m+1

m+1

k-m+2

m-1 2m-1

k

"INTERLEAVING" BEI MULTIPROZESSOREN

ABB. 2.10

Page 242: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

.ßURROUG.HS 100

8 PORTS ! MCU if 32.

SPEICHER

8 rorm; ! MCU 8

UNIVAC A110 :?>2.

s ss~

p E 1 c

8( .. -H;) H e MCUA E 'PORTS e EI

R -• s

ss 2, Ä N • K Eil

• • E • • • I • fJ SS-1 s • G. ~

8(-1,) s • FORTS GI! MCU 4- A • M T

SS1

Page 243: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

WELLENFRONT-ALGORITHMUS

\N(A,If) \4("1)2) W(lf,3)

w (2, ;f) \J( 't,2) w (.t, 3)

W ( 3, tf ) 0 0 11 0

"

111NTf.RCONNECTION NETWORK

11

STEU('RLEITUNG.EN

N ~IN

• •

G.ÄNGE •

K II e EI 0 EI

VERBIN.DUNGS-

Nrrl.WERK

• N . .

AUSGA NGE

ABB. 2.13

Page 244: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

"p RFECT SHUFFLE 11

0-----D o

1

3

5

Page 245: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

6--

7---1 sru STUFE sru~E 3

I-- 6

I-- 7

Page 246: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

:DURCHG.ANG

V~RTAUSCH U NG.

OSERES ßROADCAST

-UNTERES J3ROADCAST

SCHALTlUSfÄNDE: J3(1 11- N TlW!;:RKfN

Page 247: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

--J

~

/

~--~~10-f (S.a,S,~d4) , __

A~O --- .-110 (d_.d~d3)

1-- 1 16----11

(OAO,A/f0)-1'FAD IN ( x8)-!2-NffifN[RK

Page 248: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

(000)-·-·-· ·-·

;f ---,

I (400)---'

5--

' ' ' '

·-· -·-(000)

t-" ' ------(OAO)

:;

6 1

PFAD-KONFLIKT IN (8x8)- 11- N[TlWERK

Page 249: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

2 3

". 5

6

1

!Xl

lfxlf

tt2

!xt lfKlf

1le2

IL- NETt-WERK AUS (2 X ) - UND ( lf x '+)- [L[M [NTEN

0

1

1

3

4-5

6 1

Page 250: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

SCHRITT

6 5

Ll-3 .2 A

= ~-1 (:BAUMUÖUE)

a OQ0

0Q oa OQ oQ OQ oa0

/1 ~ 3 t 5 ' "I 0

SCHRITT

3 =

REKURSHitS DO?PELN

(a)

(~)

Page 251: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

SCHRrrr

AB.B.

Page 252: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

2ft ATOME

( a)

e __.." e + -1 : (ttt +A)-EJ3EIJEN

(~)

ßAUM MINIMALfR HÖHE FÜR = 2t AfOM~

Page 253: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

.. J3AUMHOHE.N-REJJUKfiON U:.! ArctmM~T!SCHEN

AUSJ)RÜCKE.N Mlrr~L$ ASSGl:IAfiVEM ~u;;_,

(a) St::RIELL

T = 3 -1

((( a + ~) + c) + cL)

(~) fARALLfl

p = fl ~= 2

(a + ~) + (c +

Page 254: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

J3AUM HÖH[;IJ- REDUKfiON ßf.l ARIIHMEfiSCHEN

AU~J)RÜCK"E:N M 11TEL.S KOM MUfA n VE:M Cc.E:S

(a) S RIELL

T=3 ...,

(~) fARALL~L

p = 2 1: = z

.t

(a + ä)+(ß. x c)

Page 255: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

:BAUM Ht:N- R~DUKIION SEI ARIIHME:TISCI{EN

AUSJJRÜCKtN M ITI€1-S J)tf:;TRJ:BU1i V6M

(a) SERIELL

)

( a )( .&) " ( c x d) + (a x )

--

Page 256: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

KOM:BINATION :PtR TRANS RMAIJO/JSQESETlE

a + 4t + ..(? x( c + ~ + d x e x ~)

(~) ASSCi2JATIVt51

KOMMUTA11VES UIJ]) J)tSflelßVTIVES G,e;sr::.r~

+

Page 257: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

s

3 (a)

+ Q. X C X d + Q X CX e. )( f -1- Q. X C X e )( g )( --«.

P = 1r 1i .. s s*- == -1 t;. .. .$ f R~, .. -~3

A

Page 258: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

( )

( (t )( d. + 0, )( e,f(~ +~/~))/ ( C + i )( rJ_ + j; X (2, /({+~/.e._)) 'P ,.. '+ -r. ... s- s,L "' -5".1 r; ""' 1: R :: 2 ~ T 4 • ~

(Jy)

Page 259: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

y

P=S I;-=3 s = .2 5

y

( )

B*C*D+ E+F*G.

r - .&. t::-5' - s

(,g)

A *:ß*C *.D+ Ä* f .B*C *D + E

s = z '+

(:ß *C*.D)+t:+ T-* G

Page 260: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

' ' ' ' ' Q ' ~- ' ~ '

0 ' ' ' ~-'

BANDMATRIX J)ES LINEAREN REKURREN­TEN SYSTfMS R(n,m)}

m<Vt,-1

Page 261: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

~

(J"" .. ~ ö~

+ x.~

0~ ~

I ~ (,)

I I ~ +~ ~ .. ~

f(\

d

I + x~ ,-...

(.)"""

~ + I (,J~ ~

~

o""

I G ~

~ + u~ ~

I .. ,...-.....ct')

tr ·rg

I (:$ + ~

d.:::Jr ~

I +

..::fr.

~ x

0~

-~ d + oqt) ....,_, -~ d~

+

laf ~I ' I

Page 262: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

n

:r \--0!:. 0 ~ --' <(

~ oc e \:-~ ::,)

~ 0 0:::' ~

~

~ w ~ ~ tf w \--

V)

Page 263: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

.. <II .. ..

I I ~~ ~-

n t+-

*

+

II II

-~ ~ + 0-

-<:-J ~ v)-

Page 264: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

w A z w Q_

w A

Page 265: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

:OEPEN.DfN - G,RAPH ,

Loors

[

Aßß. 3.16

Page 266: juser.fz-juelich.de¼l_Spez_0074_Morgenstern.pdfjuser.fz-juelich.de

LOOP- Vf.RTE:ILUNG. : VERfEILT~R ~RAPH

RfKURRr;:IJITS SYSitfvt

R(2N)3):

~ = er(~ J

Aßß. 3.1'1