rechner-strukturen: slides - titleframe · inhaltsverzeichnis (forts.) 3 compiler passes...
Post on 06-Sep-2019
6 Views
Preview:
TRANSCRIPT
Fakultat E-Technik & InformatikHochschule Bremen
Rechner-Strukturen: slides
Prof. Dr. Thomas Risse
SS 2012
Sinn & Zweck: Unterstutzung der LehrveranstaltungRechner-Strukturen, RST durch diverse Materialien, s.’RST-page’ www.weblearn.hs-bremen.de/risse/RST
c© 2012 risse@hs-bremen.deLetzte Anderung: 6. Juli 2012 Version 0.9.12
Inhaltsverzeichnis
0. Vorbemerkung
• Inhalt • Lernziele • Herangehensweise • Vorbedingungen &
Uberschneidungen • Vor-/Nachbereitung • RST page – computerarchitecture im WWW • Materialien • Test – Probleme mit demVersionswechsel • Leistungsbewertung
1. Einfuhrung
• Begriffsbestimmung • Geschichte • Taxonomie
2. Leistung
• Rechner • unterschiedliche Anwendungsbereiche • Leistungs-kenngroßen • benchmarks • Einflußgroßen • Leistungsmessung• Reprasentativitat • Amdahl’sches Gesetz • Leistungszuwachs
3. Compiler – rechts von/oberhalb der HW-SW-Schnittstelle
3.1. compiler & Konsorten
Inhaltsverzeichnis (Forts.) 3
• compiler passes
3.2. Code-Optimierung
• lexikalische Analyse • syntaktische Analyse • semantische Ana-
lyse • Ubersetzung in Zwischensprache • Code-Erzeugung • Bei-spiel: Quicksort • Beispiel: Quicksort – ohne Optimierung • Bei-spiel: Quicksort – 1. Optimierung • Beispiel: Quicksort – 2. Op-timierung • Beispiel: Quicksort – 3. Optimierung • Code-Erzeu-gung & Optimierung
3.3. Resumee
3.4. z.B. Matrix-Multiplikation
• Matrix-Multiplikation – pure • Matrix-Multiplikation – 4-fach• Matrix-Multiplikation – 4-fach, 4-fach
4. Befehlssatz – links von der HW-SW-Schnittstelle
4.1. Klassifikation
• Wieviele Operanden sind in CPU gespeichert?
4.2. Register-Architekturen
Inhaltsverzeichnis (Forts.) 4
• Beispiele
4.3. Adressierung
• Adressierungsarten
4.4. Operationen
• Befehlshaufigkeiten • Befehlshaufigkeiten und -Merkmale
4.5. Anforderungen an Befehlssatze
4.6. z.B. DLX/MIPS-Befehlssatz
• exemplarische, prototypische DLX/MIPS-Instruktionen •DLX/-MIPS-Formate • DLX/MIPS-(Pseudo-)Instruktionen • Befehls-formate • z.B. DLX/MIPS-shifts • Klassifizierung des Befehls-satzes
4.7. z.B. Intel 80x86-Befehlssatz
• Genealogie • Register • Familien-Entwicklung • Adressierung• Operationen • Befehlsformate • Befehlsprefixe • Beispiele fur8086 Befehle • Beispiele fur 80386 Befehle • Beispiele fur Befehls-formate belegen ISA-Heterogenitat • Dekodierung • ConditionCodes • Sprung- und Verzweigungsanweisungen • Bedingungen
Inhaltsverzeichnis (Forts.) 5
in Registern vs Condition Codes • AMDs 64bit Erweiterungen• Slogans on 80x86 architecture
4.8. z.B. 8051
4.9. Resumee
5. Prozessor-Architektur
5.1. single cycle Implementierung
5.2. multi cycle Implementierung
5.3. Implementieren der Steuerung
6. pipeline-Prozessor
6.1. instruction pipelines
• pipeline control • data hazards • control hazards • superskalareVersion & Leistung • superskalare Prozessoren
6.2. functional pipelines
• arithmetische pipelines • scheduling funktionaler Einheiten• pipeline-Vektor-Prozessoren • Leistungsbewertung
Inhaltsverzeichnis (Forts.) 6
7. Speicher-Hierarchie
• Kenngroßen • Lokalitat
7.1. caching
• direct mapped caches • fully associative caches • set associativecaches • cache-Schreibstrategien • Havard-Architektur
7.2. Speicher: SRAM vs DRAM
7.3. Speicher-Organisation
• virtueller Speicher • paging • segmentation • paged segments• Belegungen des physikalischen Speichers ermitteln • TLB – Be-schleunigen der Adreß-Umsetzung • Speicherschutz-Maßnahmen• 80x86-Unterstutzung der Speicher-Anbindung • performancegap: processor vs memory system
8. Parallelisierung von Algorithmen
8.1. Parallelisierung des Gauß’schen Algorithmus
• Gauß’scher Algorithmus – Eliminieren • Gauß’scher Algorith-mus – Auflosen •Kommunikation • Parallelisierung des Gauß’schenAlgorithmus durch den Compiler
Inhaltsverzeichnis (Forts.) 7
8.2. Effizienz/Effektivitat der Parallelisierung
8.3. parallele Speicher-Zugriffe auf Matrizen
8.4. Baumhohenreduktion
8.5. Parallelisierung rekurrenter Relationen
8.6. Modellierung durch DAGs
8.7. Programmierung
9. Vektor-Prozessor-Systeme (SIMD)
9.1. vector processing (per pipelining oder n ALUs)
9.2. parallel processing (per n parallel processes/processors)
9.3. pipelining within/across operations
9.4. Beispiel: IBM 3090 Vector Facility
• reconfigurable vector registers • Compound Instructions • z.B.komplexe Multiplikation • IBM 3090 Vector Facility – Vector In-structions
10. parallele Architekturen
Inhaltsverzeichnis (Forts.) 8
10.1.Klassifizierung anhand von Beispielen
• Symmetric / Shared-Memory Multiprocessors (SMP), UniformMemory Access (UMA) • Non-Uniform Memory Access (NU-MA) Multiprocessors • Clusters • Massively Parallel Processors(MPP)
10.2.Multiprocessor-Systeme mit gemeinsamem Bus
10.3.cache-Koharenz in Multiprozessor-Systemen
• cache-Koharenz durch Invalidieren • cache-Koharenz durch Ak-tualisieren • cache-Koharenz • Einfaches cache-Koharenz Proto-koll • MESI/MOESI
10.4.Verbindungsstrukturen
• Beispiele • Merkmale einschlagiger Verbindungsstrukturen
11. Addenda
11.1.Addendum in 2003: top 500
11.2.Addendum in 2004: announced in 2004
11.3.Addendum in 2005: top 500
Inhaltsverzeichnis (Forts.) 9
11.4.Addendum in 2006: top 500
11.5.Addendum in 2007: cell-Prozessor
11.6.Addendum in 2010: Core i2000
11.7.Addendum in 2011: K Computer
11.8.Addendum in 2012: Raspberry Pi
• gooseberry
10
0. Vorbemerkung
• Inhalt
1. Einfuhrung
2. Leistungsbewertung, Leistungsmessung
3. Compiler
4. Befehlssatze
5. Prozessor-Architektur
6. pipelining
7. Speicher-Hierarchie: caching
8. Speicher-Organisation: paging, segmentation
9. Parallelisierung
10. Multi-Prozessor/Multi-Computer-Systeme
Abschnitt 0: Vorbemerkung 11
• Lernziele
• Interna, Architektur-Prinzipien kennenlernen
• Abhangigkeiten erkennen und berucksichtigen
• Angaben zu Leistung/features bewerten konnen
• es gibt nicht nur PCs auf dieser Welt!
• Leistung durch Ausnutzen von Parallelitat steigern
• Herangehensweise
Entwurfssicht
• Vorbedingungen & Uberschneidungen
• Mikro-Computer-Technik
• Digital-Technik
• Betriebssysteme, Compiler (-Bau), . . .
Abschnitt 0: Vorbemerkung 12
• Vor-/Nachbereitung
• in der modul-begleitenden Ubung
– praktische Ubungen zu den aktuellen Themen, z.B. anhandvon Emulationen
• im Hinblick auf Projekte, z.B.
– Unterschriften-Verifikation (Vektor-Coprocessor-board)– ChipCard-Terminal (µ-Controller)– low power processors (VHDL, FPGA)– SystemC
• RST page – computer architecture im WWW
RST page mit Materialien, Archiv, link lists
www.weblearn.hs-bremen.de/risse/RST/
auch uber AULIS verlinkt! s. no computer without architectureAllerdings sind AULIS-Dokumente nicht notwendig up to date!
Abschnitt 0: Vorbemerkung 13
• Materialien
• Literatur: COD, CA & Bibliographie im SkriptPatterson & Hennessy: COD; 2nd ed., MKP COD2ePatterson & Hennessy: COD; 3rd ed., Elsevier, 40£ COD3ePatterson & Hennessy: COD; 4th ed., MKP, ca 40£Hennessy & Patterson: CA; 3rd ed., MKP CAHennessy & Patterson: CA; 4th ed., MKP ca 40£ CA
Patterson & Hennessy: Rechner-Organisation und -Entwurf; El-sevier 55e COD2ePatterson & Hennessy: Rechner-Organisation und -Entwurf; 4.Aufl. Oldenbourg 60eHennessy & Patterson: CA; deutsche Ubersetzung vergriffen CA
• online Materialiens. www.weblearn.hs-bremen.de/risse/RST/docs
– Skript(e) RST.pdf und RST plus.pdf– Folien RSTslide.pdf– (Abschluß)Klausuren klausur.pdf und aKlausur.pdf– Graphiken, Dokumente, link lists etc– Evaluationen
Abschnitt 0: Vorbemerkung 14
• Test – Probleme mit dem Versionswechsel
AULIS→ RST-Test soll die Veranstaltung RST unterstutzen, i.e. mul-tiple choice & fill in blank Test, derzeit zu folgenden Themen
• Leistung
• Compiler
• Befehlssatze
• Prozessor-Architektur
• pipelining
• Speicher-Hierarchie: caching
• Speicher-Organisation: paging, segmentation
• Leistungsbewertung
BPO: Klausur s.www.weblearn.hs-bremen.de/risse/RST/docs/klausur.pdf
www.weblearn.hs-bremen.de/risse/RST/docs/aKlausur.pdf
15
1. Einfuhrung
Computer-Entwicklung1 ist Leistungssteigerung!
• Begriffsbestimmung
Def. Rechner-Architektur2 ist die Organisation von Rechen-Syste-men, die das Preis/Leistungsverhaltnis fur bestimmte Einsatzbereicheund bei gegebener hardware- und software-Technologie optimiert.
• Geschichte
1642 B. Pascal3: Addition und Subtraktion
1 s. Vergleich mit Automobil2 Amdahl, Blaauw, Brooks – Entwickler der IBM /360 – definierten 1964:
Computer-Architektur ist die Struktur eines Computers, die ein Maschinen-Sprachen-Programmierer verstehen muß, um korrekte Programme fur eine Ma-schine schreiben zu konnen.
3 Blaise Pascal, 1623-1662 www-history.mcs.st-and.ac.uk/history/Mathematicians/Pascal.html
Abschnitt 1: Einfuhrung 16
1666 S. Morland4, 1671 G. Leibniz5 Addition und Multiplikation
1812 Charles Babbage6: Difference Engine (Polynom-Auswertung),Analytical Engine (Lochkarten-Steuerung), Augusta Ada King,Countess of Lovelace7
1924 T.J. Watson:8 von NCR uber CTR zu IBM, Astronomical Com-puting Bureau, Hermann Hollerith:9 National Bureau of Census
1930 Howard H. Aiken,10 John Atanasoff,11 George Stibitz,12 Kon-rad Zuse:13 universelle, programmierbare, digitale (Relais-) Rech-ner
4 Samuel Morland, 1625-1695 es.rice.edu/ES/humsoc/Galileo/Catalog/Files/morland.html
5 Gottfried Leibniz, 1646-1716 www-history.mcs.st-and.ac.uk/history/Mathematicians/Leibniz.html
6 Charles Babbage, 1791-1871 www-history.mcs.st-and.ac.uk/history/Mathematicians/Babbage.html
7 Augusta Ada King, 1815-1852 www-history.mcs.st-and.ac.uk/history/Mathematicians/Lovelace.html
8 Thomas J. Watson, 1874-1956 www.watson.ibm.com/t j watson history.html
9 Hermann Hollerith, 1860-1929 www-history.mcs.st-and.ac.uk/history/Mathematicians/Hollerith.html
10 Howard H. Aiken, 1900-1973 cc.kzoo.edu/ k98hj01/aiken.html
11 John V. Atanasoff, 1903-1995 archive.comlab.ox.ac.uk/museums/computing/atanasoff.html
12 George Stibitz, 1904-1995 www.invent.org/book/book-text/100.html
13 Konrad Zuse, 1910-1995 www-history.mcs.st-and.ac.uk/history/Mathematicians/Zuse.html
Abschnitt 1: Einfuhrung 17
1939 Atanasoff: Rohren-Rechner (Lineare Gleichungssysteme)
1943 Mauchly14 und Eckert:15 Electronic numerical Integrator andCalculator, ENIAC
1943 M.H.A. Newman16 und A. Turing17: Colossus (Kryptographie),Enigma ...
1945 John von Neuman18: Electronic Discrete Variable AutomaticComputer, EDVAC, Magnetische Speicher, Atom-Bombe,s.a. COD, pp315,s.a. Forum InformatikerInnen fur Frieden und gesellschaftlicheVerantwortung,http://fiff.informatik.uni-bremen.de/
z.H. Pioniere und Computer-Museen ’ersurfen’,s.a. H&P, P&H, Literatur, WWW o
14 John W. Mauchly, 1907-1980 www-history.mcs.st-and.ac.uk/history/Mathematicians/Mauchly.html
15 John P. Eckert, 1919-1995 www-history.mcs.st-and.ac.uk/history/Mathematicians/Eckert John.html
16 Max H.A. Newman, 1897-1984 www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newman.html
17 Alan M. Turing, 1912-1954 www-history.mcs.st-and.ac.uk/history/Mathematicians/Turing.html
18 John von Neuman, 1903-1957 ei.cs.vt.edu/ history/VonNeumann.html
Abschnitt 1: Einfuhrung 18
Zeit Technologie/Architektur SW/Anwendungen Systeme
1945-54Rohren, Relais, CPU mitPC und Accu, Festpunkt-Arithmetik
Assembler, singleuser, no linkage
ENIAC, Prin-ceton IAS,IBM 701
1955-64
diskrete Transisto-ren, Kern-Speicher,Gleitpunkt-Arithmetik,I/O-processors, multiple-xed memory access
HLL, compiler, li-braries, batch pro-cessing
IBM 7090,CDC 1604,Univac LARC
1965-74SSI/MSI-ICs, Mikropro-grammierung, pipelining,cache, µ-processors
multiprogramming,time sharing, OS,multi user
IBM 360/370,CDC 6600,TI-ASC,PDP-8
1975-90
LSI/VLSI-ICs, Halblei-ter-Speicher, RISC vsCISC, multi processors,vector supercomputers,multicomputers
multiprocessor OS;languages, compi-lers etc. for parallelprocessing
Apple, PC,VAX 9000,Cray X-MP,IBM 3090
1991-ULSI/VHSI-ICs, high den-sity packaging, scalable ar-chitectures
MPP, grand chal-lenges, heteroge-neous processing
FujitsuVPP500,Cray MPP,CM-5, IntelParagon
Abschnitt 1: Einfuhrung 19
• Taxonomie
sehr grobe Einteilung von Rechnern (Flynn19sche Klassifikation)
SD MDsingle data multiple data
SI – single SISD SIMDinstruction 8051, 8086, etc. MMX, etc; Vektor-RechnerMI – multiple — MIMDinstruction — Multi-Prozessoren, -Computer
z.H. Finde und klassifiziere weitere Beispiele. o
19 Michael Flynn: Very high-speed computing systems; Proceedings of the IEEE,volume 54, pages 1901-1909, December 1966.
20
2. Leistung
Kosten-zu-Nutzen-Verhaltnis optimieren!i.e. minimize cost/benefit ratio!
• Rechner
• dedicated hardware, ASICs ...
• FPGAs ...
• µ-Controller, DSP, ...
• PC
• workstation
• server, mid size computer, ...
• main frame
• Super-Computer
Beispiele?
Abschnitt 2: Leistung 21
• unterschiedliche Anwendungsbereiche
• ...
• general purpose
• SoHo
• Wirtschaft
• Wissenschaft & Technik
• Super-Computer, HPC
Beispiele?
Abschnitt 2: Leistung 22
• Leistungskenngroßen
• MIPS
• MOPS
• FLOPS
• CPI
• Bus-Bandbreite
• IO-Bandbreite
• wait states
• TPS
• FPS
• KLIPS
• ... ?
Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?
Abschnitt 2: Leistung 23
• benchmarks
• Gibson-Befehlsmix
• Whetstones in MWIPS
• Linpack
• Dhrystones
• Livermoore loops
• SPECmarks in SPECint, SPECfp etc
• Perfect Club
• WinStone
• BABCo SYSmark
• ... ?
Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?
z.H. Vergleiche Leistungskenngroßen vs benchmarks! o
Abschnitt 2: Leistung 24
• Einflußgroßen
SekundenProgramm = Instruktionen
Programm × Clock ZyklenInstruktion
× SekundenClock Zyklus
und durch Ubergang zu geeigneten Mittelwerten
SekundenProgramm = Instruktionen
Programm × CPI× 1
Taktrate
Abhangigkeiten?
• Leistungsmessung
Leistung = 1
Ausfuhrungszeit.
Beschleunigungsfaktor β aufgrund einer Modifikation ist
β =Leistungmit ModifikationLeistungohne Modifikation
=AusfuhrungszeitohneAusfuhrungszeitmit
Abschnitt 2: Leistung 25
Leistungsgewinn γ aufgrund einer Modifikation ist
1 + γ =Leistungmit ModifikationLeistungohne Modifikation
=AusfuhrungszeitohneAusfuhrungszeitmit
bzw. aufgelost
γ =Leistungmit−Leistungohne
Leistungohne=
Ausfuhrungszeitohne−AusfuhrungszeitmitAusfuhrungszeitmit
• Reprasentativitat
Arithmetisches Mittel oder gewichtetes Mittel
AZ =1
n
n∑i=1
AZi AZ =
n∑i=1
wiAZi
der Ausfuhrungszeiten AZi ausgewahlter Programme Pi mit zugeho-rigen Gewichten wi ≥ 0 und
∑ni=1 wi = 1
bzw. harmonisches Mittel r der Raten ri
r =n∑ni=1
1ri
bzw.1
AZ=
n∑ni=1
11/AZi
Abschnitt 2: Leistung 26
der Raten 1AZi
ausgewahlter Programme Pi
Z.B. mittlere MIPS, MOPS, FLOPS cz.H. Benjamin Benz: Auf den Zahn gefuhlt – PC-Performance selbstbeurteilen; c’t 18/2009 140-144 www.ctmagazin.de/0918140 mit TestsCPU: Cinebench, Prime95; Grafikkarten: Furmark, 3DMark06, 3DMark03,
3DMark Vantage, 3DMark05; Festplatten&Laufwerke: IOMeter, H2benchw,
Nero Disc Speed; Speicher: Memtest86+, Memtest86; Netzwerk: NetIO,
Iperf; application benchmarks: BAPCo SYSmark, 7-Zip; Spiele: Fraps. o
• Amdahl’sches Gesetz
Fur α = Anteilverandert liege Beschleunigungsfaktor βverandert vor.
Ausfuhrungszeitneu = (1− α)Ausfuhrungszeitalt + αAusfuhrungszeitalt
βverandert
βgesamt =AusfuhrungszeitaltAusfuhrungszeitneu
= 1(1−α)+ α
βverandert
Beispiele!
Abschnitt 2: Leistung 27
• Leistungszuwachs
HP 9000/750
SUN-4/ 260
MIPS M2000
MIPS M/120
IBM RS6000
100
200
300
400
500
600
700
800
900
1100
DEC Alpha 5/500
DEC Alpha 21264/600
DEC Alpha 5/300
DEC Alpha 4/266
DEC AXP/500IBM POWER 100
Year
Per
form
ance
0
1000
1200
19971996199519941993199219911990198919881987
Abschnitt 2: Leistung 28
Also jahrliche Verdoppelung der Prozessor-Leistung (gemessen etwain MIPS oder FLOPS)
Leistung= 2Jahr−1984 (Joy’sches Gesetz)
und ca alle drei Jahre Vervierfachung der Speicher-Chip-Kapazitaten
1992
100,000
Kbi
t ca
paci
ty
10,000
1000
100
1019901988198619841982198019781976
Year of introduction
16M
4M
1M
256K
16K
64K
1994 1996
64M
z.H. Aktualisiere! s. z.B. http://cpudb.stanford.edu (zur Methodiks. http://portal.acm.org/ft gateway.cfm?id=2181798), www.cpu-world.com o
29
3. Compiler – rechts von/oberhalb der HW-SW-Schnittstelle
Def. Ein Compiler uberfuhrt ein Programm in Quellsprache, etwain einer Problem-orientierten Programmiersprache, in ein aquivalentesProgramm in einer Zielsprache, etwa in Maschinensprache. Die Uber-setzung kann in mehreren passes erfolgen und Programme in Zwi-schensprachen erzeugen.
Referenzen:
• Aho, Sethi & Ullman: Compiler (das Drachenbuch)
• Nicolaus Wirth: Compiler; Teubner
3.1. compiler & Konsorten
compile – assemble – link – load (s. Bild COD, p156)
vgl. WinDLX mit Compiler C → DLX-Assembler
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 30
Assembler
Assembly language program
Compiler
C program
Linker
Executable: Machine language program
Loader
Memory
Object: Machine language module Object: Library routine (machine language)
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 31
• compiler passes
Untersuche EVA fur jeden compiler pass, d.h.
untersuche, welche Darstellung des Programmes ein jeder compilerpass in welche andere Darstellung des Programmes uberfuhrt undwelche Daten dabei verwendet bzw. erzeugt werden.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 32
?
?
?
?
?
?
?
�
�
�
�
�
�
�
?
6
Fehler-Datei
Quellprogramm P
lexikalische Analyse
Folge PP vonGrundsymbolen
syntaktische Analyse
abstrakter Baum A
semantische Analyse
attributierter ab-strakter Baum AA
Optimierung
modifizierter attri-butierter Baum modA
Ubersetzung
Programm PZ inZwischensprache Z
Code-Erzeugung
ObjektprogrammMP
Optimierung
ObjektprogrammoptMP
Umgebung( ”-variable)
?
�
?
�
?
�
�
�
-
-
-
�
6
Symbol-tabelle
Konstanten-tabelle
Optimierungs-tabelle
. . .
?Testhilfen-Tabelle
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 33
3.2. Code-Optimierung
• Kontext-unabhangige lokale Optimierung,
• Registerzuteilung, Variablen-Zuweisung, Parameter-Ubergabe,
• Elimination von redundanten Sprungen, von redundanten Aus-drucken, von totem Code und von gemeinsamen Teilausdrucken,
• Verbreitung von Kopien von Konstanten und Variablen – (con-stant propagation, variable propagation)
• Berechnung konstanter Ausdrucke zur Compile-Zeit (constantexpression folding),
• Reduktion der Starke (langsame Operationen durch schnellereersetzen) (strength reduction),
• Schleifen Rotation, Beseitigung von Schleifenvariablen, Aufrol-len von Schleifen (loop unrolling/unfolding),
• Optimieren von Prozedur-Aufrufen und -Rucksprung
• inline functions (C++), usw. usf.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 34
• lexikalische Analyse
Die lexikalische Analyse uberfuhrt das statement U = 2 * r * PI;
des Quell-Programmes in die Folge
(Bez,U)
(Sym,=)
(Ziffer,2)
(Sym,*)
(Bez,r)
(Sym,*)
(Bez,PI)
(Sym,;)
Dabei werden Kommentare entfernt, die Symbol-Tabelle gefullt, etc.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 35
• syntaktische Analyse
Die syntaktische Analyse erzeugt aus dieser Folge einen abstraktenBaum.
assign
ID MULU
MUL ID PI
ID ID2 r
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 36
• semantische Analyse
Die semantische Analyse versieht den abstrakten Baum mit zusatzli-chen Attributen.
assign
ID MUL
(TYPE, real)
(SYMBOL,$U)
(TYPE,real)
MUL ID
(TYPE,int)
(SYMBOL, $PI)(TYPE,real)
ID ID(SYMBOL,$2)
(TYPE,int)
(SYMBOL,$r)
(TYPE,int)
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 37
• Ubersetzung in Zwischensprache
Gegebenenfalls nach einer Optimierung wird dieser Baum in eineMaschinen-unabhangige Zwischensprache ubersetzt:
mul_int, $2, $r, $tempint
conv_ir, $tempint, $tempreal1
mul_real, $tempreal1, $PI, $tempreal2
assign, $tempreal2, $U
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 38
• Code-Erzeugung
Aus diesem Zwischencode wird nun der Maschinen-Code der Ziel-Maschine erzeugt, etwa
LOAD, R1, 2
MULINT, R1, mem[ADR[r]]
CONV_IR, R1
MULREAL, R1, mem[ADR[PI]]
STORE, R1, ADR[U]
und gegebenenfalls optimiert.
Wenn typischerweise 90% der Laufzeit in 10% des Codes verbrachtwird, ist es sinnvoll, diese 10% des Codes zuerst zu optimieren: z.B.innere Schleifen.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 39
• Beispiel: Quicksort
Verschiedene Optimierungen seien am Beispiel von Quicksort, vgl. et-wa http://wapedia.mobi/en/quicksort, demonstriert.
Fur das folgende C-Programm sei zunachst die Aufteilung des Pro-gramms in Blocke dargestellt.
z.H. Was ist ein Block? oDrei beispielhafte Optimierungsschritte werden dann am Code in Zwi-schensprache illustriert.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 40
void quicksort(m,n) // sortiere Feld a[i] fuer i=m,m+1,...,n
int m,n;
{
int i,j; int v,x;
if (n<=m) return;
// Anfang des zu optimierenden Teils
// auch andere Setzung von v moeglich, z.B. v=a[(n+m)/2]
i=m-1; j=n; v=a[i]; // B1
while (1)
{
do i++; while (a[i]<v); // B2
do j--; while (a[j]>v); // B3
if (i>=j) break; // B4
x=a[i]; a[i]=a[j]; a[j]=x;// B5
}
x=a[i]; a[i]=a[n]; a[n]=x; // B6
// Ende des zu optimierenden Teils
quicksort(m,j); quicksort(i+1,n);
}
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 41
• Beispiel: Quicksort – ohne Optimierung
nicht optimierter codei:=m-1
j:=n
t1:=4*n
v:=a[t1]
Block B1(init)
?
i:=i+1
t2:=4*i
t3:=a[t2]
if t3<v goto B2
Block B2(1. do loop)
?
�
j:=j-1
t4:=4*j
t5:=a[t4]
if t5>v goto B3
Block B3(2. do loop)
?
�
if i>=j goto B6}
Block B4 (break while)
? ?
t11:=4*i
x:=a[t11]
t12:=4*i
t13:=4*n
t14:=a[t13]
a[t12]:=t14
t15:=4*n
a[t15]:=x
Block B6
(swap)
?
t6:=4*i
x:=a[t6]
t7:=4*i
t8:=4*j
t9:=a[t8]
a[t7]:=t9
t10:=4*j
a[t10]:=x
goto B2
Block B5(swap)
�
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 42
Beispielsweise in Block B5 werden (Index-) Ausdrucke mehrfach be-rechnet: verwende also t6 bzw. t8, anstatt t7 bzw. t10 erneut zu be-rechnen.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 43
• Beispiel: Quicksort – 1. Optimierung
in B5 und B6 lokal optimierter codei:=m-1
j:=n
t1:=4*n
v:=a[t1]
Block B1(init)
?
i:=i+1
t2:=4*i
t3:=a[t2]
if t3<v goto B2
Block B2(1. do loop)
?
�
j:=j-1
t4:=4*j
t5:=a[t4]
if t5>v goto B3
Block B3(2. do loop)
?
�
if i>=j goto B6}
Block B4 (break while)
? ?
t11:=4*i
x:=a[t11]
t13:=4*n
t14:=a[t13]
a[t11]:=t14
a[t13]:=x
Block B6
(swap)
?
t6:=4*i
x:=a[t6]
t8:=4*j
t9:=a[t8]
a[t6]:=t9
a[t8]:=x
goto B2
Block B5
(swap)
�
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 44
Kopien konnen nach Datenfluß-Analyse auch Block-ubergreifend ver-breitet werden!
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 45
• Beispiel: Quicksort – 2. Optimierung
Block-ubergreifendesVerbreiten von Kopieni:=m-1
j:=n
t1:=4*n
v:=a[t1]
Block B1(init)
?
i:=i+1
t2:=4*i
t3:=a[t2]
if t3<v goto B2
Block B2(1. do loop)
?
�
j:=j-1
t4:=4*j
t5:=a[t4]
if t5>v goto B3
Block B3(2. do loop)
?
�
if i>=j goto B6}
Block B4 (break)
? ?
x:=t3
t14:=a[t1]
a[t2]:=t14
a[t1]:=x
Block B6(swap)
?
x:=t3
a[t2]:=t5
a[t4]:=x
goto B2
Block B5(swap)
�
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 46
Block-ubergreifend wurde also t4 aus B3 verwendet (das laut Daten-fluß-Analyse nicht verandert wurde), anstatt t8 erneut zu berechnen.
z.H. Wovon hangt der Beschleunigungsfaktor aufgrund dieser Opti-mierung ab? o
• Variable heißen zu einem Zeitpunkt lebendig, wenn auf sie zueinem spateren Zeitpunkt noch einmal zugegriffen wird. Elimi-nation gemeinsamer Ausdrucke kann tote Variable erzeugen, dieeliminiert werden konnen.
• Verbreiten von Kopien bereitet weitere Optimierung vor: nachAusdrucken der Form g:=f ersetze im Programm-Text g aufrechten Seiten durch f .Z.B. die Anweisung x:=t3 in B5 wird durch Verbreiten von t3
zu totem Code, der eliminiert werden kann.
• Schleifen werden durch
– Code-Verschiebung (Schleifen-unabhangige Berechnungenvor die Schleife ziehen),
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 47
– Eliminieren von Schleifen-Variablen in Ausdrucken zusam-men mit Reduktion der Starke (etwa Multiplikationen durchmehrfache Additionen ersetzen)
optimiert.Z.B. Ersetzen von t4:=4*j in B3 durch t4:=t4-4 mit der nunnotwendigen Initialisierung t4:=4*j in B1.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 48
• Beispiel: Quicksort – 3. Optimierung
Reduktion der Starkein Verbindung mit
Elimination der do loop Variablen
i:=m-1
j:=n
t1:=4*n
v:=a[t1]
t2:=4*i
t4:=4*j
Block B1
(init)
?
t2:=t2+4
t3:=a[t2]
if t3<v goto B2
Block B2(1. do loop)
?
�
t4:=t4-4
t5:=a[t4]
if t5>v goto B3
Block B3(2. do loop)
?
�
if t2>=t4 goto B6}
Block B4 (break while)
? ?
t14:=a[t1]
a[t2]:=t14
a[t1]:=t3
Block B6(swap)
?
a[t2]:=t5
a[t4]:=t3
goto B2
Block B5(swap)
�
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 49
z.H. Prufe die Kontext-Neutralitat dieses Optimierungsschrittes. oOptimierung bislang in welchen compiler passes?
Optimierende Compiler erzeugen also Code, dessen Struktur sich starkvon derjenigen des Quellprogrammes unterscheidet – mit der einenFolge, daß Fehler schwieriger zu erkennen sind.
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 50
• Code-Erzeugung & Optimierung
• Verwaltung von Variablen im Speicher
• und Binden von Variablen an Register
abhangig! Datenfluß-Analyse notwendig! Ziele?
Variable t, u, v, w, x, y, zund ihre Lebensdauern
1 t u2 t u v3 t u v w4 t u v w x5 u v w x6 u v w x y7 u w x y8 u w x y z9 u y z
↓
Zeit
↓
vier Register in Speicherrot grun blau gelb auszulagern
1 t u2 t u v3 t u v w4 t u v w x5 u v w x6 y u v w x7 y u w x8 y u z w x9 y u z
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 51
C-Programme Anweisungen in % Speicher-Zugriffe(Patterson 1982) Quellsprache Maschinensprache %Prozeduren 12 33 45Schleifen 3 32 26Zuweisungen 38 13 15Alternativen 43 21 13sonstige Befehle 4 1 1
Unterschiedliche ’architektonische’ Antworten auf
• Prozedur-Aufruf mit Parameter-Ubergabe: Register-Fenster
• Prozeß-Wechsel mit Kontext-switch: multiple Register-Satze
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 52
10 regs for global variables
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
6 regs for in/out params
10 regs for local vars
RISC I
8 Fenster a 32
32bit Register
SPARC
8 regs for global variables
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
8 regs for in/out params
8 regs for local vars
Vorteile/Nachteile?
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 53
3.3. Resumee
(optimierende) Compiler sind fur Prozessor-Leistung entscheidend!
RISC = Relegate Important Stuff to the Compiler
Ziel von Optimierung: schnellerer Code und/oder weniger Speicher!Optimierung liefert verbesserten, aber sicher nicht optimalen Code!Beschleunigungsfaktoren β aufgrund von optimierendem Compiler:
typischerweise 1.00000001 < β < 4 oder mehr!
Maschinen-unabhangige Optimierung: redundanten Code ent-fernen, toten Code entfernen, Kopien verbreiten, Berechnungenan seltener ausgefuhrte Stelle verschieben, etc.
Maschinen-abhangige Optimierung: Register-Zuweisung verbes-sern, sowohl Reduktion der Starke als auch exotische Instruk-tionen verwenden, Latenz verbergen, etc.
Z.B. loop unrolling bei Matrix-Multiplikation
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 54
3.4. z.B. Matrix-Multiplikation
• Matrix-Multiplikation – pure
C = AB fur n× n-Matrizen A = (ai,j), B = (bi,j) und C = (ci,j)
mit ci,j =∑n−1k=0 ai,kbk,j
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{sum = 0.0;
for(k=0; k<n; k++) sum += a[i,k]*b[k,j];
c[i,j] = sum;
}
• 2n3 fl op, ≈ n3 (loop increment und branch und jump)
• pro Iteration: 2 load und 2 fl op
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 55
• Matrix-Multiplikation – 4-fach
n× n-Matrizen A, B und C = AB cache lines a 4 words
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{ register float sum = 0.0;
for(k=0; k<n; k++)
{ sum+ = a[i,k]*b[k,j];
k++; sum+ = a[i,k]*b[k,j];
k++; sum+ = a[i,k]*b[k,j];
k++; sum+ = a[i,k]*b[k,j];
}c[i,j]=sum;
}
• 2n3 fl op, ≈ n3 loop increment, ≈ 14n
3 (branch und jump)
• pro Iteration: 8 load und 8 fl op
• a[i,k] aus cache line; dagegen b[k,j] problematisch!
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 56
• Matrix-Multiplikation – 4-fach, 4-fach cache s.o.
for(j=0; j<n; j++)
for(i=0; i<n; i+=4) // precompute i+1, i+2, i+3 ...
{ c[i,j] = c[i+1,j] = c[i+2,j] = c[i+3,j] = 0.0;
for(k=0; k<n; k+=4) // precompute k+1, k+2, k+3 ...
{ c[i,j] += a[i,k]*b[k,j]+a[i,k+1]*b[k+1,j]
+a[i,k+2]*b[k+2,j]+a[i,k+3]*b[k+3,j];
c[i+1,j] += a[i+1,k]*b[k,j]+a[i+1,k+1]*b[k+1,j]
+a[i+1,k+2]*b[k+2,j]+a[i+1,k+3]*b[k+3,j];
c[i+2,j] += a[i+2,k]*b[k,j]+a[i+2,k+1]*b[k+1,j]
+a[i+2,k+2]*b[k+2,j]+a[i+2,k+3]*b[k+3,j];
c[i+3,j] += a[i+3,k]*b[k,j]+a[i+3,k+1]*b[k+1,j]
+a[i+3,k+2]*b[k+2,j]+a[i+3,k+3]*b[k+3,j];
} }
• 2n3 fl op, ≈ n3 loop increment, ≈ 116n
3 (branch und jump)
• pro Iteration: einmal (8 load & 8 fl op), dreimal (4 load & 8 fl op)
• a[i,k] aus cache line; b[k,j] und c[i,j] re-used!
57
4. Befehlssatz – links von der HW-SW-Schnittstelle
Def. Der Befehlssatz (instruction set) ist die hardware/software-Schnittstelle eines Prozessors ...
Was sagt der Befehlssatz uber einen Prozessor aus?
Ein minimales Beispiel:Z.B. Der single instruction computer (SIC) kennt nur eine einzigeInstruktion: subtract and branch if negative, SBN mit
sbn a,b,c; // Mem[a]-=Mem[b]; if (Mem[a]<0) goto c. cz.H. Konstanten, Move, Addition, Multiplikation im SIC? oz.H. Inwiefern ist der SIC ein vollwertiger Computer? um welchenPreis? oz.H. Gibt es ein maximales Beispiel? o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 58
4.1. Klassifikation
Es gibt (mindestens) vier unterscheidende Merkmale fur Befehlssatze:
• wie und wieviele Operanden sind in CPU gespeichert?
• wie werden Operanden addressiert?
• welche Operationen werden auf welchen Operanden ausgefuhrt?
• welche und wieviele Formate haben die Befehle?
• Wieviele Operanden sind in CPU gespeichert?
Man unterscheidet
• Akkumulator-Architektur
• Stack-Architektur
• Register-Architektur
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 59
Akkumulator-Architektur : Ein Operand liegt implizit im Akku-mulator, das Ergebnis wird im Akkumulator abgelegt.
Beispiele sind PDP8, Motorola 6809 oder viele µ-Prozessoren.
Z.B. Die Zuweisung C = A+B lautet in Maschinen-Sprache
load A;
Add B;
Store C; cStack-Architektur : Operanden liegen implizit auf einem Stapel, Er-
gebnisse werden auf Stapel abgelegt.
Beispiele sind Burroughs B5500, HP3000 oder Pascal-Engine(vor PC), Java-VM.
Z.B. Die Zuweisung C = A+B lautet in Maschinen-Sprache
Push A;
Push B;
Add;
Pop C; c
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 60
Register-Architektur : Operanden und Ergebnisse liegen in Regis-tern.
Beispiele sind IBM /360 oder DEC VAX oder aktueller In-tel 80x86 mit 8, 68040 mit 16, PowerPC mit 32, MIPS, DLX mit32, MIPS R2000 mit 32, RISC I mit 32 von 138 oder SPARCmit 32 von 136, pico-Java mit 64, MMIX mit 256 Allzweck-Registern!64-bit AMD-Prozessoren mit 32, IA64 mit ? Allzweck-Registern(SSE, AVX)!
Z.B. Die Zuweisung C=A+B lautet in Maschinen-Sprache
register-memory
Load R1,A;Add R1,B;Store C,R1;
load/storeLoad Ra,A;Load Rb,B;Add Rc,Ra,Rb;Store C,Rc;
cZ.B. Der Intel 80x86-Befehlssatz enthalt auch PUSH und POP-Befehle. Die 80x86-Register sind nur bedingt Allzweck-Register!
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 61
cz.H. Klassifiziere die GK-Operationen der Intel 80x86-Prozessor-Familie. oz.H. Klassifiziere µ-Controller- und DSP-Befehlssatze. o
Exkurs: JavaVM – die Java Virtual Machine
ISA s.a.www.weblearn.hs-bremen.de/risse/RST/docs/JavaVM/vmspec.pdf
Das C = A+B Beispiel, hier fur die JavaVM (www.artima.com/insidejvm/ed2/jvm8.html)
iload_0 // push the int in local variable 0, i.e. A
iload_1 // push the int in local variable 1, i.e. B
iadd // pop two ints, add them, push result
istore_2 // pop int, store into local variable 2, i.e. C
weitere Beispiele zur Illustration der JavaVM-ISA
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 62
class Act {
public static void doMathForever() { int i = 0;
for (;;) { i += 1; i *= 2; }
}}
mit Byte-Code (www.artima.com/insidejvm/ed2/jvm10.html)
// Bytecode stream: 03 3b 84 00 01 1a 05 68 3b a7 ff f9
// Method void doMathForever()
// Left: offset of instruction from beginning of method
// | Center: instruction mnemonic and any operands
// | | | Right: comment
0 iconst_0 // 03
1 istore_0 // 3b
2 iinc 0, 1 // 84 00 01
5 iload_0 // 1a
6 iconst_2 // 05
7 imul // 68
8 istore_0 // 3b
9 goto 2 // a7 ff f9
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 63
class SquareCircle {
static void squareItForever() {
float f = 2;
for (;;) { f *= f; f = 0 - f; }
}
}
mit Byte-Ccode (http://artima.com/insidejvm/applets/CircleOfSquares.html)
0 fconst_2 // Push float constant 2
1 fstore_0 // Pop to local variable 0 (float f = 2;)
2 fload_0 // Push local variable 0 (float f)
3 fload_0 // Push local variable 0 (float f)
4 fmul // Pop top two floats, multiply, push result
5 fstore_0 // Pop to local variable 0 (float f *= f;)
6 fconst_0 // Push float constant 0
7 fload_0 // Push local variable 0 (float f)
8 fsub // Subtract top float from next to top float
9 fstore_0 // Pop result to local variable 0 (float f=0-f;)
10 goto 2 // Jump back to the first fload_0 instruction
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 64
4.2. Register-Architekturen
Wegen der Vorteile schneller Register in den letzten Jahren nur nochUniversal-Register-Maschinen mit – als einem wichtigen Unterschied– dyadischen oder triadischen ALU-Befehlen sowie mit verschiedenerLokalisation der Operanden:
Register-Register-Operationen – auch load/store – mit einfacher De-kodierung, einfache Code-Erzeugung, ahnliche Ausfuhrungszei-ten; jedoch mit großerer Anzahl von abzuarbeitenden Befehlen
Register-Speicher-Operationen mit Zugriffen ohne Laden; jedoch un-terschiedliche Ausfuhrungszeiten
Speicher-Speicher-Operationen mit kompaktem Code; jedoch mit un-terschiedlichen Ausfuhrungszeiten und Speicher-Engpaß.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 65
• Beispiele
gpr Architektur Jahr gpr Architektur JahrEDSAC 1 accumulator 1949 Intel 8086 1 extended accu 1978IBM 701 1 accumulator 1953 Motorola 68000 16 reg–mem 1980CDC6600 8 load/store 1963 Intel 80386 8 reg–mem 1985IBM /360 16 reg–mem 1964 MIPS 32 load/store 1985DEC PDP-8 1 accumulator 1965 HP-PA RISC 32 load/store 1986DEC PDP-11 8 reg–mem 1970 SUN SPARC 32 load/store 1987Intel 8008 1 accumulator 1972 Power-PC 32 load/store 1992Motorola 6800 2 accumulator 1974 DEC Alpha 32 load/store 1992DEC VAX 16 reg/mem–mem 1977 JAVA-VM 0 stack 1995
und zwar ist die Anzahl der Argumente arithmetisch-logischer In-struktionen im Speicher bei SPARC, MIPS, PA, PowerPC sowie Al-pha jeweils 0 von maximal 3, bei Intel 80x86 sowie Motorola 68000jeweils 1 von maximal 2 und bei der VAX 2 von maximal 2 bzw. 3von maximal 3 Operanden.
z.H. Klassifiziere die Operationen von µ-Controllern und DSPs. o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 66
4.3. Adressierung
In aller Regel arbeiten heutige Rechner byte-adressiert, und zwar
big endian Byte mit Adresse x..x00 an der most significant positionim Wortz.B. IBM /360, MIPS, Motorola, SPARC, DLX
little endian Byte mit Adresse x..x00 an der least significant posi-tion im Wortz.B. DEC VAX, DEC RISC, Intel 80x86.
Def. Ein Zugriff auf ein Datum der Lange s Byte, ab der Byte-Adresse A ist aligned genau dann, wenn A mod s = 0 sonst misaligned.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 67
• Adressierungsarten
Diverse Adressierungsarten reduzieren die Anzahl der Befehle, machenaber gleichzeitig die Decodierung und damit den Prozessor komplexerund langsamer. So braucht der Motorola MC68020 bis zu 12 Taktenur fur bestimmte Adressierungen.
Art Beispiel Bedeutung Bemerkungregister Add R4,R3 R4+=R3immediate Add R4,#3 R4+=3 immediate-Große?displacement Add R4,10(R1) R4+=M[10+R1] lokale Variableregister indirect Add R4,(R1) R4+=M[R1] per pointerindexed Add R4,(R2+R3) R4+=M[R2+R3] Feld mit Base und Indexdirect/absolute Add R4,(1001) R4+=M[1001] static datamemory indirect Add R4,@(R3) R4+=M[M[R3]] linked listauto-increment Add R4,(R3)+ R4+=M[R3] sequentieller Zugriff auf
R3+=d Feldelemente, push/popauto-decrement Add R4,-(R3) R3—=d sequentieller Zugriff auf
R4+=M[R3] Feldelemente, push/popscaled Add R4,10(R2)[R3] R4+=M[10+R2+d*R3] sequentieller Zugriff auf
lok. Daten der Lange d
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 68
Beim Entwurf ist beispielsweise festzulegen
• Anzahl zu benennender Register
• Große von Displacement und Immediate
• was noch alles?
Displacement und Immediate sind die haufigsten Adressierungsarten.
Z.B. Die Codierung der vielen Adressierungsarten der VAX illustrie-re eine ternaren Instruktion: add13 r1, 737(r2), (r3) addiert zwei32-bit integer bei einem OP-Code von 1byte. Address specifier enthal-ten in 4bit die Adressierungsart, in weiteren 4bit das zu verwendendeRegister: also 1byte fur r1, 3byte fur 737(r2), namlich 1byte specifierfur 16-bit displacement und 2byte displacement 737 und schließlich1byte specifier fur indirect (r3) – insgesamt also 6byte. MaximaleVAX-Befehlslange ist 53byte. cZ.B. DSPs mit Zugriff auf Ring-Puffer, z.B. TI cz.H. Klassifiziere die Addressierungsarten von µ-Controllern. o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 69
4.4. Operationen
Klassifikation anhand der Funktionalitat und/oder des Daten-Typs
• arithmetisch-logische Befehle, wie integer add, sub oder and, or
• Datentransfer, wie load, store oder move
• Steuerung, wie Verzweigungen, Sprunge, Unterprogramm-Sprungeund -Rucksprunge, traps
• Betriebssystem-Aufrufe, Speicher-Verwaltung
• Gleitkomma-Befehle, d.h. arithmetische Operationen auf Gleit-komma-Zahlen, wie fadd, fmult oder fdiv (vgl. COD chapter4, IEEE 754, RST/docs/goldberg.pdf)
• Dezimal, d.h. arithmetische Operationen auf BCD-Zahlen
• String, d.h. Operationen auf Zeichenketten
• Varia, d.h. I/O, Graphik, transzendente Funktionen (80x86),insert/extract at resp. from head/tail of queue (VAX), Vektor-Instruktionen (Cray), Instruktionen, die Parallelitat auf Instruk-tionsebene nutzen (Intels MMX, AMDs 3Dnow, Intels ISSE),
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 70
Befehlssatz-Erweiterungen wie SUN-SPARC visual instructionset (VISual)
• Befehlshaufigkeiten
Haufigkeiten von Befehlen und der Art ihrer Operanden (Typ, Adres-sierung, Sprungziele, ...) hangen von vielen Faktoren ab:
⇒ diverse Befehlsmixe, laut Hennessy/Patterson
DECstation 10% Verzweigungen, 40% load/store- sowie 50% ALU-Befehle
IBM /360 15% Verzweigungen, 20% load/store- und 65% ALU-Be-fehle
CA prasentiert detaillierte Messungen etwa fur Intel 8086 Prozessoren.
Das Haufige schnell machen!
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 71
• Befehlshaufigkeiten und -Merkmale
Befehle, die den Programmfluß verandern: 2/3 branches, 1/6 jumps,1/6 jump to/return from subroutine
Ziele von Verzweigungen sind meist PC-relativ (3/4 vorwarts, 1/4ruckwarts). Der mittlere Verzweigungsabstand betragt weniger als 27
Befehle (abhangig von der mittleren Befehlslange).
2/3 Verzweigungsbedingungen ist EQ/NE (zero), wobei Bedingung
• in Bedingungscode-Bits gespeichert ist(condition code etwa im Prozessor-Status-Wort),
• in allgemeinen Registern gespeichert oder in komplexeren‘test and branch’-Befehlen zur Verfugung gestellt ist.
Wie bedingen sich maximale Sprungweite bei unbedingten Sprungenund das Befehlsformat gegenseitig?
Bei Unterprogramm-Sprungen muß zumindest die Ruckkehr-Adresse– zumeist auf dem Stack – gerettet werden (wie auch die Register),gegebenenfalls auch hardware-gestutzt (z.B. per jal im DLX/MIPS)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 72
4.5. Anforderungen an Befehlssatze
Verschiedene Prozessoren haben teilweise sehr unterschiedliche Be-fehlssatze.
Z.B. Die IBM /370 hat 2-, 4- und 6-Byte-Befehle, die CDC CYBERHalb- und Ganzwort-Befehle bei einer Wortlange von 16 (?) Byte;DEC PDP11 und Motorola MC68020 Ein-, Zwei- und u.U. auch Drei-Wort-Befehle bei 2-Byte-Worten. c
4.6. z.B. DLX/MIPS-Befehlssatz
Der DLX und dem MIPS R2000 gemeinsam sind 32 Allzweck-Registera 32bit und 32 GK-Register a 32bit, load store Architektur, 32bitAdreß-Raum, flat memory;
z.H. Bewerte Umstand R0 = $0≡ 0 und DLX/MIPS-Instruktionenwie jal, jalr, b__zal. o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 73
• exemplarische, prototypische DLX/MIPS-Instruktionen
• exemplarisch fur (Klassen von) Instruktionen:
– Funktionalitat– Format/Codierung, Verwendung von op-code-Erweiterun-
gen (etwa op=0 fur bestimmte arithmetisch/logisch undSprung-Anweisungen, op=1 fur bestimme Verzweigungsan-weisungen, op=0x11 fur Gleitpunkt-Anweisungen)
• prototypisch fur Implementierung von Instruktionen
– single/multi cycle implementation– pipeline implementation
ADDI Ra, Rb, #immd // Ra = Rb+immd
ADD Ra, Rb, Rc // Ra = Rb+Rc
LW Ra, offset(Rb) // Ra = Mem[Rb+offset]
BEQ Ra, Rb, label // If (Ra == Rb) goto label (PC-relativ!)
J label // goto label
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 74
• DLX/MIPS-Formate
Byte Halfword Word
Registers
Memory
Memory
Word
Memory
Word
Register
Register
1. Immediate addressing
2. Register addressing
3. Base addressing
4. PC-relative addressing
5. Pseudodirect addressing
op rs rt
op rs rt
op rs rt
op
op
rs rt
Address
Address
Address
rd . . . funct
Immediate
PC
PC
+
+
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 75
• DLX/MIPS-(Pseudo-)Instruktionen
• – displacement als einzige Adressierungsart fur Datenper lw, lh, lb bzw. sw, sh, sb
– lhi (load high immediate der DLX) bzw. lui (load upperimmediate des MIPS) zum Laden der oberen beiden byteseines 4-byte-Wortes
– Spezialitaten wie lwl (load word left) bzw. lwr (load wordright) sowie swl (store word left) bzw. swr (store wordright) fur den unaligned memory access
• – ternare arithmetisch-logische Befehle add, sub, s__, mitden immediate-Varianten addi, subi, s__i, wobei __ furlt, le, eq, ne, ge, gt steht
• – ternare Verzweigungen wie beq, bne mit immediate-Vari-anten beqz, bnez
– Sprung-Anweisungen j, und jal (im J-Format, s. S 76)sowie – nicht PC-relativ – jr (im R-Format! s. S 76)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 76
• Befehlsformate
Alle Instruktionen sind 4byte lang, was etwa bei der Sprungziel-Adres-sierung ausgenutzt wird. Es gibt i.W. nur drei Befehlsformate:
R-type OPcode6
Rs5
Rt5
Rd5
shamt5
func6
I-type OPcode6
Rs5
Rt5
immediate16
J-type OPcode6
jump offset26
Der MIPS OpCode spezifiziert die Instruktion vollstandig, außer fur dieOpCodes
0 arithmetisch-logische Befehle mit drei Operanden in integer Registern
1 branch on Rs zero wobei cond in Rt codiert ist
16-19 = 0x10+z Instruktionen fur coprocessor z = 0, 1, 2, 3
f (float) steht fur s (single) falls rs=16 und op=17, f (float) steht fur d(double) falls rs=17 und op=17. Im Feld rs steht z fur 0, 1, 2 oder 3,f alls op=17, 18, 19 bzw. 20. Falls z=0, so spezifiziert Instr[4-0] dieInstruktion; falls z=1, so spezifiziert funct die Instruktion mit f=s; ...
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 77
10 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
10 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
10 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
16 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0 f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1 f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2 f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3 f
op(31:26) j jal beq bne blez bgtz addi addiu slti sltiu andi ori xori lui z = 0 z = 1 z = 2 z = 3 lb lh lwl lw lbu lhu lwr sb sh swl sw swr lwc0 lwc1 lwc2 lwc3 swc0 swc1 swc2 swc3
rs (25:21) mfcz cfcz mtcz ctcz copz copz
(16:16) bczt bczt
tlbr tlbwi tlbwr tlbp rte
rt (20:16)
bltz bgez bltzal bgezal
cvt.s.f cvt.d.f cvt.w.f c.f.f c.un.f c.eq.f c.ueq.f c.olt.f c.ult.f c.ole.f c.ule.f c.st.f c.ngle.f c.seq.f c.ngl.f c.lt.f c.nge.f c.le.f c.ngt.f
funct(5:0) add.f sub.f mul.f div.f abs.f mov.f neg.f
funct(5:0) sll srl sra srlv srav jr jalr syscall break mfhi mthi mflo mtlo mult multu div divu add addu sub subu and or xor nor slt sltu
if z = l, f = d
if z = l, f = s
if z = 0
0 1
funct (4:0)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 78
• z.B. DLX/MIPS-shifts
6 5 5 5 5 6mnemonic op Rs Rt Rd sa fn semantic
sll Rd, Rt, sa 0 * Rt Rd sa 0 Rd = Rt << sasllv Rd, Rt, Rs 0 Rs Rt Rd 0 4 Rd = Rt << Rssra Rd, Rt, sa 0 * Rt Rd sa 3 Rd = Rt >> sasrav Rd, Rt, Rs 0 Rs Rt Rd 0 7 Rd = Rt >> Rssrl Rd, Rt, sa 0 * Rt Rd sa 2 Rd = Rt >> sasrlv Rd, Rt, Rs 0 Rs Rt Rd 0 6 Rd = Rt >> Rs
* ≡ unused (in MIPS ISA zeroed)
• logical: shift & mit Nullen auffullen
• arithmetic: shift mit Erhalt des Vorzeichens,d.h. mit Nullen oder Einsen auffullen
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 79
• Klassifizierung des Befehlssatzes
DLX und MIPS R2000 und hoher sind typische RISC-Prozessoren
• mit wenigen ’einfachen’ Befehlen: 6bit opcode, basic instructionsonly (z.B. move Rd, Rs durch add Rd, Rs, R0 emuliert)
• mit load/store-ISA
• mit wenigen Datentypen: i.W. nur integer, float, double
• mit wenigen Adressierungsarten: nur displacement
• mit ziemlich homogenen Befehlsformaten: vgl. opcode, Rs, Rt
• mit fester Befehlslange: 32bit
z.H. Wende diese Kriterien zur Klassifikation von Befehlssatzen aufandere RISC-Prozessoren wie etwa PA, PowerPC, SPARC usw. an,s.a. http://www.weblearn.hs-bremen.de/risse/RST/docs/COD2E/WebExtns.ion/survey.pdf o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 80
4.7. z.B. Intel 80x86-Befehlssatz
Jeder Prozessor der Intel 80x86-Prozessor-Familie ist abwartskompa-tibel zu seinen Vorgangern, damit dieselbe software weitergenutzt wer-den kann (vgl. Bahring und Lieb et al sowie CA, chapter 4.4).
• Genealogie
1978 8086 wenige 16 bit Register, nicht Allzweck1980 8087 FP-co-Prozessor mit ca. 60 FP-Befehlen, stack orientiert1982 80286 24 bit Adreß-Raum, memory mapping, memory protection
1985 8038632 bit Register, 32 bit Adreß-Raumadded addressing modes, added operations ⇒ 8 Allzweck-Register
19891995
–80486 bisPentium (Pro)
nur 4 neue Befehle (multi processing, conditional move)
1997 MMX 57 neue Instruktionen: Multi Media eXtensions (SIMD)1999 ISSE Intel Streaming SIMD Extension: MMX plus SIMD float operations>2000 SSEx ISA-Erweiterungen: SSE2 (+144), SSE3 (+13)
z.H. Bewerte P4:NetBurst (2000), P4.HTT:hyperthreading (2002),trusted computing: LaGrande & TPM (2003), NX-bit (2004), multicore Processors (2005) im Hinblick auf x86-ISA o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 81
80x86-Register (ab 80386)
031
GPR 0EAX
GPR 3EBX
GPR 1ECX
GPR 2EDX
GPR 6ESI
Code segment pointerCS
Stack segment pointer (top of stack)SS
Data segment pointer 0DS
Data segment pointer 1 ES
Data segment pointer 2FS
Data segment pointer 3GS
GPR 7EDI
GPR 5EBP
GPR 4ESP
EIP Instruction pointer (PC)
EFLAGS Condition codes
Name Use
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 82
• Register
Der Intel 8080 verfugte uber acht 8-bit-Register AL, AH, DL, DH,CL, CH, BL und BH sowie 16-bit SP und IP-Register (accumulatormachine).
1978 wurden die 8-bit Register im 8086 zu 16-bit Registern AX, DX,CX und BX zusammengefaßt (AX = Akku, CX = count register(LOOP), DX = data register (mult/div), BX = base address register.Es gibt Segment-Register CS (code), SS (stack) und DS (data).
Neben Registern wie IP (instruction pointer) und FLAGS (processorstatus) gibt es weitere 16bit-Register wie SP (stack pointer) oder BP(base pointer).
Quell-Index-Register source index (SI) und Ziel-Index-Register desti-nation index (DI) verwendet etwaMOVSB: M[ES:DI]=M[DS:SI]; DI++; SI++.
soviel zum Thema Allzweck-Register!
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 83
Wegen des dedizierten Gebrauchs der Register ist der 8086 zwischenaccumulator und general purpose register machine zu platzieren,laut CA eine sogenannte extended accumulator machine.
Aus Grunden der Abwartskompatibilitat mußte aber immer noch auchauf die 8-bit Register zugegriffen werden konnen.
• Familien-Entwicklung
1980 erganzt der 8087 coprocessor 8 floating point register a 80bitund den Befehlssatz um 60 floating point instructions (extended stackarchitecture).1982 bietet der 80286 einen 24bit Adreßraum mit memory mappingand protection und dem real (addressing) mode fur die Abwartskom-patibilitat mit dem 8086.1985 erfullt dieselbe Anforderung auch der 80386 mit seinen 32-bitErweiterungen EAX, ECX, EDX und EBX der Register AX, CX, DXbzw. BX. Weiterhin gibt es zusatzliche 16-bit Segment-Register FSund GS sowie 32bit-Erweiterungen EIP, EFLAGS, ESP, EBP, ESIbzw. EDI der Register IP, FLAGS, SP, BP, SI bzw. DI.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 84
15 8 7 0 16 bitAH AL AXCH CL CXDH DL DXBH BL BX
CSSSDSESFSGS
Register
16 bit 32 bit
AX EAXCX ECXDX EDXBX EBXSP ESPBP EBPSI ESIDI EDI
FLAGS EFLAGSIP EIP
Befehlsformate
Byte\bit 7 6 5 4 3 2 1 0 Bem.1a OP-Code1b (1 oder 2 byte)2a Mod Reg R/M Mode Reg/Mem2b Scl IReg BReg ScaleIndexBase3a Address-Displacement...
...3d 0,1,2,3 oder 4 byte 3?4a Immediates...
.
.. 3?4d 0,1,2,3 oder 4 byte
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 85
Das Register EFLAGS enthalt den Prozessor-Status (PSW) u.a. mitaligned, virtual mode, nested, i/o priviledge, overflow, direction, inter-rupt enable, trap, sign, zero, auxiliary carry, parity und carry flags;das Register EIP enthalt den Befehlszahler (instruction pointer, IP).⇒ wenige, namlich nur 8 Allzweck-Register!
• Adressierung
Die 16-bit Segment-Register CS (Code), SS (Stack) sowie DS, ES,FS und GS (Daten) stehen fur die Adressierung SR:X entsprechend(SR<<4)+X
address =CS ... GSsegment +
je EAX, ..., EDX, ESP, EBP, ESI, EDI
base address + (index ∗1, 2, 4 oder 8
scale factor) +in 0, 8, 32 bit
displacement
zur Verfugung. ⇒ mindestens vier Addressierungsarten!
Intel terminology address = restrictionregister indirect register reg 6= ESP, EBPbased mode with displacement base+displacement reg 6= ESP, EBPbase plus scaled index base+2scaleindex index 6= ESPbase plus scaled index with displacement base+2scaleindex+displacement index 6= ESP
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 86
• Operationen
Dyadische arithmetisch-logischen Befehle (1.source=destination) mitallen Kombinationen bis auf Speicher–Speicher.
Befehle fur bit, byte, 16bit, 32bit, 64bit, float, double, bit-Felder bis32bit, word strings, 8bit BCD Zahlen, gepackt/ungepackt (SIMD)
⇒ dyadische Operationen auf vielen Datentypen!
• Befehlsformate
Instruktionslange zwischen einem und 12 bytes (im Fall des Intel 80486auch noch langer). OP-Code (incl. der Angabe uber die Langen derfolgenden Felder) und Register plus Adressierungsart (register, me-mory, scaled und index based) jeweils ein oder zwei Byte, Adress-Displacement und Immediates jeweils 0, 1, 2, 3 oder 4 Byte.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 87
• Befehlsprefixe
Es gibt optionale instruction-, address size-, operand size- und seg-ment override prefixes von je 1 byte Lange: instruction prefix enthaltWiederholungszahler incl. Abbruchbedingung, address- und operandsize prefix bestimmen Adreß- und Operanden-Lange (default ist 16bitim real und 32bit im protected mode), segment override prefix hebtdie implizite Segment-Register-Zuordnung fur den betreffenden Befehlauf. Prefixe machen 0 bis 4 byte aus, vgl. etwahttp://courses.engr.illinois.edu/ece391/references/patt-and-patel-appendix-B.pdf
Repeat/LockxF0 (LOCK) This prefix guarantees that the instruction will have exclusive use
of all shared memory until the instruction completes execution.xF2, xF3 This prefix allows the instruction (a string (REP/REPE/REP-
NE) instruction) to be repeated some specified number of times.The iteration count is specified by ECX. The instruction is alsoterminated on the occurrence of a specified value of ZF.
Segment overridex2E(CS), x36(SS)x3E(DS), x26(ES)x64(FS), x65(GS)
This prefix causes the memory access to use the specifiedsegment, instead of the default segment expected for thatinstruction.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 88
Operand size overridex66 This prefix changes the size of data expected for this instruction: in-
structions expecting 32-bit data elements use 16-bit data elements; in-structions expecting 16-bit data elements use 32-bit data elements.
Address size overridex67 This prefix changes the size of operand addresses expected for this in-
struction: instructions expecting a 32-bit address use 16-bit addresses;instructions expecting 16-bit addresses use 32-bit addresses.
• Beispiele fur 8086 Befehle
ADD AX,#4711 AX+=4711
JZ name bzw JNZ name if (CC=0) IP=name; bzw if (CC!=0) IP=name;
JMP name bzw JMPF name IP=name; (near bzw far)CALLF name,seg SP-=2;M[SS:SP]=CS;SP-=2;M[SS:SP]=IP+5;IP=name;CS=seg;
MOVSB M[ES:DI]=M[DS:SI]; DI++; SI++;
MOVW BX, [DI+123] BX=M[DS:DI+123];
PUSH SI SP-=2; M[SS:SP]=SI;
POP DI DI=M[SS:SP]; SP+=2;
SHL BX,1 BX*=2;
TEST DX,#42 CCflags=DX & 42
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 89
• Beispiele fur 80386 Befehle
ADD EAX,#4711 EAX+=4711
JZ name bzw JNZ name if (CC=0) EIP=name; bzw if (CC!=0) EIP=name;
JMP name bzw JMPF name EIP=name; (near bzw far)CALL name SP-=4; M[SP]=EIP+5; EIP=name;
LOOP label ECX--; if (ECX) EIP+=label;
MOVSL M[EDI]=M[ESI]; EDI++; ESI++;
MOVW EBX, [EDI+123] EBX=M[EDI+123];
PUSH ESI SP-=4; M[SP]=ESI;
POP EDI EDI=M[SP]; SP+=4;
RET EIP=M[SP]; SP+=4;
TEST EDX,#42 CCflags=EDX & 42
Die mnemonics hangen auch vom verwendeten Assembler wie etwa nasm, GNUas
etc. ab! vgl. mov, movl, movsd o.a.
• LES reg, seg:offset; loads ES=seg and reg=offset
• ADD, SUB, CMP, OR, XOR, INC, DEC auch als reg-mem-Befehle
• CBW converts lsbyte of EAX to lsword of EAX (Akku);
• LODS loads a byte, word, double word of a string in EAX (Akku)
s.a. www.weblearn.hs-bremen.de/risse/RST/docs/Intel/
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 90
• Beispiele fur Befehlsformate belegen ISA-Heterogenitat
JE
JE EIP + displacement
Offset
CALL
MOV EBX, [EDI + 45]
PUSH
PUSH ESI
ADD w
ADD EAX, #6765
Reg
4 4 8
6
8 32
5 3
4 13 32
Immediate
Condition
MOV
1
w
1
d
8 8
TEST EDX, #42
7 1 8 32
TEST Postbyte Immediatew
Reg
f.
e.
d.
c.
b.
a.
CALL
Displacementr-m
postbyte
Displacement
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 91
• Dekodierung
Intel-Befehle sind aufwandig zu decodieren:
• viele Formate
• diverse Interpretationen des Postbyte m, reg, r/m, gesteuertvon mode m und w-Feld (width) im OP-Code (Fig. 3.35)
w=1
reg
w=
0
16b 32b0 AL AX EAX1 CL CX ECX2 DL DX EDX3 BL BX EBX4 AH SP ESP5 CH BP EBP6 DH SI ESI7 BH DI EDI
m=0 m=1 m=2r/m 16bit 32bit 16bit 32bit 16bit 32bit
0 =BX+SI =EAX1 =BX+DI =ECX same addr as in m=0 with2 =BP+SI =EDX disp8 disp16 disp323 =BP+DI =EBX4 =SI =(sib) SI+disp16 (sib)+disp8 SI+disp8 (sib)+disp325 =DI =disp32 DI+disp8 EBP+disp8 DI+disp16 EBP+disp326 =disp16 =ESI BP+disp8 ESI+disp8 BP+disp16 ESI+disp327 =BX =EDI BX+disp8 EDI+disp8 BX+disp16 EDI+disp32
Im mode m=3 wird ein Register genau wie im reg-Feld adressiert.
s.a. ag-vp-www.informatik.uni-kl.de/Papers/skriptrs1/Kapitel 10.pdf
s.a. www.cs.uiuc.edu/class/sp06/cs232/lectures/Examples/x86.pdf
z.H. Klassifiziere den Intel 80x86-Befehlssatz. o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 92
• Condition Codes
CMP (compare) {reg,mem} × {reg,mem, const} \ {(mem,mem)}berechnet arg1− arg2 und setzt a,c,o,p,s,z ∈ FLAGS oder EFLAGSentsprechend (8086–80386!)
a uxiliary (hier bei BCD-Uberlauf)
c arry
o verflow
p arity
s ign
z ero
TEST {reg,mem} × {reg,mem, const} \ {(mem,mem)}berechnet arg1&arg2, loscht c sowie o und setzt p,s,z ∈ FLAGS oderEFLAGS entsprechend (8086–80386!)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 93
• Sprung- und Verzweigungsanweisungen
JMP unconditional jumpJA branch if above (c==0)&&(z==0)
JAE branch if above or equal (c==0) wie JNCJB branch if below (c==1) wie JCJBE branch if below or equal (c==1)||(z==1)
JE branch if equal (z==1)
JNE branch if not equal (z==0)
JG branch if greater (z==0)&&(s==0)
JGE branch if greater or equal (s==0)
JL branch if lower (s==1)
JLE branch if lower or equal (z==1)||(s==1)
JC,JNC branch if carry set/not set (c==1) / (c==0) JC wie JBJO,JNO branch if overflow set/not set (o==1) / (o==0)
JP,JNP branch if parity set/not set (p==1) / (p==0) PE, POJS,JNS branch if sign set/not set (s==1) / (s==0)
JZ,JNZ branch if zero set/not set (z==1) / (z==0)
JCXZ branch if counter reg zero (CX==0)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 94
• Bedingungen in Registern vs Condition Codes
DLX/MIPS Intel 80x86Verzweigungsbedingungen in Registern Verwendung von Conditioncodes
slt Ra,Rb,Rc; Ra=(Rb<Rc)
bnez Ra, lt; if (Ra) goto lt
...
...
lt:
CMP BX,CX; (BX<CX) in FLAGS
JL lt; if (’lower flags’) goto lt
...
...
lt:
• AMDs 64bit Erweiterungen
Der sledgehammer von AMD ist eine abwartskompatible 64bit Erwei-terung des Pentium. Dazu werden die 8 Allzweck-Register
EAX, ECX, EDX, EBX, ESP, EPB, ESI und EDI
auf 64bit Register
RAX, RCX, RDX, RBX, RSP, RPB, RSI und RDI
erweitert. Es gibt 8 weitere 64bit Allzweck-Register R8 bis R15.Nun sind auch die low-Bytes SPL, BPL, SIL und DIL zugreifbar.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 95
Alle 1byte OP-Codes sind vergeben: neue Register mussen per Prafixangesprochen werden. Die Kurzform der 16 Dekrement/Inkrement-Befehle werden dazu fur die sogenannten REX-Instruktionen umdefi-niert.
Ein paar andere Instruktionen werden im 64bit-Modus nicht mehr un-terstutzt. MOVSXD erweitert 32bit Daten vorzeichenrichtig auf 64bit.
Wie bei der 80x86-Familie sind alle Operationen 2-Operanden Ope-rationen. 3DNow! wurde zugunsten von ISSE2 der Kompatibilitat ge-opfert...
Der Prozessor unterstutzt im legacy mode den real, virtual und pro-tected mode, im long mode den 32bit compatibility mode und endlichden 64bit mode.
Im 64bit mode greift der Prozessor ohne Segmentierung auf den Spei-cher zu (flat memory), hierarchische Adress-Umsetzung, 4KB- oder2MB-Seiten – im Gegensatz zu den zwischen 4KB und 4GB variabelgroßen Seiten des iA64.
weitere Details in www.weblearn.hs-bremen.de/risse/RST/docs/amd64.pdf
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 96
• Slogans on 80x86 architecture
This history illustrates the impact of the ’golden handcuffs’ of compatibility!
Adding new features as someone might add clothing to a packed bag! An
architecture that is difficult to explain and impossible to love! What the
80x86 lacks in style is made up in quantity, making it beautiful from the
right perspective!
4.8. z.B. 8051
Der 8051 µ-controller ist ein typischer 8 bit CISC-Rechner der 80erJahre (vgl. z.B. www.iiit.uni-karlsruhe.de/download/Befss 8051.pdf):
• Er weist wie auch die 80x86 Prozessoren Merkmale sowohl einerAkkumulator- wie auch einer Register-Architektur auf.
• Nicht alle Register sind echte Allzweck-Register.
• Der Prozessor verarbeitet nur dyadische Operationen.
• Der Prozessor verarbeitet komplexe Instruktionen.
• Der Prozessor unterstutzt mancherlei Adressierungsart.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 97
• Der Prozessor unterstutzt in keineswegs orthogonaler Weise we-nige Datentypen.
• Der Prozessor verarbeitet Verzweigungsanweisungen unter Ver-wendung von condition codes.
• 8051-Programme sollten geringe Anforderungen an den Speicherstellen. Die Instruktionen sind also kompakt, verschieden langund sehr inhomogen.
z.H. Fuhre Belege fur obige Aussagen an. o
4.9. Resumee
Neben technologischen Randbedingungen sind damit zwei fast kon-troverse Anforderungen zu befriedigen.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 98
Fur Compiler (-Bauer) sind folgende Eigenschaften wunschenswert:
• Wenn Operation, Datentyp und Adressierungsart orthogonal,d.h. unabhangig sind, vereinfacht sich die Code-Erzeugung!
• Lieber Primitive als Konstrukte fur eine bestimmte Programmier-Sprache!
• Leitlinie: einfachere Entscheidung zwischen Code-Alternativen!
• Befehle, die zur Compile-Zeit vorhandene Information auch zunutzen erlauben!Z.B. Fur die VAX enthalt eine Maske, welche Register beiProzedur-Aufrufen zu retten sind. cZ.B. Compiler konnen MMIX mitteilen, welches Verzweigungs-verhalten zu erwarten ist. c
Z.B. Der VAX-Befehlssatz ist hoch-orthogonal, erlaubt einfache Zuord-
nung von Hochsprachen-Anweisungen zu Maschinen-Befehlen. Der Code
ist so optimiert, daß Programme nur wenig vom damals knappen Speicher
brauchen. 1978 war die VAX die erste Speicher-Speicher-Architektur. c
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 99
Fur den Prozessor (-Designer) sind folgende Eigenschaften wunschens-wert:
• leichte Dekodierbarkeit
• leichtes pipelining
• load/store Architektur
• wenige Addressierungsarten
Z.B. Wie die ersten ausgesprochenen RISC-Maschinen (IBM 801, RISC I
und RISC II in Berkeley sowie MIPS in Stanford) weisen DLX und MIPS
mit load/store-Architektur, mit 32-bit-Festformat-Befehlen und mit einem
in der pipeline-Implementierung CPI-Wert von kleiner als zwei exemplari-
sche RISC-Befehlssatze auf. c
Der Befehlssatz legt einen Prozessor weitgehend fest!Insofern ist der Befehlssatz mitentscheidend fur dieLeistung eines Prozessors!
z.H. Identifiziere andere Einflußgroßen fur die Prozessor-Leistung. o
100
5. Prozessor-Architektur
Das Material ist COD entnommen, aufbereitet und kommentiert, s.www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf
5.1. single cycle Implementierung
s. fig 5.1 – fig 5.29 (1–23 von 40)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf
5.2. multi cycle Implementierung
s. fig 5.30 – fig 5.51 (24–40 von 40)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf
Wegen der Bedeutung fur die Implementierung hier – wie auch imSkript – die Tabelle der Phasen der Abarbeitung der funf prototypi-schen Befehle, namlich ADD, LW, SW, BEQ und J, Fig. 5.35:
Abschnitt 5: Prozessor-Architektur 101
R-Type load/store branch jumpADD LW, SW BEQ J
step R-Type load/store branch jump
IFIR = Mem[PC]
PC += 4
IDA = Reg[IR[25-21]]; B = Reg[IR[20-16]]
ALUOut = PC+(sign ext(imm)<<2)
EX/BEQ & J
completion
ALUOut
= A op B
ALUOut = A
+sign ext(imm);
if (A-B==0)
PC = ALUOut
PC = PC[31-28]
||(IR[25-0]<<2)
Mem/ADD & SW
completion
Reg[IR[15-11]]
= ALUOut
MDR = Mem[ALUOut]
or Mem[ALUOut] = B
WBReg[IR[20-16]]
= MDR
5.3. Implementieren der Steuerung
s. fig C.3 – fig C.20 (1–7)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/Appendix/appndx c.pdf
Abschnitt 5: Prozessor-Architektur 102
Modellieren der Steuerung durch FSM (C.6) erlaubt diverse Imple-mentierungen
• per ROM (Moore-Automat!)
• per FSM (s. C.7)
• per PLA (s. C.14)
• per sequencer (s. C.15, C.16)
• per µ-Programm (s. C.20)
µ-Programm fur MIPS R2000 mit ADD, LW, SW, BEQ, J
ALU Register PC write sequen-
label cntrl SRC1 SRC2 control Memory control cing
Fetch Add PC 4 read PC ALU seq
Add PC Extshft read dispatch1
Mem1 Add A Extend dispatch2
LW2 read ALU seq
write MDR to Rt fetch
SW2 write ALU fetch
R-Type1 func A B seq
write ALU to Rd fetch
BEQ1 Sub A B ALU-zero fetch
JUMP1 jumpaddr fetch
103
6. pipeline-Prozessor
Das Material ist COD entnommen, aufbereitet und kommentiert, s.www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf
Materialien zur DLX (≈ MIPS) gibt es reichlich, beispielsweise
• http://de.wikipedia.org/wiki/DLX-Mikroprozessor
• Valentin Gherman: DLXSim fur Windows bzw. fur Linux zumDownload; Vorlesungsmitschrift - Kapitel 3 – Der DLX als RISC-Beispiel; Minitutorial fur DLX;Institute of Computer Science, University of Stuttgartwww.ra.informatik.uni-stuttgart.de/~ghermanv/Lehre/RO02-03
• Christian Hochberger: Mikrorechner; Fakultat Informatik, TUDresden Kapitel4-Rechner.pdf und Kapitel4-Rechner-Teil2.pdf
(allg.&DLX) www.mr.inf.tu-dresden.de/lehre ws/infet1/docs/
• Rade Kutil: DLX-Simulator fur Windows; Kurze Einfuhrung zurAssemblerprogrammierung in DLX; link auf GhermanDepartment of Computer Sciences, University of Salzburgwww.cosy.sbg.ac.at/project/tutorien/digitale/ws0708/
Abschnitt 6: pipeline-Prozessor 104
6.1. instruction pipelines
• pipeline control
s. fig 6.29 – fig 6.35 (25–31 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf
• data hazards
s. fig 6.36 – fig 6.49 (32–44 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf
• control hazards
s. fig 6.50 – fig 6.56 (45–51 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf
• superskalare Version & Leistung
s. fig 6.58 – fig 6.71 (52–59 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf
Abschnitt 6: pipeline-Prozessor 105
• superskalare Prozessoren
Def. Superskalare Prozessoren haben mehrere (unabhangige) funk-tionale Einheiten (FUs); spezielle HW (scoreboard) dient der Synchro-nisation der FUs;
Programm-Parallelitat auf Anweisungsebenewird in Parallelarbeit von FUs umgesetzt.
Z.B. superskalare Version des MIPS Prozessors durch Verdoppelungder Befehlspipeline: eine fur arithmetisch/logische Operationen undVerzweigungen und eine ausschließlich fur load/store Operationen.
z.H. Bewerte die Auslastung einer jeden pipeline. oz.H. Verbessere die Auslastung einer jeden pipeline. oz.H. Implikationen fur data hazards? fur control hazards? o
Abschnitt 6: pipeline-Prozessor 106
superskalare Erweiterung des MIPS-Prozessors
PCInstruction
memory
4
RegistersM u x
M u x
ALU
M u x
Data memory
M u x
40000040
Sign extend Sign
extend
ALU Address
Write data
Abschnitt 6: pipeline-Prozessor 107
Inkrementierung eines jeden Feldelementes um eine Konstante
; cycle
loop: lw Rt,0(Rp) ; load Mem[Rp] into temporary Rt 1
add Rt,Rt,Rs ;increment element by scalar in Rs 2
sw Rt,0(Rp) ; store result at Rp 3
addi Rp,Rp,4 ; increment pointer Rp 4
bne Rp,Re,loop; if (Rp!=Re) goto loop 5
ALU/branch load/store ; cycle
loop: lw Rt,0(Rp) ; Rt ← Mem[Rp] 1
add Rt,Rt,Rs ; increment Rt 2
addi Rp,Rp,4 ; increment Rp 3
bne Rp,Re,loop sw Rt,-4(Rp);branch and store 4
ergibt sich CPI von 45 = 0.8. Unter welchen Annahmen? c
z.H. Laßt sich obiger code fur die superskalare Erweiterung weiteroptimieren? oz.H. Welcher Beschleunigungsfaktor ergibt sich? Welche Arten vonKenngroßen gehen grundsatzlich in den Beschleunigungsfaktor ein? o
Abschnitt 6: pipeline-Prozessor 108
Abarbeitung von Befehlspaaren im superskalaren MIPS
Paare bestehen aus zwei Instruktionen, aus
• einer arithmetisch-logischen oder einer branch-Instruktion
• einer load- oder einer store-Instruktion
etwa ADD/BEQ und LW/SW.
ADD BEQ LW SW
IF IRa=Mem[PC]; IRm=Mem[PC+4]; PC+=8;
ID Aa=Reg[IRa[25-21]] Am=Reg[IRm[25-21]]
Ba=Reg[IRa[20-16]] Bm=Reg[IRm[20-16]]
target=PC+SignExt(IRa[15-0])
EX ALUouta IF (Aa==Ba) ALUoutm=Am+SignExt(IRm[15-0])
= Aa op Ba PC = target
MEM MDR=Mem[ALUoutm] Mem[ALUoutm]=Bm
WB Reg[IRa[15-11]] Reg[IRm[20-16]]
= ALUouta = MDR
Fur die Bearbeitung der ADD/BEQ- bzw. der LW/SW-Instruktionen notige, ansonsten aber
gleichnamige Register sind hier durch die Suffixe a bzw. m voneinander unterschieden.
Abschnitt 6: pipeline-Prozessor 109
6.2. functional pipelines
• arithmetische pipelines
Beispielsweise die Multiplikation einer 8-bit mit einer 4-bit unsignedinteger kann konventionell mit drei Addierern und vier Bus-gates
multiplicand multiplier
@@�� ���@
@@
8bit adder
@@�� ���@
@@
8bit adder
@@�� ���@
@@
8bit adder
bus gate????????
bus gate????????
bus gate????????
????????
????????
????????
????????
????????
???????? ?
bus gate
???????? 0
????????�
�
�
�
???︸ ︷︷ ︸12 bit product
Abschnitt 6: pipeline-Prozessor 110
und ‘pipelined’ nur mit zusatzlichen latches realisiert werden.
multiplicand
????????
multiplier
????input latches
????????1st/2nd stage latches
????????2nd/3rd stage latches
@@�� ���@
@@
8bit adder
@@�� ���@
@@
8bit adder
@@�� ���@
@@
8bit adder
bus gate????????
bus gate????????
bus gate????????
????????
????????
????????
????????
????????
????????
????????
???????? ?
bus gate
???????? 0
????????�
�
??
�
?
�
??
???
???output latch 12 bit product
Abschnitt 6: pipeline-Prozessor 111
Implementierungen der Multiplikation von ’breiteren’ Faktoren liegenauf der Hand.
Welche Vorteile/Nachteile ergeben sich zu welchen Kosten?
Def. Die Auflosung einer Operation in pipeline-Stufen heißt Granu-laritat.
Z.B. x · 123.456.789 = (x · 123)106 + (x · 456)103 + x · 789, liefertMultiplikations-pipelines unterschiedlicher Granularitat. cDef. Die Menge der verschiedenen Funktionen, die eine multifunk-tionale pipeline ausfuhren kann, bestimmt die sogenannte Variabilitateiner pipeline.
Z.B. Texas Instruments Advanced Scientific Computer, TI ASC mitdynamisch zu konfigurierender pipeline zur Abarbeitung arithmeti-scher Operationen: float +, *, Skalarprodukt . . .s. z.B. Daniel P. Siewiorek, C. Gordon Bell, Allen Newell: ComputerStructures – Principles and Examples; McGraw-Hill pp753http://research.microsoft.com/users/GBell/Computer Structures Principles and Examples/ c
Abschnitt 6: pipeline-Prozessor 112
• scheduling funktionaler Einheiten
FUs aufeinander abstimmen und synchronisieren; dabei Daten-Ab-hangigkeiten berucksichtigen!
Z.B. CDC6600 – 1964 der erste Super-Computer – mit 10 FUs: 2Addierer, 2 Inkrementierer, 2 Multiplizierer, 1 Dividierer sowie je einebranch, Boolean und shift unit.
Je FUs zwei Operanden-Register Fj und Fk, ein Ergebnis-Register Fi,Operationsmodus Fm, busy flag, read flags Rj und Rk (falls Rj bzw.Rk gesetzt sind, sind die Daten in Fj bzw. Fk valide) sowie Zeiger Qjund Qk auf die die Operanden produzierenden FUs.
je acht (Basis-) Adreß-Register A0, . . . , A7, Index-Register B0, . . . , B7
und Akkumulatoren X0, . . . , X7.
control unit (CU), scoreboard verwaltet
XBA result register designators (welche FU beliefert welches XBA-Register)
entry operand register designators (welches XBA-Register ent-
Abschnitt 6: pipeline-Prozessor 113
halt Werte fur welchen Operanden einer FU)
function unit designators Qj bzw. Qk (welche FU produziert O-peranden fur Fj bzw. Fk)
X3=F1(X1,X4), X4=F2(X5,X6) und X6=F5(.,.).
Die CDC6600 hat eine 2-stufige Befehls-pipeline:
decode welche FU liefert ihr Ergebnis an welches Register,wait, bis FU frei ist (busy flag) und dieses Register frei ist (es istnicht Ergebnis-Register einer Instruktion, die noch bearbeitet wird)issue instruction to FU
score board resolves structure hazardsand data hazards (RAW, WAR)!
X6:=X1*X2
X5:=X6+X4 (X6: RAW)
X3:=X1/X2
X5:=X4*X3 (X3: RAW)
X4:=X0+X6 (X4: WAR)
Abschnitt 6: pipeline-Prozessor 114
X3:=X1/X2;
X5:=X4*X3;X4:=X0+X6
...X3 DIVX4X5
...
ADD DIV MUL · · ·Fm DIVFj X1Fk X2Qj
Qk
RFj 1RFk 1busy 1
Abschnitt 6: pipeline-Prozessor 115
X3:=X1/X2;
X5:=X4*X3;
X4:=X0+X6
...X3 DIVX4X5 MUL
...
ADD DIV MUL · · ·Fm DIV MULFj X1 X4Fk X2 X3Qj
Qk DIVRFj 1 1RFk 1 0busy 1 1
Abschnitt 6: pipeline-Prozessor 116
X3:=X1/X2;X5:=X4*X3;
X4:=X0+X6
...X3 DIVX4 ADDX5 MUL
...
ADD DIV MUL · · ·Fm ADD DIV MULFj X0 X1 X4Fk X6 X2 X3Qj
Qk DIVRFj 1 1 1RFk 1 1 0busy 1 1 1
c
Abschnitt 6: pipeline-Prozessor 117
z.H. Untersuche WAW hazards. oCDC6600 ist erster superskalarer Prozessor.
theoretisch maximal erzielbare Leistung = #FUs × Taktrate
Z.B. Weitere Beispiele superskalarer Prozessoren sind DEC21064und DEC 21264 (Alpha), Intel i80860XP, IBM RS/6000, MotorolaMC88110, MIPS R4000 oder SUN SuperSPARC. cBem. superpipeline-Architekturen charakterisiert durch tiefe Befehls-(10 und mehr pipeline-Stufen) und Funktions-pipelines.Der Compiler muß in diesem Fall also große load und branch de-lays ausgleichen, wahrend der Compiler fur superskalar-Architekturenmoglichst keine Paare, Tripel o.a. abhangiger Befehle erzeugen sollte,damit die funktionalen Einheiten stets ausgelastet sind. ◦Z.B. DEC 21064 (Alpha) und MIPS R4000 gelten als sowohl super-skalar als auch superpipelined. c
Abschnitt 6: pipeline-Prozessor 118
• pipeline-Vektor-Prozessoren
Vektor-Operationen wie ~z = ~a · ~x + ~y mit ~a, ~x, ~y, ~z ∈ IRn entwederdurch n Rechen-Elemente – das i-te Rechen-Element berechnet ~zi =~ai ·~xi+~yi – effektiv ausfuhren oder eben durch pipeline-Multiplizierermit nachgeschaltetem pipeline-Addierer.
∗ +
ai
xi
yi
FUi
zi+
∗ai
xi
yi
zi
Wichtigste Beispiele sind die SAXPY- bzw. DAXPY-Benchmarks,d.h. single/double a*X[i]+Y[i].
Anwendungen?
Abschnitt 6: pipeline-Prozessor 119
Def. pipeline-Vektor-Prozessoren verfugen typischerweise uber spe-zialisierte, dynamisch konfigurierbare pipelines.Vektor-Operationen effizient ausfuhren: per komponentenweiser arith-metischer Operation, per compress(~v,~b), expand(~v,~b), merge(~v, ~w,~b),
gather(~v,~i) mit Boole’schen Vektoren ~b und Index-Vektoren ~i, perspeziellen triadischen Operationen, z.B. D[i]:=A[i]*B[i]+C[i].
Spezielle Vektor-Register, caches und haufig verschrankte Speicher un-terstutzen die Vektor-Verarbeitung in Vektor-Maschinen.
Typische Vektor-Anwendungen sind LGS (z.B. per Gauß oder Gauß-Seidel), Differentialgleichungssysteme (DGlS z.B. per Runge-Kutta),finite Elemente Methode (FEM) usw.
Z.B. ILLIAC-IV, (CDC-) Star-100, TI ASC, CRAY-1 sowie die NECSX-, Siemens VPx und Fujitsu VPx-EX-Familien mit den gemeinsa-men Merkmalen: Befehls-pipeline, mehrere pipeline-FUs, verschrank-ter Speicher (interleaved memory), unabhangige Befehls-caches (in-struction cache) und Daten-caches (data cache) sowie mehrfache Bus-Systeme (multiple buses). c
Abschnitt 6: pipeline-Prozessor 120
JahrAnzahlVektor-Register
Vektor-RegisterLange
funktionale Vector Einheitenloadstoreunits
Cray 1 1976 8 64 6× (+, ∗, inv, logic, shift) 1
Cray X-MPY-MP
19831988
8 64 8× (+, ∗, inv, 2× logic, shift) 2×load1×store
Cray 2 1985 8 64 5× (+, ∗,√, inv, logic) 1
FujitsuVP100/200
1982 8–256 32–1024 3× (+, ∗, /) je GK und FK 2
HitachiS810/820
1983 32 256 4× (2× (FK+, logic), ∗+, ∗/+) 4
Convex C1 1985 8 128 4× (+, ∗, /, FK-logic) 1
NEC SX/2 198488K
256konfig
16× (4× (+, ∗, /, shift, FK+, logic)) 8
DLXV 1990 8 64 5× (+, ∗, /, FK+, logic) 1
z.H. Fortschreiben! o
Abschnitt 6: pipeline-Prozessor 121
Z.B. Die DLX kann uber Kommando-Zeilen-Parameter zur Vektor-Maschine DLXV mitVektor-Vektor-Operationen (+,−, ∗, /), z.B. ADDV V1,V2,V3,Skalar-Vektor-Operationen (+,−, ∗, /), z.B. ADDSV V1, F1, V2,sowie den Lade-Vektor-Operationen, z.B. LV V1,R1 (load V1 aus demSpeicher ab Adresse R1)und Speicher-Vektor-Operationen, z.B. SV V1,R1 (store V1 im Spei-cher ab Adresse R1) konfiguriert werden.
Weitere Operationen wie beispielsweise Boole’sche Vektor-Operatio-nen oder das Setzen und Auslesen von Vektor-Langen- bzw. Vektor-Masken-Registers. cZ.B. CNAPS coprozessor board von Adaptive Solutions mit 64 bzw.256 Prozessoren (s. Labor ELKA). c
Vektorisierung erzielt verhaltnismaßig große Leistungs-steigerungen mit verhaltnismaßig geringen Mehrkostenfur hardware und Compiler.
Abschnitt 6: pipeline-Prozessor 122
Vektor-Instruktionen im Mikro-Programm reduzieren Speicher-Zugriffe; Schleifen werden im Mikro-Programm i.a.R. schneller aus-gefuhrt als solche im Assembler-Programm.
HW-Verarbeitung entsprechender Vektor-Instruktionen reduziertebenso Speicher-Zugriffe und eliminiert daruberhinaus den Schleifen-Overhead.
Z.B. fruhe Vektor-Maschinen: STAR100 und CYBER203 – mit ver-schrankten Speichern, multiplen Bussen, E/A-Prozessoren und Strom-Einheit, stream unit (Mikro-Controller, Register-Banke, Befehlskeller,Dekoder, Steuer-Vektor(?)) und zwei pipeline-Prozessoren, einem GK-Adder und -Multiplier sowie einem GK-Adder und -Divider.
6-stufiger Adder, 7-stufiger Multiplier bei 40ns Zykluszeit. n1/2 ≈ 200!Befehlskeller mit 16 128bit Wortern;
Pipeline-Inhalte werden in spezielle Unterbrechungsregister gerettet.Heute sind Vektor-Operationen meist ununterbrechbar; bei Unterbre-chungen lost das exception handling z.B. ein roll back aus. cZ.B. CRAY-1: load/store-Architektur, je acht Vektor-Register (V),
Abschnitt 6: pipeline-Prozessor 123
Skalar-Register (S) und Adreß-Regsister (A) mit einem Adreß-Mul-tiplizierer, z.B. fur mehrdimensionale Felder, und Funktionseinheitenals pipelines mit 2 bis 14 Stufen.
Verketten von Operationen, also mehrere Operationen nacheinanderauf einem Datenstrom auszufuhren (z.B. fur LGS).
vier Befehlspuffer fur je 64 Befehle;
scoreboard Einheit synchronisiert durch Register-Verriegelung die di-versen Funktionseinheiten. c
Abschnitt 6: pipeline-Prozessor 124
• Leistungsbewertung
Sei tcond die fur die Konditionierung der pipeline notwendige Zeit,tflush die Durchflußzeit (flushing time), d.h. die Zeit fur den Durchlaufdurch die (konditionierte) pipeline, also die Zeit vom Holen der Argu-mente bis zum Wegspeichern der Ergebnisse, und tclock die Zyklus-Zeit(clock time) der Verarbeitungselemente, also die Verarbeitungszeit ei-ner jeden Stufe der pipeline.Dann ist tcond + tflush die Ausfuhrungszeit einer Skalar-Operation undn Skalar-Operationen dauern tcond + n · tflush. Also ergibt sich eineAusfuhrungszeit Tscal(n) = tflush +
tcondn pro Operation bei n Opera-
tionen.
Falls die pipeline in jedem Zyklus, also alle tclock Zeiteinheiten einErgebnis produziert und falls in jedem Zyklus Operanden geholt undErgebnisse abgespeichert werden, so ist tcond + tflush +(n−1) · tclock =tconf + n · tclock mit tconf = tcond + tflush − tclock die Zeit fur die Bear-beitung eines Vektors der Lange n durch eine Vektor-Operation und
Abschnitt 6: pipeline-Prozessor 125
damit
Tvect(n) = tclock +tconf
ndie Ausfuhrungszeit pro Vektor-Element bei Vektor-Lange n. Die Leis-tung P der pipeline, also die Anzahl von Operationen pro Zeiteinheitist dann
P =P (n)=1
Tvect(n)=
1
tclock(1 +tconftclock
1n )
Fur n → ∞ ergibt sich die theoretische Maximal-Leistung P∞ =1
tclockund fur n1/2 =
tconftclock
die halbe Maximal-Leistung P (n1/2) =
P (tconftclock
) = 1tclock(1+1) = 1
2 P∞ und somit auch P = P (n) = P∞n
n+n1/2.
Def. nx und n1/2 messen die Nutzlichkeit von Vektor-Prozessoren:
nx =Vektor-Lange, so daß Skalar-
= Vektor-Geschwindigkeit, Tscal(nx) = Tvect(nx)
n1/2 =Vektor-Lange, so daß Vektor-Geschwindigkeit
= 12
asymptotische Vektor-Geschwindigkeit
Abschnitt 6: pipeline-Prozessor 126
so daß
Tvect(n1/2) =Tvect(∞)
2nx ist der break even point der Vektorisierung.
Je kleiner nx und n1/2 ausfallen, um so nutzlicher ist Vektorisierung.Wie schon bei pipeline-Rechnern muß hier das Speicher-System erstrecht mithalten konnen(Daumen-Regel: Speicher-Bandbreite = dreifache pipeline-Rate).
Z.B. Die Vektor-Ausfuhrung fur n Elemente brauche tconf + n tclock
Zeiteinheiten oder Zyklen, die Skalar-Ausfuhrung n tscal. Vektorisie-rung empfiehlt sich also fur tconf + n tclock < n tscal oder eben fallsn > tconf/(tscal − tclock).Fur die CRAY-1 gilt tconf = 5, tclock = 1 sowie tscal = 2 und damitn > 5. c
127
7. Speicher-Hierarchie
Welche Bestandteile hat die Speicher-Hierarchie?
Memory
CPU
Memory
Size Cost ($/bit)Speed
Smallest
Biggest
Highest
Lowest
Fastest
Slowest Memory
Abschnitt 7: Speicher-Hierarchie 128
Daten stehen auf einer Ebene jeweils in Kopie aus der darunterliegen-den Ebene zur Verfugung:
Processor
Data are transferred
Abschnitt 7: Speicher-Hierarchie 129
Inwiefern ist die Speicher-Hierarchie eine Pyramide?
CPU
Level n
Level 2
Level 1
Levels in the memory hierarchy
Increasing distance from the CPU in
access time
Size of the memory at each level
Abschnitt 7: Speicher-Hierarchie 130
• Kenngroßen
etwas aktuellere Angaben zur Speicher-Hierarchie (2002 und 2005)
17.05.05 Dr. Jörg Gruner 7
Betriebssysteme
• Speicherverwaltung
– Speicherhierarchie
Register
Cache
Main Memory
Disk
Tape
1 ns
2 ns
10 ns
10 ms
100 s
Zugriffszeit
< 1 KB
< 2 MB
256-2048 MB
40-400 GB
> 0,5 TB
Kapazität
Abschnitt 7: Speicher-Hierarchie 131
• Lokalitat
Die Speicher-Hierarchie funktioniert nur aufgrund der Lokalitat vonZugriffen auf die jeweils unterliegende Speicher-Ebene:
zeitliche Lokalitat: auf den Zugriff auf ein Datum folgt mit hoherWahrscheinlichkeit bald ein erneuter Zugriff.
raumliche Lokalitat: auf den Zugriff auf ein Datum folgt mit hoherWahrscheinlichkeit bald ein Zugriff auf ein benachbartes Datum.
Der Nutzen der Speicher-Hierarchie beruht wieder auf einer 90/10-Faustregel: ein Programm verbraucht 90% der Laufzeit in 10% desCodes.
z.H. Wie sieht die 90/10-Faustregel fur Daten aus? o
z.H. Verifikation? Bedeutung? Konsequenz? o
Abschnitt 7: Speicher-Hierarchie 132
7.1. caching
Platzierung von Daten im cache:
suchen & finden oder ggfls. nachladen & verdrangen
a. Before the reference to Xn
X3
Xn – 1
Xn – 2
X1
X4
b. After the reference to Xn
X3
Xn – 1
Xn – 2
X1
X4
Xn
X2X2
Abschnitt 7: Speicher-Hierarchie 133
• direct mapped caches
Jeder Speicher-Adresse entspricht genau eine cache line!
00001 00101 01001 01101 10001 10101 11001 11101
000
Cache
Memory
001
01
0011
100
101
110
111
Abschnitt 7: Speicher-Hierarchie 134
Identifiziere Kenngroßen und Arbeitsweise der Implementation einesdirect mapped caches!
Address (showing bit positions)
20 10
Byte offset
Valid Tag DataIndex
0
1
2
1021
1022
1023
Tag
Index
Hit Data
20 32
31 30 13 12 11 2 1 0
Abschnitt 7: Speicher-Hierarchie 135
B direct mapped cache: one word blocks
trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit8 1-Wort-Blocken
5 6 14 25 15 5 6 15 26 16 5 60 161 252 26345 5 5 56 6 14 6 67 15 15
m m m m m t m t m m t t
Adresse mod 8 4 hits
Keine raumliche Lokalitat! Keine Verdrangungsstrategie!
Abschnitt 7: Speicher-Hierarchie 136
Z.B. DEC-Station mit direct mapped cache c
Address (showing bit positions)
16 14 Byte offset
Valid Tag Data
Hit Data
16 32
16K entries
16 bits 32 bits
31 30 17 16 15 5 4 3 2 1 0
Abschnitt 7: Speicher-Hierarchie 137
B direct mapped cache: four word blocks
erst ganze Blocke in jeder cache line erlauben, auch raumliche Loka-litat zu nutzen!
Address (showing bit positions)
16 12 Byte offset
V Tag Data
Hit Data
16 32
4K entries
16 bits 128 bits
Mux
32 32 32
2
32
Block offsetIndex
Tag
31 16 15 4 32 1 0
Abschnitt 7: Speicher-Hierarchie 138
trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit4 2-Wort-Blocken
5 6 14 25 15 5 6 15 26 16 5 60 (24,25) (16,17)1 (26,27)2 (4,5) (4,5) (4,5)3 (6,7)(14,15) (14,15) (6,7)(14,15) (6,7)
m m m m s t m m m m t m
2 mal temporal hits1 mal spatial hits
(Adresse/2) mod 4 3 hits
Keine Verdrangungsstrategie!
Abschnitt 7: Speicher-Hierarchie 139
hits bzw. misses in Abhangigkeit von cache- und Block-Große
1 KB
8 KB
16 KB
64 KB
256 KB
256
40%
35%
30%
25%
20%
15%
10%
5%
0%
Mis
s ra
te
64164
Block size (bytes)
Abschnitt 7: Speicher-Hierarchie 140
• fully associative caches
Eroffnen von Freiheiten, Blocke in cache lines zu platzieren!
1
2Tag
Data
Block # 0 1 2 3 4 5 6 7
Search
Direct mapped
1
2Tag
Data
Set # 0 1 2 3
Search
Set associative
1
2Tag
Data
Search
Fully associative
macht Verdrangungsstrategie und hardware-Aufwand notwendig:
• random • fifo • lru
Abschnitt 7: Speicher-Hierarchie 141
• set associative caches
verschiedene Assoziativitat bei fester cache-Netto-Kapazitat
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
Eight-way set associative (fully associative)
Tag Data Tag Data Tag Data Tag Data
Four-way set associative
Set
0
1
Tag Data
One-way set associative (direct mapped)
Block
0
7
1
2
3
4
5
6
Tag Data
Two-way set associative
Set
0
1
2
3
Tag Data
Abschnitt 7: Speicher-Hierarchie 142
B set associative cache: one word blocks
trace: Zugriffe auf einen 2-assoziativen cache mit 1-Wort-Blocken(2-assoziativ, also 2 Blocke pro set)
5 6 14 25 15 5 6 15 26 16 5 6set 0 16
set 1 5 5 525
set 2 6 6 614 26
set 3 15 15
m m m m m t t t m m t t
Adresse mod 4 5 hits
Keine raumliche Lokalitat! least recently used, LRU!
Abschnitt 7: Speicher-Hierarchie 143
B set associative cache: two word blocks
trace: Zugriffe auf einen 2-assoziativen cache mit 2-Wort-Blocken(2-assoziativ, also 2 Blocke pro set)
5 6 14 25 15 5 6 15 26 16 5 6set 0 (4,5) (4,5) (4,5)
(24,25) (16,17)set 1 (6,7) (6,7) (26,27)
(14,15) (14,15) (14,15) (6,7)m m m m s t t t m m t m
(Adresse/2) mod 2 5 hits
least recently used, LRU!
Abschnitt 7: Speicher-Hierarchie 144
Implementation eines 4-assoziativen caches
Address
22 8
V TagIndex
012
253254255
Data V Tag Data V Tag Data V Tag Data
3222
4-to-1 multiplexor
Hit Data
123891011123031 0
Abschnitt 7: Speicher-Hierarchie 145
Performance set-assoziativer caches
0%
3%
6%
9%
12%
15%
Eight-wayFour-wayTwo-wayOne-way
1 KB
2 KB
4 KB
8 KB
Mis
s ra
te
Associativity 16 KB
32 KB
64 KB
128 KB
Abschnitt 7: Speicher-Hierarchie 146
Performance set-assoziativer caches
20%
Mis
s ra
te p
er t
ype
2%
4%
6%
8%
10%
12%
14%
1 4 8 16 32 64 128
One-way
Two-way
Cache size (KB)
Four-way
Eight-way
Capacity
Abschnitt 7: Speicher-Hierarchie 147
• cache-Schreibstrategien
Prozessor, DMA-hardware, EA-Prozessoren und erst recht andere Pro-zessoren greifen unabhangig auf einen gemeinsamen cache/Speicher zu⇒ Konsistenz-Problem!
Def. Datenkonsistenz von cache und Speicher ⇐⇒ cache undSpeicher-Ausschnitt stimmen stets uberein.Def. Datenkoharenz von cache und Speicher ⇐⇒ stets wird derzuletzt geschriebene Wert gelesen.
write through immer zugleich in den cache und in den Speicher zuschreiben garantiert Konsistenz!
copy back erst beim Verdrangen der (modifizierten) Daten (dirtybit) aus dem cache diese in den Speicher zuruckzuschreiben ga-rantiert Koharenz!
Abschnitt 7: Speicher-Hierarchie 148
Koharenz per Schnuffel-Logik:falls die zu schreibende Speicher-Adresse am Bus im cache vorkommt,valid=false (also cache miss). (Aufwand?)
Ebenso bei Prozeß-Wechsel alle cache lines oder per Prozeß-Kennungnur die des noch aktuellen Prozesses invalidieren (cache flush).
cache miss beim Schreiben (miss on write):
fetch on write oder write allocate der entsprechende Block wirdgeladen und danach (ohne miss) geschrieben
write around oder no write allocate der entsprechende Block wirdunter Umgehung des caches in den Hauptspeicher geschrieben.
z.H. Beschleunigungsfaktor aufgrund des Verzichts auf Konsistenzzugunsten von Koharenz oZ.B. s.a. Optimierung der Matrix-Multiplikation (nur) bei Beruck-sichtigung des caching in Abschnitt 3.4, S. 54ff cvgl. www.weblearn.hs-bremen.de/risse/RST/docs/cacheSim.pdf
Abschnitt 7: Speicher-Hierarchie 149
• Havard-Architektur
Def. Maschinen mit getrennten Speichern (damals) bzw. caches(heute) fur Instruktionen und Daten weisen die sogenannte Havard-Architektur auf.
Z.B. 1997 COD2e pp 611–6141st level caches Pentium Pro vs PowerPC 604
feature Pentium Pro PowerPC 604organisation split I-cache and D-cachecache sizes 8KB each 16KB eachassociativity 4-associativereplacement pseudo LRU LRUblock size 32Bwrite policy write back write back/through
2nd level caches Pentium Pro vs PowerPC 604:256KB or 512KB instructions and data c
Abschnitt 7: Speicher-Hierarchie 150
7.2. Speicher: SRAM vs DRAM
Tue2Nov04 From Lect12 Lect18Slide 85
DRAM (Dynamic Random Access Memory)
a dynamic RAM cell for one bit• bit stored as charge in capacitor• optimized for density (1 transistor, 6 for SRAM)– capacitor discharges on a read (destructive read)
• read is automatically followed by a write (to restore bit)– charge leaks away over time
• refresh by reading/writing every bit once every 5ms (row at a time)• access time (time to read)• cycle time (minimum time between reads) > access time
“word select line”
“bitline” (datain/out)
pass transistor
capacitor
©2004 by WiscGang & Wittie
Abschnitt 7: Speicher-Hierarchie 151
Tue2Nov04 From Lect12 Lect18Slide 86
DRAM Organization
square row/column matrixmultiplexed address linesinternal row bufferoperation
• put row address on lines• set row address strobe (RAS)• read row into row buffer• put column address on lines• set column address strobe (CAS)• read column bits out of row buffer
write row buffer contents to row• rewrite since destructive read
data pin interface usually narrow
©2004 by WiscGang & Wittie
Abschnitt 7: Speicher-Hierarchie 152
Z.B. 4M×1 DRAM, multiplexed address (22bit = 11bit + 11bit)
RAS/CAS
Address[10–0]
Row decoder
11-to-2048
2048 × 2048 array
Column latches
Mux
Dout
statt immer nur auf nur ein bit einer ganzen Zeile zuzugreifen:page mode bzw. static column mode: mehrere bits bei fester row-address oder nibble mode: ein nibble bei fester row-address c
Abschnitt 7: Speicher-Hierarchie 153
Tue2Nov04 From Lect12 Lect18Slide 87
DRAM Specs
density: +60% annual increase (post ‘92: 40%)• Moore’s law: doubles every 18 months (post ‘92: 24 months)
speed: only 5% annual improvement in access time• much flatter improvement
70ns55ns3.8ns1Gb200480ns60ns5ns512Mb200290ns65ns7ns256Mb2000100ns70ns10ns128Mb1998110ns75ns12ns64Mb1996120ns90ns15ns16Mb1992165ns110ns20ns4Mb1989190ns135ns25ns1Mb1986
Cycle TimeAccess TimeMin Clock#bits/chip1st Year
©2004 by WiscGang & Wittie
Abschnitt 7: Speicher-Hierarchie 154
7.3. Speicher-Organisation
Anforderung an Speicher-Verwaltung/Memory Management
• hardware-Unabhangigkeit (Speicher-Große)
• effiziente Nutzung des physikalischen Speichers
• schneller context switch
• Protection innerhalb und zwischen Prozessen:code/data, user/system, multiprogramming
• Verschiebbarkeit (relocatable code)
• sharing memory regions:sharing code (reentrant programs),sharing data (inter-process communication)
• dynamic allocation of new memory:dynamic sizing of existing memory (heap, stack)
Abschnitt 7: Speicher-Hierarchie 155
• virtueller Speicher
Obige Anforderungen werden durch virtuellen Speicher bedient!
Physical addresses
Disk addresses
Virtual addresses
Address translation
Abschnitt 7: Speicher-Hierarchie 156
Vergleich cache vs memory
H.&P. cache/memory physical/virtual 1990proccache
memory
cachememory
hard diskblock 4-128B 512B-8KB pagehit time 1 cycle 110 cycles hit timemiss time 8-32 cycles 100K-600K cycles miss timeaccess time 6-10 cycles 100K-500K cycles access timetransfer time 2-22 cycles 10K-100K cycles transfer timemiss rate 10−2 – 2 · 10−1 10−7 – 10−5 miss ratecache size 1KB – 256KB 4MB – 2GB memory size
typical access times (1997):SRAM 5–25ns DRAM 60–120ns Disk 10–20 Mio ns
Abschnitt 7: Speicher-Hierarchie 157
• paging
Seiten-Tabelle/page table – Verwendung
Physical memory
Disk storage
Valid
1
1
1
1
0
1
1
0
1
1
0
1
Page table
Virtual page number
Physical page or disk address
Abschnitt 7: Speicher-Hierarchie 158
Seiten-Tabelle/page table – schematisch
Page offsetVirtual page number
Virtual address
Page offsetPhysical page number
Physical address
Physical page numberValid
If 0 then page is not present in memory
Page table register
Page table
20 12
18
31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0
29 28 27 15 14 13 12 11 10 9 8 3 2 1 0
Abschnitt 7: Speicher-Hierarchie 159
paging – Implementierung
3 2 1 011 10 9 815 14 13 1231 30 29 28 27
Page offsetVirtual page number
Virtual address
3 2 1 011 10 9 815 14 13 1229 28 27
Page offsetPhysical page number
Physical address
Translation
Konsequenzen aus der gigantischen page fault penalty:
• ’große’ pages – aber Verschnitt und Transfer-Zeit
• Verringern der page fault rate per optimaler Verdrangungsstra-tegie (fully associative, LRU)
• handling of page faults per software, i.e. os
• write back strategy
Abschnitt 7: Speicher-Hierarchie 160
Große der Seiten-Tabelle!
z.H. Große der page table als Funktion der page size! o
Reduktion des Speicherbedarfs der page tables
• dynamisch wachsende page tables(eine bzw. zwei pro Prozess, falls Adreß-Raum in eine bzw. zweiRichtungen wachst)
• inverted page table / hashing
• hierarchy of page tables
• paging the page tables
Abschnitt 7: Speicher-Hierarchie 161
B Ersetzungsstrategien bei paging
opt optimal – wenn auch illusionar – ware, genau die Seite zu erset-zen, die in Zukunft fur die langste Zeit nicht referenziert wird!nur zum Zweck des Vergleichs!
FIFO first in – first out (alteste ersetzen)
LRU least recently used: am langsten nicht referenziert ersetzen
clock Ring-Puffer-Variante von FIFO: use bit:=1 bei Referenz, erset-ze nachste page mit use bit==0, if (use bits==1) use bit=0;
working set Menge der Seiten wahrend der letzten n Referenzen /wahrend der letzten n virtuellen Zeit-Einheiten eines Prozesses
weitere second chance, not used recently, NUR . . .
zur Illustration diene die folgende Sequenz von Referenzen
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
und zwar fur einen physikalischen Speicher mit drei oder vier pages= frames = Kacheln.
Abschnitt 7: Speicher-Hierarchie 162
B opt
frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 1 3b 2 2 2 4c 3 4 5 5
m m m m h h m h h m m h
7pagefaults
frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 1 4b 2 2 2c 3 3d 4 5 5
m m m m h h m h h h m h
6pagefaults
Haufigkeit berucksichtigen, Losung nicht eindeutig,ohne Orakel nicht implementierbar!
Abschnitt 7: Speicher-Hierarchie 163
B FIFO
frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 4 5 5b 2 1 1 3c 3 2 2 4
m m m m m m m h h m m h
9pagefaults
frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 5 4b 2 2 1 5c 3 2d 4 3
m m m m h h m m m m m m
10pagefaults
aber: auf alte Seiten kann durchaus haufig zugegriffen werden!FIFO ist per Pointer einfach zu implementieren!Belady’s Anomalie: mehr frames 6⇒ weniger page faults
Abschnitt 7: Speicher-Hierarchie 164
B LRU
frame 1 2 3 4 1 2 5 1 2 3 4 51 1 4 5 32 2 1 1 43 3 2 2 5
m m m m m m m h h m m m
10pagefaults
frame 1 2 3 4 1 2 5 1 2 3 4 51 1 1 1 52 2 2 23 3 5 44 4 3
m m m m h h m h h m m m
8pagefaults
page fault rate kaum hoher als bei opt,allerdings aufwandige Implementierung!
Abschnitt 7: Speicher-Hierarchie 165
• segmentation
segments = logical units of programs, individual base address, length,protection etc. in segment descriptor table, z.B. code, data,stack, heap
Z.B. Intel 80x86 segment registers: CS, DS, ES, SS ... plus Se-gReg:Offset addressing, VAX c
virtual address = segment, offset
if (offset>segment.length) protection fault
physical address = segment.base address + offset
• address translation per adder
• Nutzung des physikalischen Speichers: ohne interne aber mitexterner Fragmentierung (splinters, crunching), Segmente sindganz oder garnicht geladen!
• schneller context switch
• Protection: differenziert (f/r/w/e), einfach
Abschnitt 7: Speicher-Hierarchie 166
• memory sharing: simpel wie protection
• dynamic allocation of new memory, dynamic sizing of existingmemory: schwierig
B paging vs segmentation
paging segmentation1-Wort-Adressen 2-Wort-AdressenHW-orientiert SW-orientiertgroße page table oder hierarchy kleine segment descriptor tableSeiten fester Große Segmente variabler Große (code/data)einfache Blockersetzung schwierige Blockersetzungschwierige Protection einfache Protectioninterne Fragmentierung externe Fragmentierungungenutzter Teile einer Seite ungenutzte Teile des HauptspeichersNachteil: thrashing Nachteil: splinters, zusatzlicher Adderaugmentation einfach augmentation schwierigresizing einfach resizing schwierig (crunching)
z.H. context switch? o
Abschnitt 7: Speicher-Hierarchie 167
B Segmentierung: Er- und Einsetzungsstrategien
unvermeidliche Uberschneidungen mit der Lehrveranstaltung EBS!
klassische Einsetzungsstrategien bei segmentationanhand einer verzeigerten Liste von freien Bereichen
first fit erster Freibereich, der groß genug ist
next fit nachster erster Freibereich, der groß genug ist
best fit kleinster Freibereich, der groß genug istgesamte Liste muss durchsucht werden; sortiere Freibereich nach derGroße.
worst fit großter Freibereichgesamte Liste muss durchsucht werden.
quick fit fur verschiedene Großen eigene Listen freier Bereiche
Buddy-lists Allokation von Speicher in Blocken mit Kapazitaten von 2n
Speicher-Einheiten fur n = min,min+ 1, . . . ,max
falls Speicher-Anforderung nicht bedient werden kann:Zusammenschieben und Verschmelzen der freien Bereiche= Kompaktierung (wie Festplatten-Defragmentierung)
Abschnitt 7: Speicher-Hierarchie 168
17.05.05 Dr. Jörg Gruner 37
Betriebssysteme
• Direkte Speicherbelegung
– Belegungstrategien
• FirstFit– Der erste, ausreichend große Speicherbereich, der frei ist, wird
belegt.– Dies führt meist zu einem Restspeicherbereich, der unbelegt
bleibt.
Speicheranforderung
freie Speicherbereiche
Belegung
9 KB 7 KB 12 KB
7 KB 4 KB 11 KB 22 KB 12 KB
7 KB 2KB9 KB4 KB 12 KB 10 KB 12 KB
17.05.05 Dr. Jörg Gruner 38
Betriebssysteme• Direkte Speicherbelegung
– Belegungstrategien• NextFit
– Die FirstFit-Strategie führt dazu, daß in den erstenSpeicherbereichen nur Reststücke (Verschnitt) verbleiben, dieimmer wieder durchsucht werden.
– Um dies zu vermeiden geht man bei der NextFit-Strategie analogder FirstFit-Strategie vor, setzt aber bei dem wiederholtenDurchlauf die Suche an der Stelle fort, an der bei demvorangegangen Durchlauf die Suche beendet wurde.
Speicheranforderung
freie Speicherbereiche
Belegung
9 KB 7 KB 12 KB
7 KB 4 KB 11 KB 22 KB 12 KB
7 KB 2KB9 KB4 KB 15 KB 12 KB7 KB
Abschnitt 7: Speicher-Hierarchie 169
17.05.05 Dr. Jörg Gruner 39
Betriebssysteme
• Direkte Speicherbelegung
– Belegungstrategien
• BestFit
– Die gesamte Liste bzw. Tabelle wird durchsucht, bis man einenSpeicherbereich findet, der gerade ausreicht, um dieSpeicheranforderung zu befriedigen und den Verschnitt minimiert.
Speicheranforderung
freie Speicherbereiche
Belegung
9 KB 7 KB 12 KB
7 KB 4 KB 11 KB 22 KB 12 KB
7 KB 2KB9 KB4 KB 22 KB 12 KB
17.05.05 Dr. Jörg Gruner 40
22 KB
Betriebssysteme
• Direkte Speicherbelegung
– Belegungstrategien• WorstFit
– Sucht den größten vorhandenen, freien Speicherbereich mit demZiel den Verschnitt zu maximieren
» um bei weiteren Speicheranforderungen ausreichend freien Speicherzur Verfügung zu haben oder
» diesen „Verschnitt“ als „neuen“ freien Speicherbereich zur Verfügungzu stellen.
Speicher-anforderung
freieSpeicher-bereiche
Belegung
9 KB 7 KB 12 KB
7 KB 4 KB 11 KB 12 KB
7 KB 4 KB 15 KB 12 KB
24 KB
15 KB9 KB7 KB11 KB
Abschnitt 7: Speicher-Hierarchie 170
17.05.05 Dr. Jörg Gruner 41
Betriebssysteme
• Direkte Speicherbelegung
– Belegungstrategien
• QuickFit– Für jede Sorte von Belegungen wird eine separate Liste
unterhalten.– Separate Listen ermöglichen eine schnellere Suche nach
passenden, freien Speicherbereichen.– Beispiel
» Werden durch das Nachrichtensystem des Betriebssystemsregelmäßig Nachrichten der Länge 1 KB versendet, so ist es sinnvolleine Liste für 1 KB Belegungen zu führen und alleSpeicheranforderung schnell und ohne Verschnitt zu befriedigen.
17.05.05 Dr. Jörg Gruner 42
Betriebssysteme• Direkte Speicherbelegung
– Belegungstrategien• QuickFit
1Speicheranforderung 1 1 1 4 1 1 1 1 1 1 17 4
87654321
...11109
1 KBSpeicher-bereiche
87654321
...
sonstige freieSpeicherbereiche
...
Abschnitt 7: Speicher-Hierarchie 171
B Buddy-Systeme
• Erweiterung der QuickFit-Strategie
• Buddy-Systeme sehen fur jede gangige Speicherbelegungsgroßeeine Liste vor
• gangige Speicherbelegungsgroßen sind z.B. Zweierpotenzen(20, 21, 22, 23, . . . Byte)
• Speicher wird nur in gangigen Speicherbelegungsgroßen verge-ben
• Beispiel: Speicheranforderung von 280 Byte⇒ vergebene Speicherbelegungsgroße 512 Byte = 29 Byte
17.05.05 Dr. Jörg Gruner 46
Betriebssysteme
• Direkte Speicherbelegung
– Belegungstrategien
• Buddy-Systeme
210 Byte
29 Byte29 Byte
211 Byte
211 Byte210 Byte
212 Byte
210 Byte
211 Byte211 Byte
4 KB 2 * 2 KB = 4 KB 2 * 1 KB + 2 KB = 4 KB 2 * 512 B + 1 KB + 2 KB = 4 KB
Abschnitt 7: Speicher-Hierarchie 172
• Ist kein freier Speicherbereich der Große 2k vorhanden, wird einfreier Speicherbereich 2k+n (n = 1, 2, . . .) gegebenenfalls wie-derholend in zwei Speicherbereiche 2k+n−m (m = 1, 2, . . .) zer-legt (halbiert), bis die Speicherbelegungsgroße 2k zur Verfugungsteht.Ein freier Speicherbereich der Große 2k liegt vor, wenn m = ngilt, d.h. wenn n Speicherbereichshalbierungen bzw. -zerlegungendurchgefuhrt wurden.
• Die Anfangsadressen der Speicherbereiche einer Halbierung (diePartner bzw. Buddies) sind identisch bis auf das k.-Bit in ihrerAdresse.
• Das k.-Bit der Anfangsadressen von Partnern ist invertiert.Beispielsweise sind ...ABC0XYZ... und ...ABC1XYZ... die An-fangsadressen von Partnern.
• Die Invertierung des k.-Bits der Anfangsadresse ermoglicht, ineinem Schritt zu prufen, ob ein frei gewordener Speicherbereichder Große 2k einen freien Partner in der Belegungstabelle be-sitzt.
Abschnitt 7: Speicher-Hierarchie 173
• Dies ermoglicht die schnelle Verschmelzung der beiden Partnerzu einem Speicherbereich der Große 2k+1.
• Sowohl das Suchen eines freien Speicherbereiches (gegebenen-falls mit Halbierungen) als auch das Verschmelzen zu großerenSpeicherbereichen laßt sich rekursiv uber mehrere Partner-Ebe-nen (Zweierpotenzen) durchfuhren.
B Buddy-Systeme – Bewertung
• Bei Buddy-Systemen, welche auf der Basis von Zweierpoten-zen Speicher zur Verfugung stellen, betragt der Verschnitt imstatistischen Mittel 25% bzw. 1
4 des zur Verfugung gestelltenSpeicherbereiches.Bei einer Speicheranforderung von N Byte, wird namlich einSpeicherbereich von 2k Byte mit 2k−1 < N ≤ 2k vergeben.Angenommen
P (N <= 2k−1 + 2k−2) = P (N > 2k−1 + 2k−2) = 12
Abschnitt 7: Speicher-Hierarchie 174
dann gilt im statistischen Mittel
N = 2k−1 + 2k−2 = 2k − 2k−2 = 2k − 142k = 1
4 (4 2k − 2k) = 342k
d.h. 34 des zur Verfugung gestellten Speicherbereiches von 2k
Byte werden im statistischen Mittel verwendet. Damit wird 14
des zur Verfugung gestellten Speicherbereiches nicht verwendet.Dies ist der Verschnitt.
• Dadurch charakterisiert sich das Buddy-System auf Basis vonZweierpotenzen als eine Belegungstrategie, die zwar schnell aberbei der Hauptspeicherverwaltung nicht effizient ist.
• Die Ursache fur die schlechte Effizienz dieses Buddy-Systems istdie Verwendung großer Partitionen durch die Speicherplatzver-dopplung.
• Korrigiert man das Verfahren der Speicherplatzverdopplung, sokann man den Nutzungsgrad des Hauptspeichers verbessern. DieHauptspeicherverwaltung wird dann allerdings komplexer.
Abschnitt 7: Speicher-Hierarchie 175
• paged segments
paged segments = Kombination von paging und segmentation
Intel 80x86 segments, paged segments ...
AT&T,DG,IBM/370,VAX,MC68030,80x86 2-levelvirtual address = segmentindex|pageindex|offset
physical address = PT[ST[root+segmentindex].physpage
+pageindex].page+offset
+ : sharing, non-contiguous PT, growth– : große contiguous ST in main memory,
dynamic growth schwierig
MC68030 4-level: segment, outer, middle, inner page table+ : gut fur uber den ganzen, großen virtuellen Speicher verteilte Da-ten, kleine PTs– : max 4 memory references, PTs mit hoher interner Fragmentierung
IBM RS6000 inverted page table (linked list)+ : kleine inverted PT in main memory– : Anzahl memory accesses fur address translation nicht const.
Abschnitt 7: Speicher-Hierarchie 176
• Belegungen des physikalischen Speichers ermitteln
unvermeidliche Uberschneidungen mit der Lehrveranstaltung EBS!
Z.B. Gegeben Mini-Speicher, organisiert z.B. per paged segments
• 20 Bit virtuelle Byte-Adressen (s.u.), Seiten a 256B
• physikalischer Speicher mit 64KB Kapazitat = 256 pages
• Zugriff auf segment table: (naturlich) fully-associative
• Segment-Lange in Anzahl Seiten
• Segment-Anfange fallen mit Seiten-Anfangen zusammen.
• Zugriff auf page table: (naturlich) direct-mapped
• Adressen hexadezimal
address format seg# (4 bit) page#(8bit) offset (8bit)
Ermittle die zu virtuellen Adressen gehorenden physikalische Adressenbei gegebener segment table, ST, und gegebener page table, PT.
Abschnitt 7: Speicher-Hierarchie 177
ST:
seg# base len0x1 0x0A00 0x030x2 0x0100 0x010x3 0xF800 0x020x7 0x0200 0x05
seg#,segoffset︸ ︷︷ ︸,pageoffset
⇓ ||frame#, pageoffset
PT:
page# frame#
· · · · · ·0x01 0x03· · · · · ·
0x02 0x250x03 0xAB0x04 0xBA0x05 0x110x06 0x17· · · · · ·
0x0A 0x020x0B 0x320x0C 0x70· · · · · ·
0xF8 0x180xF9 0xE8· · · · · ·
segmentation violation? konsistente PT? Speicher-Ausbau?maximale Segment-Große? maximale Anzahl Segmente?Segment-Anfang = Seiten-Anfang: notwendig? sinnvoll? c
Abschnitt 7: Speicher-Hierarchie 178
• TLB – Beschleunigen der Adreß-Umsetzung
TLB = translation lookaside buffer = address translation cache
Valid
1
1
1
1
0
1
1
0
1
1
0
1
Page table
Physical page addressValid
TLB
1
1
1
1
0
1
TagVirtual page
number
Physical page or disk address
Physical memory
Disk storage
Abschnitt 7: Speicher-Hierarchie 179
TLB & cache (hier z.B. DECstation mit MIPS R2000)
Valid Tag Data
Page offset
Page offset
Virtual page number
Virtual address
Physical page numberValid
1220
20
16 14
Cache index
32
Cache
DataCache hit
2
Byte offset
Dirty Tag
TLB hit
Physical page number
Physical address tag
TLB
Physical address
31 30 29 15 14 13 12 11 10 9 8 3 2 1 0
Abschnitt 7: Speicher-Hierarchie 180
Zusammenspiel TLB & cache (hier z.B. DECstation mit MIPS R2000)
Yes
Deliver data to the CPU
Write?
Try to read data from cache
Write data into cache, update the tag, and put
the data and the address into the write buffer
Cache hit?Cache miss stall
TLB hit?
TLB access
Virtual address
TLB miss exception
No
YesNo
YesNo
Write access bit on?
YesNo
Write protection exception
Physical address
Abschnitt 7: Speicher-Hierarchie 181
designing the translation lookaside buffer (TLB)
feature typicalsize 32–4K entriesblock size 1–2 page table entries a 4–8B eachhit time 0.5–1 clock cyclemiss penalty 10–30 clock cyclesmiss rate 0.01%–1%
TLB miss und page fault sind zu unterscheiden!
• entweder kleine, voll-assoziative TLBsoder große TLBs, direct mapped oder mit geringer Assoziati-vitat
• Reduktion der TLB miss penalty ohne page fault per simplerVerdrangungsstrategie
• virtually indexed/tagged caches verwenden virtuelle Adressen!• physically indexed/tagged caches verwenden physikalische Adressen!
Abschnitt 7: Speicher-Hierarchie 182
virtuelle cache Adressierung CPU ⇔ cache ⇔ MMU
+ virtuelle Adresse gleichzeitig an cache und MMU– konkurrierende DMA-Zugriffe mit physikalischen Adressen wer-
den durch Bus-snooping nicht erkannt: non-cachable odercache-flush/cache-clear vor DMA-Zugriffen
– Tasks mit nicht disjunkten virtuellen aber disjunkten physikali-
schen Adress-Raumen bei Task-Wechsel cache-flush/cache-clear– Tasks mit shared regions und daher mit disjunkten virtuellen aber
nicht disjunkten physikalischen Adress-Raumen: non-cachable
oder spezielle cache-Auslegung
physikalische cache Adressierung CPU ⇔ MMU ⇔ cache
– erst virtuelle Adresse an MMU dann physikalische Adresse ancache! aber wenn cache-Index von der Adress-Umsetzungnicht betroffen, kann cache line schon selektiert werden.
+ Probleme bei Task-Wechsel und address aliasing treten hiernicht auf.
Abschnitt 7: Speicher-Hierarchie 183
Mischformen von virtueller und physikalischer cache-Adressierung =virtuell/physikalische cache-Adressierung (Index enthalt bitsder virtual page number, tag enthalt physical page number),z.B. hyperSPARC
Z.B. DECstation 3100:nur 4 Kombinationen von mindestens einem miss bei Zugriff auf TLB,(physically indexed/tagged) cache und page table moglich:
pagecache TLB table scenariomiss hit hit TLB hit, page table irrelevant, cache misshit miss hit TLB miss, page table hit, cache hit
miss miss hit TLB miss, page table hit, cache missmiss miss miss TLB miss, page fault, on retry cache must miss
* hit miss translation ok contradicts page not in memoryhit miss miss cache hit contradicts page not in memory
c
Abschnitt 7: Speicher-Hierarchie 184
Z.B. memory hierarchies PentiumPro vs PowerPC604
feature Pentium Pro PowerPC 604virtual addresses 32 bit 52 bitphysical addresses 32 bitpage size 4KB, 4MB 4KB, 256MBTLB split I-TLB und D-TLB
beide 4-ass. beide 2-ass.pseudo LRU LRU
32 I-TLB lines 128 I-TLB lines64 D-TLB lines 128 D-TLB lines
hw handles TLB misses
c
Abschnitt 7: Speicher-Hierarchie 185
• Speicherschutz-Maßnahmen
Vorbedingungen fur protection
• mindestens zwei Modi: user/operating system (kernel, supervi-sor) mode
• nur im system mode kann das Betriebssystem mit speziellenInstruktionen page table register, TLB usw. schreiben
• kontrollierter, begrenzter Wechsel von user mode in system mo-de etwa per system call (exception)
Z.B. ¨allgemeine Schutzverletzung¨, ¨segmentation violation¨, ¨pro-tection violation¨ o.a. c
Abschnitt 7: Speicher-Hierarchie 186
• 80x86-Unterstutzung der Speicher-Anbindung
Intel 80x86/Pentium Memory Management
• unsegmented, unpaged memory:etwa fur high performance µ-controllers ...
• unsegmented, paged memory:e.g. Berkeley UNIX
• segmented, unpaged memory:high granularity protection, segment in memory→ ST in memory, also absehbare Zugriffszeiten
• segmented, paged memory:e.g. UNIX System V
s.a. www.memorymanagement.org/articles/begin.html, 2001
Abschnitt 7: Speicher-Hierarchie 187
8086 80286 80386 80486 PentiumDatenbus/bits 16 16 32 32 64Adreßbus/bits 20 24 32 32 32Verarbeitung/bits 16 16 32 32 ≥ 32superskalar - - - -
√
data cache - - - unified ≥ 8KBinstruction cache - - - 8KB cache ≥ 8KBinstruction queue 6B 6B 16B 32B 2·32B# Segemente 4 4 6 6 6segment base 20bit 20/24bit 20/32bit 20/32bit 20/32bitoptional paging - -
√ √ √
modi 1 4 4 4 4multitasking -
√ √ √ √
Abschnitt 7: Speicher-Hierarchie 188
logical address selector CS ... GS 32 bit offset
-
-
�
segment table mit 8B segment descriptors
0
8K-1
...
u.a. 20bit Lange, 32bit base address
...
?
+
?
linear address 10bit dir no 10bit page no 12bit offset
-
+
-
-
-
+
? ?
page directory table
page table
0
1023
...
...
0
1023
...
...
physical address 20bit physical page no 12bit offset
Abschnitt 7: Speicher-Hierarchie 189
virtual addresses = logical addresses = 16bit segment | 32bit offset
• unsegmented memory: 232B = 4GB
• segmented memory: (2bit segment fur protection) 214+32B =64TB
• physical address space: 232B = 4GB
• global virtual memory: 4K segments – 4GB segments
• local virtual memory: 4K segments – 4GB segments
protection of segments: privilege level (geschutzt 0–3 ungeschutzt)plus access attributes (data: r/w; code: r/e)
Programm mit PL p darf nur auf Daten mit PL d zugreifen, falls p ≤ d
• PL0 fur MM, protection, access control
• PL1 fur OS-Rest
• PL2 fur application security (DBMS)
• PL3 fur application
Abschnitt 7: Speicher-Hierarchie 190
virtual address = 16bit segment selector | 32bit offset
segment selector = 13bit Index | TI | RPL
TI = 1bit Table Indicator = local/globalRPL = 2bit requested privilege level
segmentation = address translation:virtual address →linear address = 10bit dirindex | 10bit pagindex | 12bit offset
paging = address translation:linear address → physical address
2-stufiges table lookup erzeugt physical address:dirindex indiziert das page (table) directory mit max. 1K Eintragenund damit eine der max. 1K page tables mit max. 1K Eintragen fur4K pages. pagindex indiziert in dieser page table den Eintrag eineSeite.
physical address = (PT-No.[PTD[dirindex]])
[pagindex]+offset
Abschnitt 7: Speicher-Hierarchie 191
segment table, page table directory und page table 32bit entries ent-halten Informationen zu Zielgroßen, protection, Verfugbarkeit, writestrategy, dirty bit etc.
Pentium verfugt uber einen TLB mit 32 page table entries.
Im Unterschied zu 80386 und 80486 unterstutzt der Pentium zweiSeitengroßen:
if page size extension (PSE) ==1
then size=4KB or size=4MB
Bei 4MB-Seiten ergibt sich entsprechend nur ein table lookup!
Abschnitt 7: Speicher-Hierarchie 192
• performance gap: processor vs memory system
Impr
ovem
ent
fact
or
1
10
100
19801982
19841986
Year
19881990
19921994
1996
CPU (fast)
CPU (slow)
DRAM
DRAM CPU (slow) CPU (fast) DRAM cycle times slow P (MHz) 1980 1.00 1.00 1.00 0.25 1981 1.09 1.15 1.25 229.357798 4.6 5 1982 1.19 1.32 1.56 210.419998 5.29 6.25 1983 1.30 1.52 1.95 193.04587 6.0835 7.8125 1984 1.41 1.75 2.44 177.106303 6.996025 9.765625 1985 1.54 2.01 3.05 162.482847 8.04542875 12.2070313 1986 1.68 2.51 4.27 149.066832 10.0567859 17.0898438 1987 1.83 3.14 5.98 136.758561 12.5709824 23.9257813 1988 1.99 3.93 8.37 125.46657 15.713728 33.4960938 1989 2.17 4.91 11.72 115.106945 19.64216 46.8945313 1990 2.37 6.14 16.41 105.602702 24.5527 65.6523438 1991 2.58 7.67 22.98 96.8832126 30.6908751 91.9132813 1992 2.81 9.59 37.17 88.8836813 38.3635938 128.678594 1993 3.07 11.99 45.04 81.5446617 47.9544923 180.150031 1994 3.34 14.99 63.05 74.8116163 59.9431153 252.210044 1995 3.64 18.73 88.27 68.6345103 74.9288942 353.094061 1996 3.97 23.42 123.58 62.9674407 93.6611177 494.331686 700 2800
Abschnitt 7: Speicher-Hierarchie 193
zwei Arten, die Speicher-Bandbreite zu erhohen
CPU
Cache
Bus
Memory
a. One-word-wide memory organization
CPU
Bus
b. Wide memory organization
Memory
Multiplexor
Cache
CPU
Cache
Bus
Memory bank 1
Memory bank 2
Memory bank 3
Memory bank 0
c. Interleaved memory organization
194
8. Parallelisierung von Algorithmen
• Entwicklung paralleler Algorithmen
• Entwicklung paralleler Rechner-Architekturen
am Beispiel der Losung von linearen Gleichungssystemen (LGS), z.B.DGl-Systeme, partielle DGl-Systeme, FEM . . .
Z.B. s.a. Matrix-Multiplikation cDas LGS
A~x = ~b
bestehe aus n Gleichungen in n Unbekannten;die Koeffizienten-Matrix A ist also quadratisch.
Abschnitt 8: Parallelisierung von Algorithmen 195
for ( i =1; i<n ; i++) // eliminiere Unbekannte xi, 1 ≤ i < n
for ( j=i +1; j<=n ; j++) // in der j-ten Gleichung, j = i+1, ..., n
{ const double pivot = A[ j ] [ i ] /A[ i ] [ i ] ;
A[ j ] [ i ] = 0 . 0 ; // xi in j-ter Gleichung eliminieren
// restliche Koeffizienten der j-ten Gleichung aktualisieren
for ( k=i +1; k<=n ; k++) A[ j ] [ k ] −= pivot ∗A[ i ] [ k ] ;
b [ j ] −= pivot ∗b [ i ] ; // Koeffizienten der r.S. aktualisieren
}
// Das Gleichungssystem hat jetzt Dreiecksgestalt: die Unbekannten xi
// lassen sich aus∑nj=iAij xj = bi von unten nach oben bestimmen.
for ( i=n ; i >0; i−−) // bestimme xi fur i = n, n− 1, . . . , 1
{ double tmp = b [ i ] ; // berechne bi −∑nj=i+1Aij xj in tmp
for ( j=n ; j>i ; j−−) tmp −= A[ i ] [ j ]∗ x [ j ] ;
x [ i ] = tmp/A[ i ] [ i ] ;
}
Abschnitt 8: Parallelisierung von Algorithmen 196
Mehrere Fragen sind zu beantworten:
• Welche Operationen lassen sich unter Berucksichtigung von Da-ten-Abhangigkeiten uberhaupt parallelisieren?
• Wieviele Prozessoren oder processing elements (PE) sollen zurVerfugung stehen?
• Wie kommen die PEs an die von ihnen benotigten Daten und wiewerden – soweit notwendig – Zwischenergebnisse ausgetauscht?
Bewertung der Implementierungen anhand von Kenngroßen wie
• Beschleunigungsfaktor aufgrund von Parallelisierung
• Auslastung der PEs
• Kommunikationsaufwand in Abhangigkeit von der angenomme-nen Vernetzung
Abschnitt 8: Parallelisierung von Algorithmen 197
8.1. Parallelisierung des Gauß’schen Algorithmus
Annahmen, Einschrankungen, Disclaimer:
A sei quadratisch (eben kein least squares problem) ...
A~x = ~b sei eindeutig losbar, det(A) 6= 0 ...
Alle pivot-Elemente sind von 0 verschieden . . .
Keine Berucksichtigung der Numerik, also ohne Pivotisierung, s.a.www.weblearn.hs-bremen.de/risse/MAI/docs/numerik.pdf
www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdf ...
Es stehen p = n+ 1 PEs zur Verfugung . . .
Der Algorithmus selbst besteht aus zwei Teilen:
1. Eliminieren, Triangulierung (Uberfuhren in Dreiecksgestalt)
2. Auflosen: ’von unten nach oben’ (backward substitution)
Abschnitt 8: Parallelisierung von Algorithmen 198
• Gauß’scher Algorithmus – Eliminieren
1. eliminiere x1 ist in der zweiten, dritten, . . . , n-ten Gleichung, alsoin den n− 1 Gleichungen
n∑k=1
Ajk xk = bj fur j = 2, . . . , n
Aktualisiere n Koeffizienten Ajk fur k = 1, . . . , n und bj derrechten Seite. Wegen
Ajk := Ajk − pAik und bj := bj − p bi
mit pivot =AjiAii
und i = 1
sind diese Operationen Daten-unabhangig und konnen von denn + 1 PEs parallel ausgefuhrt werden (Aj1 := 0 wird aktiv ge-setzt, alle PEs sind busy).
Bem. Die Koeffizienten Ajk und bj werden standig verandert. ◦
Abschnitt 8: Parallelisierung von Algorithmen 199
2. eliminiere x2 in der dritten bis n-ten Gleichung. n PEs aktualisie-ren n Koeffizienten in n− 2 Gleichungen.
und allgemein fur i = 1, . . . , n− 1 eliminiere xi
i. eliminiere xi in der i+1-ten bis n-ten Gleichung. n− i+2 der n+1PEs aktualisieren n− i+ 2 Koeffizienten in (n− i) Gleichungen.
⇒ SIMD, MAC: sAXPY/dAXPY, Vektorisierung!
In einer Zeiteinheit (ZE) aktualisiere ein PE gerade einen Koeffizien-ten.
Uberfuhrung der Koeffizienten-Matrix in Dreiecksgestalt und Aktua-lisierung der rechten Seite durch n+ 1 PEs in insgesamt
(n− 1) + (n− 2) + . . .+ 1 =
n−1∑i=1
i =(n− 1)n
2ZE
Abschnitt 8: Parallelisierung von Algorithmen 200
Ein Mono-Prozessor-System braucht dafur
(n+ 1)(n− 1) + n(n− 2) + (n− 1)(n− 3) + . . .+ 3 · 1= 2(n− 1) + (n− 1)2 + 2(n− 2) + (n− 2)2
+2(n− 3) + (n− 3)2 + . . .+ 2 + 1 = 2
n−1∑i=1
i+
n−1∑i=1
i2
= n(n− 1) + 16 (n− 1)n(2n− 1) = 1
6 (n− 1)n (2n+ 5) ZE
Der Beschleunigungsfaktor β aufgrund Parallelisierung fur das Elimi-nieren ist (fur n→∞)
β =16 (n− 1)n (2n+ 5)
12 n (n− 1)
=2n+ 5
3= 2
3 n
(1 +
5
2n
)≈ 2
3 n
Abschnitt 8: Parallelisierung von Algorithmen 201
Insgesamt sind 16 (n− 1)n (2n+ 5) PEs von insgesamt (PE-Anzahl ×
Eliminierungsschritte) = (n+ 1) 12 (n− 1)n = 1
2 (n− 1)n (n+ 1) PEsaktiv:
die Auslastung α wahrend des Eliminierens betragt also
α =16 (n− 1)n (2n+ 5)12 (n− 1)n (n+ 1)
=1
3
2n+ 5
n+ 1≈ 2
3fur n→∞
Bem. Wenn PEs gleichzeitig lesend auf ein Datum zugreifen konnen,gibt es keine Zugriffskonflikte (no memory contention)! ◦z.H. Bestimme obige Kenngroßen fur eine entsprechende paralleleVersion der Eliminierung im Gauß’schen Algorithmus durch sehr viele,etwa (n−1)(n+ 1) PEs oder wenige PEs, etwa #PE |(n+ 1), d.h. dieAnzahl der PEs ist Teiler von n+ 1. oz.H. Bestimme allgemein β = β(n,#PEs) und α = α(n,#PEs). oz.H. Welcher Beschleunigungsfaktor, welche Auslastung ergeben sichbei Gauß-Jordan? o
Abschnitt 8: Parallelisierung von Algorithmen 202
• Gauß’scher Algorithmus – Auflosen
n+ 1 PEs stehen zur Verfugung, um parallel nacheinander xn, xn−1,. . . , x1 zu berechnen. Sie berechnen also sukzessive
xi =biAii−
n∑j=i+1
AijAii
xj fur i = n, n− 1, . . . , 1
Jedes PE berechneAijAii
xj bzw. biAii
gerade in einer ZE. Jedes PEbrauche fur das Aufsummieren eines eigenen mit einem fremden Zwi-schenergebnis gerade cm ZE.
n+ 1 PEs erledigen die Auflosung in großenordnungsmaßig
n+ cm
n−1∑i=1
ld i = n+ cm ld
n−1∏i=1
i = n+ cm ld((n− 1)!) ZE
Abschnitt 8: Parallelisierung von Algorithmen 203
Sequentiell sind dagegen
1 + (2 + c1) + (3 + 2c1) + . . .+ (n+ c1(n− 1)) =
n∑i=1
i+ c1
n−1∑i=1
i
=1
2
((n+ 1)n+ c1 n (n− 1)
)=n
2(n+ 1 + c1 n− d) ZE
erforderlich, wenn eine (lokale) Summation gerade c1 ZE braucht.
Wegen n! ≈√
2π nn e−n√n (Stirling) folgt
ld(n!) ≈ ld√
2π + (n+ 12 ) ldn + ln(e−n) ld e ≈ n(ldn − ld e). Der
Beschleunigungsfaktor β aufgrund Parallelisierung ist (fur n→∞)
β ≈ n
2
(n+ 1 + c1 n− c1)
n+ cm ld((n− 1)!)≈ 1
2
n (1+c1) + 1−c11 + cm (ldn−ld e)
=n
2
1 + c1 + 1−c1n
1 + cm ld(ne )≈ (1 + c1)n
2 + 2 cm ld(n/e)
Abschnitt 8: Parallelisierung von Algorithmen 204
Die Auslastung α der PEs (fur n→∞) ist etwa fur c = c1 = cm
α = 12n (n+1+c n−c)(n+1)(n+c ldn) = 1
2
(1 + c n−1
n+1
)n
n+c ldn ≈1+c
2
Bem. Wegen∑n−1i=1 ld i = n ldn − 1
ln 2 (n − 1) + g(n) fur ein g(n) ∈O(ldn) gilt
β ≈ 12n (n (1+c1)+1−c1)
n+cm (n ldn−n−1ln 2 )
≈ 12n (1+c1)+1−c1
1+cm (ldn− 1ln 2 )≈ n
21+c1
1+cm ldn
asymptotisch fur n→∞. ◦z.H. Bestimme obige Kenngroßen einer entsprechenden parallelenVersion fur das Auflosen im Gauß’schen Algorithmus durch (maxi-mal?) p = (n− 1)(n+ 1) PEs oder fur den Fall, daß n ein Vielfachesder PE-Anzahl p ist. o
Abschnitt 8: Parallelisierung von Algorithmen 205
• Kommunikation
Unterstellt wurde: jedes PE kann auf alle Daten zugreifen: Daten lie-gen in einem gemeinsamen globalen Speicher ((multi port) shared glo-bal memory).
memory
PE1
6?
PE2
6?
· · · PEn+1
6?
Aufgrund dieser Annahme des unbeschrankten Zugriffs der PEs aufjedes Datum konnten obige Kenngroßen insbesondere fur das Auflosenbestimmt werden.
Abschnitt 8: Parallelisierung von Algorithmen 206
Aber Machbarkeit und andere Aspekte wie Kosten und eben
• Geschwindigkeit
• Zugriffsschutz
• Ausfallssicherheit, Fehlertoleranz (Zuverlassigkeit, Verfugbarkeit)
• Erweiterbarkeit, Flexibilitat, Skalierbarkeit etc.
konnen lokale Speicher und spezielle Verbindungsstrukturen fur diePEs notwendig machen. Dann fallen zusatzlich Kosten fur die Inter-Prozessor-Kommunikation an.
Probleme des global/shared memory
• Synchronisation der Speicher-Zugriffe,
• cache Koharenz, z.B. MESI
• Verbindungsstrukturen zwischen PEs und memory:Bus, Ring, Stern, Gitter, Torus, Kreuzschienenverteiler (crossbar), hypercube ...
• Speicher-Organisation
Abschnitt 8: Parallelisierung von Algorithmen 207
Gesetzt den gunstigsten Fall, daß das k-ten PE bzw. das n+ 1-te PEdirekt nur auf die Koeffizienten Ajk bzw. bj zugreifen kann.
Dann kommt zu jedem Schritt der Eliminierung noch ein Kommuni-kationsoverhead:
• initial werden die Koeffizienten A1k und b1 der ersten Gleichunggeladen,
• dann werden A2k und b2 der zweiten Gleichung geladen undaktualisiert,
• dann A3k und b3 usw.
• bis zuletzt die Koeffizienten Ank und bn der n-ten Gleichunggeladen und aktualisiert werden.
Abschnitt 8: Parallelisierung von Algorithmen 208
Entweder legen die PEs die aktualisierten Koeffizienten in genugendgroßen lokalen Speichern aboder sie schreiben sie zugleich wieder in den globalen Speicher zuruck.Angenommen, die mit einer Aktualisierung verbundene Kommunika-tion koste c = c1 = cm ZE. Dann betragt der Kommunikationsauf-wand fur die parallele Eliminierung
12 c (n− 1)n ZE
und derjenige der sequentiellen Eliminierung16 c (n− 1)n (2n+ 5) ZE
Der Beschleunigungsfaktor β aufgrund Parallelisierung ist
β =16 c (n− 1)n (2n+ 5)
12 c n (n− 1)
=2n+ 5
3= 2
3 n
(1 +
5
2n
)≈ 2
3 n
fur n→∞In diesem gunstigsten Fall – die Speicherzugriffsbreite kann so wie dieAnzahl der PEs gesteigert werden – bleibt auch die Auslastung α ≈ 2
3unverandert.
Abschnitt 8: Parallelisierung von Algorithmen 209
Gesetzt der ungunstige Fall, daß die PEs Ketten-formig angeordnetsind und die Koeffizienten – wie etwa in Transputer-Netzen – nur ubergenau ein Interface-Prozessor PEo durch die Kette der verarbeitendenPEs durchgereicht werden konnen.
PE0- PEn+1 - PEn - · · · - PE1
6
PEs seien wieder den Spalten der Koeffizienten-Matrix fest zugeordnet(PEk bzw. PEn+1 bearbeitet Ajk bzw. bj).
Alle PEs bearbeiten zu einem Zeitpunkt dieselbe j-te Gleichung.
Eliminiere x1:Es dauert cm(n + 1) ZE, bis die Koeffizienten der ersten Gleichungin die vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − 1Gleichungen: Gesamtdauer also cm
((n+ 1) + (n− 1)(n+ 1)
)ZE.
Abschnitt 8: Parallelisierung von Algorithmen 210
Eliminiere x2:Es dauert cm(n) ZE, bis die Koeffizienten der zweiten Gleichung indie vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − 2Gleichungen: Gesamtdauer also cm
((n) + (n− 2)(n+ 1)
)ZE.
allgemein also:
Eliminiere xi:Es dauert cm(n+ 2− i) ZE, bis die Koeffizienten der i-ten Gleichungin die vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − iGleichungen: Gesamtdauer also cm
((n+ 2− i) + (n− i)(n+ 1)
)ZE.
Zusammen ergibt sich ein Kommunikationsaufwand C von
C = cm
n−1∑i=1
((n+ 2− i) + (n+ 1)(n− i)
)= cm
((n+2)(n−1)− 1
2n(n−1) + (n+1)n(n−1)−(n+1)12 (n−1)n
)= 1
2cm(n− 1)(4 + 2n+ n2
)= 1
2cm(n− 1)(n+ 2)2
Abschnitt 8: Parallelisierung von Algorithmen 211
Wenn der Mono-Prozessor c1 ZE fur einen Speicherzugriff braucht, gitfur die Beschleunigung β aufgrund Parallelisierung
β =(1+c1) 1
6 (n−1)n (2n+5)12n(n−1)+ 1
2 cm(n−1)(n+2)2= (1+c1)n (2n+5)
3n+3cm(n+2)2 = 13
(1+c1)(2n+5)+
3cm(n+2)2
(1+c1)(2n+5)
,
also asymptotisch β ≈ 23
1+c1cm
fur n→∞.
Bei dieser Verbindungsstruktur der PEs wird der Geschwindigkeitsge-winn durch Parallelisierung der Eliminierung in diesem (schlechten)Fall durch den Kommunikationsaufwand zunichte gemacht.
z.H. Untersuche Kommunikationsaufwand bei der Parallelisierungder Auflosung fur best und worst case. oz.H. Berechne β und α fur Verbindungsstrukturen wie Ring, Stern,Torus, cross bar, hypercube usw. Beispielsweise lassen sich PEs aufeinem Chip gunstig Gitter-formig (wie z.B. Transputer) anordnen.
Berechne β und α fur quadratisch angeordnete(n+1
2
)2PEs. o
z.H. Welcher overhead ergibt sich bei Gauß-Jordan? o
Abschnitt 8: Parallelisierung von Algorithmen 212
• Parallelisierung des Gauß’schen Algorithmus durch denCompiler
Compiler konnen program code vektorisieren bzw. (allge-meiner) parallelisieren.
• entweder durch den Programmierer mit Konstrukten wie par-begin und parend und/oder
• automatisch durch den compiler: Grundlage ist – wie im Beispiel– eine Datenfluß-Analyse, die Daten-Abhangigkeiten erkennt,soweit moglich auflost und Vektor-Operationen oder parallelenCode erzeugt.
Z.B. vektorisierende FORTRAN-compiler etwa auf Convex C1, HPN-class etc. c
Maschinen-abhangiger code! & AmdahlZ.B. paralleles Sortieren, s.a.www.inf.fh-flensburg.de/lang/algorithmen/sortieren/ c
Abschnitt 8: Parallelisierung von Algorithmen 213
Z.B. Zum Addieren von 217 Zahlen – etwa in zwei-dimensionalem array –auf 128 = 27 PEs berechnet jedes PE die Summe von 1024 = 210 Zahlen.
sum=0.0; for(i=0; i<1024; i++) sum+=local_array[i];
Dann sendet eine Halfte der PEs der anderen Halfte die eigenen Ergebnissezum Aufaddieren, von denen wieder eine Halfte die eigenen Teilsummen deranderen Halfte sendet, bis auf diese Weise schließlich ein PE die Gesamt-Summe bestimmt.
limit=128; half=128;
repeat
half=half/2; // send vs receive dividing line
if (half<=Pn && Pn<limit) send(Pn-half,sum);
if (Pn<half) sum=sum+receive();
limit=half; // upper limit of senders
until (half==1)
Pn ist das betrachtete der ausfuhrenden PEs, send(p,v) sendet den Wert
v uber das Verbindungsnetzwerk an Prozessor p, wahrend receive() das
betreffende PE veranlaßt, einen Wert uber das Netz entgegenzunehmen. c
Abschnitt 8: Parallelisierung von Algorithmen 214
8.2. Effizienz/Effektivitat der Parallelisierung
Def. Fur einen gegebenen Algorithmus definiert β(p) = T (1)/T (p)den Beschleunigungsfaktor β(p) aufgrund von Parallelisierung mit pPEs, wo T (p) Zeit fur Abarbeitung des Algorithmus’ auf p PEs ist.E(p) = β(p)/p mißt die Effizienz eines parallelen Algorithmus’.F (p) = β(p)/(p T (p)) = Beschleunigung/Kosten mißt die Effektivitatvon parallelen Algorithmen.Ein paralleler Algorithmus, der F (p) maximiert, heißt effektiv.
Z.B. einige wenige BeispieleProblem bzw. Algorithmus β(p)Matrizenrechnungen, Diskretisierung O(p)Sortieren, tridiagonale Systeme, lineare Rekursion,Polynomauswertung
O(p/ ld(p)
)Suchen O
(ld(p)
)Horner, gewisse nichtlineare Rekursion, bestimmteAnteile der Compilation
O(1)
c
Abschnitt 8: Parallelisierung von Algorithmen 215
Z.B. Fur die Addition von 16 Zahlen ai gilt T (1) = 15 sowiep T (p) β(p) E(p) F (p)T (1) = β(p)E(p)1 15 1.00 1.00 1.002 8 1.88 0.94 1.763 6 2.50 0.83 2.084 5 3.00 0.75 2.258 4 3.75 0.47 1.76
c
8.3. parallele Speicher-Zugriffe auf Matrizen
Z.B. Zugriff auf Matrix A = (aij) in verteiltem Speicher
P1 P2 P3
a11 a12 a13
a21 a22 a23
a31 a32 a33
P1 P2 P3
a11 a12 a13
a23 a21 a22
a32 a33 a31
P1 P2 P3 P4
a11 a12 a13 a14
a24 a21 a22 a23
a33 a34 a31 a32
a42 a43 a44 a41
zyklisch geshiftete Zeilen cVerallgemeinerungen: Schiefe-Systeme
Abschnitt 8: Parallelisierung von Algorithmen 216
8.4. Baumhohenreduktion
Compiler nutzen Assoziativitat, Kommutativitat und Distributivitatzur Reduktion der Baumhohe h = h(A) algebraischer Ausdrucke A.
Z.B.h A per A′ h′
3 (((a+ b) + c) + d) Assoziativitat (a+ b) + (c+ d) 23 a+ bc+ d Kommutativitat a+ d+ bc 2
c
∃ allgemeine Verfahren. Jedoch NB: moglicher Verlust numerischerStabilitat, z.B. fl
((1 + ε) + ε
)6= fl
(1 + (ε+ ε)
)!
8.5. Parallelisierung rekurrenter Relationen
Z.B. Beispiele linearer rekurrenter RelationenProblem Algorithmus Anfangsbedingung Rekurrenz
Skalarprodukt z =∑xkyk z := 0 z = z + xkyk
Horner p =∑akx
ko p := an p = an−k + xop
Fibonacci(fk
)f2 := f1 = 1 fk = fk−1 + fk−2
c
Def. ~x = ~c+A~x mit strikter unterer Dreiecksbandmatrix A ist lineare
Abschnitt 8: Parallelisierung von Algorithmen 217
rekurrente Relation mit xk =
{0 furk ≤ 0
ck +∑k−1j=k−m akjxj fur1 < k < n
.
Falls xk = f(Al, Ar) mit parallel abzuarbeitenden Algorithmen Alund Ar gleicher Komplexitat, wende rekursives Doppeln auf Al undAr an, dann Parallelisierung bzw. Vektorisierung, falls identische Ope-ratoren in identischer Reihenfolge in Al und Ar.
column sweep algorithm mit β(p) = n2 und E(p) = n
2(n−1) >12 fur
p = n− 1
1. x1 bekannt; parfor(i=2;i<=n;i++) berechne c(1)i = ai1x1 + ci
rofrap und damit x2
2. . . .
3. xk bekannt; parfor(i=k+1;i<=n;i++) berechne c(k)i = aikxk +
c(k−1)i rofrap und damit xk+1
4. . . .
5. xn−1 bekannt; berechne xn = ai,n−1xn−1 + c(n−2)i
∃ Verallgemeinerungen fur nichtlineare rekurrente Relationen!
Abschnitt 8: Parallelisierung von Algorithmen 218
8.6. Modellierung durch DAGs
Gleichartige PEs bearbeiten eine Menge von #tasks voneinander abhangi-gen (sub-) tasks. Abhangigkeiten, Ausfuhrungszeiten und Kommuni-kationszeiten (communication overhead) lassen sich durch gerichtete,azyklische Graphen mit Knoten- und Kanten-Labeln beschreiben.
• Jedes PE bearbeitet zu einer Zeit maximal ein (sub-) task.
• Ein PE kann eine subtask st erst dann zu bearbeiten beginnen,wenn alle Zwischenergebnisse der tasks vorliegen, von denen stabhangig ist.
• Kommunikation je nach Modell-Vorgaben (gleichzeitiges undmehrfaches Senden und Empfangen?)Kommunikation auf ein und demselben PE braucht 0ZE!
Fur gegebene Zuordnung von PE zu (sub-) task PAT = (pi)i=1,...,#tasks
mit pi ∈ {0, 1, . . . ,#PEs − 1} eine der #PEs vielen PEs minimie-re die Zeit tDAG(PAT ), die die PEs bei gegebener Zuordnung PATbrauchen, um die gesamte task zu bearbeiten.
Abschnitt 8: Parallelisierung von Algorithmen 219
5a 3b
3c 2d
1e
12
3
3 1
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5a(α)b(α)
b(α) to d(β)c(α)d(β)
d(β) to e(α)e(α)
fur beispielsweise PAT = αααβα. Berechne also nacheinander
tDAG = minPAT∈{PATs}
tDAG(PAT )
fur geeignete Mengen {PATs} und ggfls.
t = minDAG∈{DAGs}
tDAG
Z.B. Ein algebraischer Ausdruck expr definiert verschiedene Aus-wertungsbaume, also zugehorige DAGs. Zu expr bestimme t, wo uberalle zugehorigen DAGs und alle PATs mit vorgegebener Anzahlen vonPEs, die jeweils genau die in expr vorkommenden algebraischen Ope-rationen ausfuhren konnen, zu minimieren ist. cz.H. Erzeuge Beispiele obiger Art und bestimme jeweils t. o
Abschnitt 8: Parallelisierung von Algorithmen 220
8.7. Programmierung
per fork, d.h. duplizieren von Prozessen, identifiziert durch idz.B. zwei Prozesse/oren addieren vier Feldelemente x[1], . . . , x[4]Annahme: shared memory! Programmer: static scheduling
shared x, childs_sum, parents_sum;
unshared id, i, nprocs=2, sum=0;
id = fork(); // child gets 0, parent gets child’s pid
if (id==0) i = 1; else i = 2;
while (i<=4) { // child adds odd, parent even elements
sum += x[i]; i += nprocs;
}
if (id==0) {childs_sum = sum; exit()} else parents_sum = sum;
return childs_sum+parents_sum; // race condition
hazard = race condition, aufzulosen etwa durch Synchronisation perinit_barrier(A,nprocs)
if (id==0) childs_sum = sum; else parents_sum = sum;
barrier(A);
if (id==0) exit(); return childs_sum+parents_sum;
Abschnitt 8: Parallelisierung von Algorithmen 221
Aufwand fur x[i]=g(i) sei unterschiedlich oder nicht abschatzbar.Programmer: dynamic scheduling per mutual exclusion, MUTEX
shared si, childs_sum, parents_sum, lck; // lock
unshared id, i, nprocs=2, sum=0;
si = 1;
id = fork(); // child gets 0, parent gets child’s pid
for(;;) {
mutex_lock(lck); // atomically test & set a memory cell
i = si; si +=1; // critical region
mutex_unlock(lck);
if (i>4) break;
sum += g(i);
}
if (id==0) childs_sum = sum; else parents_sum = sum;
barrier(A);
if (id==0) exit();
return childs_sum+parents_sum;
if locked: busy wait oder sleep waitz.H. Vorteile/Nachteile? o
Abschnitt 8: Parallelisierung von Algorithmen 222
Duplizieren von Prozessen und deren Verwaltung ist teuer! Verwendestattdessen threads = light weight processes mit shared code, aber’eigene’ lokale Daten, PC, SP, Stack, vgl. hyperthreading
global n=10; x[n], sum, nthreads=3, si=1, lckA, lckB;
% ...
for(i=0;i<nthreads;i++) thread_create_run(&workerID[i],work());
for(i=0;i<nthreads;i++) thread_join(&workerID[i]); // barrier
return sum;
function work()
local i, mysum=0, myID=thread_self();
for(;;) {
mutex_lock(lckA);
i = si; si += 1;
mutex_unlock(lckA);
if (i>n) break; mysum += x[i];
}
mutex_lock(lckB);
sum += mysum;
mutex_unlock(lckB); // implicit thread_exit()
Abschnitt 8: Parallelisierung von Algorithmen 223
S
S
S * S *
*
a
a2
a4 a3
a8 a7 a6 a5
Russian Peasant Algorithm(im Bild n = 8 im Programm n = 32)berechne x1, x2, . . . , xn
mit einem thread/Multiplikation
global x, y[1..32]; // compute y[i] = x^i
% ...
local n=1, i, k; y[1] = x;
for(k=1;k<=5;k++) { // 5 = ld(32)
for(i=1;i<=n;i++) thread_create(mult(),n); // pass n to mult
// threads generated with thread id = 1,2,...,n
while (thread_join()==0); // barrier
n *= 2;
}
function mult(int n)
local i=thread_self();
y[i+n] = y[i]*y[n];
224
9. Vektor-Prozessor-Systeme (SIMD)
z.B. Matrix-Multiplikation C = AB mit cij =∑nk=1 aikbkj
skalar processing
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
{
c[i][j]=0;
for(k=1; k<=n; k++)
c[i][j]+=a[i][k]*b[k][j];
}
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 225
9.1. vector processing (per pipelining oder n ALUs)
for(i=1; i<=n; i++)
{
parfor(j=1; j<=n; j++) c[i][j]=0;
for(k=1; k<=n; k++)
parfor(j=1; j<=n; j++)
c[i][j]+=a[i][k]*b[k][j];
}
zeilenweise parallel
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 226
9.2. parallel processing (per n parallel processes/processors)
for(j=1; j<=n; j++)
fork (j)
{
for(i=1; i<=n; i++)
{
c[i][j]=0;
for(k=1; k<=n; k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
join(n);
jeder Prozess berechnet eine Spalte:zeilenweise parallel
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 227
9.3. pipelining within/across operations
z.B.pipelined fadd = (compare exponents, shift significand, add signifi-cands, normalize)
pipelining across operations, chaining, d.h. unmittelbare Weitergabevon Zwischen-Ergebnissen an functional units ohne Speicherung derZwischen-Ergebnisse in (Vektor-) Registern
z.B. in CRAYs etwa bei a~x+ ~y (sAXPY, dAXPY)
V1=X
V2=Y ; can
V3=a*V1 ; be
V4=V2+V3 ; chained
C=V4
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 228
9.4. Beispiel: IBM 3090 Vector Facility
• Vektor-Instruktionen vermindern den Schleifen-Overhead (vgl.loop unrolling/unfolding)
• Vektor-Operationen pipelined oder parallel
• Zwischenergebnisse in Vektor-Registern vermeiden Speicher-Zu-griffe
Skalar-Prozessor mit Skalar-Registern (Sr) wird um Vektor-Prozessormit Vektor-Registern (Vr) erganzt! (sw-kompatibel)Befehlssatz ist um Vektor-Instruktionen erganzt! (unterbrechbar, vec-tor interruption index)
Vector Facility = Add on, integriert in die /370-Architektur
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 229
• reconfigurable vector registers
1 Speicher-Zugriff pro cycle,2 read und 1 write Register pro cycle,1 ALU-Operation pro cycle.
16 Vektor-Register mit 128 32bit-Elementen oder 8 Vektor-Registermit 128 64bit-Elementen (single/double/integer), pipelined vector ALUVektor-Register fur 32bit oder 64bit integer oder floating point!
’architecture specifies’ vector registers with 8–512 elements!
relative start-up time der Vektor-ALU-pipelinevs
save/restore Vektor-Register on process switch etc.
plus vector mask register, vector status register (u.a. length), vectoractivity count (register) (timer) . . .
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 230
• Compound Instructions
z.B. Multiply-and-Accumulate (=add) mit drei Quell-Operanden!etwa Vr=Vr*V[Mem]+Vr
accumulate instructions berechnen partielle Summen von Vektoren,wegen Latenz ’interleaved’, d.h. in speziellem Vektor-Register
partial sum0 = v0 + v4 + . . .+ v124
partial sum1 = v1 + v5 + . . .+ v125
partial sum2 = v2 + v6 + . . .+ v126
partial sum3 = v3 + v7 + . . .+ v127
in
speziellemVektor-
Register P
target vector =∑
partial sumi Stallings: non critical!
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 231
• z.B. komplexe Multiplikation
z.B. ~a,~b,~c ∈ |Cn mit cj = aj ∗ bj ∈ |C mit |C 3 z = (<z,=z) = (zr,zi)
for(j=1; j<=n; j++)
{
cr[j]=ar[j]*br[j]-ai[j]*bi[j]; // real part
ci[j]=ar[j]*bi[j]+ai[j]*br[j]; // imaginary part
}
memory to memoryOperation Cycles
t1[j]=ar[j]*br[j] 3
t2[j]=ai[j]*bi[j] 3
cr[j]=t1[j]-t2[j] 3
t3[j]=ar[j]*bi[j] 3
t4[j]=ai[j]*br[j] 3
ci[j]=t3[j]+t4[j] 3
total 18
compound instructionsOperation Cycles
v1[j]=ar[j] 1
v2[j]=v1[j]*br[j] 1
v3[j]=ai[j] 1
v2[j]=v2[j]-v3[j]*bi[j] 1
cr[j]=v2[j] 1
v4[j]=v1[j]*bi[j] 1
v4[j]=v4[j]+v3[j]*br[j] 1
ci[j]=v4[j] 1
total 8
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 232
register to registerOperation Cycles
v1[j]=ar[j] 1
v2[j]=br[j] 1
v3[j]=v1[j]*v2[j] 1
v4[j]=ai[j] 1
v5[j]=bi[j] 1
v6[j]=v4[j]*v5[j] 1
v7[j]=v3[j]-v6[j] 1
cr[j]=v7[j] 1
v8[j]=v1[j]*v5[j] 1
v9[j]=v4[j]*v2[j] 1
v0[j]=v8[j]+v9[j] 1
ci[j]=v0[j] 1
total 12
memory to registerOperation Cycles
v1[j]=ar[j] 1
v2[j]=v1[j]*br[j] 1
v4[j]=v3[j]*bi[j] 1
v5[j]=v2[j]-v4[j] 1
cr[j]=v5[j] 1
v6[j]=v1[j]*bi[j] 1
v7[j]=v3[j]*br[j] 1
v8[j]=v6[j]+v7[j] 1
ci[j]=v8[j] 1
total 10
Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 233
• IBM 3090 Vector Facility – Vector Instructions
Operationargtype
Vr=OP(operands), Vmr=comp(operands) resp.
add sdi Vr+Vr Vr+Mem Sr+Vr Sr+Memsub sdi Vr–Vr Vr–Mem Sr–Vr Sr–Memmult sdi Vr*Vr Vr*Mem Sr*Vr Sr*Memdiv sd Vr/Vr Vr/Mem Sr/Vr Sr/Memcomp sdi Vr op Vr Vr op Mem Sr op Vr Sr op Memmul & add sd Vr+Vr*Mem Vr+Sr*Vr Vr+Sr*Memmul & sub sd Vr–Vr*Mem Vr–Sr*Vr Vr–Sr*Memmul & acc sd P+op Vr P+op Memcomplement sdi –Vrpos/neg abs sdi ±|Vr|max/min sd Sr op Vrsll/srl lgcl op Vrand/or/xor lgcl Vr op Vr Vr op Mem Sr op Vr Sr op Mem
P = partial sum of vector: sumj =∑i mod 4=j vi, j = 0, 1, 2, 3
234
10. parallele Architekturen
Ziel ist eine skalierbare, hochverfugbare, hochzuverlassige oderetwa fehlertolerante Architektur, auf der eine Anwendung, einigewenige oder beliebige Anwendungen mit moglichst maximalem, d.h.mit linearem speedup abgearbeitet werden.
Mehrere PEs bearbeiten eine gemeinsame Anwendung⇒ PEs greifen auf gemeinsame Daten zu!
• single address space/shared (global) memorysynchronization by e.g. memory locks
– uniform memory access, UMA oder symmetric multipro-cessors, SMP
– non uniform memory access, NUMA
• message passing fur PEs mit lokalem/privatem Speicher, z.B.cluster
Verbindung der PEs uber (einen) Bus oder uber ein Netzwerk!
Abschnitt 10: parallele Architekturen 235
10.1. Klassifizierung anhand von Beispielen
• Symmetric / Shared-Memory Multiprocessors (SMP), Uni-form Memory Access (UMA)
• Digital AlphaServer 8400
• Hewlett Packard 9000
• IBM servers (PC, AS/400, RS/6000, S/390)
• Sun Microsystems Ultra Enterprise 6000
• Sun Microsystems Ultra Enterprise 10000
• Non-Uniform Memory Access (NUMA) Multiprocessors
• HP/Convex Exemplar
• Sequent NUMA-Q 2000
• Silicon Graphics Origin2000
Abschnitt 10: parallele Architekturen 236
• Clusters
• Hewlett Packard 9000 EPS 21
• Sun Ultra Enterprise Cluster HA Server
• Massively Parallel Processors (MPP)
• Cambridge Parallel Processing Inc.’s DAP: ¨The DAP now hasan 8 bit processing element, but is still a classic SIMD MPP,with 1024 or 4096 processing elements!¨
• DOE Accelerated Strategic Computing Initiative (ASCI)
– IBM RS/6000 SP – ASCI Blue Pacific model (costing $93M)to reach 3 TeraFLOPS by December, 1998
– Intel Scalable Server – ASCI Red (9000 Pentium Procscosting $46M with 1.8 TeraFLOPS peak) reached 1 Tera-flops on December, 1996
– SGI/CRAY Origin – ASCI Blue Mountain model (3072processors costing $110M) to reach 3 TeraFLOPS in 1998
• s.a. top500
Abschnitt 10: parallele Architekturen 237
10.2. Multiprocessor-Systeme mit gemeinsamem Bus
• gangige PEs, gangige Bus-Systeme
• caches mindern Bus-traffic, reduzieren Latenz
• cache-Koharenz etwa per MESI
PE 1 PE 2 · · · PE nm m m
cache 1 cache 2 · · · cache nm m m
gemeinsamer Busm m
Memory IO
z.B. Compac Proliant mit 4 Pentium Pro, Digital AlphaServer mit12 Alpha 21164, HP 9000 mit 4 PA8000, IBM RS/6000 mit 8 Po-werPC 604, SGI Power Challenge mit 36 MIPS R10000, SUN Enter-prise 6000 mit 30 UltraSPARC 1 usw.
Abschnitt 10: parallele Architekturen 238
10.3. cache-Koharenz in Multiprozessor-Systemen
ein gemeinsamer Bus und globaler Speicher: per snooping protocol
Cache tag and data
Processor
Single bus
Memory I/O
Snoop tag
Cache tag and data
Processor
Snoop tag
Cache tag and data
Processor
Snoop tag
Abschnitt 10: parallele Architekturen 239
• cache-Koharenz durch Invalidieren
event PE1 PE2 PE3start no copy no copy no copyPE1 reads clean copy no copy no copyPE2 reads clean copy clean copy no copyPE3 writes invalidated copy invalidated copy dirty copyPE2 reads invalidated copy clean copy clean copy
• cache-Koharenz durch Aktualisieren
event PE1 PE2 PE3start no copy no copy no copyPE1 reads clean copy no copy no copyPE2 reads clean copy clean copy no copyPE3 writes updated copy updated copy updated copyPE2 reads clean copy clean copy clean copy
Abschnitt 10: parallele Architekturen 240
• cache-Koharenz
Anforderungen, Koharenz zu garantieren
• PEs write exclusively
• after a write: invalidate or update all copies
• write shared data: invalidate or update all copies
• on read miss: check other caches first
snooping protocols mit write invalidate oder write update
write invalidate writing PE invalidiert (per bus signal) alle Kopienin anderen caches und andert erst dann lokale Kopie– wie write back (nur first write is signaled)
write update/write broadcast writing PE broadcasts die neuenDaten zwecks update aller Kopien– wie write through (reduziert Latenz)
bus traffic? Vorteile/Nachteile?
Abschnitt 10: parallele Architekturen 241
• Einfaches cache-Koharenz Protokoll
Simples cache-Koharenz write invalidate/write back Protokoll per fsm
read only cache line is clean (not written) and may be shared
read/write cache line is not clean (written, dirty), may not be shared
invalid cache line is invalid
Invalid (not valid
cache block)
Read/Write (dirty)
Read Only (clean)
)tihfietadilavnidneS(
(Writ
e back
dirty
block
tomem
ory)
Processor read miss
Processor write
Processor write miss
Processor read miss
Processor write (hit or miss)
Cache state transitions using signals from the processor
Invalid (not valid
cache block)
Read/Write (dirty)
Read Only (clean)Invalidate or
another processor has a write miss
for this block (seen on bus)
Another processor has a read miss or a write miss for this block (seen on bus);
write back old block
a.
Cache state transitions using signals from the busb.
Invalid (not valid
cache block)
Read/Write (dirty)
Read Only (clean)
)tihfietadilavnidneS(
(Writ
e back
dirty
block
tomem
ory)
Processor read miss
Processor write
Processor write miss
Processor read miss
Processor write (hit or miss)
Cache state transitions using signals from the processor
Invalid (not valid
cache block)
Read/Write (dirty)
Read Only (clean)Invalidate or
another processor has a write miss
for this block (seen on bus)
Another processor has a read miss or a write miss for this block (seen on bus);
write back old block
a.
Cache state transitions using signals from the busb.
Abschnitt 10: parallele Architekturen 242
Generellkein Zustandsubergang on read hitZustandsubergange on read miss, write hit, write miss
read miss new block: state=read only;old block: if dirty write back to memoryremote caches with old block: state=invalid if dirty
write hit send invalidate (remote caches with block: state=invalid)write into block: state=read/write
write miss wie read miss; new block: state=read/write
• MESI/MOESI
MESI ist ein cache-Koharenz write invalidate/write back Protokoll
Modified wie read/write: dirty, no to be shared
Exclusive wie read only, aber nur genau eine Kopie
Shared wie read only, aber mehrere Kopien
Invalid wie invalid
z.H. Zustandsubergange? MOESI? (Owned = modified shared)
Abschnitt 10: parallele Architekturen 243
© 1997, 1999, G.Q. Kenney CSC 506, Summer 1999 Page 2
Picture the MESI cache states:
Valid Data
Modified in Cache A
M
Cache A
Invalid Data
Cache B
Invalid DataSystemMemory
Valid Data
Shared in Cache A
S
Cache A
Valid Data
Cache B
Valid Data
Valid Data
Exclusive in Cache A
E
Cache A
Invalid Data
Cache B
Valid Data
Invalid Data
Invalid in Cache A
I
Cache A
Don't Care
Cache B
Don't Care
SI
SystemMemory
SystemMemory
SystemMemory
Abschnitt 10: parallele Architekturen 244
Coherency & Synchronization Architecture of Parallel Computers Page 3
MESI State Diagram
Invalid Shared
Modified Exclusive
RH
SHR
RHRH
SHR
WH
SHI
RME
Read
SHI
RMS Read
SHR
Push WH
Invalidate
WMSHI
Push
WH
LRU
Push
Invalidate
Read
Events:
RH = Read HitRMS = Read miss, sharedRME = Read miss, exclusiveWH = Write hitWM = Write missSHR = Snoop hit on readSHI = Snoop hit on invalidateLRU = LRU replacement
Bus Transactions:
Push = Write cache line back to memory
Invalidate = Broadcast invalidateRead = Read cache line from
memory
Events:RH = Read HitRMS = Read miss, sharedRME = Read miss, exclusiveWH = Write hitWM = Write missLRU = LRU replacement
Snoop Events:SHR = Snoop hit on readSHI = Snoop hit on invalidate
Bus Transactions:Push = Write back to memoryInvalidate = Broadcast invalidateRead = Read from memory
Abschnitt 10: parallele Architekturen 245
10.4. Verbindungsstrukturen
• Beispiele
bus
PE PE PE PE PE
mem grid
star
PE
PE
PE
PE
PE
PE
ring
PE
PE
PE
PE
PE
PE
Abschnitt 10: parallele Architekturen 246
torus crossbar PE
m
PE
m
PE
m
PE
m
PE
m
PE
m
complete
PE
PE
PE
PE
PE
PE
hypercube dim=0 dim=10 1
dim=2
00 01
10 11
dim=3
000 001
010 011
100 101
110 111
Abschnitt 10: parallele Architekturen 247
c. Omega network switch box
A
B
C
D
P0
P1
P2
P3
P4
P5
P6
P7
a. Crossbar b. Omega network
P0
P1
P2
P3
P4
P5
P6
P7
vgl. z.B.www.top500.org/2007 overview recent supercomputers/shared memory mimd machines
basierend aufwww.top500.org/2007 overview recent supercomputers/main architectural classes
Abschnitt 10: parallele Architekturen 248
Abschnitt 10: parallele Architekturen 249
• Merkmale einschlagiger Verbindungsstrukturen
Qualitative Merkmale
• Skalierbarkeit
Quantitative Merkmale
• Durchmesser = langste Weglange
• # ports pro PE
• # switches in Verbindungsstruktur
• total bandwidth = # links × link-bandwidth
• bisection bandwidth
• (min/average/max) Latenz
• Fehlertoleranz = # verschiedene Wege
Abschnitt 10: parallele Architekturen 250
Sei n = # PEs. Alle links seien bidirectional.
Topologie skalierbar Durchmesser #ports #switches # linksBus ja 1 1 – 1 oder20n− 1Ring ja n 2 – n− 1Stern ja 2 1 – n√
n×√n-Gitter ja 2
√n− 2 4 n ? 2n ?
complete nein 1 n− 1 – 12n(n− 1)
ldn-hypercube nein ldn ldn n ldn 12n ldn
crossbar ja 1 1 n2 2ncrossbarh stages
ja 2h+ 1 hhC fur C = h
√n
C × C-crossbars2hC
Omega ja ldn 4 2n ldn oder21 n2 ldn
mehr-stufig ja log n 1 n ldn n log nBenes ja 2 log n− 1 1 n(ldn− 1/2) n(2 ldn− 1)
21ja nach Auslegung
251
11. Addenda
11.1. Addendum in 2003: top 500
www.top500.org, s.a. c’t ≈14/2003# brand computer1 NEC Earth Simulator2 HP ASCI-Q – AlphaServer 1,25 GHz3 Linux NetworX MCR Linux Cluster XEON 2,4GHZ, Quadrics4 IBM ASCI-White SP Power3, 375MHz5 IBM SP Power3, 375MHz 16way
24 IBM IBM Regatta, Power4, 1,3GHz29 Hitachi Hitachi SR 8000-F133 NEC NEC-SX-6 (6 proc) / 192M24
# TFLOPS Betreiber Jahr N1 35,860 Earth Simulation Center, Yokohama, JP 2002 51202 13,880 Los Alamos Natl. Lab, USA 2002 81923 7,634 Lawrence Livermore Natl. Lab, USA 2002 23044 7,304 Lawrence Livermore Natl. Lab, USA 2000 81925 7,304 NERSC, LBNL, USA 2002 6656
24 2,050 MPI, Garching 2002 76829 1,653 Leibniz-RZ, Munchen 2002 16833 1,484 Dt. Klima-RZ, DKRZ 2003 192
Abschnitt 11: Addenda 252
11.2. Addendum in 2004: announced in 2004
vgl. www.top500.org
ASCI =DOE’s Accelerated Strategic Computing InitiativeAdvanced Simulation and Computing Program
• ASCI Purple im Auftrag des DOE, am Lawrence LivermoreNational Laboratory: IBM, 12544 Power5 Prozessoren, 50 TBHaupt-Speicher, 2 PB Festplatten-Speicher, 100 TFLOPS, 156TB/s Speicher-Bandbreite (31200 DVD-Filme/s) und 12,5 TB/sKommunikationsbandbreite
• IBM Blue Gene/L: fur physikalische, biologische und metereo-logische Simulationen; ca 130000 procs, ca 367 TFLOPS, Linux
• IBM Blue Gene: fur Faltung großer Eiweiß-Molekule in der Gen-Technik; SMASH (simple, many and self-healing): 1 Mio procs,8 Mio parallel threads, 1 PFLOPS; jeweils als 32×32×32 = 215
Wurfel
Abschnitt 11: Addenda 253
11.3. Addendum in 2005: top 500
s.a. c’t 14/2005, S.18; Rmax = maximal LINPACK performanceRechner Betreiber Land rank procs Rmax
11/04 TFlop/s
BlueGene LLNL/DOE USA 1 65536 PowerPC440, 700MHz 136,7BlueGene IBM, T.J.Watson USA – 40960 PowerPC440, 700MHz 91,3Columbia NASA USA 2 10160 Itanium 2, 1.6GHz 51,9Earth Simulator Earth Simulation Center Japan 3 5120 NEC SX6 35,9MareNostrum Barcelona SCC Spain 4 4800 PowerPC970, 2.2GHz 27,9BlueGene ASTRON/Uni Groningen NL – 12288 PowerPC440, 700MHz 27,5Thunder LLNL USA 7 4096 Itanium 2, 1.4 GHz 19,9BlueGene Ecole Polytec. Lausanne CH – 8192 PowerPC440, 700MHz 18,2BlueGene JAIST Japan – 8192 PowerPC440, 700MHz 18,2Cray Red Storm Oak Ridge NL USA – 500 Opteron, 2GHZ 15,2
unter www.top500.org s.a.
• home: The Linpack benchmark can now be run using HPL,A Portable Implementation of the High-Performance Linpack Benchmark
for Distributed-Memory Computers
• home: lists, list statistics – since June 1995
• home: highlights, trends
• home: Overview of Recent Supercomputers
• InFocus: Literatur, upcoming supercomputers etc.
Abschnitt 11: Addenda 254
11.4. Addendum in 2006: top 500
s.a. c’t 15/2006, S.18; Rmax = maximal LINPACK performanceRechner Betreiber Land rank procs Rmax
11/05 TFlop/s
BlueGene DOE/LLNL USA 1 131072 PowerPC440, 700MHz 280,6BlueGene IBM, T.J.Watson USA 2 40960 PowerPC440, 700MHz 91,3ASC purple DOE/LLNL USA 3 12208 PowerS, 1.9GHz 75,8Columbia NASA USA 4 10160 Itanium2, 1,6GHz 51,9Tera-10 Comm.Energ.Atom. France – 8704 Itanium2, 1,6GHz 42,9Thunderbird Sandia Natl.Lab. USA 5 9024 Xeon, 3,6GHz 38,3TSUBAME Tokyo IT Japan – 10368 Opteron, 2,6GHz 38,2JUBL,BlueGene FZ Julich BRD 6 16384 PowerPC440, 700MHz 37,3Cray Red Storm Oak Ridge N.L. USA 10 10880 Opteron, 2,4GHz 36,2Earth Simulator Earth Simulation Ctr Japan 7 5120 NEC SX6 35,9
www.top500.org: The TOP500 table shows the 500 most powerfulcommercially available computer systems known to us.
Die Liste stellt ein halbjahrliches ranking dar. Sie ist unter diversenKriterien durchsuchbar. Es gibt ein Archiv alter Listen.
www.top500.org bietet damit den Herstellern von Super-Computerneine Buhne. Werbung! Die veroffentlichten technischen Details lassenaber auch trends im high performance computing, HPC erkennen.
Abschnitt 11: Addenda 255
• statt Linpack benchmark in Zukunft HPC Challenge, HPCC ?
• wohl haufig nur ’transient’ zusammengestellte Super-Computer
• clusters, clouds . . .
• FPGA-Beschleuniger, cell-Prozessoren, GPGPUs . . .
• s. InFocus: Literatur, upcoming supercomputers etc.
Abschnitt 11: Addenda 256
11.5. Addendum in 2007: cell-Prozessor
• entwickelt seit 2000 von IBM, Sony, Toshiba
• Ziel: 100-fache PS2-Leistung
• gaming, multi media, real time responsiveness
• von IBM: 90nm-Prozess, SiliconOnInsulator, low-k dielectrics,copper interconnects, Architektur22
B hardware performance and efficiency
• memory latency & -bandwidth (”memory wall/gap“): DRAM
latencies ↗, = hundreds of multi-GHz processor cycles = athousand of (multi-) processor (with shared memory) cycles;Spekulation ist kein Ausweg
• power: improve power efficiency along with performance
• Frequenz-Steigerungssackgasse (kurzere cycles⇒ immer langerepipelines ⇒ immer hohere penalties)
22 Kahle et al: Introduction to the Cell multiprocessor; IBM J. Res.&Dev. Vol49, No 4/5, July/Sept. 2005 http://researchweb.watson.ibm.com/journal/rd/494/kahle.html
Abschnitt 11: Addenda 257
B real time responsiveness to user and network
”keep the players satisfied!“
• support real time OS
• support communication oriented workload
• variety of e.g. streaming standards ⇒ flexibility and program-mability of acceleration
• security, DRM, privacy
B Applicability to a wide range of platforms
long term 64bit Broadband Architecture23 + LINUX-based softwaredevelopment environment = software development community
B Introduction in 2005
Power Architecture = basis for Cell
23 s.a. http://www-306.ibm.com/chips/techlib/techlib.nsf/products/Cell
Abschnitt 11: Addenda 258
B Design Concept and Architecture
Cell = 64bit Power + synergistic processors + DMA + memory flow control
first generation Cell = dual issue 64bit Power processor element, PPE+ 8 synergistic processor elements, SPE+ on chip memory controller + on chip IO controller
� A high-bandwidth on-chip coherent bus and high
bandwidth memory to deliver performance on
memory-bandwidth-intensive applications and to
allow for high-bandwidth on-chip interactions
between the processor elements. The bus is coherent
to allow a single address space to be shared by the
PPEs and SPEs for efficient communication and ease
of programming.� High-bandwidth flexible I/O configurable to support
a number of system organizations, including a single-
chip configuration with dual I/O interfaces and a
‘‘glueless’’ coherent dual-processor configuration that
does not require additional switch chips to connect
the two processors.� Full-custom modular implementation to maximize
performance per watt and performance per square
millimeter of silicon and to facilitate the design of
derivative products.� Extensive support for chip power and thermal
management, manufacturing test, hardware and
software debugging, and performance analysis.� High-performance, low-cost packaging technology.� High-performance, low-power 90-nm SOI
technology.
High design frequency and low supply voltage
To deliver the greatest possible performance, given a
silicon and power budget, one challenge is to co-optimize
the chip area, design frequency, and product operating
voltage. Since efficiency improves dramatically (faster
than quadratic) when the supply voltage is lowered,
performance at a power budget can be improved by using
more transistors (larger chip) while lowering the supply
voltage. In practice the operating voltage has a minimum,
often determined by on-chip static RAM, at which the
chip ceases to function correctly. This minimum
operating voltage, the size of the chip, the switching
factors that measure the percentage of transistors that
will dissipate switching power in a given cycle, and
technology parameters such as capacitance and leakage
currents determine the power the processor will dissipate
as a function of processor frequency. Conversely, a power
budget, a given technology, a minimum operating
voltage, and a switching factor allow one to estimate a
maximum operating frequency for a given chip size. As
long as this frequency can be achieved without making
the design so inefficient that one would be better off with
a smaller chip operating at a higher supply voltage, this is
the design frequency the project should aim to achieve. In
other words, an optimally balanced design will operate at
the minimum voltage supported by the circuits and at the
maximum frequency at that minimum voltage. The chip
should not exceed the maximum power tolerated by the
application. In the case of the Cell processor, having
eliminated most of the barriers that cause inefficiency in
high-frequency designs, the initial design objective was
a cycle time no more than that of ten fan-out-of-four
Figure 1
(a) Cell processor block diagram and (b) die photo. The first generation Cell processor contains a power processor element (PPE) with a Power core, first- and second-level caches (L1 and L2), eight synergistic processor elements (SPEs) each containing a direct memory access (DMA) unit, a local store memory (LS) and execution units (SXUs), and memory and bus interface controllers, all interconnected by a coherent on-chip bus. (Cell die photo courtesy of Thomas Way, IBM Burlington.)
Powercore
On-chip coherent bus (up to 96 bytes per cycle)
SXU
LS
SXU
LSLS
SXU
LSLS
SXU
LS
Dual RambusXDR**
RambusFlexIO**
LS
SXU
LS
SXU SXU SXU
Bus interfacecontroller
Memorycontroller
L2
L1
DMA DMADMADMA DMADMA DMA DMA
PPE
SPE
(a)
(b)
Rambus XDR DRAM interfaceRambus XDR DRAM interface
PowerPowercorecore
L2L20.5 MB0.5 MB
Memory controllerMemory controller
Test and debug logicTest and debug logic
Coh
eren
t bu
sC
oher
ent
bus
Rambus XDR DRAM interface
Powercore
L20.5 MB
SPESPE SPESPESPE SPE
SPESPE SPESPESPE SPE
SPESPE SPESPESPE SPE
SPESPE SPESPESPE SPE
Memory controller
I/O controllerI/O controllerI/O controller
Rambus RRACRambus RRACRambus RRAC
Test and debug logic
Coh
eren
t bu
s
J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005
592
Abschnitt 11: Addenda 259
• high frequency design, i.e. small number of gates per cycle ⇒(low voltage, low power) & (high frequency, high performance)
• Power architecture compatibility ⇒virtualization, multi OS support, symmetric multiprocessing
• SIMD (PPEs vector media extensions, SPEs vector instructions)
• SPEs for coherent offload: SPEs with local memory, asynchro-nous coherent DMA, large register file . . .
• high bandwith coherent bus, high bandwidth memory (singleaddress space)
• high bandwith flexible configurable IO
B High frequency & low voltage
konfligierende Ziele: performance ↗, power ↘, frequency ↗, voltage↘, area ↘An optimally balanced design operates at minimum voltage suppor-ted by the circuits and at the maximum frequency at that minimumvoltage! ⇒ 10 FO4 later 11 FO4
Abschnitt 11: Addenda 260
B Power architecture compatibility
erleichtert Portieren von Software: existing Power applications run onCell
B SIMD
Vektorisierung ist entscheidend fur performante multi media Anwen-dungen! typische Entwicklung solcher Anwendungen
1. develop single threaded software without SIMD
2. use SIMD on PPE
3. use SIMD on SPEs
B Power processor element, PPE
• nur 23 pipeline Stufen bei halber cycle time
”short wire“= short communication delays
• dual issue – in order; two threads (cp. Intels hyperthreading)
• 32KB 1st level I-cache and D-cache, 512KB 2nd level cache
• caching is not transparent: data is lockable in 2nd level cache
Abschnitt 11: Addenda 261
• two simultaneous threads in PPE ⇒ PPE = two-way multi-processor with shared dataflow ⇒ software sees two processingunits (all registers are duplicated etc)
• PPE = instruction unit, IU+ fixed point execution (+ load/store) unit, XU+ vector scalar (floating point) unit, VSU
– IU fetches 4 instructions per cycle per thread into bufferand dual issues to execution; nearly all combinations pos-sible; 4KB branch history table
– XU with 32 64bit registers per thread + fixed point unit +load/store unit’The load/store unit supports a non-blocking L1 D-cachewhich allows cache hits under misses.’
– VSU with 32 64bit registers per thread; vector execution= 128bit data flow with 32 128bit vector registers (2×64,4×32, 8×16, 16×8, 128×1) + FUs for simple, complex,permute and SP float operations
Power processor element, PPE: IU, XU, VSU
Abschnitt 11: Addenda 262
Figure 2
Power processor element (a) major units and (b) pipeline diagram. Instruction fetch and decode fetches and decodes four instructions in parallel from the first-level instruction cache for two simultaneously executing threads in alternating cycles. When both threads are active, two instructions from one of the threads are issued in program order in alternate cycles. The core contains one instance of each of the major execution units (branch, fixed-point, load/store, floating-point (FPU), and vector-media (VMX). Processing latencies are indicated in part (b) [color-coded to correspond to part (a)]. Simple fixed-point instructions execute in two cycles. Because execution of fixed-point instructions is delayed, load to use penalty is limited to one cycle. Branch miss penalty is 23 cycles and is comparable to the penalty in designs with a much lower operating frequency.
Pre-decode
L1 instruction cache
Microcode
SMT dispatch (queue)
Decode
Dependency
Issue
Branch scan
Fetch controlL2
interface
VMX/FPU issue (queue)
VMXload/store/permute
VMXarith./logic unit
FPUload/store
FPUarith./logic unit
Load/storeunit
Branchexecution unit
Fixed-pointunit
FPU completionVMX completion
Completion/flush
8
4
21
2
11 1 1
111
4Thread A Thread B
Threads alternatefetch and dispatchcycles
L1 data cache
2
Fixed-point unit instruction
Branch instruction
Load/store instruction
Branch prediction
IC Instruction cacheIB Instruction bufferBP Branch predictionMC MicrocodeID Instruction decodeIS Instruction issueDLY Delay stageRF Register file accessEX ExecutionWB Write back
ID2 IS1IC1 IC2 IC3 ID1 IS2IB2 IS3IB1 ID3IC4
BP1 BP2 BP3 BP4
RF2 EX1 EX2 EX3RF1DLY EX4 IBZ IC0DLY DLY
RF1 RF2 EX1 EX2 EX3 EX4 EX5 WBDLY DLY DLY
RF1 RF2 EX1 EX3 EX4EX2 EX5 EX7EX6 EX8 WB
PPE pipeline back end
(a)
(b)
Microcode
PPE pipeline front end
Thread AThread B
Thread A
Instruction decode and issue
Instruction cache and buffer
MC1 MC2 MC3 MC4 ... MC10 MC11MC9
IU
XU
VSU
J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005
594
Power processor element, PPE: pipline
Abschnitt 11: Addenda 263
Figure 2
Power processor element (a) major units and (b) pipeline diagram. Instruction fetch and decode fetches and decodes four instructions in parallel from the first-level instruction cache for two simultaneously executing threads in alternating cycles. When both threads are active, two instructions from one of the threads are issued in program order in alternate cycles. The core contains one instance of each of the major execution units (branch, fixed-point, load/store, floating-point (FPU), and vector-media (VMX). Processing latencies are indicated in part (b) [color-coded to correspond to part (a)]. Simple fixed-point instructions execute in two cycles. Because execution of fixed-point instructions is delayed, load to use penalty is limited to one cycle. Branch miss penalty is 23 cycles and is comparable to the penalty in designs with a much lower operating frequency.
Pre-decode
L1 instruction cache
Microcode
SMT dispatch (queue)
Decode
Dependency
Issue
Branch scan
Fetch controlL2
interface
VMX/FPU issue (queue)
VMXload/store/permute
VMXarith./logic unit
FPUload/store
FPUarith./logic unit
Load/storeunit
Branchexecution unit
Fixed-pointunit
FPU completionVMX completion
Completion/flush
8
4
21
2
11 1 1
111
4Thread A Thread B
Threads alternatefetch and dispatchcycles
L1 data cache
2
Fixed-point unit instruction
Branch instruction
Load/store instruction
Branch prediction
IC Instruction cacheIB Instruction bufferBP Branch predictionMC MicrocodeID Instruction decodeIS Instruction issueDLY Delay stageRF Register file accessEX ExecutionWB Write back
ID2 IS1IC1 IC2 IC3 ID1 IS2IB2 IS3IB1 ID3IC4
BP1 BP2 BP3 BP4
RF2 EX1 EX2 EX3RF1DLY EX4 IBZ IC0DLY DLY
RF1 RF2 EX1 EX2 EX3 EX4 EX5 WBDLY DLY DLY
RF1 RF2 EX1 EX3 EX4EX2 EX5 EX7EX6 EX8 WB
PPE pipeline back end
(a)
(b)
Microcode
PPE pipeline front end
Thread AThread B
Thread A
Instruction decode and issue
Instruction cache and buffer
MC1 MC2 MC3 MC4 ... MC10 MC11MC9
IU
XU
VSU
J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005
594
RISC = Reduced Inside Complexity
Abschnitt 11: Addenda 264
B Synergistic processor elements, SPEs
spezifische ISA24
• 1, 2, 4, 8, 16 byte data types: byte, 12word, word, 2word, 4word
• 128bit SIMD execution unit organisation, 27 registers
• 6 Formate fur die 32bit Instruktionen mit 4–11bit OPcodes:rRR, rRRR (fma = MAC = AXPY), rRI7, rRI10, RI16, RI18
• ISA support to eliminate branches: The SPU ISA defines compare in-
structions to set masks that can be used in three operand select instructions
to create efficient conditional assignments. Such conditional assignments
can be used to avoid difficult-to-predict branches.
• hint for branch instructions, i.e. hints on branch target
• channel instructions, i.e. 128bit IO to external devices
• maskable memory addresses allow for different local memory size
24Synergistic Processor Unit Instruction Set Architecture, s.a.www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/76CA6C7304210F3987257060006F2C44
Abschnitt 11: Addenda 265
point and load instructions take six cycles. Two-way
SIMD double-precision floating point is also supported,
but the maximum issue rate is one SIMD instruction per
seven cycles. All other instructions are fully pipelined.
To limit hardware overhead for branch speculation,
branches can be ‘‘hinted’’ by the programmer or compiler.
The branch hint instruction notifies the hardware of an
upcoming branch address and branch target, and the
hardware responds (assuming that local store slots are
available) by pre-fetching at least seventeen instructions
at the branch target address. A three-source bitwise select
instruction can be used to further eliminate branches
from the code.
The control area makes up only 10–15% of the area
of the 10-mm2 SPE core, and yet several applications
achieve near-peak performance on this processor. The
entire SPE is only 14.5 mm2 and dissipates only a few
watts even when operating at multi-GHz frequencies.
High-bandwidth on-chip coherent fabric and
high-bandwidth memory
With the architectural improvements that remove the
latency-induced limitation on bandwidth, the next
challenge is to make significant improvements in
delivering bandwidth to main memory and bandwidth
between the processing elements and interfaces within the
Figure 3
Synergistic processor element (a) organization and (b) pipeline diagram. Central to the synergistic processor is the 256-KB local store SRAM. The local store supports both 128-byte access from direct memory access (DMA) read and write, as well as instruction fetch, and a 16-byte interface for load and store operations. The instruction issue unit buffers and pre-fetches instructions and issues up to two instructions per cycle. A 6-read, 2-write port register file provides both execution pipes with 128-bit operands and stores the results. Instruction execution latency is two cycles for simple fixed-point instructions and six cycles for both load and single-precision floating-point instructions. Instruc-tions are staged in an operand-forwarding network for up to six additional cycles; all execution units write their results in the register file in the same stage. The penalty for mispredicted branches is 18 cycles.
Fixed-point instruction
Floating-point instruction
Branch instruction
Load/store instruction
Permute instruction
IF Instruction fetchIB Instruction bufferID Instruction decodeIS Instruction issueRF Register file accessEX ExecutionWB Write back
ID2 IS1IF1 IF2 IF3 ID1 IS2IB2IB1 ID3IF4
EX4EX1 EX2 EX3
EX4 EX5EX1 EX2 EX3
EX1 EX2
IF5
RF1 RF2
EX1 EX2 EX3 EX4 EX6EX4
SPE pipeline back end
(a)
(b)
SPE pipeline front end
WB
WB
WB
WBEX6
Permute unit
Load/store unit
Floating-point unit
Fixed-point unitBranch unit
Channel unit
Result forwarding and staging
Register file
Local store(256 KB)
Single-port SRAM
128B read 128B write
DMA unit
Instruction issue unit/instruction line buffer
8 bytes per cycle
16 bytes per cycle
64 bytes per cycle
128 bytes per cycle
On-chip coherent bus
J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005
596
• 256KB local memory
• coherent sophisticated DMA access to system memory
• 128bit data flow: all instructions are SIMD (wie PPE)
• max 2 instructions per cycle: fixed/floating point instructiongepaart mit load/store, permutation oder branch
• hint for branch instructions, i.e. hints on branch target:prefetching at least 17 instructions at branch target address
• SPE is only 14.5 mm2, ’only a few watts at multi GHz’
Abschnitt 11: Addenda 266
point and load instructions take six cycles. Two-way
SIMD double-precision floating point is also supported,
but the maximum issue rate is one SIMD instruction per
seven cycles. All other instructions are fully pipelined.
To limit hardware overhead for branch speculation,
branches can be ‘‘hinted’’ by the programmer or compiler.
The branch hint instruction notifies the hardware of an
upcoming branch address and branch target, and the
hardware responds (assuming that local store slots are
available) by pre-fetching at least seventeen instructions
at the branch target address. A three-source bitwise select
instruction can be used to further eliminate branches
from the code.
The control area makes up only 10–15% of the area
of the 10-mm2 SPE core, and yet several applications
achieve near-peak performance on this processor. The
entire SPE is only 14.5 mm2 and dissipates only a few
watts even when operating at multi-GHz frequencies.
High-bandwidth on-chip coherent fabric and
high-bandwidth memory
With the architectural improvements that remove the
latency-induced limitation on bandwidth, the next
challenge is to make significant improvements in
delivering bandwidth to main memory and bandwidth
between the processing elements and interfaces within the
Figure 3
Synergistic processor element (a) organization and (b) pipeline diagram. Central to the synergistic processor is the 256-KB local store SRAM. The local store supports both 128-byte access from direct memory access (DMA) read and write, as well as instruction fetch, and a 16-byte interface for load and store operations. The instruction issue unit buffers and pre-fetches instructions and issues up to two instructions per cycle. A 6-read, 2-write port register file provides both execution pipes with 128-bit operands and stores the results. Instruction execution latency is two cycles for simple fixed-point instructions and six cycles for both load and single-precision floating-point instructions. Instruc-tions are staged in an operand-forwarding network for up to six additional cycles; all execution units write their results in the register file in the same stage. The penalty for mispredicted branches is 18 cycles.
Fixed-point instruction
Floating-point instruction
Branch instruction
Load/store instruction
Permute instruction
IF Instruction fetchIB Instruction bufferID Instruction decodeIS Instruction issueRF Register file accessEX ExecutionWB Write back
ID2 IS1IF1 IF2 IF3 ID1 IS2IB2IB1 ID3IF4
EX4EX1 EX2 EX3
EX4 EX5EX1 EX2 EX3
EX1 EX2
IF5
RF1 RF2
EX1 EX2 EX3 EX4 EX6EX4
SPE pipeline back end
(a)
(b)
SPE pipeline front end
WB
WB
WB
WBEX6
Permute unit
Load/store unit
Floating-point unit
Fixed-point unitBranch unit
Channel unit
Result forwarding and staging
Register file
Local store(256 KB)
Single-port SRAM
128B read 128B write
DMA unit
Instruction issue unit/instruction line buffer
8 bytes per cycle
16 bytes per cycle
64 bytes per cycle
128 bytes per cycle
On-chip coherent bus
J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005
596
B High Bandwidth: on-chip (SPE)
• local memory to local memory per DMA
B High Bandwidth: main memory
• main = system memory = Rambus XDR DRAM with two 32bit channels a 12.8GB/s vs 96byte per cycle on chip
Abschnitt 11: Addenda 267
B High Bandwidth: IO
• configurable to support multiple high bandwidth system confi-gurations: base, 2-way, 4-way symmetric multiprocessor
Cell processor. Memory bandwidth at a low system cost
is improved on the first-generation Cell processor by
using next-generation Rambus XDR** DRAM memory
[15]. This memory delivers 12.8 GB/s per 32-bit memory
channel, and two of these channels are supported on the
Cell processor for a total bandwidth of 25.6 GB/s. Since
the internal fabric on the chip delivers nearly an order of
magnitude more bandwidth (96 bytes per cycle at peak),
there is almost no perceivable contention on DMA
transfers between units within the chip.
High-bandwidth flexible I/O
In order to build effective dual-processor systems and
systems with a high-bandwidth I/O-connected accelerator
as well as an I/O-connected system interface chip, Cell
is designed with a high-bandwidth configurable I/O
interface. At the physical layer, a total of seven transmit
and five receive Rambus RRAC FlexIO** bytes [16] can
be dedicated to up to two separate logical interfaces, one
of which can be configured to operate as a coherent
interface. Thus, the Cell processor supports multiple
high-bandwidth system configurations (Figure 4).
Full-custom implementation
The first-generation Cell processor is a highly optimized
full-custom high-frequency, low-power implementation
of the architecture [17]. Cell is a system on a chip;
however, unlike most SoCs, Cell has been designed with
a full-custom design methodology. Some aspects of the
physical design stand out in comparison with previous
full-custom efforts:
� Several latch families, ranging from a more
conventional static latch to a dynamic latch with
integrated function to a pulsed latch that minimizes
insertion delay. Most chip designs standardize on a
single latch type and do not achieve the degree of
optimization that is possible with this wide a choice.
To manage the design and timing complexities
associated with such a large number of latches, all
latches share a common block that generates the local
clocking signals that control the latch elements. The
latches support only limited use of cycle-stealing,
simplifying the design process.� Extensive custom design on the wires. Several of the
larger buses are fully engineered, controlling wiring
levels and wire placement and using noise-reduction
techniques such as wire twisting, and can be regarded
as full-custom wire-only macros. A large fraction
of the remaining wires are manually controlled
to run preferentially on specific wiring layers. With
transistors improving more rapidly than wires from
one technology to the next, more of the engineering
resource must be spent on managing and controlling
wires than in the past.� A design methodology which ensures that synthesized
(usually control logic) macros are modified, timed, and
analyzed at the transistor level consistently with custom
designs. This allows macros to be changed smoothly
from synthesized to custom. Among other
advantages, this requires all macros to have
corresponding transistor schematics.� Extensive chip electrical and thermal engineering for
power distribution and heat dissipation. Whereas
previous projects would do the bulk of this analysis
on the basis of static models, this project required
pattern (program)-dependent analysis of the power
dissipation and used feedback from these analysis
tools to drive the design. Fine-grained clock gating
was utilized to activate sections of logic only when
they were needed. Multiple thermal sensors in the chip
Figure 4
Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)
Cellprocessor
Cellprocessor
XDR XDR
XDR XDR XDR XDR
IOIF BIF IOIF
XDR XDR XDR XDR
BIF
BIFSwitch
Cellprocessor
Cellprocessor
XDR XDR XDR XDR
Cellprocessor
Cellprocessor
Cellprocessor
(a)
(b)
(c)
IOIF
IOIF
IOIF
IOIF
IOIF0 IOIF1
IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.
597
Cell processor. Memory bandwidth at a low system cost
is improved on the first-generation Cell processor by
using next-generation Rambus XDR** DRAM memory
[15]. This memory delivers 12.8 GB/s per 32-bit memory
channel, and two of these channels are supported on the
Cell processor for a total bandwidth of 25.6 GB/s. Since
the internal fabric on the chip delivers nearly an order of
magnitude more bandwidth (96 bytes per cycle at peak),
there is almost no perceivable contention on DMA
transfers between units within the chip.
High-bandwidth flexible I/O
In order to build effective dual-processor systems and
systems with a high-bandwidth I/O-connected accelerator
as well as an I/O-connected system interface chip, Cell
is designed with a high-bandwidth configurable I/O
interface. At the physical layer, a total of seven transmit
and five receive Rambus RRAC FlexIO** bytes [16] can
be dedicated to up to two separate logical interfaces, one
of which can be configured to operate as a coherent
interface. Thus, the Cell processor supports multiple
high-bandwidth system configurations (Figure 4).
Full-custom implementation
The first-generation Cell processor is a highly optimized
full-custom high-frequency, low-power implementation
of the architecture [17]. Cell is a system on a chip;
however, unlike most SoCs, Cell has been designed with
a full-custom design methodology. Some aspects of the
physical design stand out in comparison with previous
full-custom efforts:
� Several latch families, ranging from a more
conventional static latch to a dynamic latch with
integrated function to a pulsed latch that minimizes
insertion delay. Most chip designs standardize on a
single latch type and do not achieve the degree of
optimization that is possible with this wide a choice.
To manage the design and timing complexities
associated with such a large number of latches, all
latches share a common block that generates the local
clocking signals that control the latch elements. The
latches support only limited use of cycle-stealing,
simplifying the design process.� Extensive custom design on the wires. Several of the
larger buses are fully engineered, controlling wiring
levels and wire placement and using noise-reduction
techniques such as wire twisting, and can be regarded
as full-custom wire-only macros. A large fraction
of the remaining wires are manually controlled
to run preferentially on specific wiring layers. With
transistors improving more rapidly than wires from
one technology to the next, more of the engineering
resource must be spent on managing and controlling
wires than in the past.� A design methodology which ensures that synthesized
(usually control logic) macros are modified, timed, and
analyzed at the transistor level consistently with custom
designs. This allows macros to be changed smoothly
from synthesized to custom. Among other
advantages, this requires all macros to have
corresponding transistor schematics.� Extensive chip electrical and thermal engineering for
power distribution and heat dissipation. Whereas
previous projects would do the bulk of this analysis
on the basis of static models, this project required
pattern (program)-dependent analysis of the power
dissipation and used feedback from these analysis
tools to drive the design. Fine-grained clock gating
was utilized to activate sections of logic only when
they were needed. Multiple thermal sensors in the chip
Figure 4
Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)
Cellprocessor
Cellprocessor
XDR XDR
XDR XDR XDR XDR
IOIF BIF IOIF
XDR XDR XDR XDR
BIF
BIFSwitch
Cellprocessor
Cellprocessor
XDR XDR XDR XDR
Cellprocessor
Cellprocessor
Cellprocessor
(a)
(b)
(c)
IOIF
IOIF
IOIF
IOIF
IOIF0 IOIF1
IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.
597
Cell processor. Memory bandwidth at a low system cost
is improved on the first-generation Cell processor by
using next-generation Rambus XDR** DRAM memory
[15]. This memory delivers 12.8 GB/s per 32-bit memory
channel, and two of these channels are supported on the
Cell processor for a total bandwidth of 25.6 GB/s. Since
the internal fabric on the chip delivers nearly an order of
magnitude more bandwidth (96 bytes per cycle at peak),
there is almost no perceivable contention on DMA
transfers between units within the chip.
High-bandwidth flexible I/O
In order to build effective dual-processor systems and
systems with a high-bandwidth I/O-connected accelerator
as well as an I/O-connected system interface chip, Cell
is designed with a high-bandwidth configurable I/O
interface. At the physical layer, a total of seven transmit
and five receive Rambus RRAC FlexIO** bytes [16] can
be dedicated to up to two separate logical interfaces, one
of which can be configured to operate as a coherent
interface. Thus, the Cell processor supports multiple
high-bandwidth system configurations (Figure 4).
Full-custom implementation
The first-generation Cell processor is a highly optimized
full-custom high-frequency, low-power implementation
of the architecture [17]. Cell is a system on a chip;
however, unlike most SoCs, Cell has been designed with
a full-custom design methodology. Some aspects of the
physical design stand out in comparison with previous
full-custom efforts:
� Several latch families, ranging from a more
conventional static latch to a dynamic latch with
integrated function to a pulsed latch that minimizes
insertion delay. Most chip designs standardize on a
single latch type and do not achieve the degree of
optimization that is possible with this wide a choice.
To manage the design and timing complexities
associated with such a large number of latches, all
latches share a common block that generates the local
clocking signals that control the latch elements. The
latches support only limited use of cycle-stealing,
simplifying the design process.� Extensive custom design on the wires. Several of the
larger buses are fully engineered, controlling wiring
levels and wire placement and using noise-reduction
techniques such as wire twisting, and can be regarded
as full-custom wire-only macros. A large fraction
of the remaining wires are manually controlled
to run preferentially on specific wiring layers. With
transistors improving more rapidly than wires from
one technology to the next, more of the engineering
resource must be spent on managing and controlling
wires than in the past.� A design methodology which ensures that synthesized
(usually control logic) macros are modified, timed, and
analyzed at the transistor level consistently with custom
designs. This allows macros to be changed smoothly
from synthesized to custom. Among other
advantages, this requires all macros to have
corresponding transistor schematics.� Extensive chip electrical and thermal engineering for
power distribution and heat dissipation. Whereas
previous projects would do the bulk of this analysis
on the basis of static models, this project required
pattern (program)-dependent analysis of the power
dissipation and used feedback from these analysis
tools to drive the design. Fine-grained clock gating
was utilized to activate sections of logic only when
they were needed. Multiple thermal sensors in the chip
Figure 4
Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)
Cellprocessor
Cellprocessor
XDR XDR
XDR XDR XDR XDR
IOIF BIF IOIF
XDR XDR XDR XDR
BIF
BIFSwitch
Cellprocessor
Cellprocessor
XDR XDR XDR XDR
Cellprocessor
Cellprocessor
Cellprocessor
(a)
(b)
(c)
IOIF
IOIF
IOIF
IOIF
IOIF0 IOIF1
IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.
597
Abschnitt 11: Addenda 268
B Full custom implementation/optimization
• latch families
• custom design of wires
• design methodology (analysis at transistor level)
• power distribution and heat dissipation engineering:fine grained clock gating, multiple thermal sensors
• modular design allows for multiple PPEs and SPEs
• multiple clock grids
• power-on reset, self test, test support
• packaging
• low power CMOS SOI
Abschnitt 11: Addenda 269
B Programming
• Cell runs 32bit and 64bit Power and PowerPC applications!
• inter processor communication and data movement facilities ma-ke a wide range of programming models feasible!
– function offload to one or more SPEs specified by∗ programmer/hints to the compiler/compiler
– device extension, e.g. SPE in isolated mode for DRM, pri-vacy/security
– PPE is host for SPEs which perform tasks in parallel(based both on shared memory or message passing)∗ parallelized/scheduled by programmer/compiler
– streaming models: PPE acts as streaming controller, SPEsas stream data processors in a pipeline
– shared memory multiprocessor model: per DMA: sharedmemory ↔ local store; per load/store: local store ↔ regis-ters; locking per DMA lock line command
– asymmetric thread runtime model: on PPEs or SPEs, mostflexible
Abschnitt 11: Addenda 270
B Benchmarking
benchmarking25 according to objectives
• matrix multiplication
• LINPACK
• MPEG2 video decoding
• triangle transform and lightning in the graphic render pipeline
• cryptography: AES, DES, MD5, SHA-1, SHA-256
25 Chen et al: Cell Broadband Engine Architecture and its first implementation– A Performance View; 2005www-128.ibm.com/developerworks/power/library/pa-cellperf
Abschnitt 11: Addenda 271
11.6. Addendum in 2010: Core i2000
siehe Christof Windeck: Intels neue Prozessor-Generation Core i-2000alias Sandy Bridge; c’t 3/2011, S. 94-99 Core i3-2000, i5-2000 undi7-2000
in 32nm-Technik gefertigte desktop- und mobil-Versionen im neuenSockel LGA1155 fur neue mainboards mit geanderter Stromversor-gung und neuen Chipsatzen
GPUcore core core core
shared L3 cache, LLCMMU
GPU = Processor graphicsLLC = last level cacheMMU = System Agent
GPU fur 1-2 displays, System Agent = Speicher-, PCI und IO-Controllersowie Taktsteuerung, Einheiten, insbesondere jeder Kern uber Ring-Bus vernetzt (mit ’1000 Signalleitungen in eigenem layer’): max 300GB/s.GPU nutzt auch den LLC: ’das RAM kann haufiger schlafen’.
Unterstutzten Advanced Vector Extensions, AVX, d.h. 256bit breiteArgumente vs 128bit in SSE4: βSSE→AVX ≈ 1.86 fur Linpack aber nurunter Win7SP1, Linux, aber fused multiply add, FMADD erst 2012
Abschnitt 11: Addenda 272
Mit AVX einhergehend Verbesserungen bei load/store units, branchprediction, (großerer?) Puffer fur µ-Ops. Aber: AVX-units ’bearbeiteneinige SSE-Instruktionen langsamer als die Vorganger’.
Aus einem externen 100MHz Taktgeber werden alle Takte intern er-zeugt – kein Ubertakten. Wie bisher Turbo-Boost, jetzt aber mit ein-gebautem Ubertakten – konfigurierbar: ’wir haben es jedenfalls raschgeschafft, soviel falsch zu machen, daß das System erst nach BIOS-reset per CMOS clear wieder startete’Turbo Boost auch fur GPU; LLC per Prozessor-Takt.
Automatisches Umschalten zwischen GPU und externer Grafikkarte.GPU mit 6 oder 12 execution units, EUs unterstutzt DirectX 10.1 undOpenCL 1.1. GPU mit separatem Hardware encoder fur das Transco-dieren von Video-streams, z.B. 97min MPEG4 HD-Video mit 8Mbit/sund AAC-Stereo-Ton in iPod-Format per QuickSync in 7’15”, per Me-diaConverter 7 in 25’, auch 3D-Unterstutzung, aber keine 3D-Spieleauf 120Hz displays
PCIe 2.0 mit 500MB/s/lane, sollte u.a. fur USB 3.0 reichen, c’t mißt
Abschnitt 11: Addenda 273
197MB/s lesend, ca die Halfte schreibend, je nach Chipsatz 12-14USB 2.0 ports, SATA-6G fur Platten > 2TB, setzt aber notwendigUEFI 2.0 voraus.
Chipsatze mit Fernwartung (Active Management Technology, AMT ),TPM (Trusted Execution Technology), Virtualisierung . . .
Performance-Messungen per SPEC CPU2006, Cinebench, BaPCo SYS-mark 2007, Office, gcc, zip etc. also alles ohne AVX, siehehttp://www.heise.de/ct/inhalt/2011/03/94/ bishttp://www.heise.de/ct/inhalt/2011/03/99/.
Fazit: viel Rechenleistung fur’s Geld, Preis/Leistung besser als beiVorganger-Prozessoren und besser als bei AMD!integrierte GPU ’konkurriert mit 40Euro-Grafikkarten’, vorteilhaft furnotebooks und Buro-Computer, GPU reicht nicht fur gamer.
Abschnitt 11: Addenda 274
11.7. Addendum in 2011: K Computer
www.top500.org
The K Computer, built by Fujitsu, currently combines 68544 SPARC64VIIIfx CPUs, each with eight cores, for a total of 548,352 cores - almosttwice as many as any other system in the TOP500. The K Computeris also more powerful than the next five systems on the list combined.
The K Computers name draws upon the Japanese word ’Kei’ for 1016,representing the system’s performance goal of 10 petaflops. RIKEN isthe Institute for Physical and Chemical Research. Unlike the Chinesesystem it displaced from the No. 1 slot and other recent very largesystem, the K Computer does not use graphics processors or otheraccelerators. The K Computer is also one of the most energy-efficientsystems on the list.
Some Other Highlights from the newest List:
• Intel continues to provide the processors for the largest share(77.4 percent) of TOP500 systems. Intels Westmere processorsincreased their presence in the list strongly with 169 systems,
Abschnitt 11: Addenda 275
compared with 56 in the last list.
• Quad-core processors are used in 46.2 percent of the systems,while already 42.4 percent of the systems use processors withsix or more cores.
Tracking Changes
• The entry level to the list moved up to the 40.1 Tflop/s mark onthe Linpack benchmark, compared to 31.1 Tflop/s six monthsago.
• The last system on the newest list was listed at position 262 sixmonths ago. This turnover rate has steadily increased duringthe last few lists and is now above average.
Some Final Notes on Power Consumption
• Average power efficiency is 248 Mflops/W (up from 219 Mflops/Wsix months ago and 195 Mflops/watt one year ago).
• The No. 1 system, the K Computer, also reports the highesttotal power consumption of 9.89 MW.
Abschnitt 11: Addenda 276
Site RIKEN Advanced Institute for Computational Science (AICS)System Family Fujitsu ClusterSystem Model K computerComputer K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnectVendor FujitsuApplication area ResearchInstallation Year 2011Operating System LinuxInterconnect CustomProcessor SPARC64 VIIIfx 2000 MHz (16 GFlops)
The K system does not have GPUs, because they really would notadd to the performance of the system. The most important part isthe direct network connection, which currently is based on Infiniband.The individual speed of the nodes is not that important, as long astheir connection is.
Actually most of the porting work goes into parallelisation. Adaptingit to the processor and operating system is only minor work.
K computer is a huge system with over 500.000 nodes. About every
Abschnitt 11: Addenda 277
15 hours a node fails. So they are working on low level rerouting ofnodes so that applications do not fail.
http://en.wikipedia.org/wiki/K computer:On the 20th of June 2011, K topped the LINPACK benchmark withthe performance of 8.162 petaflops with a computing efficiency ratioof 93.0%, making it the fastest supercomputer in the world.
The system is still under construction and enters service in Novem-ber 2012 with 864 cabinets. Currently it uses 68,544 2.0GHz 8-coreSPARC64 VIIIfx processors packed in 672 cabinets, for a total of548,352 cores, manufactured by Fujitsu with 45 nm CMOS processtechnology. Each cabinet contains 96 compute nodes in addition to 6IO nodes. Each compute node contains a single processor and 16 GBof memory. Its water cooling system minimizes failure rate and powerconsumption.
The K computer uses a special six-dimensional torus network inter-connect called Tofu, and a Tofu-optimized Message Passing Interfacebased on the open-source Open MPI library. Users can create appli-
Abschnitt 11: Addenda 278
cation programs adapted to either a one-, two-, or three-dimensionaltorus network.
The system adopts a two-level local/global file system with parallel/-distributed functions, and provides users an automatic staging func-tion for moving files between global and local file systems. Fujitsudeveloped an optimized parallel file system based on Lustre, calledFujitsu Exabyte File System, scalable to several hundred petabytes.
The K also reports the highest total power consumption of 9.89 MW.The K computer’s performance equals
”one million linked desktop
computers“. Its power usage is roughly that of 10,000 houses and itsannual running costs are US$10 million.
http://www.golem.de/1106/84337.html
Die Wasserkuhlung des schnellsten Rechners der Welt: Dieser der-zeit schnellste Supercomputer wird durch eine ausgeklugelte Was-serkuhlung auf Betriebstemperatur gehalten. Die einzelnen Nodes desK-Computers sind aus Rackeinschuben mit nur einer Hoheneinheitaufgebaut. Das ist die Grundlage, um die insgesamt uber eine halbe
Abschnitt 11: Addenda 279
Million Prozessorkerne noch bei vertretbaren Latenzen zu vernetzen.Jeder Einschub enthalt vier Sparc-VIII-CPUs mit je acht Kernen.
Ein Board des K-Computers misst nur eine Hoheneinheit. Von denublicherweise rund 40 Hoheneinheiten eines Racks nutzt Fujitsu nur24 fur die Nodes, sie sind oben und unten in Einheiten von je 12Einschuben untergebracht. In der Mitte sitzen Stromversorgung undNetzanbindung, beide Komponenten werden per Luft gekuhlt. Mitden 24 Nodes mit je vier Achtkern-CPUs ergeben sich 768 Kerne proRack.
Um diese hohe Dichte zu erreichen, muss auch die Wasserkuhlungsehr flach gestaltet werden. Fur jeden Node gibt es daher einen zen-tralen Zu- und Ablauf, auf den Bildern als
”Water Cooling Module“
bezeichnet. Die Pumpen sind fur jedes Rack zentral gehalten. Dahersind die Nodes auch leicht gedreht in die Racks gesetzt, um Platz furdie Wasserleitungen zu schaffen.
Jede der vier CPUs und auch die vier Vernetzungsmodule besitzeneinen eigenen Kupferkuhler - nur der Speicher bleibt luftgekuhlt. Uber
Abschnitt 11: Addenda 280
die Art der Verschaltung der Prozessorsockel und der Nodes ist nochwenig bekannt, das japanische Forschungszentrum Riken in Kobe, woder K-Computer steht, bezeichnet es als
”Tofu Interconnect“. Auch die
Tabellen von top500.org verzeichnen fur die Vernetzung nur custom-es handelt sich also um ein Design, das fur diese Maschine entwickeltwurde.
www.weblearn.hs-bremen.de/risse/RST/docs/Fujitsu/when-high-performance-computing-meets-energy-efficiency.pdf
www.hotchips.org/uploads/archive22/HC22.24.510-1-Toyoishima-Tofu-icc.pdf
www.wseas.us/e-library/conferences/2011/Paris/ECC/ECC-21.pdf
www.weblearn.hs-bremen.de/risse/RST/docs/Fujitsu/programming-on-k-computer.pdf
Abschnitt 11: Addenda 281
11.8. Addendum in 2012: Raspberry Pi
www.raspberrypi.org www.raspberrypi.org/faqs
elinux.org/RaspberryPiBoard List of single-board computers
Erste-Schritte-mit-dem-Raspberry-Pi-1573973.html raspberrycenter.de
http://de.wikipedia.org/wiki/Raspberry Pi:Der Raspberry Pi ist ein kreditkartengroßer Einplatinen-Computer,der von der Raspberry Pi Foundation entwickelt wird. Der PC, der zuExperimenten anregen soll, wird in zwei Versionen, A fur 18e und B26e, angeboten.
Abschnitt 11: Addenda 282
Die Platine enthalt im Wesentlichen das Ein-Chip-System BCM 2835von Broadcom mit dem 700-MHz-Hauptprozessor ARM1176JZF-S so-wie 256 MB Arbeitsspeicher. Das Modell B hat zudem Ethernet undeinen zweiten USB-Anschluss. Linux und andere Betriebssysteme, diedie ARM-Architektur unterstutzen, konnen installiert werden. EineFestplatte ist nicht vorgesehen. Stattdessen konnen Speicherkarten(SD bzw. MMC) als nicht-fluchtiger Speicher benutzt werden.Auf Versuchsplatinen wurde gezeigt, dass die Desktop-Umgebung LX-DE unter Debian sowie Quake 3 und H.264-Videos mit einer Auflosungvon 1080p via HDMI funktionieren.
Anvisierter Preis US$25 (GBP £16) / US$35 (GBP £22)
Große Große einer Kreditkarte 85,60 mm × 53,98 mm × 17 mm
SoC Broadcom BCM2835
CPU ARM1176JZF-S (700 MHz)
GPU Broadcom VideoCore IV
SDRAM 256 MB
USB 2.0 Anschlusse 1 / 2 (uber integrierten Hub)
Videoausgabe Composite, HDMI
Abschnitt 11: Addenda 283
Tonausgabe 3.5 mm Klinkenstecker, HDMI
Nicht-fluchtiger Speicher SD/MMC/SDIO Kartenleser
Netzwerk - / 10/100 MBit Ethernet-Controller (LAN9512 von SMSC)
Bussysteme Bis zu 16 GPIO Pins, SPI, I2C, UART
Echtzeituhr –
Energieverbrauch 500mA, (2,5 Watt) / 700mA, (3,5 Watt)
Stromquelle 5V Micro USB Anschluss, alternativ 4x AA Batterien
Betriebssysteme GNU/Linux (Debian, Fedora, Arch Linux), RISC OS
B Prozessor
Der Prozessor nutzt den ARMv6-Instruktionssatz. Des Weiteren wirdder ARM-Thumb-Instruktionssatz unterstutzt. Der Speicher ist ubereinen 64 bit breiten Bus angebunden und wird direkt als Package onPackage auf den Prozessor gelotet.http://en.wikipedia.org/wiki/Raspberry Pi: Broadcom don’t release a fulldatasheet for the BCM2835, which is the chip at the heart of theRaspberry Pi.
Abschnitt 11: Addenda 284
www.broadcom.com/products/BCM2835:High Definition 1080p Embedded Multimedia Applications ProcessorThe BCM2835 is a cost-optimized, full HD, multimedia applicationsprocessor for advanced mobile and embedded applications that requirethe highest levels of multimedia performance. Designed and optimizedfor power efficiency, BCM2835 uses Broadcom’s VideoCore IV tech-nology to enable applications in media playback, imaging, camcorder,streaming media, graphics and 3D gaming.
• Low Power ARM1176JZ-F Applications Processor• Dual Core VideoCore IV Multimedia Co-Processor• 1080p30 Full HD HP H.264 Video Encode/Decode• Advanced Image Sensor Pipeline (ISP) for up to 20-megapixel ca-meras operating at up to 220 megapixels per second• Low power, high performance OpenGL-ES 1.1/2.0 VideoCore GPU.1 Gigapixel per second fill rate.• High performance display outputs. Simultaneous high resolutionLCD and HDMI with HDCP at 1080p60
Abschnitt 11: Addenda 285
B Grafik
Der ARM11-Prozessor ist mit Broadcoms VideoCore-Grafikkoprozes-sor kombiniert. OpenGL ES 2.0 wird unterstutzt, Filme in FullHD-Auflosung (1080p30 H.264 high-profile) konnen dekodiert und uberHDMI und Composite ausgegeben werden.
B Software
Der Linux-Kernel lauft auf dem Raspberry Pi. Eine Entwicklerversiondes RISC OS 5 wurde im Oktober 2011 veroffentlicht.http://en.wikipedia.org/wiki/Raspberry Pi: The Foundation provides De-
Abschnitt 11: Addenda 286
bian and Arch Linux ARM distributions for download. Also plannedare tools for supporting Python as the main programming language,with support for BBC BASIC, C, and Perl.
• gooseberry
gooseberry.atspace.co.uk raspberrycenter.de/tags/gooseberry
Das Gosseberry ist keine Eigenentwicklung. Es handelt sich vielmehrum ein Mainboard, das derzeit in verschiedenen Tablets zum Einsatzkommt. Daraus erklart sich auch das Fehlen einer RJ45-Netzwerk-Schnittstelle (dafur ist WLAN onboard). Findige Briten haben denProduzenten ausgemacht und machen es so Endkunden zuganglich.
Die Hardware des Gooseberry im Uberblick:
• CPU: AllWinner A10, 1GHz• ARM Cortex A8 Dual-Core mit bis zu 1,5 GHz• MALI-400 GPU, 400MHz• OpenGL ES 1.1 und 2.0, OpenVG 1.1• 512 MB RAM
Abschnitt 11: Addenda 287
• 4 GB Flash• MicroSD Slot• 802.11 b/g/n Wireless Netzwerk• Kopfhorer- und Mikrophon-Anschluss (Mini-Klinke)• HDMI• MiniUSB• Buttons fur Lautstarke und Power• LVDS-Anschluss
Das Board soll 40 britische Pfund kosten, zzgl. 2,70 Pfund fur denVersand innerhalb der EU.
B Goose-Berry vs Raspberry Pi
• The goose-berry board is roughly 3 x more powerful in processingpower than the Pi.• The goose-berry board has a newer ARM architecture meaning it iscompatible with newer software such as Ubuntu which the Pi can notrun.• The goose-berry board has double the RAM of the Pi (512mb).
Abschnitt 11: Addenda 288
• The board does not have a Lan port, although Wifi is present.• The board does not have analogue video and so can not connect toold TVs.• Only a limited OS (Android) is supported as of yet fully, the boardhowever is capable of running other OSs such as Ubuntu (currentlywithout graphics acceleration). Premade images for Ubuntu are nowavailable and videos of the board running Ubuntu and other Linuxflavours shall be uploaded.
top related