[0pt][c]Computer Architektur, COM(P)ARCH = Rechner ... · Computer-Architektur ist die Struktur...
Transcript of [0pt][c]Computer Architektur, COM(P)ARCH = Rechner ... · Computer-Architektur ist die Struktur...
Fakultat E-Technik & InformatikHochschule Bremen
Computer Architektur, COM(P)ARCH= Rechner-Strukturen, RST
Prof. Dr. Thomas RisseSS 2016
Sinn & Zweck: Unterstutzung der LehrveranstaltungComputer Architektur, COM(P)ARCH = Rechner-Strukturen, RST durch diverse Materialien, s.a.’RST-page’ www.weblearn.hs-bremen.de/risse/RST
c© 2000-2016 [email protected] Anderung: 13. Marz 2016 Version 0.9.16
Inhaltsverzeichnis
0. Vorbemerkung• Inhalt • Lernziele • Herangehensweise • Vorbedingungen &
Uberschneidungen • Vor-/Nachbereitung • RST page – computerarchitecture im WWW • Materialien • online Test • Leistungs-bewertung
1. Einfuhrung• Begriffsbestimmung • Geschichte • Taxonomie
2. Leistung• Rechner • unterschiedliche Anwendungsbereiche • Leistungs-kenngroßen • benchmarks • Einflußgroßen • Leistungsmessung• Reprasentativitat • Amdahl’sches Gesetz • Leistungszuwachs• Moore’sches Gesetz
3. Compiler – rechts von/oberhalb der HW-SW-Schnittstelle3.1. compiler & Konsorten
• compiler passes3.2. Code-Optimierung
• lexikalische Analyse • syntaktische Analyse • semantische Ana-
lyse • Ubersetzung in Zwischensprache • Code-Erzeugung • Bei-
Inhaltsverzeichnis (Forts.) 3
spiel: Quicksort • Beispiel: Quicksort – ohne Optimierung • Bei-spiel: Quicksort – 1. Optimierung • Beispiel: Quicksort – 2. Opti-mierung • Beispiel: Quicksort – 3. Optimierung • Code-Erzeugung& Optimierung
3.3. Resumee3.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-Schnittstelle4.1. Klassifikation
• Wieviele Operanden sind in CPU gespeichert?4.2. Register-Architekturen
• Beispiele4.3. Adressierung
• Adressierungsarten4.4. Operationen
• Befehlshaufigkeiten • Befehlshaufigkeiten und -Merkmale4.5. Anforderungen an Befehlssatze4.6. z.B. DLX/MIPS-Befehlssatz
• exemplarische, prototypische DLX/MIPS-Instruktionen •DLX/-
Inhaltsverzeichnis (Forts.) 4
MIPS-Formate • DLX/MIPS-(Pseudo-)Instruktionen • Befehls-formate • z.B. DLX/MIPS-shifts • Klassifizierung des Befehlssat-zes
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 • Bedingungenin Registern vs Condition Codes • AMDs 64bit Erweiterungen• Intels 64bit Erweiterungen • Slogans on 80x86 architecture
4.8. z.B. 80514.9. z.B. MicroChip PIC24FJ128GC010Family4.10.Resumee
5. Prozessor-Architektur5.1. single cycle Implementierung5.2. multi cycle Implementierung5.3. Implementieren der Steuerung
6. pipeline-Prozessor6.1. instruction pipelines
Inhaltsverzeichnis (Forts.) 5
• pipeline control • data hazards • control hazards • superskalareVersion & Leistung • superskalare Prozessoren
6.2. functional pipelines• arithmetische pipelines • scheduling funktionaler Einheiten• pipeline-Vektor-Prozessoren • Leistungsbewertung
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 DRAM7.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 Algorithmen8.1. Parallelisierung des Gauß’schen Algorithmus
• Gauß’scher Algorithmus – Eliminieren • Gauß’scher Algorith-
Inhaltsverzeichnis (Forts.) 6
mus – Auflosen •Kommunikation • Parallelisierung des Gauß’schenAlgorithmus durch den Compiler
8.2. Effizienz/Effektivitat der Parallelisierung8.3. parallele Speicher-Zugriffe auf Matrizen8.4. Baumhohenreduktion8.5. Parallelisierung rekurrenter Relationen8.6. Modellierung durch DAGs8.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 operations9.4. Beispiel: IBM 3090 Vector Facility
• reconfigurable vector registers • Compound Instructions • z.B.komplexe Multiplikation • IBM 3090 Vector Facility – Vector In-structions
10. parallele Architekturen10.1.Klassifizierung anhand von Beispielen
• Symmetric / Shared-Memory Multiprocessors (SMP), UniformMemory Access (UMA) • Non-Uniform Memory Access (NUMA)
Inhaltsverzeichnis (Forts.) 7
Multiprocessors • Clusters •Massively Parallel Processors (MPP)10.2.Multiprocessor-Systeme mit gemeinsamem Bus10.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. Addenda11.1.Addendum in 2003: top 50011.2.Addendum in 2004: announced in 200411.3.Addendum in 2005: top 50011.4.Addendum in 2006: top 50011.5.Addendum in 2007: cell-Prozessor11.6.Addendum in 2010: Core i200011.7.Addendum in 2011: K Computer11.8.Addendum in 2012: Raspberry Pi11.9.Addendum in 2013: Haswell11.10. Addendum in 2014: Advanced RISC Machines, ARM
• Cortex A53 and Cortex A57 • A32 – Genese • A32 – featu-
Inhaltsverzeichnis (Forts.) 8
res • ISA, Befehlsformate • A32 vs A64 • Details aus ARMv8Instruction Set Overview
11.11. Addendum in 2015: IBM z13• Mainframe vs Multi-Computer-System • Mainframes • Distri-buted Systems
11.12. Addendum in 2016: NN
9
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
11. Addenda
Abschnitt 0: Vorbemerkung 10
• 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 11
• 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 12
• 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£ CAPatterson & Hennessy: Rechner-Organisation und -Entwurf; El-sevier 55e, Oldenbourg 60e COD2e
Hennessy & Patterson: CA; deutsche Ubersetzung vergriffen CADubois, Annavaram, Stenstrom: Parallel COD; Cambridge 2012
• 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
– COD Graphiken, Dokumente, link lists, Evaluationen etc.
Abschnitt 0: Vorbemerkung 13
• online Test
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
14
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 15
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 16
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 17
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 18
• 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.
19
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 20
• unterschiedliche Anwendungsbereiche
• ...
• general purpose
• SoHo
• Wirtschaft
• Wissenschaft & Technik
• Super-Computer, HPC
Beispiele?
Abschnitt 2: Leistung 21
• Leistungskenngroßen
• MIPS
• MOPS
• FLOPS
• 1/CPI
• Bus-Bandbreite
• IO-Bandbreite
• 1/#wait states
• TPS
• FPS
• KLIPS
• ... ?
Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?
z.H. Klassifiziere den Windows Leistungsindex! o
Abschnitt 2: Leistung 22
• benchmarks
• Gibson-Befehlsmix (IBM: 13 Klassen mit gemessenen Haufigkeiten)
• Linpack (Dongarra, Moler et al, ca 1970 -: linear algebra, LAPACK)
• Whetstones in MWIPS (Nat. Phys. Lab, 1976: float- und integer-Arithmetik, Zugriff auf Felder)
• Dhrystones (Reinhold Weicker, 1984: im Gegensatz zu ’Whet’stonenur integer-, char-Operationen; compiling etc)
• Livermore loops (Francis H. McMahon, 1986: vektorisierbare undnicht vektorisierbare Livermore Fortran kernels)
• SPECmarks in SPECint, SPECfp etc (Standard Performance Eva-luation Corparation www.spec.org, 1988–)
• Perfect Club Benchmarks – Effective Performance Evaluation of Su-percomputers (Berry et al 1994 auf AULIS: external docs)
• BAPCo SYSmark (Business Applications Performance Corporationwww.bapco.com: PC, tablets, mobile; SoHo)
Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?
z.H. Vergleiche Leistungskenngroßen vs benchmarks! o
Abschnitt 2: Leistung 23
• 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 24
Leistungsgewinn γ aufgrund einer Modifikation ist
1 + γ =Leistungmit ModifikationLeistungohne Modifikation
=AusfuhrungszeitohneAusfuhrungszeitmit
bzw. aufgelost
γ =Leistungmit−Leistungohne
Leistungohne=
Ausfuhrungszeitohne−AusfuhrungszeitmitAusfuhrungszeitmit
• Reprasentativitat
Arithmetisches Mittel oder gewichtetes Mittel
AZ = 1n
∑ni=1AZi AZ =
∑ni=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. 1AZ = n∑n
i=11
1/AZi
der Raten 1AZi
ausgewahlter Programme Pi
Z.B. mittlere MIPS, MOPS, FLOPS; CPI? FLOPS/Watt? c
Abschnitt 2: Leistung 25
z.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. oz.H. vgl. aktuelle c’t-Artikel zu benchmarking auf AULIS o
• Amdahl’sches Gesetz
Fur α = Anteilverandert liege Beschleunigungsfaktor βverandert vor.
Ausfuhrungszeitneu = (1− α)Ausfuhrungszeitalt + αAusfuhrungszeitalt
βverandert
βgesamt =AusfuhrungszeitaltAusfuhrungszeitneu
= 1(1−α)+ α
βverandert
Beispiele!
Abschnitt 2: Leistung 26
• 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 27
Also jahrliche Verdoppelung der Prozessor-Leistung (gemessen etwain MIPS oder FLOPS)
Leistung= 2Jahr−1984 (Joy’sches/Moore’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
Abschnitt 2: Leistung 28
• Moore’sches Gesetz
s.a. Andreas Stiller: 50 Jahre Moore’sches Gesetz; c’t 2015/10 S.72-75
Moore's Law 1975Aus Moores Vortrag auf dem IEDM I 975, mit Rückblick auf dievergangenen zehn und Vorhersage aufdie l0folgenden Jahre.
I Bipolarlogk I Bipolararray I MOSlogic I M0Sarray
Report I Moore'sches Gesetz
Durchsch n ittliche Tra nsistorkostenDie Kosten pro Transistor halbieren sich,la,ut lntel etwa alle dreiJahre. Die expliziten Kosten in US-Ceht/Mio. hat c,t hinzugefügt
13,0 ct
6,5 ct
2,6 ct
1,3 ct65 nm 45 nm 32 nm 22 nm 14nm l0nm
;e 16M
oälMg§ o+to
E 4k=
ego
-gFo
=ee
, ty6u 1965 1970 1975
zwischen Moore's Law 1 und Moore,s Law 2und kam so auf eine Verdoppelung der per-formance alle 18 Monate, sozusagen Moore,sLaw 1 'l/2.lrgendwie sind diese,,Gesetze,,inden Folgejahren dann durcheinander gera-ten - jeder nahm sich das heraus, was erbrauchte. Statt ,,Komponenten" also inklusi-ve Widerstände, Kondensatoren et cetera re-duzierte man das Komplexitätsgesetz zu-meist auf die reinen Transistorzahlen dermarktgängigen Produkte.
Vom Aspekt der Kostenoptimierung hatman sich ebenfalls verabschiedet, schließlichwollte man die Kosten ja gar nicht offenle-gen. Allerdings veröffentlichte lntel verein-zelt Grafiken, die in normalisierter Form dieKosten pro Transistor auflisteten, wenn auchohne explizite Dollar-Angabe. Danach ist dieRate in den letzten zehn Jahren zwar einiger-maßen konstant, aber.,unter Moore'sch,, miteiner Halbierung etwa alle drei Jahre.
Die konkreten Werte in Dollar und Centkönnen wir durchaus nachliefern, denn Aus-gangspunkt der allerneuesten dieser Dia-gramme, die sogar schon einen optimisti-schen Ausblickauf die nächste 10-nm-Gene-ration geben, ist der 65-nm-Prozess. Für dengab lntel nämlich mal auf dem lDF2006 - an-geblich versehentlich - Herstellungskostenbekannt, damals um die Vorteile des Clover-town als Zweichip-Lösung (für 71 US-Dollar)vor einem hypothetischen, doppelt so gro-ßen monolithischen Chip (für 79 US-Dollar) zudemonstrieren. Die reinen Die-Kosten lagensogar um 20 Prozent (29 zu 36 Dollar) aus-einander. Daraus lässt sich schließen, dassman zwar Riesenchips mit gigantischen Tran-sistormengen wie den Xeon Phi Knights Lan-ding herstellen kann, nur ist man dann vonMoores Kostenoptimierung weit entfernt.
Mittelt man diese beiden Herstellungs-werte für die 582 Millionen Transistoren einesClovertown-Prozessors, so kommt man aufrund 13 Cent/Mio. Transistoren. Für 14 nm fol-gen dann aus lntels Diagramm etwa 20 pro-zent dieses Wertes, mithin 2,6 CenVMio. EinCore M-SYxx mit rund 1,3 Milliarden Transis-toren würde demnach in der Herstellung34 US-Dollar kosten. Bei einem OEM-Preis von281 Dollar ist die Marge also so schlecht nicht.
c't 20'15, Heft 10
c't hatte 1998 schon mal die Transistor-zahlen aller lntel-Prozessoren vom 4004 biszum damals frisch herausgekommenen Men-docino (0,25 pm, 19 Mio Transistoren,154 mm2 Die) halblogarithmisch aufgetra-gen und eine durchschnittliche Verdopp-Iungsrate alle 2,22Jahre ermittelt.
Faktencheck
Jetzt ist man knapp 17 Jahre später mit demgrößten lntel-Chip Xeon Phi Knights Landingbei 8,1 Milliarden Transistoren (14-nm-pro-zess, ca. 710 mm2 Die-Größe), also beim 426-Fachen angelangt, da stimmt der Verdopp-lungsfaktor alle zwei Jahre für die Komplexitätnoch immer recht gut. Das sind allerdingsauch Riesenchips. Bei der reinen Transistor-dichte gehts hingegen nicht so schnell: eineVerdoppelung nur etvva alle 2,6 Jahre.
Richtig problematisch wird es jedoch mitder werbewirksamen Performance-Aussagedes ,,House-Moore'schen Gesetzes". Seit gutzehn Jahren gibt es mit den Mehrkern-prozes-soren nämlich eine Aufspaltung in zwei Zwei-ge: Single-Threaded und Multi-Threaded. Die
Single-Thread-Performance hat sich seit Ein-führung des Benchmark SPEC CPU2006 Mitte2006 - clt-like gemessen ohne verfälschendeAutoparallelisierung der Compiler - nicht ein-mal vervierfacht. Das entspricht allenfallseiner Verdopplung alle 5 Jahre - also weit,weit weg von den ursprünglich mal postulier-ten 18 Monaten. Der Hauptgrund dafür liegtvor allem in dem abrupten Ende desMoore'schen Geseaes für den Prozessortakt.Anfang der 2000er Jahre geriet der nach einerstürmischen Steigerungsrate im Wettbewerbmit AMD nahezu abrupt in eine,,Sättigung" -nach dem Pentium-4-Desaster mit viel zuhohem Energieverbrauch.
Nur wenn die Prozessoren ihre vielenKerne in Stellung bringen können, lässt sichHouse-Moore hoch ansatzweise retten. Vonden rund 19 SPECint_rate2006base des Pen-tium D 940 (Presler, 65 nm, 162 mm2,376Mio. Transistoren) im Jahre 2006 bis zu den669 SPECint_rate2006base des Xeon 2699v3(Haswell-EP, nur ein Chip,22 nm, 662 mm2,5,56 Mrd. Transistoren) im März 2015. Damitkommt man aut eine Verdopplungszeit von2l Monaten. Und das ist schon sehr ge-
Transistorzahlen gä ngiger prozestoren
Die Transistorzahl der größten Chips mit einer Verdoppelung et\ /a allezwei Jahre wird meist als,,das" Moor'sches Gesetz interpretiert.
E lE+r0
-9
§ rr+oeF
1E+08
10 000 000
t 000000
. @ lntelS{1386. l
100000 @ lntet80286
" elntel8086
10 000
@ lnrel 8080@htel4oo4
62-(oreXmn phi 72.(ore leon phi Xl,lL
10-(oreXeon Wertmere.U^ O 9"]- et lö-qxeleon HaswetFU,e e6{orExeon7400
-e eG(ore oPtelor 2400
Itanium2i4dinleye" @Core2Duo
@ pentium 4
PiäiitimFioai :gÄäDK6 '':''' ' .'-- -t '"-"" '
€ Pefiium
@ lntel80186
r@0 r----t-1970 1975
lt1975 1985
,rry1990 199s 2000 2005 2010 2015 2020
73
Abschnitt 2: Leistung 29
Moore's Law 1975Aus Moores Vortrag auf dem IEDM I 975, mit Rückblick auf dievergangenen zehn und Vorhersage aufdie l0folgenden Jahre.
I Bipolarlogk I Bipolararray I MOSlogic I M0Sarray
Report I Moore'sches Gesetz
Durchsch n ittliche Tra nsistorkostenDie Kosten pro Transistor halbieren sich,la,ut lntel etwa alle dreiJahre. Die expliziten Kosten in US-Ceht/Mio. hat c,t hinzugefügt
13,0 ct
6,5 ct
2,6 ct
1,3 ct65 nm 45 nm 32 nm 22 nm 14nm l0nm
;e 16M
oälMg§ o+to
E 4k=
ego
-gFo
=ee
, ty6u 1965 1970 1975
zwischen Moore's Law 1 und Moore,s Law 2und kam so auf eine Verdoppelung der per-formance alle 18 Monate, sozusagen Moore,sLaw 1 'l/2.lrgendwie sind diese,,Gesetze,,inden Folgejahren dann durcheinander gera-ten - jeder nahm sich das heraus, was erbrauchte. Statt ,,Komponenten" also inklusi-ve Widerstände, Kondensatoren et cetera re-duzierte man das Komplexitätsgesetz zu-meist auf die reinen Transistorzahlen dermarktgängigen Produkte.
Vom Aspekt der Kostenoptimierung hatman sich ebenfalls verabschiedet, schließlichwollte man die Kosten ja gar nicht offenle-gen. Allerdings veröffentlichte lntel verein-zelt Grafiken, die in normalisierter Form dieKosten pro Transistor auflisteten, wenn auchohne explizite Dollar-Angabe. Danach ist dieRate in den letzten zehn Jahren zwar einiger-maßen konstant, aber.,unter Moore'sch,, miteiner Halbierung etwa alle drei Jahre.
Die konkreten Werte in Dollar und Centkönnen wir durchaus nachliefern, denn Aus-gangspunkt der allerneuesten dieser Dia-gramme, die sogar schon einen optimisti-schen Ausblickauf die nächste 10-nm-Gene-ration geben, ist der 65-nm-Prozess. Für dengab lntel nämlich mal auf dem lDF2006 - an-geblich versehentlich - Herstellungskostenbekannt, damals um die Vorteile des Clover-town als Zweichip-Lösung (für 71 US-Dollar)vor einem hypothetischen, doppelt so gro-ßen monolithischen Chip (für 79 US-Dollar) zudemonstrieren. Die reinen Die-Kosten lagensogar um 20 Prozent (29 zu 36 Dollar) aus-einander. Daraus lässt sich schließen, dassman zwar Riesenchips mit gigantischen Tran-sistormengen wie den Xeon Phi Knights Lan-ding herstellen kann, nur ist man dann vonMoores Kostenoptimierung weit entfernt.
Mittelt man diese beiden Herstellungs-werte für die 582 Millionen Transistoren einesClovertown-Prozessors, so kommt man aufrund 13 Cent/Mio. Transistoren. Für 14 nm fol-gen dann aus lntels Diagramm etwa 20 pro-zent dieses Wertes, mithin 2,6 CenVMio. EinCore M-SYxx mit rund 1,3 Milliarden Transis-toren würde demnach in der Herstellung34 US-Dollar kosten. Bei einem OEM-Preis von281 Dollar ist die Marge also so schlecht nicht.
c't 20'15, Heft 10
c't hatte 1998 schon mal die Transistor-zahlen aller lntel-Prozessoren vom 4004 biszum damals frisch herausgekommenen Men-docino (0,25 pm, 19 Mio Transistoren,154 mm2 Die) halblogarithmisch aufgetra-gen und eine durchschnittliche Verdopp-Iungsrate alle 2,22Jahre ermittelt.
Faktencheck
Jetzt ist man knapp 17 Jahre später mit demgrößten lntel-Chip Xeon Phi Knights Landingbei 8,1 Milliarden Transistoren (14-nm-pro-zess, ca. 710 mm2 Die-Größe), also beim 426-Fachen angelangt, da stimmt der Verdopp-lungsfaktor alle zwei Jahre für die Komplexitätnoch immer recht gut. Das sind allerdingsauch Riesenchips. Bei der reinen Transistor-dichte gehts hingegen nicht so schnell: eineVerdoppelung nur etvva alle 2,6 Jahre.
Richtig problematisch wird es jedoch mitder werbewirksamen Performance-Aussagedes ,,House-Moore'schen Gesetzes". Seit gutzehn Jahren gibt es mit den Mehrkern-prozes-soren nämlich eine Aufspaltung in zwei Zwei-ge: Single-Threaded und Multi-Threaded. Die
Single-Thread-Performance hat sich seit Ein-führung des Benchmark SPEC CPU2006 Mitte2006 - clt-like gemessen ohne verfälschendeAutoparallelisierung der Compiler - nicht ein-mal vervierfacht. Das entspricht allenfallseiner Verdopplung alle 5 Jahre - also weit,weit weg von den ursprünglich mal postulier-ten 18 Monaten. Der Hauptgrund dafür liegtvor allem in dem abrupten Ende desMoore'schen Geseaes für den Prozessortakt.Anfang der 2000er Jahre geriet der nach einerstürmischen Steigerungsrate im Wettbewerbmit AMD nahezu abrupt in eine,,Sättigung" -nach dem Pentium-4-Desaster mit viel zuhohem Energieverbrauch.
Nur wenn die Prozessoren ihre vielenKerne in Stellung bringen können, lässt sichHouse-Moore hoch ansatzweise retten. Vonden rund 19 SPECint_rate2006base des Pen-tium D 940 (Presler, 65 nm, 162 mm2,376Mio. Transistoren) im Jahre 2006 bis zu den669 SPECint_rate2006base des Xeon 2699v3(Haswell-EP, nur ein Chip,22 nm, 662 mm2,5,56 Mrd. Transistoren) im März 2015. Damitkommt man aut eine Verdopplungszeit von2l Monaten. Und das ist schon sehr ge-
Transistorzahlen gä ngiger prozestoren
Die Transistorzahl der größten Chips mit einer Verdoppelung et\ /a allezwei Jahre wird meist als,,das" Moor'sches Gesetz interpretiert.
E lE+r0
-9
§ rr+oeF
1E+08
10 000 000
t 000000
. @ lntelS{1386. l
100000 @ lntet80286
" elntel8086
10 000
@ lnrel 8080@htel4oo4
62-(oreXmn phi 72.(ore leon phi Xl,lL
10-(oreXeon Wertmere.U^ O 9"]- et lö-qxeleon HaswetFU,e e6{orExeon7400
-e eG(ore oPtelor 2400
Itanium2i4dinleye" @Core2Duo
@ pentium 4
PiäiitimFioai :gÄäDK6 '':''' ' .'-- -t '"-"" '
€ Pefiium
@ lntel80186
r@0 r----t-1970 1975
lt1975 1985
,rry1990 199s 2000 2005 2010 2015 2020
73
M ittlere Single-Thread-Performa nce
.lqG*:.ryg+-, -
hes Geset2
Moore's Law in der Performance-Variante von Dave Houseist für Single-Thread-Applikation'en schon längst ungültig.
E 1000
,f
Größe einer 6T-SRAM-ZeIle
Die Größe einer SRAM-Bitzelle aus 6 Transistoren ist einbeliebtes Maß für den Herstellungsprozess.
t loo
@ @Ne$2997y3...e
^eO e@@@ - Xeon 5160 lGHz
€ Pentium 4 16Hz
@@6
20152005
Eine typische SRAM-Ze|le besteht aus ins-gesaÄi sechs MoSFET-Transistoren. ln der2ellenmitte ist der eigentliche Speicher,bestehend aus zwei über kreuz gekoppel-ten lnvertern, ein jeder art
"ineir pUöS-
Pull-Up- (PU) und einem NMOS-Pull-Down-Transistor (PD). Hinzu kommen zweiweitere NMOS-Transistoren (Pass Gate PG),die den Speicher an die Lese/Schreiblei-tungen ankoppeln. lm 3D-Prozess könnendie Transistoren aber nicht mehr beliebigpositioniert oder auseinandergezogenwerden, ihre Größen sind hier quantisiert
Längen oder Breiten ist die Moore'sche Ratehalb so hoch wie bei der proportional zurFläche verlaufenden Transistorzahl. Eine Hal-bierung der Strukturbreite sollte demnachetwa alle vier Jahre stattfinden. Das ent-spricht lntels Tick-Tock-Modell mit einemShrink-Faktor von 1,4 alle zwei Jahre.
Dieses Moore'sche Gesetz wurde schonhäufig für tot erklärt, aber mit ,,schwarzerMagie" immer wieder am Leben gehalten,mit Zaubertränken, die sich solcher Hog-warts-Rezepturen wie Optical Proximity Cor-rection, Phase-Shift-Masks, lmmersion, MultiPattern uhd so weiter bedienen, um mitgrobem 193-nm-Laserlicht Strukturen vonbis hinab zu l4 nm zu malen. Das ist so, alswenn man mit einem Vorschlaghammer feinziselierte Ornamente auf eine Metalloberflä-che meißelt. Diskret mitgeholfen habendabei auch die diskreten Mathematiker, ins-besondere diejenigen aus Bonn, deren kom-binatorische Optimierungs-Tools (,,Bonn-Tools") unerlässlich sind, wenn man Aber-millionen von Transistoren platzieren mussmit Routing, Timing, Taktbäumen und alldiesen Dingen.
Bislang hat es damit dann allen Unken-rufen zum Trotz doch weitgehend geklappt,jedenfalls wenn man die sogenannten Tech-nologieknoten von 90 bis hinab auf 14 nm
als Maß heranzieht. Diese Knoten kann manallerdings recht freizügig definieren. Die tat-sächlichen physikalischen Kenngrößen wieGatterlänge, lnterconnect-Abstand und soweiter hängeh nur noch mittelbar davgn ab.Außerdem ist mit dem von lntel schon voll-zogenen Umstieg auf 3D-Strukturen und so-genannte FinFet- oder Trigate-Transistoreneine weitgehende Uminterpretation vielerKennwerte nötig.
Als beliebte Beschreibungsgröße in derChip-Szene hat sich die Fläche einer SRAM-Zelle aus sechs Transistoren herauskristalli-siert. Diese Größe hat den Vorteil, dass mansie auch wirklich nachmessen kann - okay,nicht jeder, aber die darauf spezialisierte ka-nadische Firma Chipworks. Bei den neuen3D-Prozessen gibt es aber sehr unterschied-liche Transistorgrößen, je nach gewünschterOptimierung. Beim 22-nm-Prozess kann manso zwischen High Density/Low Leakage mit0,092 pm2,,Low Voltage mit 0,108 pm2 undHigh Speed mit 0,'130 pm2 wählen. Die mitt-lere Größe bei 14 nm beträgt 0,0588 pm2, dieanderen beiden müssten 0,05 pm2 und 0,07
;"rm2 betragen. Für 10 nm sind sie derzeitnoch nicht bekannt.
Noch viel Platz
Dieser 10-nm-Prozess, der weiterhin kunst-voll mit obigem Laserlicht ziseliert wird, liegegut im Zeitplan, so lntels HerstellungsleiterMark Bohr. Während sein ehemaliger KollegeBob Colwell, der legendäre Schöpfer derlntel-P6-Architektur, ein Ende des Moo-re'schen Herstellungsgesetzes bis spätestens2023 vorhersagt, sieht Bohr in den nächsten10 Jahren keine Anzeichen dafür. Weiteressei zwar noch nicht abzusehen, man verfolgeaber erfolgversprechende Ansätze, so Bohrin einer Telefonkonferenz. Allgemein siehtdie Chipszene auch 7 nm noch volloptischauf Basis von ASMLs NXT-Technologie. So ab5 nm könnte dann extreme UV-Technik(ASML NXTE) hin2ukommen, wahrscheinlichin einem Hybrid-Prozess,je nach Layer. EUVist derzeit für die Massenproduktion immernoch nicht so ausgereift wie gewünscht. Es
mit ganzzahligen Vielfachen ihrer Fin-Länge. Die unterschiedlichen Größen-verhältnisse kennzeichnet man dann mitPU:PG:PD.
Hiermit lassen sich verschieden optimierteSRAMs herstellen. 1:1:1 steht für die dich-test mögliche Packung (LP, O,Og2 !rm2). siereicht bei lntels 22-nm-Prozess und bei1 Volt Spannung für bis zu 2,6 GHz.I:1:2 istein bisschen größer (SP,0108 pm2) undkommt auf 3,5 GHz und i :2:3 steht für HighPerformance bis 4,6 GHz (HP, 0,130 pm2).
_ Pentium 75.
2010 2015 2020
schönt, denn bei CPU2006 wird einfach n-mal der gleiche Job parallel gestartet. Übli-che Mu lti-th readed-Anwend ungen erfordernjedoch zumeist Kommunikation und Syn-chronisation dei Threads untereinander,dabei sackt die Multikern-Performance mit-unter deutlich ab. Und es gibt weiterhin einegroße Zahl von Algorithmen und Program-men, die sich nicht oder nur sehr schlecht pa-rallelisieren lassen. Für die ist jeglichesMoore'sche Gesetz schon längst Geschichte.
Die Moore'sche Version für die Supercom-puter wird gerne durch die mittlere Linpack-Performance der Supercomputer in der Top-500-Liste ausgedrückt. Die Gesamtperfor-mance aller Systeme in dieser Liste stieg von1993 bis 20'l 3 ziemlich konstant um etwa84 Prozent pro Jahr, entsprechend einer Ver-doppelungsrate alle 13,6 Monate - und dasist deutlich mehr als House-Moore. Doch inden letzten beiden Jahren ist ein Bruch er-kennbar, die Steigerung betrug zuletzt gera-de mal schlappe 23 Prozent pro Jahr.
Ein morsches Gesetz?
Das meist diskutierte Moore'sche Gesetz be-zieht sich jedoch auf die Chip-Herstellung,insbesondere auf die Chip-Strukturen. Fürdie Verkleinerung solcher Kenngrößen wie
, Die 6T-SRAM-Bitzelle
74 c'r2015, Heft 10
30
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 31
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 32
• 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 33
?
?
?
?
?
?
?
�
�
�
�
�
�
�
?
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 34
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 35
• 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 36
• 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 37
• 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 38
• 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 39
• 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 40
• 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 41
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 42
• 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 43
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 44
• 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 45
Kopien konnen nach Datenfluß-Analyse auch Block-ubergreifend ver-breitet werden!
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 46
• 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 47
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 48
– 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 49
• 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 50
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 51
• 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 52
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 53
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 54
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/unfolding bei Matrix-Multiplikation
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 55
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 (branch und loop increment und jump)
• pro Iteration in k-loop: 2 load und 2 fl op und 1n store
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 56
• 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++) // n mod 4 = 0
{ 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 in k-loop: 8 load und 8 fl op und 4n store
• a[i,k] aus cache line; dagegen b[k,j] problematisch!
Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 57
• Matrix-Multiplikation – 4-fach, 4-fach cache s.o.
for(j=0; j<n; j++) // n mod 4 = 0
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!
58
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 59
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 60
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 61
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 62
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 63
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 64
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 65
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, einfacher Code-Erzeugung, ahnlichen Ausfuhrungs-zeiten; jedoch mit großerer Anzahl von abzuarbeitenden Befeh-len
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 66
• 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 67
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 68
• 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 69
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 70
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
• Programm-Ablaufssteuerung, wie Verzweigungen, Sprunge, Unterprogramm-Sprunge und -Rucksprunge, traps
• Betriebssystem-Aufrufe, Speicher-Verwaltung
• Gleitpunkt-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 71
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 72
• 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 73
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 74
• 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
\index{addi}\index{MIPS!add}\index{MIPS!lw}\index{MIPS!beq}\index{MIPS!j}
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 75
• 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 76
• 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 77)sowie – nicht PC-relativ – jr (im R-Format! s. S 77)
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 77
• 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 78
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 79
• 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 80
• 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 81
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), mul-ti core Processors (2005) im Hinblick auf x86-ISA, AVX (2008 an-gekundigt, verfugbar 2011) o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 82
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 83
• 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 84
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 85
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 86
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 87
• 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 88
• 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 89
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 90
• 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 91
• 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 92
• 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
s.a. www.jegerlehner.ch/intel/index de.html s.a. AULIS
z.H. Klassifiziere den Intel 80x86-Befehlssatz. Wieso CISC? o
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 93
• 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 94
• 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 95
• 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 96
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.
Details in www.weblearn.hs-bremen.de/risse/RST/docs/amd64.pdf
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 97
• Intels 64bit Erweiterungen
vgl. Gautam Doshi: Understanding the IA-64 Architecture, 1999 http:
//www.weblearn.hs-bremen.de/risse/RST/docs/Intel/idfisa.pdf
vgl. Chris Lomont: Introduction to x64 assembly http://software.
intel.com/en-us/articles/introduction-to-x64-assembly
• 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):
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 98
• 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.
• 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
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 99
4.9. z.B. MicroChip PIC24FJ128GC010Family
s. http://ww1.microchip.com/downloads/en/DeviceDoc/30009312b.pdf
4.10. Resumee
Neben technologischen Randbedingungen sind damit zwei fast kon-troverse Anforderungen zu befriedigen.
Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 100
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 101
Fur den Prozessor (-Designer) sind folgende Eigenschaften wunschens-wert:
• leichte Dekodierbarkeit
• load/store Architektur
• wenige Addressierungsarten
⇒ leichtes pipelining 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 exemplarische 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
102
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 103
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 104
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
105
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 106
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 107
• 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 108
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 109
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 110
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 111
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 112
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 113
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 114
• 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 115
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 116
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 117
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 118
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 119
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 120
• 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 121
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 122
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 123
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 124
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 125
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 126
• 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 127
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 128
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
129
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 130
Daten stehen auf einer Ebene jeweils in Kopie aus der darunterliegen-den Ebene zur Verfugung:
Processor
Data are transferred
Abschnitt 7: Speicher-Hierarchie 131
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 132
• 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 133
• 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 134
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 135
• 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 136
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 137
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
line = Adresse mod 8 4 hits
Keine raumliche Lokalitat! Keine Verdrangungsstrategie!
Abschnitt 7: Speicher-Hierarchie 138
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 139
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 140
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
line = (Adresse/2) mod 4 3 hits
Keine Verdrangungsstrategie!
Abschnitt 7: Speicher-Hierarchie 141
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 142
• 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 143
• 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 144
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
set = Adresse mod 4 5 hits
Keine raumliche Lokalitat! least recently used, LRU!
Abschnitt 7: Speicher-Hierarchie 145
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
set = (Adresse/2) mod 2 5 hits
least recently used, LRU!
Abschnitt 7: Speicher-Hierarchie 146
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 147
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 148
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 149
• 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 150
Koharenz per Schnuffel-Logik: indexcache!sniffingfalls 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 (miss) oder write allocate: der entsprechendeBlock wird geladen und danach (ohne miss) geschrieben.
write around oder no write allocate: der entsprechende Blockwird unter Umgehung des caches in den Speicher der darunterliegenden Speicher-Hierarchie-Ebene 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. 55ff cvgl. www.weblearn.hs-bremen.de/risse/RST/docs/cacheSim.pdf
Abschnitt 7: Speicher-Hierarchie 151
• 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 152
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 153
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 154
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 155
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 156
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 157
• virtueller Speicher
Obige Anforderungen werden durch virtuellen Speicher bedient!
Physical addresses
Disk addresses
Virtual addresses
Address translation
Abschnitt 7: Speicher-Hierarchie 158
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 fault 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 159
• 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 160
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 161
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 Strategie: copy back
Abschnitt 7: Speicher-Hierarchie 162
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 163
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 164
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 165
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 166
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 167
• 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 168
• 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 169
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 170
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 171
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 172
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 173
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 174
• 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 175
• 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
dann gilt im statistischen Mittel
N = 2k−1 + 2k−2 = 2k − 2k−2 = 2k − 142k = 1
4 (4 2k − 2k) = 342k
Abschnitt 7: Speicher-Hierarchie 176
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 177
• 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 178
• 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)
Ermittele die zu virtuellen Adressen gehorenden physikalischen Adres-sen bei gegebener segment table, ST, und gegebener page table, PT.
Abschnitt 7: Speicher-Hierarchie 179
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 180
• TLB – Beschleunigen der Adreß-Umsetzung
TLB = translation lookaside buffer = address translation cache in-dexmemory!translation lookaside buffer, TLB
Abschnitt 7: Speicher-Hierarchie 181
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 182
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 183
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 184
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 185
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 186
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 187
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 188
• 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 189
• 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 190
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 191
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 192
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 193
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 194
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 195
• 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 196
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
197
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 198
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 199
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 200
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 201
• 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 202
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 203
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 204
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 205
• 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 206
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 207
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 208
• 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 209
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 210
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 211
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 Eliminierung
16 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 212
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 213
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 dauertcm(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 214
Wenn der Mono-Prozessor c1 ZE fur einen Speicherzugriff braucht,gilt fur 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 215
• 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 216
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 217
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 218
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 219
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
Z.B. y2 + y3 = y(y + y2) = y2(1 + y) mit DAG-Hohen 3, 3 bzw. 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 220
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 221
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 222
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 223
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 224
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 225
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 226
S
S
S * S *
*
a
a2
a4 a3
a8 a7 a6 a5
Russian Peasant Algorithm(im Bild n = 8 im Programm n = 32)berechne a1, a2, . . . , an
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];
227
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) 228
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) 229
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) 230
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) 231
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) 232
• 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) 233
• 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) 234
• 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) 235
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) 236
• 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
237
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 238
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 239
• 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 240
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 241
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 242
• 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 243
• 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 244
• 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 245
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 246
© 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 247
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 248
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 249
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 250
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 251
Abschnitt 10: parallele Architekturen 252
• 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 253
Sei n = # PEs. Alle links seien bidirectional.
Topologie skalierbar Durchmesser #ports #switches # linksBus ja 1 1 – 1 oder20 n− 1Ring ja n 2 – n− 1Stern ja 2 1 – n√
n×√n-Gitter ja 2(
√n− 1) 4 n ? 2
√n(√n− 1)
complete nein 1 n− 1 – 12n(n− 1)
√n×√n-Torus ja 2b
√n
2 c 4 n ? 2nldn-hypercube nein ldn ldn n ldn 1
2n ldncrossbar ja 1 1 n2 2ncrossbarh stages
ja 2h+ 1 hhC fur C = h
√n
C × C-crossbars2hC
Omega ja ldn 4 2n ldn oder20 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)
z.H. Untersuche Kombinationen. o
20je nach Auslegung
254
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 255
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 256
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 257
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 258
• 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 259
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, Architektur21
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)
21 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 260
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 Architecture22 + LINUX-based softwaredevelopment environment = software development community
B Introduction in 2005
Power Architecture = basis for Cell
22 s.a. http://www-306.ibm.com/chips/techlib/techlib.nsf/products/Cell
Abschnitt 11: Addenda 261
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 262
• 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 263
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 264
• 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 265
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 266
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 267
B Synergistic processor elements, SPEs
spezifische ISA23
• 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
23Synergistic Processor Unit Instruction Set Architecture, s.a.www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/76CA6C7304210F3987257060006F2C44
Abschnitt 11: Addenda 268
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 269
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 270
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 271
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 272
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 273
B Benchmarking
benchmarking24 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
24 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 274
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 275
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ßt197MB/s lesend, ca die Halfte schreibend, je nach Chipsatz 12-14
Abschnitt 11: Addenda 276
USB 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 277
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 278
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 279
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 every15 hours a node fails. So they are working on low level rerouting of
Abschnitt 11: Addenda 280
nodes 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-cation programs adapted to either a one-, two-, or three-dimensionaltorus network.
Abschnitt 11: Addenda 281
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 halbeMillion 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 den
Abschnitt 11: Addenda 282
ublicherweise 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. Uberdie 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-
Abschnitt 11: Addenda 283
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 284
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 285
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 286
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.
www.broadcom.com/products/BCM2835:
Abschnitt 11: Addenda 287
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 288
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 289
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.
B Zum Vergleich: gooseberry
gooseberry.atspace.co.uk raspberrycenter.de/tags/gooseberry
gooseberry-developer-boards-40-alternative-raspberry-pi.html
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 290
• 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 (Low Voltage Differential Signaling)
Preis: GBP 40, zzgl. GBP 2,70 fur den Versand innerhalb der EU
Details zur CPU :-( s. z.B. http://rhombus-tech.net/allwinner a10
www.cnx-software.com/.../allwinner-a10a1x-processor-resources-development-board-and-sdk
inote-allwinner-a10-tablet-pc-integrierter-gps-bluetooth-8-zoll-high-definition
affordable-tablet-with-ips-panel-allwinner-a10
Details zur GPU :-( s. z.B. http://limadriver.org/Hardware
www.arm.com/products/multimedia/mali-graphics-hardware/mali-400-mp.php
http://infocenter.arm.com/.../DUI0555A mali optimization guide.pdf
www.arm.com/products/multimedia/mali-graphics-hardware/mali-400-mp.php
Abschnitt 11: Addenda 291
typisches SoC, vgl. z.B.
Abschnitt 11: Addenda 292
• Benjamin Benz: ARM, aber sexy – Was Smartphones und Ta-blets so schnell macht; c’t 6/2012 S.102-109, also ct 2012 06
S.102-109.pdf auf AULIS, s.a. www.ct.de/1206102
• Benjamin Benz, Christof Windeck: Wohngemeinschaft – DieTechnik der Tablet- und Smartphone-Prozessoren; c’t 6/2012S.110-113, also ct 2012 06 S.110-113.pdf auf AULIS,s.a. www.ct.de/1206110
Abschnitt 11: Addenda 293
B Gooseberry vs Raspberry Pi
• The goose-berry has roughly 3 x the processing power of the Pi.• The goose-berry has a newer ARM architecture: the board is com-patible with newer software such as Ubuntu which the Pi can not run.• The goose-berry has double the RAM of the Pi (512MB).• The board does not have a LAN port, although Wifi is present.• The board does not have analogue video: no connection to old 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.
B zeitgenossische Alternativen
74-android-mini-computer-is-slightly-larger-than-a-thumb-drive
cx-01-53-android-4-0-pc-stick.html
Abschnitt 11: Addenda 294
11.9. Addendum in 2013: Haswell
Die aktuellen Haswell-Prozessoren geben Anlaß zu prufen, inwieweitdie Inhalte der Veranstaltung RST helfen, popularwissenschaftlicheVeroffentlichungen einzuordnen und zu bewerten.
Andreas Stiller: Der Rechenkunstler – Mikroarchitektur undInstruktionssatze der neuen vierten Core-Generation Haswell;
c’t 14/2013 S.114-119 sowie Material auf AULIS
B Pentium grußt von Ferne
• out of order execution
• eigene load/store unit mit load/store L0 cache
B dicke (breitere) µOps
• 256 bit AVX-Instruktionen
• physical register file mit 160 integer und 144 GP-Registern
• µOp fusion
Abschnitt 11: Addenda 295
• Detail-Verbesserungen: Sprungvorhersage, Die Datenpfade sindbreiter, die Puffer und die Reservation Station großer, ebensodie Zahl der physischen Register, der Ports und der Ausfuhrungs-einheiten., s.a. ’Buffer und Register’, 256 bit Vektoren, cache-System mit L4 cache etc., s.a. ’Caches und TLBs’
B Volle Integer-Breitseite
• 256 bit AVX2, BMI1 (s.a. Intrinsics mit CRC), FMA und TSX
• gather (vgl. array of structures in multi body problem),allerdings kein scatter wie im XEON Phi
B Volle FMA Power
• plus zwei 256 bit FMA units mit kleiner Latenz
• plus zwei (?, vgl. rote Verbesserungen) 256 bit FMUL units
• angebunden durch load store unit plus (store?) Address Gene-ration Unit, AGU
FMA mit drei Operanden, FMA3 oder mit vier Operanden, FMA4
Abschnitt 11: Addenda 296
B Transactional Memory
Transactional Extension, TSX unterstutzt zwei Programmier-Modelle(s.a. HLE-Kasten):
• Hardware Lock Elision, HLE: optimistisch locks ignorieren undbei konfligierenden Zugriffen die ganze Transaktion verwerfenund mit konventionellem (aufwandigen) locking wiederholen
• Restricted Transactional Memory, RTM: programm-gesteuerteReaktion im Konfliktfall – flexibel und leistungsfahig bei furnicht TSX-fahige Prozessoren inkompatiblem Code!
B Kasten: Zwischen Performance und Leakage
• Energie-bewußter Entwurf: gezielter Einsatz von Transistorenim Bereich Ultra Low Power – High Performance, hpc/ulp = 104
• Feinkornige Stromversorgung:Fully Integrated Voltage Regulator, FIVR
• weiterer Strom-Spar-Zustand
Abschnitt 11: Addenda 297
11.10. Addendum in 2014: Advanced RISC Machines, ARM
http://arm.com/products/processors/instruction-set-architectures/
armv8-architecture.php
http://www.arm.com/files/downloads/ARMv8_Architecture.pdf
https://en.wikipedia.org/wiki/ARM_architecture
http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt2.pdf
ARMv8-A for applications, ARMv8-R for real time applications, embedded,
industrial control, ARMv8-M for micro controller applications
ARMv8-A introduces 64-bit architecture support to the ARM archi-tecture and includes:
• 64-bit general purpose registers, SP (stack pointer) and PC (pro-gram counter)
• 64-bit data processing and extended virtual addressing
• Two main execution states: AArch32/AArch64 - The 32-bit/64-bit execution state including exception model, memory model,programmers’ model and instruction set
Abschnitt 11: Addenda 298
The execution states support three key instruction sets:
1. A32 (or ARM): a 32-bit fixed length instruction set, enhancedthrough the different architecture variants. Part of the 32-bitarchitecture execution environment now referred to as AArch32.
2. T32 (Thumb) introduced as a 16-bit fixed-length instructionset, subsequently enhanced to a mixed-length 16- and 32-bitinstruction set on the introduction of Thumb-2 technology. Partof the 32-bit architecture execution environment now referredto as AArch32.
3. A64 is a 64-bit fixed-length instruction set that offers similarfunctionality to the ARM and Thumb instruction sets. Introdu-ced with ARMv8-A, it is the AArch64 instruction set.
ARM ISAs are constantly improving to meet the increasing deman-ds of leading edge applications developers, while retaining the back-wards compatibility necessary to protect investment in software de-velopment. In ARMv8-A there are some additions to A32 and T32 tomaintain alignment with the A64 instruction set.
Abschnitt 11: Addenda 299
• Cortex A53 and Cortex A57
ACP = Accelarator Coherency Port SCU = Snoop Control Unit
The ARM Cortex-A57 processor is ARMs highest performing processor, de-
signed for mobile and enterprise computing applications including compute
intensive 64-bit applications such as high end computer, tablet and server
products. The processor can be implemented individually or paired with the
Cortex-A53 processor into an ARM big.LITTLE configuration that enables
scalable performance and optimal energy-efficiency.
Abschnitt 11: Addenda 300
• A32 – Genese
Abschnitt 11: Addenda 301
• A32 – features
ARM developed architecture extensions to provide support for Ja-va acceleration (Jazelle), security (TrustZone), SIMD, and AdvancedSIMD (NEON) technologies. The ARMv8-architecture adds a Cryp-tographic extension as an optional feature.
The ARM architecture is similar to a Reduced Instruction Set Com-puter (RISC) architecture, as it incorporates these typical RISC ar-chitecture features:
• A uniform register file load/store architecture, where data processingoperates only on register contents, not directly on memory contents.
• Simple addressing modes, with all load/store addresses determinedfrom register contents and instruction fields only.
Enhancements to a basic RISC architecture enable ARM processorsto achieve a good balance of high performance, small code size, lowpower consumption and small silicon area.
Abschnitt 11: Addenda 302
• ISA, Befehlsformate
ARMv7 Instruction sethttp://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt2.pdf
Quick Reference Card
http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_
UAL.pdf
beurteile
• Orthogonalitat
• Heterogenitat
• CPI
• Kompaktheit des Codes
• Was spricht fur RISC? was fur CISC?
Abschnitt 11: Addenda 303
http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt2.pdf
ARM Instruction Set - Summary
ARM7TDMI Data SheetARM DDI 0029E
4-2
Ope
n A
cces
s4.1 Instruction Set Summary
4.1.1 Format summary
The ARM instruction set formats are shown below.
Figure 4-1: ARM instruction set formats
Note Some instruction codes are not defined but do not cause the Undefined instruction trapto be taken, for instance a Multiply instruction with bit 6 changed to a 1. Theseinstructions should not be used, as their action may change in future ARMimplementations.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Cond 0 0 I Opcode S Rn Rd Operand 2 Data Processing /PSR Transfer
Cond 0 0 0 0 0 0 A S Rd Rn Rs 1 0 0 1 Rm Multiply
Cond 0 0 0 0 1 U A S RdHi RdLo Rn 1 0 0 1 Rm Multiply Long
Cond 0 0 0 1 0 B 0 0 Rn Rd 0 0 0 0 1 0 0 1 Rm Single Data Swap
Cond 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 Rn Branch and Exchange
Cond 0 0 0 P U 0 W L Rn Rd 0 0 0 0 1 S H 1 Rm Halfword Data Transfer:register offset
Cond 0 0 0 P U 1 W L Rn Rd Offset 1 S H 1 Offset Halfword Data Transfer:immediate offset
Cond 0 1 I P U B W L Rn Rd Offset Single Data Transfer
Cond 0 1 1 1 Undefined
Cond 1 0 0 P U S W L Rn Register List Block Data Transfer
Cond 1 0 1 L Offset Branch
Cond 1 1 0 P U N W L Rn CRd CP# Offset Coprocessor DataTransfer
Cond 1 1 1 0 CP Opc CRn CRd CP# CP 0 CRm Coprocessor DataOperation
Cond 1 1 1 0 CP Opc L CRn Rd CP# CP 1 CRm Coprocessor RegisterTransfer
Cond 1 1 1 1 Ignored by processor Software Interrupt
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ARM7cond masks NZCV, 13gp registers +SP,LR,PC4.5 DataProcessing =arithmetisch/logischeInstruktionen,PSR = Program StatusRegister (CPSR, SPSR)4.7 integer MUL/MLARd = Rm*Rs {+Rn}4.8 integerMULL/MLAL (Rd-Hi,RdLo) = Rm*Rs{+(RdHi,RdLo)}4.12 single data swap,SWP to implementsoftware semaphores(LDR,STR)4.3 Branch andExchange, BX alsoswitches between ARMand THUMB4.10 Halfword andSigned Data Transfer,LDRH/STRH LDRS-B/LDRSH4.9 Single Data Trans-fer, LDR/STR4.11 Block Data Trans-fer, LDM/STM4.4 Branch/Branch withLink, B/BL: {R14:=PC}PC += signext(offset<<2)
Abschnitt 11: Addenda 304
B z.B. 4.5 DataProcessing = arith./log. instructions
ARM Instruction Set - Data processing
ARM7TDMI Data SheetARM DDI 0029E
4-10
Ope
n A
cces
s4.5 Data Processing
The data processing instruction is only executed if the condition is true. The conditionsare defined in ➲Table 4-2: Condition code summary on page 4-5.
The instruction encoding is shown in ➲Figure 4-4: Data processing instructions below.
Figure 4-4: Data processing instructions
The instruction produces a result by performing a specified arithmetic or logicaloperation on one or two operands. The first operand is always a register (Rn).
Cond 00 I OpCode Rn Rd Operand 2
011121516192021242526272831
Destination register1st operand registerSet condition codes
Operation Code
0 = do not alter condition codes1 = set condition codes
0000 = AND - Rd:= Op1 AND Op2
0010 = SUB - Rd:= Op1 - Op20011 = RSB - Rd:= Op2 - Op10100 = ADD - Rd:= Op1 + Op20101 = ADC - Rd:= Op1 + Op2 + C0110 = SBC - Rd:= Op1 - Op2 + C0111 = RSC - Rd:= Op2 - Op1 + C1000 = TST - set condition codes on Op1 AND Op21001 = TEQ - set condition codes on Op1 EOR Op21010 = CMP - set condition codes on Op1 - Op21011 = CMN - set condition codes on Op1 + Op21100 = ORR - Rd:= Op1 OR Op21101 = MOV - Rd:= Op21110 = BIC - Rd:= Op1 AND NOT Op21111 = MVN - Rd:= NOT Op2
Immediate Operand0 = operand 2 is a register
1 = operand 2 is an immediate value
Shift Rm
Rotate
S
Unsigned 8 bit immediate value
2nd operand registershift applied to Rm
shift applied to Imm
Imm
Condition field
11 8 7 0
03411
0001 = EOR - Rd:= Op1 EOR Op2
- 1- 1
ARM Instruction Set - Data processing
ARM7TDMI Data SheetARM DDI 0029E
4-10
Ope
n A
cces
s
4.5 Data ProcessingThe data processing instruction is only executed if the condition is true. The conditionsare defined in ➲Table 4-2: Condition code summary on page 4-5.
The instruction encoding is shown in ➲Figure 4-4: Data processing instructions below.
Figure 4-4: Data processing instructions
The instruction produces a result by performing a specified arithmetic or logicaloperation on one or two operands. The first operand is always a register (Rn).
Cond 00 I OpCode Rn Rd Operand 2
011121516192021242526272831
Destination register1st operand registerSet condition codes
Operation Code
0 = do not alter condition codes1 = set condition codes
0000 = AND - Rd:= Op1 AND Op2
0010 = SUB - Rd:= Op1 - Op20011 = RSB - Rd:= Op2 - Op10100 = ADD - Rd:= Op1 + Op20101 = ADC - Rd:= Op1 + Op2 + C0110 = SBC - Rd:= Op1 - Op2 + C0111 = RSC - Rd:= Op2 - Op1 + C1000 = TST - set condition codes on Op1 AND Op21001 = TEQ - set condition codes on Op1 EOR Op21010 = CMP - set condition codes on Op1 - Op21011 = CMN - set condition codes on Op1 + Op21100 = ORR - Rd:= Op1 OR Op21101 = MOV - Rd:= Op21110 = BIC - Rd:= Op1 AND NOT Op21111 = MVN - Rd:= NOT Op2
Immediate Operand0 = operand 2 is a register
1 = operand 2 is an immediate value
Shift Rm
Rotate
S
Unsigned 8 bit immediate value
2nd operand registershift applied to Rm
shift applied to Imm
Imm
Condition field
11 8 7 0
03411
0001 = EOR - Rd:= Op1 EOR Op2
- 1- 1
ADDEQ R2,R4,R5 ; If the Z flag is set make R2:=R4+R5
TEQS R4,#3 ; test R4 for equality with 3 (S is redundant)
SUB R4,R5,R7,LSR R2 ; Logical right shift R7 by the number in
; the bottom byte of R2, subtract result
; from R5, and put the answer into R4
MOV PC,R14 ; Return from subroutine
MOVS PC,R14 ; Return from exception and restore CPSR from SPSR_mode
Abschnitt 11: Addenda 305
z.B. ganzzahlige Vielfache von integers: Ra := c*Ra
Multiplication by 2n, i.e. by 1,2,4,8,16,32... per MOV Ra, Ra, LSL #n
Multiplication by 2n + 1, i.e. by 3,5,9,17... per ADD Ra,Ra,Ra,LSL #n
Multiplication by 2n−1, i.e. 3,7,15... per RSB Ra,Ra,Ra,LSL #n wherereverse subtract, RSB computes Rd = op2-Rn
Multiplication by 6 per
ADD Ra,Ra,Ra,LSL #1 ; multiply by 3
MOV Ra,Ra,LSL#1 ; and then by 2
Multiply by 10 and add in extra number in Rc per
ADD Ra,Ra,Ra,LSL#2 ; multiply by 5
ADD Ra,Rc,Ra,LSL#1 ; multiply by 2 and add Rc
pp4-63 general recursive method for integer Rb := Ra*C, C a constant
Abschnitt 11: Addenda 306
B z.B. 4.9 Single Data Transfer, LDR/STR
ARM Instruction Set - LDR, STR
ARM7TDMI Data SheetARM DDI 0029E
4-28
Ope
n A
cces
s
4.9 Single Data Transfer (LDR, STR)The instruction is only executed if the condition is true. The various conditions aredefined in ➲Table 4-2: Condition code summary on page 4-5. The instruction encodingis shown in ➲Figure 4-14: Single data transfer instructions on page 4-28.
The single data transfer instructions are used to load or store single bytes or words ofdata. The memory address used in the transfer is calculated by adding an offset to orsubtracting an offset from a base register.
The result of this calculation may be written back into the base register if auto-indexingis required.
Figure 4-14: Single data transfer instructions
Cond I Rn Rd
011121516192021242526272831
01 P U B W L Offset
2223
011
Source/Destination registerBase registerLoad/Store bit
0 = Store to memory1 = Load from memory
Write-back bit
Byte/Word bit
0 = no write-back1 = write address into base
0 = transfer word quantity1 = transfer byte quantity
Up/Down bit
Pre/Post indexing bit
0 = offset is an immediate valueImmediate offset
Immediate offset
Unsigned 12 bit immediate offset1 = offset is a register
11 0
shift applied to Rm
34
Condition field
0 = down; subtract offset from base1 = up; add offset to base
0 = post; add offset after transfer1 = pre; add offset before transfer
Offset register
Shift Rm
Abschnitt 11: Addenda 307
• A32 vs A64
http://www.arm.com/products/processors/instruction-set-architectures/index.php
A64 is a new 32-bit fixed length instruction set to support the AArch64execution state. The following is a summary of the A64 ISA features:
• Clean decode table based on 5-bit register specifiers• Instruction semantics broadly the same as in AArch32• 31 general purpose 64-bit registers accessible at all times• No modal banking of GP registers - improved performance and energy• Program counter (PC) and Stack pointer (SP) not GP registers• Dedicated zero register available for most instructions
Key differences from A32 are:
• New instructions to support 64-bit operands. Most instructions canhave 32-bit or 64-bit arguments.
• Addresses assumed to be 64-bits in size.• Far fewer conditional instructions than in AArch32 conditional {branches,
compares, selects}• No arbitrary length load/store multiple instructions LD/ST P for
handling pairs of registers added A64
Abschnitt 11: Addenda 308
Advanced SIMD and scalar floating-point support are semantically similarto the A32 support; they share a floating-point/vector register file, V0 toV31. A64 provides three major functional enhancements:
• More 128 bit registers: 32 x 128 bit wide registers; can be viewed as64-bit wide registers
• Advanced SIMD supports DP floating-point execution• Advanced SIMD supports full IEEE 754 execution; rounding-modes,
Denorms, NaN handling
There are some additional floating-point instructions for IEEE754-2008:
• MaxNum/MinNum instructions: one operand a NaN• Float to Integer conversions with RoundTiesAway
The register packing model in A64 is also different from A32:
• All vector registers Vx[127:0] are 128-bits wide:Double precision scalar floating point uses Vx[63:0]Single precision scalar floating point uses Vx[31:0]
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0487a.b/index.html
5242p to registered ARM customers only!
Abschnitt 11: Addenda 309
• Details aus ARMv8 Instruction Set Overview
https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR100-DA-70501-r0p0-00eac5/
ARMv8_ISA_PRD03-GENC-010197-30-0.pdf 115p only after registration!http://infocenter.arm.com/help/topic/com.arm.doc.aeg0014e/AEG0014E_
ARM_corporate_glossary.pdf 41phttp://infocenter.arm.com/help/topic/com.arm.doc.dui0802a/DUI0802A_
armasm_reference_guide.pdf 1176p
’overview of the ARMv8 instructions sets, being mainly the new A64 in-struction set used in AArch64 state but also those new instructions addedto the A32 and T32 instruction sets since ARMv7-A for use in AArch32state’
3 A64 OVERVIEW p10 32bit Instruktionen, 32 Register; R31=0 if read,discards data if written; R31=SP if used as base register in load/store;R30=LR link register; scalar load/store addressing modes; load/sto-re immediate offsets may be scaled; load/store of pairs of registers;load/store on unaligned addresses? fewer conditionality; shift opti-on for the final register operand; advanced SIMD processing exten-ded to 32 128-bit vector registers; saturating arithmetic instructions;CPSR=Current Program Status Register, system instructions
Abschnitt 11: Addenda 310
3.1 Distinguishing 32-bit and 64-bit Instructions p12→ two forms: 32bit instructions vs 64 bit instructions;
3.2 Conditional Instructions p12 → predict poorly
3.3 Addressing Features p13 32bit and 64bit addresses, addressing mo-des; PC-relative addressing;
3.5 Memory Load-Store p13 LDP/STP load/store pairs; LDNP/ST-NP load/store pairs not in cache; PRFM (prefetch memory) prefetchto a specific cache level; exclusive access, acquire-release
3.6 Integer Multiply/Divide p14 MAC;
3.7 Scalar Floating Point p14 32 SP and 32 (!) DP-registers, floatingpoint arithmetic and rounding
4 A64 ASSEMBLY LANGUAGE p16 (disassemblable to identify mal-ware more easily) integer containers: Word; eXtended word; scalar,FP & SIMD containers: Byte; Half-, Single-, Double- and Quad-precision; sub(container) types: load/store and sign-zero-extend: B,SB, H, SH, W, SW; register width changes: High, Narrow, Long, Wi-de (SXTW=sign extend wide?); → ADD instructions with differentopcodes depending on args
Abschnitt 11: Addenda 311
4.3 Condition Codes p17 set/not set by instructions (postfix S); CSEL=conditionallyselect s.a. p47; → condition codes
4.4 Register Names p19 WZR=R31=WSP (32bit), XZR=R31=XSP (64bit);LR=R30? mit WLR und XLR? 32 FP/SIMD heißen V0..V31 mit ska-laren Bn, Hn, Sn, Dn, Qn und vektoriellen Vn.8B, Vn.16B, Vn.4H,Vn.8H, Vn.2S, Vn.4S, Vn.1D, Vn.2D mit Adressierung einzelner Ele-mente und lanes; vector register list, vector element list;
4.5 Load/Store Addressing Modes p22 pre/post indexed addressingmods z.B. fur push/pop verschiedene Addressierungsarten (SXT?/UXT?signed/unsigned extend s.a. p39, SBFIZ/UBFIZ signed/unsigned bit-field s.a. p39)
5 A64 INSTRUCTION SET p24 assembler: conventions, features etc
5.2 Control Flow p25 branch instructions, BL/BLR branch and link toR30, BR gives → hints to CPU?
5.3 Memory Access p26 single register:→ addressing modes, write back= base register write back? → loads/stores; Unterschied LDR vsLDUR? load/store pairs, non-temporal or streaming i.e. hint do notcache; load/store unpriviledged w.r.t. exception level; load/store ex-clusive permitting the construction of atomic read-modify-write ope-
Abschnitt 11: Addenda 312
rations on shared memory variables, semaphores, mutexes, spinlocks,etc; Load-Acquire/Store-Release remove the need to use the explicitDMB memory barrier instructions; (non-) exclusive; prefetch memo-ry: → hint to MMU;(Programming Language Interface, PLI z.B. fur VERILOG)
5.4 Data Processing (immediate) p34/35 arithmetic instructions withimmediates: add, sub, cmp, cmn, mov; logical instructions with im-mediates: and, or; move with (wide) immediates; pseudo instructions(aliases) of move; PC-relative address calculation: → ADRP(age),ADR; bitfield/→extract operations; shift, sign/zero-extend sind pseu-do instructions per bitfield/extract;
5.5 Data Processing (register) p41 arithmetic instructions with shif-ted register, with extended register: add, sub, cmp, cmn; logic in-structions with shifted register: and, bic, eon, eor, orr, orn, mov asalias for orr; variable shift; bit operations: cls, clz, rbit, rev;bescheuerte Bezeichnung: p46 → conditional data processing p48 →conditional comparison:
5.6 Integer Multiply/Divide p49 multiply (MAC!), divide, CRC
5.7 Scalar Floating-point p52 load/store FP and SIMP registers (ad-
Abschnitt 11: Addenda 313
dressing modes wie fur integer registers); load/store pairs; load/sto-re FP/SIMD non-temporal pairs; FP-move (register, immediate) =pseudoinstruction? FP-convert to/from int, to/from fixed (!); round;fabs, fneg, fsqrt; fadd, fdiv, fmul, fsub; fmin, fmax; MAC: fmadd,fmsub; FP-compare; FP conditional select;
5.8 Advanced SIMD p62 → vector registers; p63 polynomial data ty-pe? Data Movement → DUP, Vector Arithmetic → FADD, MUL vsFMUL, FSQRT, FRSQRT; Vector Compare→ CMEQ; Scalar Arith-metic/Compare (where <V> is S or D); Vector Widening bzw. Narro-wing Arithmetic, z.B. 8H←8B bzw. 8H←16B; Scalar Widening/Nar-rowing Arithmetic (where <V> is ...); Vector Unary Arithmetic; Sca-lar Unary Arithmetic (where <V> is ...); Vector-by-element Arithme-tic; Scalar-by-element Arithmetic (where <V> is ...); Vector Permute(?) → TRN1, TRN2; Vector Immediate; Vector Shift (immediate);Scalar Shift (immediate) (where <V> is ...); Vector Floating Point /Integer Convert; Scalar Floating Point/Integer Convert (where <V>is ...); Vector Reduce (across vector lanes) (?)→ ADDV; Vector Pair-wise Arithmetic (?) → ADDP; Scalar Pairwise Reduce → FADDP;Vector Table Lookup (?) → TBL vs TBX; Vector Load-Store Struc-ture p89
Abschnitt 11: Addenda 314
5.8.25 AArch32 Equivalent Advanced SIMD Mnemonics p91 FPCR=FloatingPoint Control Register: polynomial nur PMULL, PMULL2,
5.8.26 Crypto Extension p98 shares the FP/SIMD register file for AES(advanced encryption standard), GCM (authenticated encryption byThe Galois/Counter Mode of Operation), and SHA (Secure HashAlgorithm); uses PMULL, PMULL2 (polynomial multiply long)
5.9 System Instructions p99 Exception generating instructions, z.B. de-bug exceptions, System register access, System management (system,cache, TLB), Architectural hints ? p104, Barriers ? p104, CLREX ?p104
z.H. beurteile
• Orthogonalitat
• Heterogenitat
• CPI
• Kompaktheit des Codes
• Was spricht fur RISC? was fur CISC?
o
Abschnitt 11: Addenda 315
11.11. Addendum in 2015: IBM z13
IBM zSystems http://www.ibm.com/common/ssi/cgi-bin/ssialias?subtype=ST&infotype=SA&htmlfid=ZSJ03278USEN&attachment=ZSJ03278USEN.PDF
Wieso uberhaupt z? https://www.youtube.com/watch?v=ErZRSQoTFXw einbißchen Werbung zur Einfuhrung . . .
hard facts in AULIS � external docs:
TG Lascu et al: IBM z13 Technical Guide; IBM 2015 sg248251.pdf
TI Lascu et al: IBM z13 Technical Introduction; IBM 2015 sg248250.pdf
Im Folgenden beziehen sich alle Seitenangaben auf TI ...
0’15” IBMs z13, data and transaction engine for cloud, mobile, analytics
1’00” reliable, secure, performant
1’10” vector processing (SIMD), FPGA support, data compression, vir-tualization, crypto
2’00” ’feed the beast’ : caching, memory
2’15” IO
Abschnitt 11: Addenda 316
2’30” 141 out of 168 PUs (p26, p34), 22nm, 6 instructions/cycle in parallel
3’00” 8 cores/die @5GHz, on die caches (p26, p34)
34 IBM z13 Technical Introduction
Each z13 processor unit (PU) chip has eight cores. All chips use complementary metal-oxide of silicon (CMOS1) 14S0 technology. CMOS 14S0 is a state-of-the-art microprocessor technology that is based on 17-layer copper interconnections and Silicon-On-Insulator (SOI) technologies. The chip lithography line width is 0.022 µm (22 nm). The processor unit chip contains close to 3,990,000,000 transistors in a 678.8 mm2 die.
There are eight single chip modules (SCMs) per CPC drawer. Six of these SCMs hold the processor chips (PU chips) and two SCMs hold storage control (SC) chips. Each PU chip has six, seven, or eight active cores, L1, L2, and L3 caches; the two SC chips holds L4 caches, as shown in Figure 2-8.
Two CPC drawer configurations are offered with 39 or 42 PUs. All the models employ CPC drawers with 39 PUs except for the model NE1, which has four CPC drawers with 42 active PUs, for a total of 168 PUs.
Figure 2-8 z13 CPC drawer chips and cache structure
Each SC chip packs 480 MB of eDRAM cache, interface logic for three PU chips each, and SMP fabric logic, into 678.78 mm2. The two SC chips are configured to provide a single 960 MB L4 cache that is shared by all cores in the CPC drawer. This amount of cache gives a total of 3.8 GB of cache if all four CPC drawers are implemented, yielding outstanding SMP scalability on real-world workloads.
1 Complementary metal-oxide-semiconductor
Node 0Node 1
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
64MB eDRAMInclusive L3
L1
L22MB
L1
L22MB
480MBeDRAM
L4
224MBeDRAM
NICL3
ownedlines
480MBeDRAM
L4
224MBeDRAM
NICL3
ownedlines
PU chip (8 cores) PU chip (8 cores) PU chip (8 cores) PU chip (8 cores) PU chip (8 cores) PU chip (8 cores)
CP Stores
LRU Cast-out
Data Fetch Return
S-Bus
X-Bus
To other CPC drawers
hierarchic connection network
3’30” cache-hierarchy: ’private’ L1 96/128KB I/D cache, L2 2MB I&D,
Abschnitt 11: Addenda 317
L3 64MB, L4 480MB along with the addition of 224MB for non-DataIntegrated Coherent (NIC) Directory for L3 ???, up to 10TB memory(p26)
4’00” up to 8000 virtual machines increase utilization (see 5’)
4’15” ’IO-monster’ mit 160 IO-cards a 2 PowerPC (PowerPC, Performan-ce Optimization With Enhanced RISC)
4’50” i.e. 320 IO-channels
5’00” nearly 100% utilization
5’15” intelligent IO system
5’40” SIMD = ’performance booster’
6’10” simultaneous multi-threading, SMT, https://en.wikipedia.org/
wiki/Simultaneous_multithreading, 2 threads/core
6’30” open system, i.e. supports e.g. JAVA, Linux etcJAVA & SIMD ???
6’50” Hadoop https://de.wikipedia.org/wiki/Apache_Hadoop
8’00” desaster recovery
8’15” intelligent workload distribution with zAware
Abschnitt 11: Addenda 318
8’50” resilience analytics
9’10” ’most secure’ , cryptographic co-processors, EAL5 compliant https://en.wikipedia.org/wiki/Evaluation_Assurance_Level
9’50” end-to-end cryptography
10’00” format preserving cryptography?
10’30” tested: unbreakable, resilient, i.e. temperature, voltage, frequency,shock, vibration, earth quakes
12’10” Assurance Kernel Tests – per injecting failures to test e.g. the coo-ling system in order to guarantee high availability
13’00” error checking
14’00” energy efficiency
14’50” pushing the boundaries ???
zu core, out of order execution, cache hierarchy, branch prediction, transac-tional memory, etc. s.a. Dokumente zu Vorganger-z-systems z.B.C.K. Shum, F. Busaba, C. Jacobi: IBM zEC12 – The Third-GenerationHigh-Frequency Mainframe Microprocessor; IEEE 2013 (see e-lib)
Abschnitt 11: Addenda 319
Anwendungsbeispiele s.a. ZSM03007USEN.pdf auf AULIS:Kenya Power, Tesco, Travelport, First National Bank of South Africa, SwissRe, Banca Carige of Italy, Petrol of Slovenia, The New York MunicipalShared Services Cloud (Zusammenfassung pp23-25)
• Mainframe vs Multi-Computer-System
Was sagt uns HPC? http://www.top500.org/ vergleiche . . .
Welche Anforderungen sind fur welche Anwendungen zu erfullen?Untersuche
• Datenbank-Anwendungen,vgl. https://en.wikipedia.org/wiki/Apache_Hadoop
• Scientific Computing (FEM fur crash tests, Systeme von PDEs zurWetter-Vorhersage, Atombomben-Modellierung etc.)
• big data (google, facebook etc)
• render farms (Hollywood)
Mainframe vs. Distributed Servers: s.a. http://www-03.ibm.com/systems/es/resources/ZSL03135USEN.pdf
Abschnitt 11: Addenda 320
Security, s.a. http://enterprisesystemsmedia.com/article/10-key-security-questions-to-help-determine-the-most-secure-platform
• Mainframes
• http://aspg.com/reasons-why-mainframes-still-matter/#.VZO1iUY5jAo
scalability, security, maintainability
• http://www.computerweekly.com/feature/Is-the-time-right-for-a-mainframe-renaissance
”According to IBM, an IBM System z10 EC mainframe has the equi-valent capacity of nearly 1500 x86 servers with an 85% smaller foot-print and up to 85% lower energy costs.”high availability, reliability, and security
•
• Distributed Systems
• http://www.cs.cmu.edu/~02317/slides/lec_3.pdf – case study: Ha-doop https://en.wikipedia.org/wiki/Apache_Hadoop
• http://www.cis.upenn.edu/~lee/07cis505/Lec/lec-ch1-DistSys-v4.
pdf – case studies: e-health, sensor networks, smart space
Abschnitt 11: Addenda 321
11.12. Addendum in 2016: NN
• VISC, Virtual Instruction Set Computing oder Very Intensive ScalingComputer, whatever
• PowerPC, Performance Optimization With Enhanced RISC
• . . .
Index
8051 µ-Controller, 97
Adressierung, 67Adressierungsarten, 68Aiken, Howard, 15Akkumulator-Architektur, 59Algorithmus
Effektivitat, 217Effizienz, 217Gauß, 200Gauß-Jordan, 204, 214lineare Rekurrenz, 219parallel, 197parallele Summation, 216Vektorisierung, 202
Architektur, parallel, 197Atanasoff, John, 15
Belady, Laszlo
Anomalie 1969, 165Babbage, Charles, 15Baumhohenreduktion, 219Befehlsmix, 71Befehlssatz, siehe instruction set, 58,
101benchmark
BAPCo Sysmark, 22DAXPY, 120, 202, 230Drystones, 22Lapack, 22Linpack, 22Livermore Loops, 22SAXPY, 120, 202, 230SPECfp, 22SPECint, 22SPECmarks, 22Whetstones, 22
322
Abschnitt 11: Addenda 323
Beschleunigungsfaktor, 25, 109bus bandwidth, 21
cache, 1341-associative, 1371-assoziativ, 136block, 140, 145copy back, 149data-, 121direct mapped, 135–137fetch on write (miss), 150instruction-, 121Koharenz, 149, 209Konsistenz, 149least recently used, LRU, 144MESI, 209no write allocate, 150physically indexed, 185set assiciative, 143set associative, 144, 145snooping, 150
Verdrangungsstrategie, 140virtually indexed, 185write allocate, 150write around, 150write back, 149write through, 149
CISC, 92, 97Colossus, 16Compiler
Code-Alternativen, 100compiler, 30
block of code, 40Code verschieben, 47constant expression folding, 34Elimination
gemeinsame Teilausdrucke, 34redundante Sprunge, 34tote Variable, 47toter Code, 34, 47
lexikalische Analyse, 35
Abschnitt 11: Addenda 324
lokale Optimierung, 34loop unfolding, 34, 231loop unrolling, 34, 231Maschinen-unabhangige Zwischen-
sprache, 38Optimierung, 50
Kontext-neutral, 50parallelisierend, 215Parameter-Ubergabe, 52propagation, 34Prozeß-Wechsel, 52Reduktion der Starke, 47Registerzuteilung, 34semantische Analyse, 37strength reduction, 34syntaktische Analyse, 36vektorisierend, 215Verbreiten von Kopien, 34, 47
condition codes, 72control unit, 114
Convex C1, 122CPI, 109CPI = cycles per instruction, 21Cray
Cray 1, 122, 128Cray 2, 122Cray X-MP, 122CrayY-MP, 122
data hazard, 114, 115RAW, 115WAR, 115
directed acyclic graph, DAG, 221displacement, 69DLX, siehe MIPS
DLXV(ector), 122lhi, 76
DLXV = Vektor-DLX, 123
Eckert, John P., 16EDVAC, 16
Abschnitt 11: Addenda 325
ENIAC, 16Enigma, 16
FLOPS = floating point operationsper sec, 21
FPS = frames per sec, 21Fujitsu
VP100/200, 122functional unit, 107functional units
scheduling, 114funktionale Einheit, 107
Havard-Architektur, 151hazard
race condition, 223Hitachi
S810/820, 122Hollerith, Hermann, 15hyperthreading, 225
IBM, 15IBM 3090, 231
compound instructions, 233vector facility, 231Vector Instructions, 236
IBM, z13, 315IBM, zSystem, 315immediate, 69instruction pipeline, 106instruction set, siehe Befehlssatzinstruction set architecture, siehe ISAInstruction Set Architecture, ISA, 58Intel 80x86, 81
8087 coprocessor, 848086, 81, 8980286, 81, 8480386, 81, 84, 9080486, 81Adressierung, 86Adressierungsarten, 86
Abschnitt 11: Addenda 326
Akkumulator-Architektur, 83, 84AMD64, 95base pointer, BP, 83Befehlsdekodierung, 92Befehlsformate, 85, 87condition codes, 93, 95destination index, DI, 83extended accumulator architec-
ture, 84IA64, 97instruction pointer, EIP, 86instruction pointer, IP, 83memory management, 192Operationen, 87
Datentypen, 87dyadisch, 87SIMD, 87
Pentium, 81, 151Pentium Pro, 151prefixes, 88
processor status, EFLAGS, 86processor status, FLAGS, 83Register-Architektur, 83, 84Segmentierung, 86source index, SI, 83stack pointer, SP, 83Stack-Architektur, 83, 84
Inter-PE-Kommunikation, 199, 208io bandwidth, 21ISA, siehe instruction set architec-
tureorthogonal, 100
ISA, Instruction Set Architecture, 58
Java VM, 62Joy, Bill – SUN-Mitbegrunder, 27
KLIPS = K inferences per sec, 21
Leibniz, Gottfried, 15lineare Gleichungssystem, LGS, 197
Abschnitt 11: Addenda 327
load/store-Architektur, 61Lokalitat, 133
raumlich, 133zeitlich, 133
Lovelace, Augusta Ada King, coun-tess of, 15
MAC-Instruktion, 202Matrix-Multiplikation, 55, 150, 197,
227branch, 55caching, 56, 57jump, 55load, 55loop unfolding, 56loop unrolling, 56store, 55
Mauchly, John William, 16memory, siehe Speicher, 152
buddy systems, 173cache vs TLB, 182
contention, 204distributed, 218DRAM, 152global, 208hierarchy-, 129management, 156
allocation, 156efficient, 156fast, 156page table, 159paging, 159protection, 156relocatable, 156sharing code, 156sharing data, 156
multi port, 208nibble mode, 154page mode, 154paged segments, 177paging
Abschnitt 11: Addenda 328
copy back, 161full associative, 161hierarchy of page tables, 162inverted page table, 162LRU, 161, 166paging the page table, 162
physical, 157physically indexed cache, 185protection, 188segmentation, 167
address translation, 167context switch, 167dynamic allocation, 168protection, 167segmentation violation, 179
shared, 208shared , 223SRAM, 152static column mode, 154virtual, 157
virtually indexed cache, 185MicroChip PIC24, 99MIPS, 73
add, 76addi, 76b zal, 73Befehlsabarbeitung, 103, 104Befehlsformat, 77beq, 76bne, 76branch, 95control unit, 103displavcement, 76ISA, 73j, 76jal, 73jalr, 73jr, 76lui, 76lw, 76
Abschnitt 11: Addenda 329
lwl, 76lwr, 76multi cycle implementation, 74,
102opCode, 77opCode-Erweiterung, 74Operationen
arithmetisch-logisch, 107branch/jump, 107load/store, 107
pipelinecontrol hazard, 107data hazard, 107
pipeline implementation, 105s , 76s i, 76shift, 79
arithmetisch, 79logisch, 79sll, 79
sllv, 79sra, 79srav, 79srl, 79srlv, 79
single cycle implementation, 74,102
Steuerung, 103µ-Programm, 104Modellierung durch FSM, 104PLA, 104ROM, 104sequencer, 104
sub, 76subi, 76superscalar implementation, 107sw, 76swl, 76swr, 76
MIPS = Mio instructions per sec, 21
Abschnitt 11: Addenda 330
Moore, Gordon E. – Intel-Mitbegrunder,27
MOPS = Mio operations per sec, 21Morland, Samuel, 15mutual exclusion, MUTEX, 224
NECSX/2, 122
netconnection, 216
NetzVerbindungs-, 216
Neumann, John von, 16Newman, Max H.A., 16
Operationen, 70arithmetisch-logisch, 70binary coded digit, BCD, 70Daten-Transfer, 70Gleitpunkt = Gleitkomma, 70Register-Register, 65
Register-Speicher, 65Skalar-, 126Speicher-Speicher, 65Steuerung, 70String, 70Vektor-, 126
Parallelisierung, 199Parallelitat, 107Pascal, Blaise, 14PIC24 µ-Controller, 99pipeline, 105
arithmetic, 111control hazard, 106data hazard, 106functional, 111Granularitat, 113superskalar, 106Varibilitat, 113
pipeline control, 106pipeline implementation, 105
Abschnitt 11: Addenda 331
PowerPC, 151processing element, PE, 199Prozessor
pipeline-, 126pipeline-vector-, 120, 121superpipeline, 119superskalar, 119Vektor-, 124, 227
Leistung, 126Vektor-Register, 121
Reduced Instruction Set Computer,RISC, 80
Register, 231rekonfigurierbare Vektor-, 232Skalar-, 231Vektor-, 231
Register-Architektur, 59Register-Fenster, 52Register-Satze, 52
RISC, Reduced Instruction Set Com-puter, 80
schedulingdynamic, 224static, 223
Scheduling von PEs, 221scoreboard, 114scorebord, 107SIC, Single Instruction Computer, 58SIMD, 202Single Instruction Computer, SIC, 58single/pipeline implementation, 74Speicher, siehe memorySpeicher-Hierarchie, 129Stack-Architektur, 59Stibitz, George, 15superskalar, 107
TPS = transactions per sec, 21Turing, Alan M., 16
Abschnitt 11: Addenda 332
vector processing, 228Verbindungsstruktur, 209
Bus, 209, 214cross bar, 209, 214Gitter, 209, 214hypercube, 209, 214Kreuzschienenverteiler, 209, 214Ring, 209, 214Stern, 209, 214Torus, 209, 214
wait states, 21Watson, T.J., 15
Zuse, Konrad, 15