Grundlagen paralleler Architekturen

Transcription

Grundlagen paralleler Architekturen
Vorlesung Rechnerarchitektur 2
Seite 27
Grundlagen paralleler Architekturen
Unterscheidung der Parallelrechner nach dem Operationsprinzip
Als grobes Unterscheidungsmerkmal kann die von Flynn [Flynn72] eingeführte Klassifikation verwendet werden, die trotz ihrer unzulänglichen Beschreibung sehr weit verbreitet ist.
Sie unterteilt Rechner in vier Klassen, die sich durch die Anzahl der gleichzeitig vorhandenen Instruktions- und Datenströme unterscheiden.
Flynn kategorisiert die Parallelrechner anhand des Instruktions- und Datenstroms
(1) die Maschine bearbeitet in einem gegebenen Zeitpunkt mehr als einen Befehl
(2) die Maschine bearbeitet in einem gegebenen Zeitpunkt mehr als einen Datenwert
Aus diesen vier Kombinationen folgt dann:
Table 1: Klassifikation nach Flynn
SISD
single instruction - single data stream
SIMD
single instruction - multiple data stream
MISD
multiple instruction - single data stream
MIMD
multiple instruction - multiple data stream
Die Klasse der SISD-Systeme beschreibt die konventionellen von-Neumann-Architekturen,
die weit verbreitet sind und auch in Parallelrechnern als Prozessoren für die Verarbeitungseinheiten Verwendung finden. Die Klasse der MISD-Systeme ist von untergeordneter Bedeutung und bis auf einige wenige spezielle Realisierungen leer.
Die Klassen der SIMD- und MIMD-Systeme sind die für Parallelrechner relevanten und unterscheiden sich in ihren Operationsprizipien sehr voneinander. Unter dem Operationsprinzip versteht man das funktionelle Verhalten der Architektur, welches auf der zugrunde
liegenden Informations- und Kontrollstruktur basiert. Die Operationsprinzipien von SIMDund MIMD-Architekturen sollen im folgenden ausführlicher betrachtet werden.
Auch sind auf Grund der groben Unterteilung viele verschiedene Typen von Parallelrechnern in der MIMD-Klasse enthalten, unter anderem die nachrichtengekoppelten Systeme,
die speichergekoppelten Systeme und alle Mischformen.
Die ungleichmässige Verteilung innerhalb der vier Klassen sowie die überladene MIMDKlasse erlauben nur eine sehr grobe und nicht sehr aussagekräftige Klassifierung anhand
Flynn.
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 28
SIMD-Architekturen
Einführung
Unter dieser Architekturform versteht man die Rechner, die als Kontrollstruktur nur einen
Instruktionsstrom besitzen, aber mit einer Instruktion mehrere Datenelemente einer Datenstruktur verarbeiten können. Die Informationsstrukturen für eine solche Verarbeitung sind
geordnete Datenmengen in der Form von Vektoren und Matrizen. Die Ausnutzung der expliziten Parallelität von Vektor- und Matrixoperationen kann auf unterschiedliche Weise erfolgen. Wird die Verarbeitung der Elemente eines Vektors nach dem Pipeline-Prinzip
[Ramamorthy 77] durchgeführt, so erhält man die Form des Vektorrechners. Werden die
Elemente mittels paralleler Verarbeitungseinheiten VE (‘processing elements’, PE) gleichzeitig bearbeitet, so ergibt sich die Form des Feldrechners (‘array of processing elements’).
Beiden gemeinsam ist die zentrale Steuerungsinstanz, die Instruktionsausgabe an die parallelen Recheneinheiten steuert.
Die Klasse der SIMD-Architekturen kann man daher in zwei Kategorien unterteilen:
SIMD
Pipeline - Prinzip
Vektorrechner
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
parallele VE (PE)
Feldrechner
(’array of processing elements’)
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 29
SIMD-Architekturen
Vektorrechner vs. Feldrechner
Der grundlegende Unterschied dieser beiden Ansätze ist, daß Feldrechner aus n Rechenelementen (oder Verarbeitungseinheiten) bestehen, die alle auf dem gleichen Instruktionsstrom
arbeiten, aber natürlich auf verschiedenen Daten.
Im Gegensatz dazu berechnet der klassische Vektorrechner Probleme nach dem PipelinePrinzip. Dieses Prinzip der Fließbandverarbeitung ist immer dann anwendbar, wenn komplexe Operationen aus mehreren aufteilbaren Rechenschritten bestehen (siehe Kapitel
"Grundlagen paralleler Architekturen", sowie Pipeline-Prinzip und Vorraussetzungen, Vorlesung Rechnerarchitektur I). Zusätzlich können verschiedene Funktionseinheiten (Addierer, Multiplizierer, ...) aneinandergereiht (’chaining’) werden, um auf einen Datenstrom zu
arbeiten.
Man kann die Feld- und Vektorrechner durchaus mit dem beiden grundlegenden Prinzipien
der Leistungssteigerung vergleichen, Pipelining und Parallelisierung. Der Feldrechner verfolgt das Modell der Parallelisierung und der Vektorrechner das des Pipelinings. Es gelten
hier auch alle gewonnenen Erkenntnisse über die Effizienz der Verfahren.
Beispiel: [Gil91]
Es sei die Vektoroperation D = A * B + C auszuführen:
a0
b0
*
c0
d0
+
i = 0 .. n-1
ai
an-1
bn-1
cn-1
bi
*
+
dn-1
Feldrechner
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
ci
*
+
d0
Vektorrechner
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 30
SIMD-Architekturen
Vektorrechner
Vektorrechner besitzen neben der Verarbeitungseinheit für Skalare spezielle optimierte Einheiten für die Verarbeitung von Vektoren. Ihre weite Verbreitung beruht auf der Tatsache,
daß sie in der gewohnten sequentiellen Weise programmiert werden, und daß sie die in den
Vektoroperationen enthaltene Datenparallelität durch die einfache Hardwarestruktur der
Pipeline effizient nutzen können.
Die Verarbeitung eines Vektors erfolgt nach dem Pipelining-Verfahren. Dafür wird die Operation in möglichst gleichlange Teiloperationen zerlegt, die dann wie in einer Pipeline zeitsequentiell hintereinander in den verschiedenen Stufen bearbeitet werden. Die Ausführung
der verschiedenen Teiloperationen überlappen sich dabei für die einzelnen Vektorelemente.
Der Gewinn einer Pipelineverarbeitung gegenüber der sequentiellen Verarbeitung ist für
lange Vektoren gleich der Stufenzahl der Pipeline [Hockney,Jesshop]. Das Pipeline-Verfahren bietet sich vor allem für Gleitpunktoperationen wie FADD oder FMUL an. Diese Operationen bestehen aus mehreren Teilschritten (FMUL: Exponenten-Angleich, MantissenMultiplikation, Exponenten-Addition), die gut zu pipelinen sind.
Mehrere Verarbeitungseinheiten (z.B. Multiplikation und Addition) können meist auch in
einer längeren Kette hintereinander geschaltet werden (‘chaining’), um die verketteten Operationen mit nur einem Strom von Vektorelementen bearbeiten zu können.
Interleaved Memory
Arbeitsweise von Vektormaschinen
Data Flow
Vektor Register
Pipeline Processor
Control Flow
Adress Generation
Control Unit
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 31
SIMD-Architekturen
Vektorisierende Compiler
Weiterhin erlauben vektorisierende Compiler für sequentielle Programmiersprachen (z.B.
Fortran 77, Fortran 90) die automatische Umsetzung von Schleifen in die in der Maschine
vorhandenen Vektorinstruktionen. Entsprechende Operationen gehören zu den Basic Linear
Algebra Subroutines (BLAS), die in drei Klassen eingeteilt werden können:
• Level 1: Vector-vector operations. O(n) data and O(n) work
• Level 2: Matrix-vector operations. O(n2) data and O(n2) work
• Level 3: Matrix-matrix operations. O(n2) data and O(n3) work
Beispiele: (x steht für die Precision der Operation)
• Level 1: xCOPY, xSCAL (scale vector by a constant), xAXPY (add a multiple
of one vector to another), ...
• Level 2: xGEMV (general matrix-vector multiplication), ...
• Level 3: xGEMM (general matrix-matrix multiplication), ...
Beispiel für eine Vektorskalierung:
call SSCAL ( n, a, x, incx )
[www.phy.nau.edu/~bowman/PHY520/F77tutor/18.1_blas.html]
Skalareinheit
Instruktions-
Instruktionsausgabe
Vektoreinheit
Vektorkontrolleinheit
puffer
Vektorverarbeitungspipeline
Skalarkontrolleinheit
Vektor
Skalar
Register
Instruktionshole
einheit
Skalarverarbeitungs
einheit
Skalarlade/speicher
einheit
Register
Vektorverarbeitungspipeline
Vektorlade/speicher
einheit
HauptHauptspeicher
speicher
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 32
SIMD-Architekturen
Vektorrechner - Architekturen
Die Vektoreinheit enthält Vektorverarbeitungspipelines, die datentransformierende Operationen ausführen. Die Vektorregister dienen als schnelle Zwischenspeicher für eine größere
Anzahl von Vektorelementen. Die Verarbeitung erfolgt mit einer Maschineninstruktion zwischen den schnellen Vektorregistern (‘register-to-register vector architecture’). Ohne Vektorregister muß der Datenstrom direkt aus dem Hauptspeicher zu den
Verktorverarbeitungspipelines geführt werden und die Verarbeitung erfolgt aus dem Hauptspeicher (‘memory-to-memory vector architecture’). Der Hauptspeicher wird in beiden Architekturen mehrfach verschränkt (’interleaved’) ausgeführt, um den hohen
Bandbreitenanforderungen der Pipelineverarbeitung gerecht werden zu können. Ein klassischer Vertreter dieser Architekturform ist die CRAY 1 [HwangBriggs].
• ’register-to-register vector architecture
Vektorregister bilden schnellen Zwischenspeicher (CRAY-1, im wesentlichen alle aktuellen Systeme)
• memory-to-memory vector architecture
Verarbeitung erfolgt direkt aus dem Hauptspeicher (z.B. STAR-100 [Gil91])
Interleaved Memory
Für einen Vektorrechner gilt, daß in jedem Takt (maximal) beide Operanden einer Operation
geholt werden und das Ergebnis zurückgeschrieben wird. Daher wird eine Speicherbandbreite benötigt, die dreimal so hoch ist wie der Durchsatz der Prozessors. Die einzige Möglichkeit dies zu realisieren, ist das Memory Interleaving. Hier werden n Bits der Adresse (bei
low-order interleaving die untersten) als bank select interpretiert, die jeweils andere Bänke
adressieren. Eine fortlaufende (konsekutive) Adressfolge wird dann fortlaufend über die
Speicherbänke verteilt, beim Zugriff wird bei jeder aufeinander folgenden Adresse eine andere Bank ausgewählt.
address
LSB
MSB
index
bank select byte select
Die einfachste Speichermöglichkeit von Datenstrukturen in einen interleaved memory ist die
fortlaufende Speicherung. Sollte diese Art der Speicherung aber zu Zugriffskonflikten führen, bieten sich andere Verfahren wie skewed-storage, random-storage (Hash-Funktion)
oder komplizierte regelmäßige Verfahren um konfliktfreie Zugriffe auf z.B. die Diagonale
zu ermöglichen. [Gil91]
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 33
SIMD-Architekturen
Vektorregister
Für skalare Werte und kleine Vektoren bringen interleaved memories keinen Gewinn. Vektorregister VR dienen daher als schneller Zwischenspeicher. In der Regel ist ein Vektorregister nicht groß genug um ein ganzes Objekt aufzunehmen, daher müssen diese in
Teilobjekte zerlegt werden (strip mining). Da Vektorregister nicht verschränkt sind, kann
man mit beliebigen Adressfolgen darauf zugreifen ohne die effektive Zugriffsbandbreite zu
verringern.
Eine Vektoroperation verknüpft zwei Vektoroperanden (d.h. zwei VR) zu einem Ergebnis
in einem dritten VR. Dabei werden aus den 0..(n-1) Datenwerte des VR0 mit den 0..(n-1)
Datenwerten des VR1 der Ergebnisvektor des VR2 berechnet (zeitlich sequentiell in der
Verarbeitungspipeline).
opcode s1
VADD VR0
s2
VR1
d
VR2
Einzelne Elemente eines VR können mittels speziellen mask registers von der Operation
ausgeschlossen werden. In der Regel sind diese mask register normale skalare Register, die
neben dieser Aufgabe noch zur Maskierung dienen.
vector register file
VR0
VR1
...
Pipeline Processor
write-back
chaining
Pipeline Processor
VRi
...
vector register
VRi,0
VRi,1
mask register
VRm-1
VRi,n-1
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 34
SIMD-Architekturen
Beispielsysteme für Vektorrechner
• STAR100: memory-to-memory architecture, 32-fold interleaved memory, no scalar processing unit, pipeline length of 100, built in 197x [Gil91]
• CRAY-1: register-to-register architecture (load-store architecture), 8 VRs with 64 elements, scalar and address registers, 16-fold interleaved memory, possiblity of chaining
(scoreboard), built in 1976 [Gil91]
• Nec SX-6: register-to-register architecture, 8 VRs with 256 elements, memory bandwith
of 32GB/s per CPU, 8 CPUs in one system, 4096-fold interleaved memory, building block
of the Earth Simulator
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 35
SIMD-Architekturen
Feldrechner
Feldrechner nutzen die Nebenläufigkeit von parallelen Verarbeitungseinheiten. Eine parallele Verarbeitungseinheit (‘processing element’, PE) kann datentransformierende Operationen vornehmen, ist aber bei der Ablaufsteuerung direkt von der zentralen Steuerungsinstanz
abhängig. Sie besitzt keine Hardware zur Programmflußkontrolle.
Um die Flexibilität eines Feldrechners aus solchen PEs zu erhöhen, wird häufig zusätzlich
die Maskierung jeder Datenoperation ermöglicht. Dadurch können einzelne Operationen des
Rechenablaufs in jedem PE in Abhängigkeit von der Maskierungsinformation unterdrückt
werden. Ein typischer Vertreter des Feldrechners ist die Connection-Maschine CM-2 der
Firma Thinking Machines [Hillis].
Eine besondere Form des Feldrechners ist das systolische Array [Kung88]. Es ist meist eine
zwei- oder dreidimensionale Gitteranordnung von Verarbeitungselementen. Die Verarbeitung der Daten erfolgt taktsynchron im Pipelineverfahren. Ihr Name stammt von der wellenförmigen Bearbeitungsaktivität in dem Feld der PE, die durch die Taktsynchronisation
hervorgerufen wird.
Programmspeicher
Instruktion
Instruktionshole
einheit
Instruktionsausgabe
Maskier
einheit
Maske
PE
Skalarkontrolleinheit
Maskier
einheit
PE
Skalar
Register
PE
PE
PE
Skalarverarbeitungs
einheit
VN
Speicher
VN
kontroll
einheit
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
Datenpfad
VN
Verbindungsnetzwerk
Instruktionspfad
PE
Processing element
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 36
SIMD-Architekturen
Fazit
Trotz der großen Erfolge von SIMD-Architekturen (viele ‘Supercomputer’ gehören in diese
Klasse: Cray Y, NEC SX2, CM-2, etc.) ist die Ausführung nur eines Instruktionsstromes
eine zu starke Einschränkung für die Ausnutzung der Parallelität auf allen Ebenen.
Mit der Verbesserung der Programmierwerkzeuge für Systeme mit mehrfachen Instruktionsströmen können MIMD-Systeme mehr Parallelität ausnutzen und einen größeren Anwendungsbereich erschließen.
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 37
The SX-6 Vector Computer from NEC
Overview
[http://www.sw.nec.co.jp/hpc/sx-e/sx6/hard_chart_e.html]
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 38
The SX-6 Vector Computer from NEC
Powerful Vector and Scalar Units
The SX-6 Series vector unit consists of a vector register and pipelines, each of which is used
for logical operations, multiplication, add/shift operations, division, masked operations, and
memory load/store. A single processor has eight sets of multiple parallel vector pipelines to
achieve peak vector performance. As of the scalar unit, a 4-way super-scalar processor delivers high processing performance. A faster clock cycle and an improved internal processor
design realized on a single chip contribute to the shorter processing time. This results in
great improvement in short vector performance, scalar performance, and eventually in highsustained performance.
Ultra High-speed and High-Density CMOS LSI
The leading-edge CMOS technology and LSI design realized the one-chip vector processor
(scalar unit plus vector unit) which formerly consisted of dozens of LSI. This combination
of high technology and packaging technology realizes the record performance 8GFLOPS.
With a scalar performance improved to almost the twofold compared to the conventional
products, the SX-6 can execute the most demanding application programs.
Large Capacity Main Memory Unit
To achieve highly efficient vector processing, large main memory and high memory throughput that match the processor performance are required. In the SX-6 Series, ultra highspeed double data rate synchronous DRAM is employed
as a memory chip to realize large memory and high memory throughput of maximum 64GB and 256GB/s in a
single-node system, and maximum 8TB and 32TB/s in a
multi-node system.
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 39
Beispiel eines Feldrechners: Der ISATEC-Parallelrechner
• PCI-Karte mit insgesamt 1024 bitseriellen Prozessoren, die in einem 32x32 Feld angeordnet sind
• Prinzip des Instruction Systolic Array (ISA)
• Parallelrechner wird durch den Hostrechner (PC) gesteuert: Programm laden, starten, Datenaustausch zwischen Parallelrechnerkarte und Hauptspeicher
• das Prozessorfeld besteht aus RISC-Prozessoren, die über spezielle Kommunikationsregister ein Datenwort mit einem Befehl austauschen können
• Treiber für Windows 95/NT + MacOS
• Programmierumgebung/Bibliotheken für C + Pascal
• viele Programmbibliotheken vorhanden für Numerik, Bildverarbeitung, Kryptographie,
...
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 40
Beispiel eines Feldrechners: Der ISATEC-Parallelrechner
• Befehle werden in der linken, oberen Ecke in das Prozessorfeld eingespeist und wandern
(systolisch) pro Takt eine Diagonale weiter. Dadurch befinden sich maximal 32 verschiedene Befehle im ISA
• durch Selektoren kann die Ausführung eines Befehles in einer Zeile (Spalte) unterbunden
werden
Spaltenselektoren
Befehle
Zeilenselektoren
4.Befehl
3.Befehl
2.Befehl
5.Befehl
Prozessorfeld
1.Befehl
CN
CW
C
CE
CS
• Kommunikation innerhalb des Prozessorfeldes ist mit den 4 Nachbarn möglich
• jeder Prozessor hat ein spezielles Kommunikationsregister, welches von den Nachbarn
gelesen werden kann
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
WS03/04
Vorlesung Rechnerarchitektur 2
Seite 41
Beispiel eines Feldrechners: Der ISATEC-Parallelrechner
• Spezielle Interfaceprozessoren stellen die Schnittstelle zum ISA dar
• 2 RAM-Bereiche sind den jeweiligen IP’s zugeordnet. Über das RAM werden Daten mit
dem Host ausgetauscht
• jeder IP besitzt zwei Speicherbänke, von denen eine dem RAM und eine dem ISA zugeordnet ist. Durch Vertauschung der Bänke werden Daten in das/aus dem ISA geladen
• Ein Controller steuert den Datentransfer auf dem Parallelrechner und startet einzelne Programme für das ISA
PCI-Bus
PCI
Interface
North RAM
Data-Bus
Controller
West RAM
North
Interface
Processors
West
Interface
Processors
Lehrstuhl für Rechnerarchitektur - Universität Mannheim
Processor Array
WS03/04