Rechnerarchitektur (RA)
8. Prozessorarchitektur fur Fortgeschrittene Prof. Dr. Christian Plessl
RA.8 2018 v1.0.0
1
8. Prozessorarchitektur fur Fortgeschrittene ein kurzer Uberblick
8.1 ParallelitataufWortebene
8.2 ParallelitataufInstruktionsebene
8.3 ParallelitataufThread-Ebene
8.4 ParallelitataufTask-Ebene
8.5 WeiterfuhrendeVeranstaltungen
RA.8 2018 v1.0.0
Inhaltsverzeichnis
2
8.1 Parallelitat auf Wortebene
Multimedia Instruktionssatzerweiterungen
Multimedia-Anwendungen nutzen oft 8/16 Bit Datentypen, viel Parallelitat
Sub-Wort Ausfuhrungsmodell
die Register und ALUs werden partitioniert
gleichzeitige Ausfuhrung einer Instruktion auf mehreren Operanden,
SIMD Parallelitat (single instruction, multiple data)
Bsp. 64 Bit Architektur:
0
Packed half-word (4 x 16 bit) Packed byte (8 x 8 bit)
Long word (64 bit, native data type)
ADD R3, R1, R2 Packed word (2 x 32 bit) R1
a3
a2
a1
a0
1
0
b3
b2
b1
b0
R2 R3
====
3
2
1
0
a3+b3
a2+b2
a1+b1
a0+b0
7
6
5
4
3
2
1
0
RA.8 2018 v1.0.0
3
++++
SIMD Instruktionssatzerweiterungen
x86 SIMD Instruktionssatzerweiterungen
1996:
1999:
MMX (multimedia extensions), benutzt 64 Bit FP Register
SSE (streaming SIMD extensions), 128 Bit Register, parallele SP FP Operationen
2001: SSE2
2004: SSE3 auch parallele DP FP Operationen
2007 SSE4
2010:
2013:
AVX (advanced vector extensions), 256 Bit Register AVX512, 512 Bit Register 16 SP FP Operationen gleichzeitig
Bsp.: AVX Instruktionen fur DP FP (Auswahl)
RA.8 2018 v1.0.0
4
Einzyklenimplementierung
CPI = 1
Mehrzyklenimplementierung
Zyklen
8.2 Parallelitat auf Instruktionsebene
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
CPI > 1
IF
ID
Pipelining
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
CPIideal = 1 CPIreal > 1
RA.8 2018 v1.0.0
5
Instruktionen
Tiefes Pipelining
Die Operationen in der EX-Phase dauern oft deutlich langer als einen Taktzyklus Performance der Pipeline sinkt.
Abhilfe: mehrere Ausfuhrungseinheiten mit unterschiedlichen Latenzen
die Ausfuhrungseinheiten konnen selbst in einer Pipeline implementiert sein
Beispiel
Elsevier 2003
EX: 1 Taktzyklus
M1M7: 7 Taktzyklen, Pipeline A1A4: 4 Taktzyklen, Pipeline DIV: 24 Taktzyklen
RA.8 2018 v1.0.0
6
Pipelining mit parallelen Ausfuhrungseinheiten
Implementierungsvariante: in-order execution
Instruktionen werden in der ursprunglichen Programmreihenfolge den Ausfuhrungseinheiten zugeteilt (in-order issue, in-order execution), die Resultate der Instruktionen konnen aber out-of-order erzeugt werden
kann eine Instruktion nicht zugeteilt werden (wegen eines Hazards), mussen alle nachfolgenden Instruktionen warten
Beispiel
unabhangige Instruktionen, suffix .D = double precision floating point
RA.8 2018 v1.0.0
7
Pipelining mit parallelen Ausfuhrungseinheiten
Probleme durch unterschiedliche Latenzen der Ausfuhrungseinheiten
durch die tiefe Pipeline gibt es tendenziell mehr stalls durch data hazards Losungsmoglichkeiten wie bei der einfachen Pipelineimplementierung
es konnen in einem Taktzyklus mehrere Instruktionen in der WB Phase sein (structural hazard bzgl. des Registerfiles) Zugriffe in Reihenfolge der Prioritat
es konnen neue Konflikte entstehen, Bsp.: WAW (write-after-write) Hazards
Beispiel
WAW Hazard, wenn
L.D F2, 0(R2)
hier ware
RA.8 2018 v1.0.0
8
Pipeline Scheduling
Reduktion von Data Hazards durch Umordnen von Instruktionen
durch die Software (Compiler): statisches Scheduling, zur Compilationszeit
durch die Hardware (Prozessor): dynamisches Scheduling, zur Laufzeit
meist wird eine Kombination verwendet
Statisches Scheduling durch den Compiler
die Eigenschaften der Prozessorimplementierung fliessen in den Compiler ein
der Code ist nur fur die konkrete Prozessorimplementierung effizient
der Compiler kann nicht alle Abhangigkeiten erkennen und muss daher immer konservative Entscheidungen treffen
Beispiele fur Techniken: Verschieben von Instruktionen, Schleifen entfalten (loop unrolling), Software pipelining
Dynamisches Scheduling durch den Prozessor (out-of-order execution)
grosser Hardwareaufwand erforderlich, daher begrenzt komplexe Algorithmen zur
Umordnung von Instruktionen einsetzbar
der Compiler wird einfacher
der Code lauft effizient auf jeder Implementierung der ISA (!)
Beispiel fur Techniken: Scoreboarding, Algorithmus von Tomasulo
RA.8 2018 v1.0.0
9
Dynamisches Scheduling
Erweiterungen der Architektur
jede Ausfuhrungseinheit bekommt eine reservation station
speichert die Instruktionen und die Operanden und wartet mit dem Start von Instruktionen bis die Konflikte aufgelost sind
nach den Ausfuhrungseinheiten sorgt eine commit unit dafur, dass der Maschinenzustand (Register, Speicher) in einer korrekten Reihenfolge geandert wird (durch einen reorder buffer)
RA.8 2018 v1.0.0
10
Mehrfachzuordnung
Pipelinescheduling versucht, den realen moglichst nahe an den idealen CPI-Wert zu bringen.
obwohl sich viele Instruktionen in den Ausfuhrungseinheiten befinden, startet pro Taktzyklus maximal eine neue Instruktion CPIideal = 1
Prozessoren mit Mehrfachzuordnung (multiple issue) starten mehr als eine Instruktion pro Taktzyklus.
bei einer m-fach Zuordnung CPIideal = 1/m
es mussen mehrere Instruktionen pro Taktzyklus vom Cache geholt werden
die Bandbreite zum Cache muss dementsprechend erhoht werden
Beispiel
IF
ID
EX
MEM
WB
IF
ID
EX1
EX2
EX3
MEM
WB
IF
ID
EX1
EX2
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX1
EX2
MEM
2-fach Zuordnung
RA.8 2018 v1.0.0
WB
11
Prozessoren mit Mehrfachzuordnung
Statische Mehrfachzuordnung (VLIW Prozessoren)
die Zuordnung zu den Ausfuhrungseinheiten wird vom Compiler durchgefuhrt
die einzelnen Instruktionen mussen in Pakete gepackt werden (issue packets), ursprungliche Bezeichnung: very long instruction word (VLIW)
typischerweise konnen nicht alle Instruktionskombinationen parallel ausgefuhrt werden, Bsp.: nur eine ALU und eine load/store Einheit sub/add nicht parallel
Prozessorentwurf wird stark vereinfacht, der Compilerentwurf schwierig
Code ist nicht binarkompatibel zu anderen Prozessoren mit derselben ISA !
Bsp.: Intel IA-64 (Itanium, Itanium 2)
Dynamische Mehrfachzuordnung (Superskalare Prozessoren)
die Zuordnung zu den Ausfuhrungseinheiten wird vom Prozessor durchgefuhrt, das dynamische Pipelinescheduling kann relativ einfach auf Mehrfachzuordnung erweitert werden
Prozessorentwurf wird komplexer, der Compilerentwurf vereinfacht
Code ist binarkompatibel zu anderen Prozessoren mit derselben ISA !
Bsp.: Intel IA-32 (Pentium 4)
RA.8 2018 v1.0.0
12
Beispiel
Statische Mehrfachzuordnung
MIPS Pipeline mit statischer 2-fach Zuordnung: Ausfuhrungseinheit #1: ALU, branches Ausfuhrungseinheit #2: load/store
ursprunglicher Code: Loop: lw addu
sw addi bne
Code fur 2-fache statische Zuordnung: ALU/branches
$t0, 0($s1)
$t0, $t0, $s2
$t0, 0($s1)
$s1, $s1, -4
$s1, $zero, Loop
CPIideal = 0,5
Loop:
load/store
lw $t0, 0($s1)
addi $s1, $s1, -4
addu $t0, $t0, $s2 nop
nop
bne $s1, $zero, Loop
CPI = ?
sw $t0, 4($s1)
RA.8 2018 v1.0.0
nop
13
Beispiel
Compileroptimierungen
Loop unrolling: Entfalten von 4 Iterationen der Schleife, um mehr Potential fur parallele Instruktionsausfuhrung zu bekommen
Register renaming: Umbenennen von Registern ($t0 $t1, $t2, $t3), um unechte Datenabhangigkeiten zu eliminieren
Statisches Pipelinescheduling: Instruktionen moglichst dicht packen, unter Berucksich- tigung der Datenhangigkeiten und Instruktionslatenzen
ALU/branches load/store
Loop: addi
nop
$s1, $s1, -16
lw $t0, 0($s1)
lw $t1, 12($s1)
lw $t2, 8($s1)
lw $t3, 4($s1)
sw $t0, 16($s1)
sw $t1, 12($s1)
sw $t2, 8($s1)
sw $t3, 4($s1)
addu $t0, $t0, $s2 addu $t1, $t1, $s2
addu $t2, $t2, $s2 addu $t3, $t3, $s2 nop
bne $s1, $zero, Loop
CPI = ?
RA.8 2018 v1.0.0
14
Beispiel
Schleife:
}
Teil des Schleifenrumpfs: (Pseudocode)
for (i=0; i<7; i++) { b[i] = a[i] + 1;Compileroptimierungen load a[i]add a[i], 1store b[i] Die drei Instruktionen im Schleifenrumpf sind abhangig und konnen deshalb nicht parallel ausgefuhrt werden Software Pipelining: Umstrukturieren der Schleife, um die Parallelitat im Schleifen- rumpf zu erhohenRA.8 2018 v1.0.015 CompileroptimierungenBeispiel 0 Iteration:prologue:load a[0]add a[0], 1load a[1]ursprunglicheneue Iteration:23456store b[i]add a[i+1], 1load a[i+2]01123 4 epilogue:store b[5]add a[6], 1store b[6]RA.8 2018 v1.0.016 Entwurfsraum (CPI x T)tiefes PipeliningMehrfachzuordnung mit tiefem Pipelining Mehrfachzuordnung mit PipeliningMehrzyklen Pipelining Einzyklen>1 1 <1 CPIRA.8 2018 v1.0.017langkurzTaktperiode T 8.3 Parallelitat auf Thread-Ebene Multithreaded (mehrfadige) Prozessoren mehrere Threads werden in einer Pipeline uberlappend ausgefuhrt Vorteil: mehrere Threads konnen die Hardware besser auslasten mehr Instruktions-Parallelitat insgesamt bei stalls konnen Instruktionen anderer Threads abgearbeitet werden benotigte Hardware die Threads brauchen jeweils eigene Zustande (PCs, Registerfiles, …) Steuerung muss sehr schnell zwischen den Threads hin- und herschalten konnen (nicht vergleichbar mit Thread/Prozesswechsel durch das Betriebssystem) Multithreading auf einem superskalaren Prozessor bezeichnet man als Simultaneous Multithreading (SMT) Bsp.: Intel Core i7 hat 4 Kerne (cores) mit jeweils 2 Threads RA.8 2018 v1.0.018 Parallelitat auf Thread-Ebene Multicore/Manycore Prozessoren die Threads werden auf unterschiedlichen cores ausgefuhrt Terminologie parallel processing: die Threads gehoren alle zu einem Programm request-level processing: die Threads sind unabhangig Shared memory Architektur die cores sind eng gekoppelt, dh. die Threads kommunizieren undsynchronisieren sich in einem gemeinsamen Adressraum eine einzige Betriebssystem-Instanz ist zustandig fur alle cores zwei Realisierungsformen symmetric multiprocessor (SMP): fur single-chip Multiprozessoren distributed shared memory multiprocessor (DSM): Multiprozessoren mitmehreren Chips typische Kommunikationslatenzen 35-50 Taktzyklen zwischen cores auf einem Chip 100-500 Taktzyklen zwischen cores auf verschiedenen Chips RA.8 2018 v1.0.019 Parallelitat auf Thread-Ebene Symmetrische Multiprozessoren (SMP) auch bezeichnet als centralized shared memory multiprocessor es gibt einen zentralen Speicher, auf den alle cores gleichberechtigt und mit gleicher Zugriffszeit zugreifen konneneuniform memory access (UMA)RA.8 2018 v1.0.0(lokale Caches)gemeinsam genutztes Medium (Bus, etc.) 20 Parallelitat auf Thread-Ebene Distributed shared memory Multiprozessoren (DSM) der Speicher ist physikalisch verteilt, sinnvoll fur groere Anzahl von Cores /Prozessoren die Zugriffszeit hangt davon ab, wo sich die Daten befindenenon-uniform memory access (NUMA)RA.8 2018 v1.0.021 8.4 Parallelitat auf Task/Programm-Ebene Multicomputer / Cluster (HPC) Computer mit vielen Knoten / Servern, die uber ein Netzwerk verbunden sind fur Anwendung in Science & Engineering (high-performance computing, HPC) Bsp. Noctua im PC2 an der UPB: 10880 Intel Skylake core 52 TB Arbeitsspeicher 720 TByte Paralleler Festplattenspeicher 100 Gbit/s Omni-Path Netzwerk 535 10E12 Floating-point Operationen / SekundeRA.8 2018 v1.0.022 Parallelitat auf Task/Programm-Ebene Warehouse-scale Computer (WSC) Cluster mit riesiger Anzahl von Servern (typ. 50000 100000), die uber einNetzwerk verbunden sind fur Internet-Services (search, social networking, online maps, video sharing, online shopping, email services, …) und Cloud-ServicesRA.8 2018 v1.0.023 Parallelitat auf Task/Programm-Ebene Vergleich HPC vs. WSC Preis/Leistungs-Verhaltnis (Rechenleistung / $) fur HPC und WSC wichtig Energieeffizienz (Rechenleistung / Ws) fur HPC und WSC wichtig Zuverlassigkeit (dependability) HPC: Einsatz teurer Komponenten mit hoher Zuverlassigkeit WSC: Einsatz von gunstigen, redundanten Servern Netzwerk und I/O HPC: sehr leistungsfahige und teure Netzwerke WSC: gunstigere Netzwerke beide benotigen einen sehr schnellen Anschluss nach auen (border router) Workload-Characteristik beide mussen interaktive und batch Workloads ausfuhrenRA.8 2018 v1.0.024 Parallelitat auf Task/Programm-Ebene Vergleich HPC vs. WSC Parallelitat in den Anwendungen fur HPC manchmal eine Herausforderung WSC Anwendungen zeigen viel Parallelitat interaktive Services haben Millionen unabhangiger user batch workloads, z.B. indexing, weisen auch Parallelitat auf Kosten HPC: fruher Betriebskosten oft gegenuber Anschaffungskosten vernachlassigt, heute uber Betriebsdauer (4-6J) in der gleichen Grossenordnung wie Anschaffungskosten WSC: Betriebskosten sind ein groer Teil der Gesamtkosten, durch die riesige Anzahl von Knoten konnen die Anschaffungskosten drastisch gesenkt werdenRA.8 2018 v1.0.025 8.5 Weiterfuhrende Veranstaltungen Bachelor: Eingebettete Systeme (6 LP) Wahlpflichtbereich, Sommersemester Inhalt Spezifikationsmodelle: Zustands-orientiert, Datenfluss-orientiert Zielarchitekturen: General-Purpose Prozessoren, DigitaleSignalprozessoren, Mikrokontroller, ASIPs, FPGAs und ASICs, Fallstudien Compiler und Codegenerierung: Compilerstruktur, Zwischencode, Codeoptimierung, Codegenerierung fur spezialisierte Prozessoren, retargierbare Compiler Software: Cyclic executive, Preemption, Multitasking Hardware: Architektursynthese Performance: Metriken, Worst-Case-Execution Time Analysis Energie: Metriken, Techniken zur Energieminimierung RA.8 2018 v1.0.026 Weiterfuhrende Veranstaltungen Master: Advanced Computer Architecture1. Fundamentals2. MemoryHierarchyDesign3. Instruction-levelParallelism:DynamicScheduling,Hardware Speculation, Multiple Issue, Multithreading on Uniprocessors4. Data-levelParallelism:VectorArchitectures,SIMDExtensions, Graphic Processing Units5. Thread-levelParallelism:CentralizedandDistributedShared Memory Multiprocessors, Cache Coherency, Synchronization6. Request-levelParallelism:Wharehouse-scaleComputersfor Internet Services RA.8 2018 v1.0.027 Weiterfuhrende Veranstaltungen Vertiefende Veranstaltungen im Master High-performance Computing Architektur paralleler Rechnersysteme Reconfigurable Computing Hardware/Software Codesign Algorithms for Synthesis and Optimization of Digital Circuits RA.8 2018 v1.0.028 v1.0.1 Folie 4 aktualisiert, AXV512 Folien 26-28 aktualisiert v1.0.0 Aktualisierung fur WS 2018/19 Neue Daten zur Entwicklung der Performance, Taktfrequenz und DRAM KapazitatRA.8 2018 v1.0.0Anderungen 29
Reviews
There are no reviews yet.