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