Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes...

288
Fakult¨ at E-Technik & Informatik Hochschule Bremen Rechner-Strukturen: slides Prof. Dr. Thomas Risse SS 2012 Sinn & Zweck: Unterst¨ utzung der Lehrveranstaltung Rechner-Strukturen, RST durch diverse Materialien, s. ’RST-page’ www.weblearn.hs-bremen.de/risse/RST c 2012 [email protected] Letzte ¨ Anderung: 6. Juli 2012 Version 0.9.12

Transcript of Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes...

Page 1: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Fakultat E-Technik & InformatikHochschule Bremen

Rechner-Strukturen: slides

Prof. Dr. Thomas Risse

SS 2012

Sinn & Zweck: Unterstutzung der LehrveranstaltungRechner-Strukturen, RST durch diverse Materialien, s.’RST-page’ www.weblearn.hs-bremen.de/risse/RST

c© 2012 [email protected] Anderung: 6. Juli 2012 Version 0.9.12

Page 2: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis

0. Vorbemerkung

• Inhalt • Lernziele • Herangehensweise • Vorbedingungen &

Uberschneidungen • Vor-/Nachbereitung • RST page – computerarchitecture im WWW • Materialien • Test – Probleme mit demVersionswechsel • Leistungsbewertung

1. Einfuhrung

• Begriffsbestimmung • Geschichte • Taxonomie

2. Leistung

• Rechner • unterschiedliche Anwendungsbereiche • Leistungs-kenngroßen • benchmarks • Einflußgroßen • Leistungsmessung• Reprasentativitat • Amdahl’sches Gesetz • Leistungszuwachs

3. Compiler – rechts von/oberhalb der HW-SW-Schnittstelle

3.1. compiler & Konsorten

Page 3: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 3

• compiler passes

3.2. Code-Optimierung

• lexikalische Analyse • syntaktische Analyse • semantische Ana-

lyse • Ubersetzung in Zwischensprache • Code-Erzeugung • Bei-spiel: Quicksort • Beispiel: Quicksort – ohne Optimierung • Bei-spiel: Quicksort – 1. Optimierung • Beispiel: Quicksort – 2. Op-timierung • Beispiel: Quicksort – 3. Optimierung • Code-Erzeu-gung & Optimierung

3.3. Resumee

3.4. z.B. Matrix-Multiplikation

• Matrix-Multiplikation – pure • Matrix-Multiplikation – 4-fach• Matrix-Multiplikation – 4-fach, 4-fach

4. Befehlssatz – links von der HW-SW-Schnittstelle

4.1. Klassifikation

• Wieviele Operanden sind in CPU gespeichert?

4.2. Register-Architekturen

Page 4: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 4

• Beispiele

4.3. Adressierung

• Adressierungsarten

4.4. Operationen

• Befehlshaufigkeiten • Befehlshaufigkeiten und -Merkmale

4.5. Anforderungen an Befehlssatze

4.6. z.B. DLX/MIPS-Befehlssatz

• exemplarische, prototypische DLX/MIPS-Instruktionen •DLX/-MIPS-Formate • DLX/MIPS-(Pseudo-)Instruktionen • Befehls-formate • z.B. DLX/MIPS-shifts • Klassifizierung des Befehls-satzes

4.7. z.B. Intel 80x86-Befehlssatz

• Genealogie • Register • Familien-Entwicklung • Adressierung• Operationen • Befehlsformate • Befehlsprefixe • Beispiele fur8086 Befehle • Beispiele fur 80386 Befehle • Beispiele fur Befehls-formate belegen ISA-Heterogenitat • Dekodierung • ConditionCodes • Sprung- und Verzweigungsanweisungen • Bedingungen

Page 5: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 5

in Registern vs Condition Codes • AMDs 64bit Erweiterungen• Slogans on 80x86 architecture

4.8. z.B. 8051

4.9. Resumee

5. Prozessor-Architektur

5.1. single cycle Implementierung

5.2. multi cycle Implementierung

5.3. Implementieren der Steuerung

6. pipeline-Prozessor

6.1. instruction pipelines

• pipeline control • data hazards • control hazards • superskalareVersion & Leistung • superskalare Prozessoren

6.2. functional pipelines

• arithmetische pipelines • scheduling funktionaler Einheiten• pipeline-Vektor-Prozessoren • Leistungsbewertung

Page 6: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 6

7. Speicher-Hierarchie

• Kenngroßen • Lokalitat

7.1. caching

• direct mapped caches • fully associative caches • set associativecaches • cache-Schreibstrategien • Havard-Architektur

7.2. Speicher: SRAM vs DRAM

7.3. Speicher-Organisation

• virtueller Speicher • paging • segmentation • paged segments• Belegungen des physikalischen Speichers ermitteln • TLB – Be-schleunigen der Adreß-Umsetzung • Speicherschutz-Maßnahmen• 80x86-Unterstutzung der Speicher-Anbindung • performancegap: processor vs memory system

8. Parallelisierung von Algorithmen

8.1. Parallelisierung des Gauß’schen Algorithmus

• Gauß’scher Algorithmus – Eliminieren • Gauß’scher Algorith-mus – Auflosen •Kommunikation • Parallelisierung des Gauß’schenAlgorithmus durch den Compiler

Page 7: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 7

8.2. Effizienz/Effektivitat der Parallelisierung

8.3. parallele Speicher-Zugriffe auf Matrizen

8.4. Baumhohenreduktion

8.5. Parallelisierung rekurrenter Relationen

8.6. Modellierung durch DAGs

8.7. Programmierung

9. Vektor-Prozessor-Systeme (SIMD)

9.1. vector processing (per pipelining oder n ALUs)

9.2. parallel processing (per n parallel processes/processors)

9.3. pipelining within/across operations

9.4. Beispiel: IBM 3090 Vector Facility

• reconfigurable vector registers • Compound Instructions • z.B.komplexe Multiplikation • IBM 3090 Vector Facility – Vector In-structions

10. parallele Architekturen

Page 8: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 8

10.1.Klassifizierung anhand von Beispielen

• Symmetric / Shared-Memory Multiprocessors (SMP), UniformMemory Access (UMA) • Non-Uniform Memory Access (NU-MA) Multiprocessors • Clusters • Massively Parallel Processors(MPP)

10.2.Multiprocessor-Systeme mit gemeinsamem Bus

10.3.cache-Koharenz in Multiprozessor-Systemen

• cache-Koharenz durch Invalidieren • cache-Koharenz durch Ak-tualisieren • cache-Koharenz • Einfaches cache-Koharenz Proto-koll • MESI/MOESI

10.4.Verbindungsstrukturen

• Beispiele • Merkmale einschlagiger Verbindungsstrukturen

11. Addenda

11.1.Addendum in 2003: top 500

11.2.Addendum in 2004: announced in 2004

11.3.Addendum in 2005: top 500

Page 9: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Inhaltsverzeichnis (Forts.) 9

11.4.Addendum in 2006: top 500

11.5.Addendum in 2007: cell-Prozessor

11.6.Addendum in 2010: Core i2000

11.7.Addendum in 2011: K Computer

11.8.Addendum in 2012: Raspberry Pi

• gooseberry

Page 10: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

10

0. Vorbemerkung

• Inhalt

1. Einfuhrung

2. Leistungsbewertung, Leistungsmessung

3. Compiler

4. Befehlssatze

5. Prozessor-Architektur

6. pipelining

7. Speicher-Hierarchie: caching

8. Speicher-Organisation: paging, segmentation

9. Parallelisierung

10. Multi-Prozessor/Multi-Computer-Systeme

Page 11: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 0: Vorbemerkung 11

• Lernziele

• Interna, Architektur-Prinzipien kennenlernen

• Abhangigkeiten erkennen und berucksichtigen

• Angaben zu Leistung/features bewerten konnen

• es gibt nicht nur PCs auf dieser Welt!

• Leistung durch Ausnutzen von Parallelitat steigern

• Herangehensweise

Entwurfssicht

• Vorbedingungen & Uberschneidungen

• Mikro-Computer-Technik

• Digital-Technik

• Betriebssysteme, Compiler (-Bau), . . .

Page 12: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 0: Vorbemerkung 12

• Vor-/Nachbereitung

• in der modul-begleitenden Ubung

– praktische Ubungen zu den aktuellen Themen, z.B. anhandvon Emulationen

• im Hinblick auf Projekte, z.B.

– Unterschriften-Verifikation (Vektor-Coprocessor-board)– ChipCard-Terminal (µ-Controller)– low power processors (VHDL, FPGA)– SystemC

• RST page – computer architecture im WWW

RST page mit Materialien, Archiv, link lists

www.weblearn.hs-bremen.de/risse/RST/

auch uber AULIS verlinkt! s. no computer without architectureAllerdings sind AULIS-Dokumente nicht notwendig up to date!

Page 13: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 0: Vorbemerkung 13

• Materialien

• Literatur: COD, CA & Bibliographie im SkriptPatterson & Hennessy: COD; 2nd ed., MKP COD2ePatterson & Hennessy: COD; 3rd ed., Elsevier, 40£ COD3ePatterson & Hennessy: COD; 4th ed., MKP, ca 40£Hennessy & Patterson: CA; 3rd ed., MKP CAHennessy & Patterson: CA; 4th ed., MKP ca 40£ CA

Patterson & Hennessy: Rechner-Organisation und -Entwurf; El-sevier 55e COD2ePatterson & Hennessy: Rechner-Organisation und -Entwurf; 4.Aufl. Oldenbourg 60eHennessy & Patterson: CA; deutsche Ubersetzung vergriffen CA

• online Materialiens. www.weblearn.hs-bremen.de/risse/RST/docs

– Skript(e) RST.pdf und RST plus.pdf– Folien RSTslide.pdf– (Abschluß)Klausuren klausur.pdf und aKlausur.pdf– Graphiken, Dokumente, link lists etc– Evaluationen

Page 14: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 0: Vorbemerkung 14

• Test – Probleme mit dem Versionswechsel

AULIS→ RST-Test soll die Veranstaltung RST unterstutzen, i.e. mul-tiple choice & fill in blank Test, derzeit zu folgenden Themen

• Leistung

• Compiler

• Befehlssatze

• Prozessor-Architektur

• pipelining

• Speicher-Hierarchie: caching

• Speicher-Organisation: paging, segmentation

• Leistungsbewertung

BPO: Klausur s.www.weblearn.hs-bremen.de/risse/RST/docs/klausur.pdf

www.weblearn.hs-bremen.de/risse/RST/docs/aKlausur.pdf

Page 15: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

15

1. Einfuhrung

Computer-Entwicklung1 ist Leistungssteigerung!

• Begriffsbestimmung

Def. Rechner-Architektur2 ist die Organisation von Rechen-Syste-men, die das Preis/Leistungsverhaltnis fur bestimmte Einsatzbereicheund bei gegebener hardware- und software-Technologie optimiert.

• Geschichte

1642 B. Pascal3: Addition und Subtraktion

1 s. Vergleich mit Automobil2 Amdahl, Blaauw, Brooks – Entwickler der IBM /360 – definierten 1964:

Computer-Architektur ist die Struktur eines Computers, die ein Maschinen-Sprachen-Programmierer verstehen muß, um korrekte Programme fur eine Ma-schine schreiben zu konnen.

3 Blaise Pascal, 1623-1662 www-history.mcs.st-and.ac.uk/history/Mathematicians/Pascal.html

Page 16: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 1: Einfuhrung 16

1666 S. Morland4, 1671 G. Leibniz5 Addition und Multiplikation

1812 Charles Babbage6: Difference Engine (Polynom-Auswertung),Analytical Engine (Lochkarten-Steuerung), Augusta Ada King,Countess of Lovelace7

1924 T.J. Watson:8 von NCR uber CTR zu IBM, Astronomical Com-puting Bureau, Hermann Hollerith:9 National Bureau of Census

1930 Howard H. Aiken,10 John Atanasoff,11 George Stibitz,12 Kon-rad Zuse:13 universelle, programmierbare, digitale (Relais-) Rech-ner

4 Samuel Morland, 1625-1695 es.rice.edu/ES/humsoc/Galileo/Catalog/Files/morland.html

5 Gottfried Leibniz, 1646-1716 www-history.mcs.st-and.ac.uk/history/Mathematicians/Leibniz.html

6 Charles Babbage, 1791-1871 www-history.mcs.st-and.ac.uk/history/Mathematicians/Babbage.html

7 Augusta Ada King, 1815-1852 www-history.mcs.st-and.ac.uk/history/Mathematicians/Lovelace.html

8 Thomas J. Watson, 1874-1956 www.watson.ibm.com/t j watson history.html

9 Hermann Hollerith, 1860-1929 www-history.mcs.st-and.ac.uk/history/Mathematicians/Hollerith.html

10 Howard H. Aiken, 1900-1973 cc.kzoo.edu/ k98hj01/aiken.html

11 John V. Atanasoff, 1903-1995 archive.comlab.ox.ac.uk/museums/computing/atanasoff.html

12 George Stibitz, 1904-1995 www.invent.org/book/book-text/100.html

13 Konrad Zuse, 1910-1995 www-history.mcs.st-and.ac.uk/history/Mathematicians/Zuse.html

Page 17: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 1: Einfuhrung 17

1939 Atanasoff: Rohren-Rechner (Lineare Gleichungssysteme)

1943 Mauchly14 und Eckert:15 Electronic numerical Integrator andCalculator, ENIAC

1943 M.H.A. Newman16 und A. Turing17: Colossus (Kryptographie),Enigma ...

1945 John von Neuman18: Electronic Discrete Variable AutomaticComputer, EDVAC, Magnetische Speicher, Atom-Bombe,s.a. COD, pp315,s.a. Forum InformatikerInnen fur Frieden und gesellschaftlicheVerantwortung,http://fiff.informatik.uni-bremen.de/

z.H. Pioniere und Computer-Museen ’ersurfen’,s.a. H&P, P&H, Literatur, WWW o

14 John W. Mauchly, 1907-1980 www-history.mcs.st-and.ac.uk/history/Mathematicians/Mauchly.html

15 John P. Eckert, 1919-1995 www-history.mcs.st-and.ac.uk/history/Mathematicians/Eckert John.html

16 Max H.A. Newman, 1897-1984 www-gap.dcs.st-and.ac.uk/ history/Mathematicians/Newman.html

17 Alan M. Turing, 1912-1954 www-history.mcs.st-and.ac.uk/history/Mathematicians/Turing.html

18 John von Neuman, 1903-1957 ei.cs.vt.edu/ history/VonNeumann.html

Page 18: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 1: Einfuhrung 18

Zeit Technologie/Architektur SW/Anwendungen Systeme

1945-54Rohren, Relais, CPU mitPC und Accu, Festpunkt-Arithmetik

Assembler, singleuser, no linkage

ENIAC, Prin-ceton IAS,IBM 701

1955-64

diskrete Transisto-ren, Kern-Speicher,Gleitpunkt-Arithmetik,I/O-processors, multiple-xed memory access

HLL, compiler, li-braries, batch pro-cessing

IBM 7090,CDC 1604,Univac LARC

1965-74SSI/MSI-ICs, Mikropro-grammierung, pipelining,cache, µ-processors

multiprogramming,time sharing, OS,multi user

IBM 360/370,CDC 6600,TI-ASC,PDP-8

1975-90

LSI/VLSI-ICs, Halblei-ter-Speicher, RISC vsCISC, multi processors,vector supercomputers,multicomputers

multiprocessor OS;languages, compi-lers etc. for parallelprocessing

Apple, PC,VAX 9000,Cray X-MP,IBM 3090

1991-ULSI/VHSI-ICs, high den-sity packaging, scalable ar-chitectures

MPP, grand chal-lenges, heteroge-neous processing

FujitsuVPP500,Cray MPP,CM-5, IntelParagon

Page 19: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 1: Einfuhrung 19

• Taxonomie

sehr grobe Einteilung von Rechnern (Flynn19sche Klassifikation)

SD MDsingle data multiple data

SI – single SISD SIMDinstruction 8051, 8086, etc. MMX, etc; Vektor-RechnerMI – multiple — MIMDinstruction — Multi-Prozessoren, -Computer

z.H. Finde und klassifiziere weitere Beispiele. o

19 Michael Flynn: Very high-speed computing systems; Proceedings of the IEEE,volume 54, pages 1901-1909, December 1966.

Page 20: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

20

2. Leistung

Kosten-zu-Nutzen-Verhaltnis optimieren!i.e. minimize cost/benefit ratio!

• Rechner

• dedicated hardware, ASICs ...

• FPGAs ...

• µ-Controller, DSP, ...

• PC

• workstation

• server, mid size computer, ...

• main frame

• Super-Computer

Beispiele?

Page 21: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 21

• unterschiedliche Anwendungsbereiche

• ...

• general purpose

• SoHo

• Wirtschaft

• Wissenschaft & Technik

• Super-Computer, HPC

Beispiele?

Page 22: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 22

• Leistungskenngroßen

• MIPS

• MOPS

• FLOPS

• CPI

• Bus-Bandbreite

• IO-Bandbreite

• wait states

• TPS

• FPS

• KLIPS

• ... ?

Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?

Page 23: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 23

• benchmarks

• Gibson-Befehlsmix

• Whetstones in MWIPS

• Linpack

• Dhrystones

• Livermoore loops

• SPECmarks in SPECint, SPECfp etc

• Perfect Club

• WinStone

• BABCo SYSmark

• ... ?

Eigenschaften wie Meßbarkeit, ’Unbestechlichkeit’, Relevanz ...?

z.H. Vergleiche Leistungskenngroßen vs benchmarks! o

Page 24: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 24

• Einflußgroßen

SekundenProgramm = Instruktionen

Programm × Clock ZyklenInstruktion

× SekundenClock Zyklus

und durch Ubergang zu geeigneten Mittelwerten

SekundenProgramm = Instruktionen

Programm × CPI× 1

Taktrate

Abhangigkeiten?

• Leistungsmessung

Leistung = 1

Ausfuhrungszeit.

Beschleunigungsfaktor β aufgrund einer Modifikation ist

β =Leistungmit ModifikationLeistungohne Modifikation

=AusfuhrungszeitohneAusfuhrungszeitmit

Page 25: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 25

Leistungsgewinn γ aufgrund einer Modifikation ist

1 + γ =Leistungmit ModifikationLeistungohne Modifikation

=AusfuhrungszeitohneAusfuhrungszeitmit

bzw. aufgelost

γ =Leistungmit−Leistungohne

Leistungohne=

Ausfuhrungszeitohne−AusfuhrungszeitmitAusfuhrungszeitmit

• Reprasentativitat

Arithmetisches Mittel oder gewichtetes Mittel

AZ =1

n

n∑i=1

AZi AZ =

n∑i=1

wiAZi

der Ausfuhrungszeiten AZi ausgewahlter Programme Pi mit zugeho-rigen Gewichten wi ≥ 0 und

∑ni=1 wi = 1

bzw. harmonisches Mittel r der Raten ri

r =n∑ni=1

1ri

bzw.1

AZ=

n∑ni=1

11/AZi

Page 26: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 26

der Raten 1AZi

ausgewahlter Programme Pi

Z.B. mittlere MIPS, MOPS, FLOPS cz.H. Benjamin Benz: Auf den Zahn gefuhlt – PC-Performance selbstbeurteilen; c’t 18/2009 140-144 www.ctmagazin.de/0918140 mit TestsCPU: Cinebench, Prime95; Grafikkarten: Furmark, 3DMark06, 3DMark03,

3DMark Vantage, 3DMark05; Festplatten&Laufwerke: IOMeter, H2benchw,

Nero Disc Speed; Speicher: Memtest86+, Memtest86; Netzwerk: NetIO,

Iperf; application benchmarks: BAPCo SYSmark, 7-Zip; Spiele: Fraps. o

• Amdahl’sches Gesetz

Fur α = Anteilverandert liege Beschleunigungsfaktor βverandert vor.

Ausfuhrungszeitneu = (1− α)Ausfuhrungszeitalt + αAusfuhrungszeitalt

βverandert

βgesamt =AusfuhrungszeitaltAusfuhrungszeitneu

= 1(1−α)+ α

βverandert

Beispiele!

Page 27: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 27

• Leistungszuwachs

HP 9000/750

SUN-4/ 260

MIPS M2000

MIPS M/120

IBM RS6000

100

200

300

400

500

600

700

800

900

1100

DEC Alpha 5/500

DEC Alpha 21264/600

DEC Alpha 5/300

DEC Alpha 4/266

DEC AXP/500IBM POWER 100

Year

Per

form

ance

0

1000

1200

19971996199519941993199219911990198919881987

Page 28: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 2: Leistung 28

Also jahrliche Verdoppelung der Prozessor-Leistung (gemessen etwain MIPS oder FLOPS)

Leistung= 2Jahr−1984 (Joy’sches Gesetz)

und ca alle drei Jahre Vervierfachung der Speicher-Chip-Kapazitaten

1992

100,000

Kbi

t ca

paci

ty

10,000

1000

100

1019901988198619841982198019781976

Year of introduction

16M

4M

1M

256K

16K

64K

1994 1996

64M

z.H. Aktualisiere! s. z.B. http://cpudb.stanford.edu (zur Methodiks. http://portal.acm.org/ft gateway.cfm?id=2181798), www.cpu-world.com o

Page 29: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

29

3. Compiler – rechts von/oberhalb der HW-SW-Schnittstelle

Def. Ein Compiler uberfuhrt ein Programm in Quellsprache, etwain einer Problem-orientierten Programmiersprache, in ein aquivalentesProgramm in einer Zielsprache, etwa in Maschinensprache. Die Uber-setzung kann in mehreren passes erfolgen und Programme in Zwi-schensprachen erzeugen.

Referenzen:

• Aho, Sethi & Ullman: Compiler (das Drachenbuch)

• Nicolaus Wirth: Compiler; Teubner

3.1. compiler & Konsorten

compile – assemble – link – load (s. Bild COD, p156)

vgl. WinDLX mit Compiler C → DLX-Assembler

Page 30: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 30

Assembler

Assembly language program

Compiler

C program

Linker

Executable: Machine language program

Loader

Memory

Object: Machine language module Object: Library routine (machine language)

Page 31: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 31

• compiler passes

Untersuche EVA fur jeden compiler pass, d.h.

untersuche, welche Darstellung des Programmes ein jeder compilerpass in welche andere Darstellung des Programmes uberfuhrt undwelche Daten dabei verwendet bzw. erzeugt werden.

Page 32: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 32

?

?

?

?

?

?

?

?

6

Fehler-Datei

Quellprogramm P

lexikalische Analyse

Folge PP vonGrundsymbolen

syntaktische Analyse

abstrakter Baum A

semantische Analyse

attributierter ab-strakter Baum AA

Optimierung

modifizierter attri-butierter Baum modA

Ubersetzung

Programm PZ inZwischensprache Z

Code-Erzeugung

ObjektprogrammMP

Optimierung

ObjektprogrammoptMP

Umgebung( ”-variable)

?

?

?

-

-

-

6

Symbol-tabelle

Konstanten-tabelle

Optimierungs-tabelle

. . .

?Testhilfen-Tabelle

Page 33: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 33

3.2. Code-Optimierung

• Kontext-unabhangige lokale Optimierung,

• Registerzuteilung, Variablen-Zuweisung, Parameter-Ubergabe,

• Elimination von redundanten Sprungen, von redundanten Aus-drucken, von totem Code und von gemeinsamen Teilausdrucken,

• Verbreitung von Kopien von Konstanten und Variablen – (con-stant propagation, variable propagation)

• Berechnung konstanter Ausdrucke zur Compile-Zeit (constantexpression folding),

• Reduktion der Starke (langsame Operationen durch schnellereersetzen) (strength reduction),

• Schleifen Rotation, Beseitigung von Schleifenvariablen, Aufrol-len von Schleifen (loop unrolling/unfolding),

• Optimieren von Prozedur-Aufrufen und -Rucksprung

• inline functions (C++), usw. usf.

Page 34: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 34

• lexikalische Analyse

Die lexikalische Analyse uberfuhrt das statement U = 2 * r * PI;

des Quell-Programmes in die Folge

(Bez,U)

(Sym,=)

(Ziffer,2)

(Sym,*)

(Bez,r)

(Sym,*)

(Bez,PI)

(Sym,;)

Dabei werden Kommentare entfernt, die Symbol-Tabelle gefullt, etc.

Page 35: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 35

• syntaktische Analyse

Die syntaktische Analyse erzeugt aus dieser Folge einen abstraktenBaum.

assign

ID MULU

MUL ID PI

ID ID2 r

Page 36: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 36

• semantische Analyse

Die semantische Analyse versieht den abstrakten Baum mit zusatzli-chen Attributen.

assign

ID MUL

(TYPE, real)

(SYMBOL,$U)

(TYPE,real)

MUL ID

(TYPE,int)

(SYMBOL, $PI)(TYPE,real)

ID ID(SYMBOL,$2)

(TYPE,int)

(SYMBOL,$r)

(TYPE,int)

Page 37: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 37

• Ubersetzung in Zwischensprache

Gegebenenfalls nach einer Optimierung wird dieser Baum in eineMaschinen-unabhangige Zwischensprache ubersetzt:

mul_int, $2, $r, $tempint

conv_ir, $tempint, $tempreal1

mul_real, $tempreal1, $PI, $tempreal2

assign, $tempreal2, $U

Page 38: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 38

• Code-Erzeugung

Aus diesem Zwischencode wird nun der Maschinen-Code der Ziel-Maschine erzeugt, etwa

LOAD, R1, 2

MULINT, R1, mem[ADR[r]]

CONV_IR, R1

MULREAL, R1, mem[ADR[PI]]

STORE, R1, ADR[U]

und gegebenenfalls optimiert.

Wenn typischerweise 90% der Laufzeit in 10% des Codes verbrachtwird, ist es sinnvoll, diese 10% des Codes zuerst zu optimieren: z.B.innere Schleifen.

Page 39: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 39

• Beispiel: Quicksort

Verschiedene Optimierungen seien am Beispiel von Quicksort, vgl. et-wa http://wapedia.mobi/en/quicksort, demonstriert.

Fur das folgende C-Programm sei zunachst die Aufteilung des Pro-gramms in Blocke dargestellt.

z.H. Was ist ein Block? oDrei beispielhafte Optimierungsschritte werden dann am Code in Zwi-schensprache illustriert.

Page 40: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 40

void quicksort(m,n) // sortiere Feld a[i] fuer i=m,m+1,...,n

int m,n;

{

int i,j; int v,x;

if (n<=m) return;

// Anfang des zu optimierenden Teils

// auch andere Setzung von v moeglich, z.B. v=a[(n+m)/2]

i=m-1; j=n; v=a[i]; // B1

while (1)

{

do i++; while (a[i]<v); // B2

do j--; while (a[j]>v); // B3

if (i>=j) break; // B4

x=a[i]; a[i]=a[j]; a[j]=x;// B5

}

x=a[i]; a[i]=a[n]; a[n]=x; // B6

// Ende des zu optimierenden Teils

quicksort(m,j); quicksort(i+1,n);

}

Page 41: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 41

• Beispiel: Quicksort – ohne Optimierung

nicht optimierter codei:=m-1

j:=n

t1:=4*n

v:=a[t1]

Block B1(init)

?

i:=i+1

t2:=4*i

t3:=a[t2]

if t3<v goto B2

Block B2(1. do loop)

?

j:=j-1

t4:=4*j

t5:=a[t4]

if t5>v goto B3

Block B3(2. do loop)

?

if i>=j goto B6}

Block B4 (break while)

? ?

t11:=4*i

x:=a[t11]

t12:=4*i

t13:=4*n

t14:=a[t13]

a[t12]:=t14

t15:=4*n

a[t15]:=x

Block B6

(swap)

?

t6:=4*i

x:=a[t6]

t7:=4*i

t8:=4*j

t9:=a[t8]

a[t7]:=t9

t10:=4*j

a[t10]:=x

goto B2

Block B5(swap)

Page 42: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 42

Beispielsweise in Block B5 werden (Index-) Ausdrucke mehrfach be-rechnet: verwende also t6 bzw. t8, anstatt t7 bzw. t10 erneut zu be-rechnen.

Page 43: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 43

• Beispiel: Quicksort – 1. Optimierung

in B5 und B6 lokal optimierter codei:=m-1

j:=n

t1:=4*n

v:=a[t1]

Block B1(init)

?

i:=i+1

t2:=4*i

t3:=a[t2]

if t3<v goto B2

Block B2(1. do loop)

?

j:=j-1

t4:=4*j

t5:=a[t4]

if t5>v goto B3

Block B3(2. do loop)

?

if i>=j goto B6}

Block B4 (break while)

? ?

t11:=4*i

x:=a[t11]

t13:=4*n

t14:=a[t13]

a[t11]:=t14

a[t13]:=x

Block B6

(swap)

?

t6:=4*i

x:=a[t6]

t8:=4*j

t9:=a[t8]

a[t6]:=t9

a[t8]:=x

goto B2

Block B5

(swap)

Page 44: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 44

Kopien konnen nach Datenfluß-Analyse auch Block-ubergreifend ver-breitet werden!

Page 45: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 45

• Beispiel: Quicksort – 2. Optimierung

Block-ubergreifendesVerbreiten von Kopieni:=m-1

j:=n

t1:=4*n

v:=a[t1]

Block B1(init)

?

i:=i+1

t2:=4*i

t3:=a[t2]

if t3<v goto B2

Block B2(1. do loop)

?

j:=j-1

t4:=4*j

t5:=a[t4]

if t5>v goto B3

Block B3(2. do loop)

?

if i>=j goto B6}

Block B4 (break)

? ?

x:=t3

t14:=a[t1]

a[t2]:=t14

a[t1]:=x

Block B6(swap)

?

x:=t3

a[t2]:=t5

a[t4]:=x

goto B2

Block B5(swap)

Page 46: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 46

Block-ubergreifend wurde also t4 aus B3 verwendet (das laut Daten-fluß-Analyse nicht verandert wurde), anstatt t8 erneut zu berechnen.

z.H. Wovon hangt der Beschleunigungsfaktor aufgrund dieser Opti-mierung ab? o

• Variable heißen zu einem Zeitpunkt lebendig, wenn auf sie zueinem spateren Zeitpunkt noch einmal zugegriffen wird. Elimi-nation gemeinsamer Ausdrucke kann tote Variable erzeugen, dieeliminiert werden konnen.

• Verbreiten von Kopien bereitet weitere Optimierung vor: nachAusdrucken der Form g:=f ersetze im Programm-Text g aufrechten Seiten durch f .Z.B. die Anweisung x:=t3 in B5 wird durch Verbreiten von t3

zu totem Code, der eliminiert werden kann.

• Schleifen werden durch

– Code-Verschiebung (Schleifen-unabhangige Berechnungenvor die Schleife ziehen),

Page 47: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 47

– Eliminieren von Schleifen-Variablen in Ausdrucken zusam-men mit Reduktion der Starke (etwa Multiplikationen durchmehrfache Additionen ersetzen)

optimiert.Z.B. Ersetzen von t4:=4*j in B3 durch t4:=t4-4 mit der nunnotwendigen Initialisierung t4:=4*j in B1.

Page 48: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 48

• Beispiel: Quicksort – 3. Optimierung

Reduktion der Starkein Verbindung mit

Elimination der do loop Variablen

i:=m-1

j:=n

t1:=4*n

v:=a[t1]

t2:=4*i

t4:=4*j

Block B1

(init)

?

t2:=t2+4

t3:=a[t2]

if t3<v goto B2

Block B2(1. do loop)

?

t4:=t4-4

t5:=a[t4]

if t5>v goto B3

Block B3(2. do loop)

?

if t2>=t4 goto B6}

Block B4 (break while)

? ?

t14:=a[t1]

a[t2]:=t14

a[t1]:=t3

Block B6(swap)

?

a[t2]:=t5

a[t4]:=t3

goto B2

Block B5(swap)

Page 49: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 49

z.H. Prufe die Kontext-Neutralitat dieses Optimierungsschrittes. oOptimierung bislang in welchen compiler passes?

Optimierende Compiler erzeugen also Code, dessen Struktur sich starkvon derjenigen des Quellprogrammes unterscheidet – mit der einenFolge, daß Fehler schwieriger zu erkennen sind.

Page 50: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 50

• Code-Erzeugung & Optimierung

• Verwaltung von Variablen im Speicher

• und Binden von Variablen an Register

abhangig! Datenfluß-Analyse notwendig! Ziele?

Variable t, u, v, w, x, y, zund ihre Lebensdauern

1 t u2 t u v3 t u v w4 t u v w x5 u v w x6 u v w x y7 u w x y8 u w x y z9 u y z

Zeit

vier Register in Speicherrot grun blau gelb auszulagern

1 t u2 t u v3 t u v w4 t u v w x5 u v w x6 y u v w x7 y u w x8 y u z w x9 y u z

Page 51: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 51

C-Programme Anweisungen in % Speicher-Zugriffe(Patterson 1982) Quellsprache Maschinensprache %Prozeduren 12 33 45Schleifen 3 32 26Zuweisungen 38 13 15Alternativen 43 21 13sonstige Befehle 4 1 1

Unterschiedliche ’architektonische’ Antworten auf

• Prozedur-Aufruf mit Parameter-Ubergabe: Register-Fenster

• Prozeß-Wechsel mit Kontext-switch: multiple Register-Satze

Page 52: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 52

10 regs for global variables

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

6 regs for in/out params

10 regs for local vars

RISC I

8 Fenster a 32

32bit Register

SPARC

8 regs for global variables

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

8 regs for in/out params

8 regs for local vars

Vorteile/Nachteile?

Page 53: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 53

3.3. Resumee

(optimierende) Compiler sind fur Prozessor-Leistung entscheidend!

RISC = Relegate Important Stuff to the Compiler

Ziel von Optimierung: schnellerer Code und/oder weniger Speicher!Optimierung liefert verbesserten, aber sicher nicht optimalen Code!Beschleunigungsfaktoren β aufgrund von optimierendem Compiler:

typischerweise 1.00000001 < β < 4 oder mehr!

Maschinen-unabhangige Optimierung: redundanten Code ent-fernen, toten Code entfernen, Kopien verbreiten, Berechnungenan seltener ausgefuhrte Stelle verschieben, etc.

Maschinen-abhangige Optimierung: Register-Zuweisung verbes-sern, sowohl Reduktion der Starke als auch exotische Instruk-tionen verwenden, Latenz verbergen, etc.

Z.B. loop unrolling bei Matrix-Multiplikation

Page 54: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 54

3.4. z.B. Matrix-Multiplikation

• Matrix-Multiplikation – pure

C = AB fur n× n-Matrizen A = (ai,j), B = (bi,j) und C = (ci,j)

mit ci,j =∑n−1k=0 ai,kbk,j

for(i=0; i<n; i++)

for(j=0; j<n; j++)

{sum = 0.0;

for(k=0; k<n; k++) sum += a[i,k]*b[k,j];

c[i,j] = sum;

}

• 2n3 fl op, ≈ n3 (loop increment und branch und jump)

• pro Iteration: 2 load und 2 fl op

Page 55: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 55

• Matrix-Multiplikation – 4-fach

n× n-Matrizen A, B und C = AB cache lines a 4 words

for(i=0; i<n; i++)

for(j=0; j<n; j++)

{ register float sum = 0.0;

for(k=0; k<n; k++)

{ sum+ = a[i,k]*b[k,j];

k++; sum+ = a[i,k]*b[k,j];

k++; sum+ = a[i,k]*b[k,j];

k++; sum+ = a[i,k]*b[k,j];

}c[i,j]=sum;

}

• 2n3 fl op, ≈ n3 loop increment, ≈ 14n

3 (branch und jump)

• pro Iteration: 8 load und 8 fl op

• a[i,k] aus cache line; dagegen b[k,j] problematisch!

Page 56: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 3: Compiler – rechts von/oberhalb der HW-SW-Schnittstelle 56

• Matrix-Multiplikation – 4-fach, 4-fach cache s.o.

for(j=0; j<n; j++)

for(i=0; i<n; i+=4) // precompute i+1, i+2, i+3 ...

{ c[i,j] = c[i+1,j] = c[i+2,j] = c[i+3,j] = 0.0;

for(k=0; k<n; k+=4) // precompute k+1, k+2, k+3 ...

{ c[i,j] += a[i,k]*b[k,j]+a[i,k+1]*b[k+1,j]

+a[i,k+2]*b[k+2,j]+a[i,k+3]*b[k+3,j];

c[i+1,j] += a[i+1,k]*b[k,j]+a[i+1,k+1]*b[k+1,j]

+a[i+1,k+2]*b[k+2,j]+a[i+1,k+3]*b[k+3,j];

c[i+2,j] += a[i+2,k]*b[k,j]+a[i+2,k+1]*b[k+1,j]

+a[i+2,k+2]*b[k+2,j]+a[i+2,k+3]*b[k+3,j];

c[i+3,j] += a[i+3,k]*b[k,j]+a[i+3,k+1]*b[k+1,j]

+a[i+3,k+2]*b[k+2,j]+a[i+3,k+3]*b[k+3,j];

} }

• 2n3 fl op, ≈ n3 loop increment, ≈ 116n

3 (branch und jump)

• pro Iteration: einmal (8 load & 8 fl op), dreimal (4 load & 8 fl op)

• a[i,k] aus cache line; b[k,j] und c[i,j] re-used!

Page 57: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

57

4. Befehlssatz – links von der HW-SW-Schnittstelle

Def. Der Befehlssatz (instruction set) ist die hardware/software-Schnittstelle eines Prozessors ...

Was sagt der Befehlssatz uber einen Prozessor aus?

Ein minimales Beispiel:Z.B. Der single instruction computer (SIC) kennt nur eine einzigeInstruktion: subtract and branch if negative, SBN mit

sbn a,b,c; // Mem[a]-=Mem[b]; if (Mem[a]<0) goto c. cz.H. Konstanten, Move, Addition, Multiplikation im SIC? oz.H. Inwiefern ist der SIC ein vollwertiger Computer? um welchenPreis? oz.H. Gibt es ein maximales Beispiel? o

Page 58: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 58

4.1. Klassifikation

Es gibt (mindestens) vier unterscheidende Merkmale fur Befehlssatze:

• wie und wieviele Operanden sind in CPU gespeichert?

• wie werden Operanden addressiert?

• welche Operationen werden auf welchen Operanden ausgefuhrt?

• welche und wieviele Formate haben die Befehle?

• Wieviele Operanden sind in CPU gespeichert?

Man unterscheidet

• Akkumulator-Architektur

• Stack-Architektur

• Register-Architektur

Page 59: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 59

Akkumulator-Architektur : Ein Operand liegt implizit im Akku-mulator, das Ergebnis wird im Akkumulator abgelegt.

Beispiele sind PDP8, Motorola 6809 oder viele µ-Prozessoren.

Z.B. Die Zuweisung C = A+B lautet in Maschinen-Sprache

load A;

Add B;

Store C; cStack-Architektur : Operanden liegen implizit auf einem Stapel, Er-

gebnisse werden auf Stapel abgelegt.

Beispiele sind Burroughs B5500, HP3000 oder Pascal-Engine(vor PC), Java-VM.

Z.B. Die Zuweisung C = A+B lautet in Maschinen-Sprache

Push A;

Push B;

Add;

Pop C; c

Page 60: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 60

Register-Architektur : Operanden und Ergebnisse liegen in Regis-tern.

Beispiele sind IBM /360 oder DEC VAX oder aktueller In-tel 80x86 mit 8, 68040 mit 16, PowerPC mit 32, MIPS, DLX mit32, MIPS R2000 mit 32, RISC I mit 32 von 138 oder SPARCmit 32 von 136, pico-Java mit 64, MMIX mit 256 Allzweck-Registern!64-bit AMD-Prozessoren mit 32, IA64 mit ? Allzweck-Registern(SSE, AVX)!

Z.B. Die Zuweisung C=A+B lautet in Maschinen-Sprache

register-memory

Load R1,A;Add R1,B;Store C,R1;

load/storeLoad Ra,A;Load Rb,B;Add Rc,Ra,Rb;Store C,Rc;

cZ.B. Der Intel 80x86-Befehlssatz enthalt auch PUSH und POP-Befehle. Die 80x86-Register sind nur bedingt Allzweck-Register!

Page 61: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 61

cz.H. Klassifiziere die GK-Operationen der Intel 80x86-Prozessor-Familie. oz.H. Klassifiziere µ-Controller- und DSP-Befehlssatze. o

Exkurs: JavaVM – die Java Virtual Machine

ISA s.a.www.weblearn.hs-bremen.de/risse/RST/docs/JavaVM/vmspec.pdf

Das C = A+B Beispiel, hier fur die JavaVM (www.artima.com/insidejvm/ed2/jvm8.html)

iload_0 // push the int in local variable 0, i.e. A

iload_1 // push the int in local variable 1, i.e. B

iadd // pop two ints, add them, push result

istore_2 // pop int, store into local variable 2, i.e. C

weitere Beispiele zur Illustration der JavaVM-ISA

Page 62: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 62

class Act {

public static void doMathForever() { int i = 0;

for (;;) { i += 1; i *= 2; }

}}

mit Byte-Code (www.artima.com/insidejvm/ed2/jvm10.html)

// Bytecode stream: 03 3b 84 00 01 1a 05 68 3b a7 ff f9

// Method void doMathForever()

// Left: offset of instruction from beginning of method

// | Center: instruction mnemonic and any operands

// | | | Right: comment

0 iconst_0 // 03

1 istore_0 // 3b

2 iinc 0, 1 // 84 00 01

5 iload_0 // 1a

6 iconst_2 // 05

7 imul // 68

8 istore_0 // 3b

9 goto 2 // a7 ff f9

Page 63: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 63

class SquareCircle {

static void squareItForever() {

float f = 2;

for (;;) { f *= f; f = 0 - f; }

}

}

mit Byte-Ccode (http://artima.com/insidejvm/applets/CircleOfSquares.html)

0 fconst_2 // Push float constant 2

1 fstore_0 // Pop to local variable 0 (float f = 2;)

2 fload_0 // Push local variable 0 (float f)

3 fload_0 // Push local variable 0 (float f)

4 fmul // Pop top two floats, multiply, push result

5 fstore_0 // Pop to local variable 0 (float f *= f;)

6 fconst_0 // Push float constant 0

7 fload_0 // Push local variable 0 (float f)

8 fsub // Subtract top float from next to top float

9 fstore_0 // Pop result to local variable 0 (float f=0-f;)

10 goto 2 // Jump back to the first fload_0 instruction

Page 64: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 64

4.2. Register-Architekturen

Wegen der Vorteile schneller Register in den letzten Jahren nur nochUniversal-Register-Maschinen mit – als einem wichtigen Unterschied– dyadischen oder triadischen ALU-Befehlen sowie mit verschiedenerLokalisation der Operanden:

Register-Register-Operationen – auch load/store – mit einfacher De-kodierung, einfache Code-Erzeugung, ahnliche Ausfuhrungszei-ten; jedoch mit großerer Anzahl von abzuarbeitenden Befehlen

Register-Speicher-Operationen mit Zugriffen ohne Laden; jedoch un-terschiedliche Ausfuhrungszeiten

Speicher-Speicher-Operationen mit kompaktem Code; jedoch mit un-terschiedlichen Ausfuhrungszeiten und Speicher-Engpaß.

Page 65: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 65

• Beispiele

gpr Architektur Jahr gpr Architektur JahrEDSAC 1 accumulator 1949 Intel 8086 1 extended accu 1978IBM 701 1 accumulator 1953 Motorola 68000 16 reg–mem 1980CDC6600 8 load/store 1963 Intel 80386 8 reg–mem 1985IBM /360 16 reg–mem 1964 MIPS 32 load/store 1985DEC PDP-8 1 accumulator 1965 HP-PA RISC 32 load/store 1986DEC PDP-11 8 reg–mem 1970 SUN SPARC 32 load/store 1987Intel 8008 1 accumulator 1972 Power-PC 32 load/store 1992Motorola 6800 2 accumulator 1974 DEC Alpha 32 load/store 1992DEC VAX 16 reg/mem–mem 1977 JAVA-VM 0 stack 1995

und zwar ist die Anzahl der Argumente arithmetisch-logischer In-struktionen im Speicher bei SPARC, MIPS, PA, PowerPC sowie Al-pha jeweils 0 von maximal 3, bei Intel 80x86 sowie Motorola 68000jeweils 1 von maximal 2 und bei der VAX 2 von maximal 2 bzw. 3von maximal 3 Operanden.

z.H. Klassifiziere die Operationen von µ-Controllern und DSPs. o

Page 66: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 66

4.3. Adressierung

In aller Regel arbeiten heutige Rechner byte-adressiert, und zwar

big endian Byte mit Adresse x..x00 an der most significant positionim Wortz.B. IBM /360, MIPS, Motorola, SPARC, DLX

little endian Byte mit Adresse x..x00 an der least significant posi-tion im Wortz.B. DEC VAX, DEC RISC, Intel 80x86.

Def. Ein Zugriff auf ein Datum der Lange s Byte, ab der Byte-Adresse A ist aligned genau dann, wenn A mod s = 0 sonst misaligned.

Page 67: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 67

• Adressierungsarten

Diverse Adressierungsarten reduzieren die Anzahl der Befehle, machenaber gleichzeitig die Decodierung und damit den Prozessor komplexerund langsamer. So braucht der Motorola MC68020 bis zu 12 Taktenur fur bestimmte Adressierungen.

Art Beispiel Bedeutung Bemerkungregister Add R4,R3 R4+=R3immediate Add R4,#3 R4+=3 immediate-Große?displacement Add R4,10(R1) R4+=M[10+R1] lokale Variableregister indirect Add R4,(R1) R4+=M[R1] per pointerindexed Add R4,(R2+R3) R4+=M[R2+R3] Feld mit Base und Indexdirect/absolute Add R4,(1001) R4+=M[1001] static datamemory indirect Add R4,@(R3) R4+=M[M[R3]] linked listauto-increment Add R4,(R3)+ R4+=M[R3] sequentieller Zugriff auf

R3+=d Feldelemente, push/popauto-decrement Add R4,-(R3) R3—=d sequentieller Zugriff auf

R4+=M[R3] Feldelemente, push/popscaled Add R4,10(R2)[R3] R4+=M[10+R2+d*R3] sequentieller Zugriff auf

lok. Daten der Lange d

Page 68: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 68

Beim Entwurf ist beispielsweise festzulegen

• Anzahl zu benennender Register

• Große von Displacement und Immediate

• was noch alles?

Displacement und Immediate sind die haufigsten Adressierungsarten.

Z.B. Die Codierung der vielen Adressierungsarten der VAX illustrie-re eine ternaren Instruktion: add13 r1, 737(r2), (r3) addiert zwei32-bit integer bei einem OP-Code von 1byte. Address specifier enthal-ten in 4bit die Adressierungsart, in weiteren 4bit das zu verwendendeRegister: also 1byte fur r1, 3byte fur 737(r2), namlich 1byte specifierfur 16-bit displacement und 2byte displacement 737 und schließlich1byte specifier fur indirect (r3) – insgesamt also 6byte. MaximaleVAX-Befehlslange ist 53byte. cZ.B. DSPs mit Zugriff auf Ring-Puffer, z.B. TI cz.H. Klassifiziere die Addressierungsarten von µ-Controllern. o

Page 69: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 69

4.4. Operationen

Klassifikation anhand der Funktionalitat und/oder des Daten-Typs

• arithmetisch-logische Befehle, wie integer add, sub oder and, or

• Datentransfer, wie load, store oder move

• Steuerung, wie Verzweigungen, Sprunge, Unterprogramm-Sprungeund -Rucksprunge, traps

• Betriebssystem-Aufrufe, Speicher-Verwaltung

• Gleitkomma-Befehle, d.h. arithmetische Operationen auf Gleit-komma-Zahlen, wie fadd, fmult oder fdiv (vgl. COD chapter4, IEEE 754, RST/docs/goldberg.pdf)

• Dezimal, d.h. arithmetische Operationen auf BCD-Zahlen

• String, d.h. Operationen auf Zeichenketten

• Varia, d.h. I/O, Graphik, transzendente Funktionen (80x86),insert/extract at resp. from head/tail of queue (VAX), Vektor-Instruktionen (Cray), Instruktionen, die Parallelitat auf Instruk-tionsebene nutzen (Intels MMX, AMDs 3Dnow, Intels ISSE),

Page 70: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 70

Befehlssatz-Erweiterungen wie SUN-SPARC visual instructionset (VISual)

• Befehlshaufigkeiten

Haufigkeiten von Befehlen und der Art ihrer Operanden (Typ, Adres-sierung, Sprungziele, ...) hangen von vielen Faktoren ab:

⇒ diverse Befehlsmixe, laut Hennessy/Patterson

DECstation 10% Verzweigungen, 40% load/store- sowie 50% ALU-Befehle

IBM /360 15% Verzweigungen, 20% load/store- und 65% ALU-Be-fehle

CA prasentiert detaillierte Messungen etwa fur Intel 8086 Prozessoren.

Das Haufige schnell machen!

Page 71: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 71

• Befehlshaufigkeiten und -Merkmale

Befehle, die den Programmfluß verandern: 2/3 branches, 1/6 jumps,1/6 jump to/return from subroutine

Ziele von Verzweigungen sind meist PC-relativ (3/4 vorwarts, 1/4ruckwarts). Der mittlere Verzweigungsabstand betragt weniger als 27

Befehle (abhangig von der mittleren Befehlslange).

2/3 Verzweigungsbedingungen ist EQ/NE (zero), wobei Bedingung

• in Bedingungscode-Bits gespeichert ist(condition code etwa im Prozessor-Status-Wort),

• in allgemeinen Registern gespeichert oder in komplexeren‘test and branch’-Befehlen zur Verfugung gestellt ist.

Wie bedingen sich maximale Sprungweite bei unbedingten Sprungenund das Befehlsformat gegenseitig?

Bei Unterprogramm-Sprungen muß zumindest die Ruckkehr-Adresse– zumeist auf dem Stack – gerettet werden (wie auch die Register),gegebenenfalls auch hardware-gestutzt (z.B. per jal im DLX/MIPS)

Page 72: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 72

4.5. Anforderungen an Befehlssatze

Verschiedene Prozessoren haben teilweise sehr unterschiedliche Be-fehlssatze.

Z.B. Die IBM /370 hat 2-, 4- und 6-Byte-Befehle, die CDC CYBERHalb- und Ganzwort-Befehle bei einer Wortlange von 16 (?) Byte;DEC PDP11 und Motorola MC68020 Ein-, Zwei- und u.U. auch Drei-Wort-Befehle bei 2-Byte-Worten. c

4.6. z.B. DLX/MIPS-Befehlssatz

Der DLX und dem MIPS R2000 gemeinsam sind 32 Allzweck-Registera 32bit und 32 GK-Register a 32bit, load store Architektur, 32bitAdreß-Raum, flat memory;

z.H. Bewerte Umstand R0 = $0≡ 0 und DLX/MIPS-Instruktionenwie jal, jalr, b__zal. o

Page 73: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 73

• exemplarische, prototypische DLX/MIPS-Instruktionen

• exemplarisch fur (Klassen von) Instruktionen:

– Funktionalitat– Format/Codierung, Verwendung von op-code-Erweiterun-

gen (etwa op=0 fur bestimmte arithmetisch/logisch undSprung-Anweisungen, op=1 fur bestimme Verzweigungsan-weisungen, op=0x11 fur Gleitpunkt-Anweisungen)

• prototypisch fur Implementierung von Instruktionen

– single/multi cycle implementation– pipeline implementation

ADDI Ra, Rb, #immd // Ra = Rb+immd

ADD Ra, Rb, Rc // Ra = Rb+Rc

LW Ra, offset(Rb) // Ra = Mem[Rb+offset]

BEQ Ra, Rb, label // If (Ra == Rb) goto label (PC-relativ!)

J label // goto label

Page 74: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 74

• DLX/MIPS-Formate

Byte Halfword Word

Registers

Memory

Memory

Word

Memory

Word

Register

Register

1. Immediate addressing

2. Register addressing

3. Base addressing

4. PC-relative addressing

5. Pseudodirect addressing

op rs rt

op rs rt

op rs rt

op

op

rs rt

Address

Address

Address

rd . . . funct

Immediate

PC

PC

+

+

Page 75: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 75

• DLX/MIPS-(Pseudo-)Instruktionen

• – displacement als einzige Adressierungsart fur Datenper lw, lh, lb bzw. sw, sh, sb

– lhi (load high immediate der DLX) bzw. lui (load upperimmediate des MIPS) zum Laden der oberen beiden byteseines 4-byte-Wortes

– Spezialitaten wie lwl (load word left) bzw. lwr (load wordright) sowie swl (store word left) bzw. swr (store wordright) fur den unaligned memory access

• – ternare arithmetisch-logische Befehle add, sub, s__, mitden immediate-Varianten addi, subi, s__i, wobei __ furlt, le, eq, ne, ge, gt steht

• – ternare Verzweigungen wie beq, bne mit immediate-Vari-anten beqz, bnez

– Sprung-Anweisungen j, und jal (im J-Format, s. S 76)sowie – nicht PC-relativ – jr (im R-Format! s. S 76)

Page 76: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 76

• Befehlsformate

Alle Instruktionen sind 4byte lang, was etwa bei der Sprungziel-Adres-sierung ausgenutzt wird. Es gibt i.W. nur drei Befehlsformate:

R-type OPcode6

Rs5

Rt5

Rd5

shamt5

func6

I-type OPcode6

Rs5

Rt5

immediate16

J-type OPcode6

jump offset26

Der MIPS OpCode spezifiziert die Instruktion vollstandig, außer fur dieOpCodes

0 arithmetisch-logische Befehle mit drei Operanden in integer Registern

1 branch on Rs zero wobei cond in Rt codiert ist

16-19 = 0x10+z Instruktionen fur coprocessor z = 0, 1, 2, 3

f (float) steht fur s (single) falls rs=16 und op=17, f (float) steht fur d(double) falls rs=17 und op=17. Im Feld rs steht z fur 0, 1, 2 oder 3,f alls op=17, 18, 19 bzw. 20. Falls z=0, so spezifiziert Instr[4-0] dieInstruktion; falls z=1, so spezifiziert funct die Instruktion mit f=s; ...

Page 77: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 77

10 0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

10 0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

10 0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

16 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0 f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1 f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2 f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3 f

op(31:26) j jal beq bne blez bgtz addi addiu slti sltiu andi ori xori lui z = 0 z = 1 z = 2 z = 3 lb lh lwl lw lbu lhu lwr sb sh swl sw swr lwc0 lwc1 lwc2 lwc3 swc0 swc1 swc2 swc3

rs (25:21) mfcz cfcz mtcz ctcz copz copz

(16:16) bczt bczt

tlbr tlbwi tlbwr tlbp rte

rt (20:16)

bltz bgez bltzal bgezal

cvt.s.f cvt.d.f cvt.w.f c.f.f c.un.f c.eq.f c.ueq.f c.olt.f c.ult.f c.ole.f c.ule.f c.st.f c.ngle.f c.seq.f c.ngl.f c.lt.f c.nge.f c.le.f c.ngt.f

funct(5:0) add.f sub.f mul.f div.f abs.f mov.f neg.f

funct(5:0) sll srl sra srlv srav jr jalr syscall break mfhi mthi mflo mtlo mult multu div divu add addu sub subu and or xor nor slt sltu

if z = l, f = d

if z = l, f = s

if z = 0

0 1

funct (4:0)

Page 78: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 78

• z.B. DLX/MIPS-shifts

6 5 5 5 5 6mnemonic op Rs Rt Rd sa fn semantic

sll Rd, Rt, sa 0 * Rt Rd sa 0 Rd = Rt << sasllv Rd, Rt, Rs 0 Rs Rt Rd 0 4 Rd = Rt << Rssra Rd, Rt, sa 0 * Rt Rd sa 3 Rd = Rt >> sasrav Rd, Rt, Rs 0 Rs Rt Rd 0 7 Rd = Rt >> Rssrl Rd, Rt, sa 0 * Rt Rd sa 2 Rd = Rt >> sasrlv Rd, Rt, Rs 0 Rs Rt Rd 0 6 Rd = Rt >> Rs

* ≡ unused (in MIPS ISA zeroed)

• logical: shift & mit Nullen auffullen

• arithmetic: shift mit Erhalt des Vorzeichens,d.h. mit Nullen oder Einsen auffullen

Page 79: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 79

• Klassifizierung des Befehlssatzes

DLX und MIPS R2000 und hoher sind typische RISC-Prozessoren

• mit wenigen ’einfachen’ Befehlen: 6bit opcode, basic instructionsonly (z.B. move Rd, Rs durch add Rd, Rs, R0 emuliert)

• mit load/store-ISA

• mit wenigen Datentypen: i.W. nur integer, float, double

• mit wenigen Adressierungsarten: nur displacement

• mit ziemlich homogenen Befehlsformaten: vgl. opcode, Rs, Rt

• mit fester Befehlslange: 32bit

z.H. Wende diese Kriterien zur Klassifikation von Befehlssatzen aufandere RISC-Prozessoren wie etwa PA, PowerPC, SPARC usw. an,s.a. http://www.weblearn.hs-bremen.de/risse/RST/docs/COD2E/WebExtns.ion/survey.pdf o

Page 80: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 80

4.7. z.B. Intel 80x86-Befehlssatz

Jeder Prozessor der Intel 80x86-Prozessor-Familie ist abwartskompa-tibel zu seinen Vorgangern, damit dieselbe software weitergenutzt wer-den kann (vgl. Bahring und Lieb et al sowie CA, chapter 4.4).

• Genealogie

1978 8086 wenige 16 bit Register, nicht Allzweck1980 8087 FP-co-Prozessor mit ca. 60 FP-Befehlen, stack orientiert1982 80286 24 bit Adreß-Raum, memory mapping, memory protection

1985 8038632 bit Register, 32 bit Adreß-Raumadded addressing modes, added operations ⇒ 8 Allzweck-Register

19891995

–80486 bisPentium (Pro)

nur 4 neue Befehle (multi processing, conditional move)

1997 MMX 57 neue Instruktionen: Multi Media eXtensions (SIMD)1999 ISSE Intel Streaming SIMD Extension: MMX plus SIMD float operations>2000 SSEx ISA-Erweiterungen: SSE2 (+144), SSE3 (+13)

z.H. Bewerte P4:NetBurst (2000), P4.HTT:hyperthreading (2002),trusted computing: LaGrande & TPM (2003), NX-bit (2004), multicore Processors (2005) im Hinblick auf x86-ISA o

Page 81: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 81

80x86-Register (ab 80386)

031

GPR 0EAX

GPR 3EBX

GPR 1ECX

GPR 2EDX

GPR 6ESI

Code segment pointerCS

Stack segment pointer (top of stack)SS

Data segment pointer 0DS

Data segment pointer 1 ES

Data segment pointer 2FS

Data segment pointer 3GS

GPR 7EDI

GPR 5EBP

GPR 4ESP

EIP Instruction pointer (PC)

EFLAGS Condition codes

Name Use

Page 82: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 82

• Register

Der Intel 8080 verfugte uber acht 8-bit-Register AL, AH, DL, DH,CL, CH, BL und BH sowie 16-bit SP und IP-Register (accumulatormachine).

1978 wurden die 8-bit Register im 8086 zu 16-bit Registern AX, DX,CX und BX zusammengefaßt (AX = Akku, CX = count register(LOOP), DX = data register (mult/div), BX = base address register.Es gibt Segment-Register CS (code), SS (stack) und DS (data).

Neben Registern wie IP (instruction pointer) und FLAGS (processorstatus) gibt es weitere 16bit-Register wie SP (stack pointer) oder BP(base pointer).

Quell-Index-Register source index (SI) und Ziel-Index-Register desti-nation index (DI) verwendet etwaMOVSB: M[ES:DI]=M[DS:SI]; DI++; SI++.

soviel zum Thema Allzweck-Register!

Page 83: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 83

Wegen des dedizierten Gebrauchs der Register ist der 8086 zwischenaccumulator und general purpose register machine zu platzieren,laut CA eine sogenannte extended accumulator machine.

Aus Grunden der Abwartskompatibilitat mußte aber immer noch auchauf die 8-bit Register zugegriffen werden konnen.

• Familien-Entwicklung

1980 erganzt der 8087 coprocessor 8 floating point register a 80bitund den Befehlssatz um 60 floating point instructions (extended stackarchitecture).1982 bietet der 80286 einen 24bit Adreßraum mit memory mappingand protection und dem real (addressing) mode fur die Abwartskom-patibilitat mit dem 8086.1985 erfullt dieselbe Anforderung auch der 80386 mit seinen 32-bitErweiterungen EAX, ECX, EDX und EBX der Register AX, CX, DXbzw. BX. Weiterhin gibt es zusatzliche 16-bit Segment-Register FSund GS sowie 32bit-Erweiterungen EIP, EFLAGS, ESP, EBP, ESIbzw. EDI der Register IP, FLAGS, SP, BP, SI bzw. DI.

Page 84: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 84

15 8 7 0 16 bitAH AL AXCH CL CXDH DL DXBH BL BX

CSSSDSESFSGS

Register

16 bit 32 bit

AX EAXCX ECXDX EDXBX EBXSP ESPBP EBPSI ESIDI EDI

FLAGS EFLAGSIP EIP

Befehlsformate

Byte\bit 7 6 5 4 3 2 1 0 Bem.1a OP-Code1b (1 oder 2 byte)2a Mod Reg R/M Mode Reg/Mem2b Scl IReg BReg ScaleIndexBase3a Address-Displacement...

...3d 0,1,2,3 oder 4 byte 3?4a Immediates...

.

.. 3?4d 0,1,2,3 oder 4 byte

Page 85: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 85

Das Register EFLAGS enthalt den Prozessor-Status (PSW) u.a. mitaligned, virtual mode, nested, i/o priviledge, overflow, direction, inter-rupt enable, trap, sign, zero, auxiliary carry, parity und carry flags;das Register EIP enthalt den Befehlszahler (instruction pointer, IP).⇒ wenige, namlich nur 8 Allzweck-Register!

• Adressierung

Die 16-bit Segment-Register CS (Code), SS (Stack) sowie DS, ES,FS und GS (Daten) stehen fur die Adressierung SR:X entsprechend(SR<<4)+X

address =CS ... GSsegment +

je EAX, ..., EDX, ESP, EBP, ESI, EDI

base address + (index ∗1, 2, 4 oder 8

scale factor) +in 0, 8, 32 bit

displacement

zur Verfugung. ⇒ mindestens vier Addressierungsarten!

Intel terminology address = restrictionregister indirect register reg 6= ESP, EBPbased mode with displacement base+displacement reg 6= ESP, EBPbase plus scaled index base+2scaleindex index 6= ESPbase plus scaled index with displacement base+2scaleindex+displacement index 6= ESP

Page 86: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 86

• Operationen

Dyadische arithmetisch-logischen Befehle (1.source=destination) mitallen Kombinationen bis auf Speicher–Speicher.

Befehle fur bit, byte, 16bit, 32bit, 64bit, float, double, bit-Felder bis32bit, word strings, 8bit BCD Zahlen, gepackt/ungepackt (SIMD)

⇒ dyadische Operationen auf vielen Datentypen!

• Befehlsformate

Instruktionslange zwischen einem und 12 bytes (im Fall des Intel 80486auch noch langer). OP-Code (incl. der Angabe uber die Langen derfolgenden Felder) und Register plus Adressierungsart (register, me-mory, scaled und index based) jeweils ein oder zwei Byte, Adress-Displacement und Immediates jeweils 0, 1, 2, 3 oder 4 Byte.

Page 87: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 87

• Befehlsprefixe

Es gibt optionale instruction-, address size-, operand size- und seg-ment override prefixes von je 1 byte Lange: instruction prefix enthaltWiederholungszahler incl. Abbruchbedingung, address- und operandsize prefix bestimmen Adreß- und Operanden-Lange (default ist 16bitim real und 32bit im protected mode), segment override prefix hebtdie implizite Segment-Register-Zuordnung fur den betreffenden Befehlauf. Prefixe machen 0 bis 4 byte aus, vgl. etwahttp://courses.engr.illinois.edu/ece391/references/patt-and-patel-appendix-B.pdf

Repeat/LockxF0 (LOCK) This prefix guarantees that the instruction will have exclusive use

of all shared memory until the instruction completes execution.xF2, xF3 This prefix allows the instruction (a string (REP/REPE/REP-

NE) instruction) to be repeated some specified number of times.The iteration count is specified by ECX. The instruction is alsoterminated on the occurrence of a specified value of ZF.

Segment overridex2E(CS), x36(SS)x3E(DS), x26(ES)x64(FS), x65(GS)

This prefix causes the memory access to use the specifiedsegment, instead of the default segment expected for thatinstruction.

Page 88: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 88

Operand size overridex66 This prefix changes the size of data expected for this instruction: in-

structions expecting 32-bit data elements use 16-bit data elements; in-structions expecting 16-bit data elements use 32-bit data elements.

Address size overridex67 This prefix changes the size of operand addresses expected for this in-

struction: instructions expecting a 32-bit address use 16-bit addresses;instructions expecting 16-bit addresses use 32-bit addresses.

• Beispiele fur 8086 Befehle

ADD AX,#4711 AX+=4711

JZ name bzw JNZ name if (CC=0) IP=name; bzw if (CC!=0) IP=name;

JMP name bzw JMPF name IP=name; (near bzw far)CALLF name,seg SP-=2;M[SS:SP]=CS;SP-=2;M[SS:SP]=IP+5;IP=name;CS=seg;

MOVSB M[ES:DI]=M[DS:SI]; DI++; SI++;

MOVW BX, [DI+123] BX=M[DS:DI+123];

PUSH SI SP-=2; M[SS:SP]=SI;

POP DI DI=M[SS:SP]; SP+=2;

SHL BX,1 BX*=2;

TEST DX,#42 CCflags=DX & 42

Page 89: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 89

• Beispiele fur 80386 Befehle

ADD EAX,#4711 EAX+=4711

JZ name bzw JNZ name if (CC=0) EIP=name; bzw if (CC!=0) EIP=name;

JMP name bzw JMPF name EIP=name; (near bzw far)CALL name SP-=4; M[SP]=EIP+5; EIP=name;

LOOP label ECX--; if (ECX) EIP+=label;

MOVSL M[EDI]=M[ESI]; EDI++; ESI++;

MOVW EBX, [EDI+123] EBX=M[EDI+123];

PUSH ESI SP-=4; M[SP]=ESI;

POP EDI EDI=M[SP]; SP+=4;

RET EIP=M[SP]; SP+=4;

TEST EDX,#42 CCflags=EDX & 42

Die mnemonics hangen auch vom verwendeten Assembler wie etwa nasm, GNUas

etc. ab! vgl. mov, movl, movsd o.a.

• LES reg, seg:offset; loads ES=seg and reg=offset

• ADD, SUB, CMP, OR, XOR, INC, DEC auch als reg-mem-Befehle

• CBW converts lsbyte of EAX to lsword of EAX (Akku);

• LODS loads a byte, word, double word of a string in EAX (Akku)

s.a. www.weblearn.hs-bremen.de/risse/RST/docs/Intel/

Page 90: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 90

• Beispiele fur Befehlsformate belegen ISA-Heterogenitat

JE

JE EIP + displacement

Offset

CALL

MOV EBX, [EDI + 45]

PUSH

PUSH ESI

ADD w

ADD EAX, #6765

Reg

4 4 8

6

8 32

5 3

4 13 32

Immediate

Condition

MOV

1

w

1

d

8 8

TEST EDX, #42

7 1 8 32

TEST Postbyte Immediatew

Reg

f.

e.

d.

c.

b.

a.

CALL

Displacementr-m

postbyte

Displacement

Page 91: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 91

• Dekodierung

Intel-Befehle sind aufwandig zu decodieren:

• viele Formate

• diverse Interpretationen des Postbyte m, reg, r/m, gesteuertvon mode m und w-Feld (width) im OP-Code (Fig. 3.35)

w=1

reg

w=

0

16b 32b0 AL AX EAX1 CL CX ECX2 DL DX EDX3 BL BX EBX4 AH SP ESP5 CH BP EBP6 DH SI ESI7 BH DI EDI

m=0 m=1 m=2r/m 16bit 32bit 16bit 32bit 16bit 32bit

0 =BX+SI =EAX1 =BX+DI =ECX same addr as in m=0 with2 =BP+SI =EDX disp8 disp16 disp323 =BP+DI =EBX4 =SI =(sib) SI+disp16 (sib)+disp8 SI+disp8 (sib)+disp325 =DI =disp32 DI+disp8 EBP+disp8 DI+disp16 EBP+disp326 =disp16 =ESI BP+disp8 ESI+disp8 BP+disp16 ESI+disp327 =BX =EDI BX+disp8 EDI+disp8 BX+disp16 EDI+disp32

Im mode m=3 wird ein Register genau wie im reg-Feld adressiert.

s.a. ag-vp-www.informatik.uni-kl.de/Papers/skriptrs1/Kapitel 10.pdf

s.a. www.cs.uiuc.edu/class/sp06/cs232/lectures/Examples/x86.pdf

z.H. Klassifiziere den Intel 80x86-Befehlssatz. o

Page 92: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 92

• Condition Codes

CMP (compare) {reg,mem} × {reg,mem, const} \ {(mem,mem)}berechnet arg1− arg2 und setzt a,c,o,p,s,z ∈ FLAGS oder EFLAGSentsprechend (8086–80386!)

a uxiliary (hier bei BCD-Uberlauf)

c arry

o verflow

p arity

s ign

z ero

TEST {reg,mem} × {reg,mem, const} \ {(mem,mem)}berechnet arg1&arg2, loscht c sowie o und setzt p,s,z ∈ FLAGS oderEFLAGS entsprechend (8086–80386!)

Page 93: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 93

• Sprung- und Verzweigungsanweisungen

JMP unconditional jumpJA branch if above (c==0)&&(z==0)

JAE branch if above or equal (c==0) wie JNCJB branch if below (c==1) wie JCJBE branch if below or equal (c==1)||(z==1)

JE branch if equal (z==1)

JNE branch if not equal (z==0)

JG branch if greater (z==0)&&(s==0)

JGE branch if greater or equal (s==0)

JL branch if lower (s==1)

JLE branch if lower or equal (z==1)||(s==1)

JC,JNC branch if carry set/not set (c==1) / (c==0) JC wie JBJO,JNO branch if overflow set/not set (o==1) / (o==0)

JP,JNP branch if parity set/not set (p==1) / (p==0) PE, POJS,JNS branch if sign set/not set (s==1) / (s==0)

JZ,JNZ branch if zero set/not set (z==1) / (z==0)

JCXZ branch if counter reg zero (CX==0)

Page 94: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 94

• Bedingungen in Registern vs Condition Codes

DLX/MIPS Intel 80x86Verzweigungsbedingungen in Registern Verwendung von Conditioncodes

slt Ra,Rb,Rc; Ra=(Rb<Rc)

bnez Ra, lt; if (Ra) goto lt

...

...

lt:

CMP BX,CX; (BX<CX) in FLAGS

JL lt; if (’lower flags’) goto lt

...

...

lt:

• AMDs 64bit Erweiterungen

Der sledgehammer von AMD ist eine abwartskompatible 64bit Erwei-terung des Pentium. Dazu werden die 8 Allzweck-Register

EAX, ECX, EDX, EBX, ESP, EPB, ESI und EDI

auf 64bit Register

RAX, RCX, RDX, RBX, RSP, RPB, RSI und RDI

erweitert. Es gibt 8 weitere 64bit Allzweck-Register R8 bis R15.Nun sind auch die low-Bytes SPL, BPL, SIL und DIL zugreifbar.

Page 95: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 95

Alle 1byte OP-Codes sind vergeben: neue Register mussen per Prafixangesprochen werden. Die Kurzform der 16 Dekrement/Inkrement-Befehle werden dazu fur die sogenannten REX-Instruktionen umdefi-niert.

Ein paar andere Instruktionen werden im 64bit-Modus nicht mehr un-terstutzt. MOVSXD erweitert 32bit Daten vorzeichenrichtig auf 64bit.

Wie bei der 80x86-Familie sind alle Operationen 2-Operanden Ope-rationen. 3DNow! wurde zugunsten von ISSE2 der Kompatibilitat ge-opfert...

Der Prozessor unterstutzt im legacy mode den real, virtual und pro-tected mode, im long mode den 32bit compatibility mode und endlichden 64bit mode.

Im 64bit mode greift der Prozessor ohne Segmentierung auf den Spei-cher zu (flat memory), hierarchische Adress-Umsetzung, 4KB- oder2MB-Seiten – im Gegensatz zu den zwischen 4KB und 4GB variabelgroßen Seiten des iA64.

weitere Details in www.weblearn.hs-bremen.de/risse/RST/docs/amd64.pdf

Page 96: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 96

• Slogans on 80x86 architecture

This history illustrates the impact of the ’golden handcuffs’ of compatibility!

Adding new features as someone might add clothing to a packed bag! An

architecture that is difficult to explain and impossible to love! What the

80x86 lacks in style is made up in quantity, making it beautiful from the

right perspective!

4.8. z.B. 8051

Der 8051 µ-controller ist ein typischer 8 bit CISC-Rechner der 80erJahre (vgl. z.B. www.iiit.uni-karlsruhe.de/download/Befss 8051.pdf):

• Er weist wie auch die 80x86 Prozessoren Merkmale sowohl einerAkkumulator- wie auch einer Register-Architektur auf.

• Nicht alle Register sind echte Allzweck-Register.

• Der Prozessor verarbeitet nur dyadische Operationen.

• Der Prozessor verarbeitet komplexe Instruktionen.

• Der Prozessor unterstutzt mancherlei Adressierungsart.

Page 97: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 97

• Der Prozessor unterstutzt in keineswegs orthogonaler Weise we-nige Datentypen.

• Der Prozessor verarbeitet Verzweigungsanweisungen unter Ver-wendung von condition codes.

• 8051-Programme sollten geringe Anforderungen an den Speicherstellen. Die Instruktionen sind also kompakt, verschieden langund sehr inhomogen.

z.H. Fuhre Belege fur obige Aussagen an. o

4.9. Resumee

Neben technologischen Randbedingungen sind damit zwei fast kon-troverse Anforderungen zu befriedigen.

Page 98: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 98

Fur Compiler (-Bauer) sind folgende Eigenschaften wunschenswert:

• Wenn Operation, Datentyp und Adressierungsart orthogonal,d.h. unabhangig sind, vereinfacht sich die Code-Erzeugung!

• Lieber Primitive als Konstrukte fur eine bestimmte Programmier-Sprache!

• Leitlinie: einfachere Entscheidung zwischen Code-Alternativen!

• Befehle, die zur Compile-Zeit vorhandene Information auch zunutzen erlauben!Z.B. Fur die VAX enthalt eine Maske, welche Register beiProzedur-Aufrufen zu retten sind. cZ.B. Compiler konnen MMIX mitteilen, welches Verzweigungs-verhalten zu erwarten ist. c

Z.B. Der VAX-Befehlssatz ist hoch-orthogonal, erlaubt einfache Zuord-

nung von Hochsprachen-Anweisungen zu Maschinen-Befehlen. Der Code

ist so optimiert, daß Programme nur wenig vom damals knappen Speicher

brauchen. 1978 war die VAX die erste Speicher-Speicher-Architektur. c

Page 99: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 4: Befehlssatz – links von der HW-SW-Schnittstelle 99

Fur den Prozessor (-Designer) sind folgende Eigenschaften wunschens-wert:

• leichte Dekodierbarkeit

• leichtes pipelining

• load/store Architektur

• wenige Addressierungsarten

Z.B. Wie die ersten ausgesprochenen RISC-Maschinen (IBM 801, RISC I

und RISC II in Berkeley sowie MIPS in Stanford) weisen DLX und MIPS

mit load/store-Architektur, mit 32-bit-Festformat-Befehlen und mit einem

in der pipeline-Implementierung CPI-Wert von kleiner als zwei exemplari-

sche RISC-Befehlssatze auf. c

Der Befehlssatz legt einen Prozessor weitgehend fest!Insofern ist der Befehlssatz mitentscheidend fur dieLeistung eines Prozessors!

z.H. Identifiziere andere Einflußgroßen fur die Prozessor-Leistung. o

Page 100: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

100

5. Prozessor-Architektur

Das Material ist COD entnommen, aufbereitet und kommentiert, s.www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf

5.1. single cycle Implementierung

s. fig 5.1 – fig 5.29 (1–23 von 40)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf

5.2. multi cycle Implementierung

s. fig 5.30 – fig 5.51 (24–40 von 40)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel5.pdf

Wegen der Bedeutung fur die Implementierung hier – wie auch imSkript – die Tabelle der Phasen der Abarbeitung der funf prototypi-schen Befehle, namlich ADD, LW, SW, BEQ und J, Fig. 5.35:

Page 101: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 5: Prozessor-Architektur 101

R-Type load/store branch jumpADD LW, SW BEQ J

step R-Type load/store branch jump

IFIR = Mem[PC]

PC += 4

IDA = Reg[IR[25-21]]; B = Reg[IR[20-16]]

ALUOut = PC+(sign ext(imm)<<2)

EX/BEQ & J

completion

ALUOut

= A op B

ALUOut = A

+sign ext(imm);

if (A-B==0)

PC = ALUOut

PC = PC[31-28]

||(IR[25-0]<<2)

Mem/ADD & SW

completion

Reg[IR[15-11]]

= ALUOut

MDR = Mem[ALUOut]

or Mem[ALUOut] = B

WBReg[IR[20-16]]

= MDR

5.3. Implementieren der Steuerung

s. fig C.3 – fig C.20 (1–7)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/Appendix/appndx c.pdf

Page 102: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 5: Prozessor-Architektur 102

Modellieren der Steuerung durch FSM (C.6) erlaubt diverse Imple-mentierungen

• per ROM (Moore-Automat!)

• per FSM (s. C.7)

• per PLA (s. C.14)

• per sequencer (s. C.15, C.16)

• per µ-Programm (s. C.20)

µ-Programm fur MIPS R2000 mit ADD, LW, SW, BEQ, J

ALU Register PC write sequen-

label cntrl SRC1 SRC2 control Memory control cing

Fetch Add PC 4 read PC ALU seq

Add PC Extshft read dispatch1

Mem1 Add A Extend dispatch2

LW2 read ALU seq

write MDR to Rt fetch

SW2 write ALU fetch

R-Type1 func A B seq

write ALU to Rd fetch

BEQ1 Sub A B ALU-zero fetch

JUMP1 jumpaddr fetch

Page 103: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

103

6. pipeline-Prozessor

Das Material ist COD entnommen, aufbereitet und kommentiert, s.www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf

Materialien zur DLX (≈ MIPS) gibt es reichlich, beispielsweise

• http://de.wikipedia.org/wiki/DLX-Mikroprozessor

• Valentin Gherman: DLXSim fur Windows bzw. fur Linux zumDownload; Vorlesungsmitschrift - Kapitel 3 – Der DLX als RISC-Beispiel; Minitutorial fur DLX;Institute of Computer Science, University of Stuttgartwww.ra.informatik.uni-stuttgart.de/~ghermanv/Lehre/RO02-03

• Christian Hochberger: Mikrorechner; Fakultat Informatik, TUDresden Kapitel4-Rechner.pdf und Kapitel4-Rechner-Teil2.pdf

(allg.&DLX) www.mr.inf.tu-dresden.de/lehre ws/infet1/docs/

• Rade Kutil: DLX-Simulator fur Windows; Kurze Einfuhrung zurAssemblerprogrammierung in DLX; link auf GhermanDepartment of Computer Sciences, University of Salzburgwww.cosy.sbg.ac.at/project/tutorien/digitale/ws0708/

Page 104: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 104

6.1. instruction pipelines

• pipeline control

s. fig 6.29 – fig 6.35 (25–31 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf

• data hazards

s. fig 6.36 – fig 6.49 (32–44 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf

• control hazards

s. fig 6.50 – fig 6.56 (45–51 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf

• superskalare Version & Leistung

s. fig 6.58 – fig 6.71 (52–59 von 59)www.weblearn.hs-bremen.de/risse/RST/docs/COD2e/Figures/kapitel6.pdf

Page 105: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 105

• superskalare Prozessoren

Def. Superskalare Prozessoren haben mehrere (unabhangige) funk-tionale Einheiten (FUs); spezielle HW (scoreboard) dient der Synchro-nisation der FUs;

Programm-Parallelitat auf Anweisungsebenewird in Parallelarbeit von FUs umgesetzt.

Z.B. superskalare Version des MIPS Prozessors durch Verdoppelungder Befehlspipeline: eine fur arithmetisch/logische Operationen undVerzweigungen und eine ausschließlich fur load/store Operationen.

z.H. Bewerte die Auslastung einer jeden pipeline. oz.H. Verbessere die Auslastung einer jeden pipeline. oz.H. Implikationen fur data hazards? fur control hazards? o

Page 106: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 106

superskalare Erweiterung des MIPS-Prozessors

PCInstruction

memory

4

RegistersM u x

M u x

ALU

M u x

Data memory

M u x

40000040

Sign extend Sign

extend

ALU Address

Write data

Page 107: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 107

Inkrementierung eines jeden Feldelementes um eine Konstante

; cycle

loop: lw Rt,0(Rp) ; load Mem[Rp] into temporary Rt 1

add Rt,Rt,Rs ;increment element by scalar in Rs 2

sw Rt,0(Rp) ; store result at Rp 3

addi Rp,Rp,4 ; increment pointer Rp 4

bne Rp,Re,loop; if (Rp!=Re) goto loop 5

ALU/branch load/store ; cycle

loop: lw Rt,0(Rp) ; Rt ← Mem[Rp] 1

add Rt,Rt,Rs ; increment Rt 2

addi Rp,Rp,4 ; increment Rp 3

bne Rp,Re,loop sw Rt,-4(Rp);branch and store 4

ergibt sich CPI von 45 = 0.8. Unter welchen Annahmen? c

z.H. Laßt sich obiger code fur die superskalare Erweiterung weiteroptimieren? oz.H. Welcher Beschleunigungsfaktor ergibt sich? Welche Arten vonKenngroßen gehen grundsatzlich in den Beschleunigungsfaktor ein? o

Page 108: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 108

Abarbeitung von Befehlspaaren im superskalaren MIPS

Paare bestehen aus zwei Instruktionen, aus

• einer arithmetisch-logischen oder einer branch-Instruktion

• einer load- oder einer store-Instruktion

etwa ADD/BEQ und LW/SW.

ADD BEQ LW SW

IF IRa=Mem[PC]; IRm=Mem[PC+4]; PC+=8;

ID Aa=Reg[IRa[25-21]] Am=Reg[IRm[25-21]]

Ba=Reg[IRa[20-16]] Bm=Reg[IRm[20-16]]

target=PC+SignExt(IRa[15-0])

EX ALUouta IF (Aa==Ba) ALUoutm=Am+SignExt(IRm[15-0])

= Aa op Ba PC = target

MEM MDR=Mem[ALUoutm] Mem[ALUoutm]=Bm

WB Reg[IRa[15-11]] Reg[IRm[20-16]]

= ALUouta = MDR

Fur die Bearbeitung der ADD/BEQ- bzw. der LW/SW-Instruktionen notige, ansonsten aber

gleichnamige Register sind hier durch die Suffixe a bzw. m voneinander unterschieden.

Page 109: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 109

6.2. functional pipelines

• arithmetische pipelines

Beispielsweise die Multiplikation einer 8-bit mit einer 4-bit unsignedinteger kann konventionell mit drei Addierern und vier Bus-gates

multiplicand multiplier

@@�� ���@

@@

8bit adder

@@�� ���@

@@

8bit adder

@@�� ���@

@@

8bit adder

bus gate????????

bus gate????????

bus gate????????

????????

????????

????????

????????

????????

???????? ?

bus gate

???????? 0

????????�

???︸ ︷︷ ︸12 bit product

Page 110: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 110

und ‘pipelined’ nur mit zusatzlichen latches realisiert werden.

multiplicand

????????

multiplier

????input latches

????????1st/2nd stage latches

????????2nd/3rd stage latches

@@�� ���@

@@

8bit adder

@@�� ���@

@@

8bit adder

@@�� ���@

@@

8bit adder

bus gate????????

bus gate????????

bus gate????????

????????

????????

????????

????????

????????

????????

????????

???????? ?

bus gate

???????? 0

????????�

??

?

??

???

???output latch 12 bit product

Page 111: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 111

Implementierungen der Multiplikation von ’breiteren’ Faktoren liegenauf der Hand.

Welche Vorteile/Nachteile ergeben sich zu welchen Kosten?

Def. Die Auflosung einer Operation in pipeline-Stufen heißt Granu-laritat.

Z.B. x · 123.456.789 = (x · 123)106 + (x · 456)103 + x · 789, liefertMultiplikations-pipelines unterschiedlicher Granularitat. cDef. Die Menge der verschiedenen Funktionen, die eine multifunk-tionale pipeline ausfuhren kann, bestimmt die sogenannte Variabilitateiner pipeline.

Z.B. Texas Instruments Advanced Scientific Computer, TI ASC mitdynamisch zu konfigurierender pipeline zur Abarbeitung arithmeti-scher Operationen: float +, *, Skalarprodukt . . .s. z.B. Daniel P. Siewiorek, C. Gordon Bell, Allen Newell: ComputerStructures – Principles and Examples; McGraw-Hill pp753http://research.microsoft.com/users/GBell/Computer Structures Principles and Examples/ c

Page 112: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 112

• scheduling funktionaler Einheiten

FUs aufeinander abstimmen und synchronisieren; dabei Daten-Ab-hangigkeiten berucksichtigen!

Z.B. CDC6600 – 1964 der erste Super-Computer – mit 10 FUs: 2Addierer, 2 Inkrementierer, 2 Multiplizierer, 1 Dividierer sowie je einebranch, Boolean und shift unit.

Je FUs zwei Operanden-Register Fj und Fk, ein Ergebnis-Register Fi,Operationsmodus Fm, busy flag, read flags Rj und Rk (falls Rj bzw.Rk gesetzt sind, sind die Daten in Fj bzw. Fk valide) sowie Zeiger Qjund Qk auf die die Operanden produzierenden FUs.

je acht (Basis-) Adreß-Register A0, . . . , A7, Index-Register B0, . . . , B7

und Akkumulatoren X0, . . . , X7.

control unit (CU), scoreboard verwaltet

XBA result register designators (welche FU beliefert welches XBA-Register)

entry operand register designators (welches XBA-Register ent-

Page 113: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 113

halt Werte fur welchen Operanden einer FU)

function unit designators Qj bzw. Qk (welche FU produziert O-peranden fur Fj bzw. Fk)

X3=F1(X1,X4), X4=F2(X5,X6) und X6=F5(.,.).

Die CDC6600 hat eine 2-stufige Befehls-pipeline:

decode welche FU liefert ihr Ergebnis an welches Register,wait, bis FU frei ist (busy flag) und dieses Register frei ist (es istnicht Ergebnis-Register einer Instruktion, die noch bearbeitet wird)issue instruction to FU

score board resolves structure hazardsand data hazards (RAW, WAR)!

X6:=X1*X2

X5:=X6+X4 (X6: RAW)

X3:=X1/X2

X5:=X4*X3 (X3: RAW)

X4:=X0+X6 (X4: WAR)

Page 114: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 114

X3:=X1/X2;

X5:=X4*X3;X4:=X0+X6

...X3 DIVX4X5

...

ADD DIV MUL · · ·Fm DIVFj X1Fk X2Qj

Qk

RFj 1RFk 1busy 1

Page 115: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 115

X3:=X1/X2;

X5:=X4*X3;

X4:=X0+X6

...X3 DIVX4X5 MUL

...

ADD DIV MUL · · ·Fm DIV MULFj X1 X4Fk X2 X3Qj

Qk DIVRFj 1 1RFk 1 0busy 1 1

Page 116: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 116

X3:=X1/X2;X5:=X4*X3;

X4:=X0+X6

...X3 DIVX4 ADDX5 MUL

...

ADD DIV MUL · · ·Fm ADD DIV MULFj X0 X1 X4Fk X6 X2 X3Qj

Qk DIVRFj 1 1 1RFk 1 1 0busy 1 1 1

c

Page 117: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 117

z.H. Untersuche WAW hazards. oCDC6600 ist erster superskalarer Prozessor.

theoretisch maximal erzielbare Leistung = #FUs × Taktrate

Z.B. Weitere Beispiele superskalarer Prozessoren sind DEC21064und DEC 21264 (Alpha), Intel i80860XP, IBM RS/6000, MotorolaMC88110, MIPS R4000 oder SUN SuperSPARC. cBem. superpipeline-Architekturen charakterisiert durch tiefe Befehls-(10 und mehr pipeline-Stufen) und Funktions-pipelines.Der Compiler muß in diesem Fall also große load und branch de-lays ausgleichen, wahrend der Compiler fur superskalar-Architekturenmoglichst keine Paare, Tripel o.a. abhangiger Befehle erzeugen sollte,damit die funktionalen Einheiten stets ausgelastet sind. ◦Z.B. DEC 21064 (Alpha) und MIPS R4000 gelten als sowohl super-skalar als auch superpipelined. c

Page 118: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 118

• pipeline-Vektor-Prozessoren

Vektor-Operationen wie ~z = ~a · ~x + ~y mit ~a, ~x, ~y, ~z ∈ IRn entwederdurch n Rechen-Elemente – das i-te Rechen-Element berechnet ~zi =~ai ·~xi+~yi – effektiv ausfuhren oder eben durch pipeline-Multiplizierermit nachgeschaltetem pipeline-Addierer.

∗ +

ai

xi

yi

FUi

zi+

∗ai

xi

yi

zi

Wichtigste Beispiele sind die SAXPY- bzw. DAXPY-Benchmarks,d.h. single/double a*X[i]+Y[i].

Anwendungen?

Page 119: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 119

Def. pipeline-Vektor-Prozessoren verfugen typischerweise uber spe-zialisierte, dynamisch konfigurierbare pipelines.Vektor-Operationen effizient ausfuhren: per komponentenweiser arith-metischer Operation, per compress(~v,~b), expand(~v,~b), merge(~v, ~w,~b),

gather(~v,~i) mit Boole’schen Vektoren ~b und Index-Vektoren ~i, perspeziellen triadischen Operationen, z.B. D[i]:=A[i]*B[i]+C[i].

Spezielle Vektor-Register, caches und haufig verschrankte Speicher un-terstutzen die Vektor-Verarbeitung in Vektor-Maschinen.

Typische Vektor-Anwendungen sind LGS (z.B. per Gauß oder Gauß-Seidel), Differentialgleichungssysteme (DGlS z.B. per Runge-Kutta),finite Elemente Methode (FEM) usw.

Z.B. ILLIAC-IV, (CDC-) Star-100, TI ASC, CRAY-1 sowie die NECSX-, Siemens VPx und Fujitsu VPx-EX-Familien mit den gemeinsa-men Merkmalen: Befehls-pipeline, mehrere pipeline-FUs, verschrank-ter Speicher (interleaved memory), unabhangige Befehls-caches (in-struction cache) und Daten-caches (data cache) sowie mehrfache Bus-Systeme (multiple buses). c

Page 120: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 120

JahrAnzahlVektor-Register

Vektor-RegisterLange

funktionale Vector Einheitenloadstoreunits

Cray 1 1976 8 64 6× (+, ∗, inv, logic, shift) 1

Cray X-MPY-MP

19831988

8 64 8× (+, ∗, inv, 2× logic, shift) 2×load1×store

Cray 2 1985 8 64 5× (+, ∗,√, inv, logic) 1

FujitsuVP100/200

1982 8–256 32–1024 3× (+, ∗, /) je GK und FK 2

HitachiS810/820

1983 32 256 4× (2× (FK+, logic), ∗+, ∗/+) 4

Convex C1 1985 8 128 4× (+, ∗, /, FK-logic) 1

NEC SX/2 198488K

256konfig

16× (4× (+, ∗, /, shift, FK+, logic)) 8

DLXV 1990 8 64 5× (+, ∗, /, FK+, logic) 1

z.H. Fortschreiben! o

Page 121: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 121

Z.B. Die DLX kann uber Kommando-Zeilen-Parameter zur Vektor-Maschine DLXV mitVektor-Vektor-Operationen (+,−, ∗, /), z.B. ADDV V1,V2,V3,Skalar-Vektor-Operationen (+,−, ∗, /), z.B. ADDSV V1, F1, V2,sowie den Lade-Vektor-Operationen, z.B. LV V1,R1 (load V1 aus demSpeicher ab Adresse R1)und Speicher-Vektor-Operationen, z.B. SV V1,R1 (store V1 im Spei-cher ab Adresse R1) konfiguriert werden.

Weitere Operationen wie beispielsweise Boole’sche Vektor-Operatio-nen oder das Setzen und Auslesen von Vektor-Langen- bzw. Vektor-Masken-Registers. cZ.B. CNAPS coprozessor board von Adaptive Solutions mit 64 bzw.256 Prozessoren (s. Labor ELKA). c

Vektorisierung erzielt verhaltnismaßig große Leistungs-steigerungen mit verhaltnismaßig geringen Mehrkostenfur hardware und Compiler.

Page 122: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 122

Vektor-Instruktionen im Mikro-Programm reduzieren Speicher-Zugriffe; Schleifen werden im Mikro-Programm i.a.R. schneller aus-gefuhrt als solche im Assembler-Programm.

HW-Verarbeitung entsprechender Vektor-Instruktionen reduziertebenso Speicher-Zugriffe und eliminiert daruberhinaus den Schleifen-Overhead.

Z.B. fruhe Vektor-Maschinen: STAR100 und CYBER203 – mit ver-schrankten Speichern, multiplen Bussen, E/A-Prozessoren und Strom-Einheit, stream unit (Mikro-Controller, Register-Banke, Befehlskeller,Dekoder, Steuer-Vektor(?)) und zwei pipeline-Prozessoren, einem GK-Adder und -Multiplier sowie einem GK-Adder und -Divider.

6-stufiger Adder, 7-stufiger Multiplier bei 40ns Zykluszeit. n1/2 ≈ 200!Befehlskeller mit 16 128bit Wortern;

Pipeline-Inhalte werden in spezielle Unterbrechungsregister gerettet.Heute sind Vektor-Operationen meist ununterbrechbar; bei Unterbre-chungen lost das exception handling z.B. ein roll back aus. cZ.B. CRAY-1: load/store-Architektur, je acht Vektor-Register (V),

Page 123: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 123

Skalar-Register (S) und Adreß-Regsister (A) mit einem Adreß-Mul-tiplizierer, z.B. fur mehrdimensionale Felder, und Funktionseinheitenals pipelines mit 2 bis 14 Stufen.

Verketten von Operationen, also mehrere Operationen nacheinanderauf einem Datenstrom auszufuhren (z.B. fur LGS).

vier Befehlspuffer fur je 64 Befehle;

scoreboard Einheit synchronisiert durch Register-Verriegelung die di-versen Funktionseinheiten. c

Page 124: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 124

• Leistungsbewertung

Sei tcond die fur die Konditionierung der pipeline notwendige Zeit,tflush die Durchflußzeit (flushing time), d.h. die Zeit fur den Durchlaufdurch die (konditionierte) pipeline, also die Zeit vom Holen der Argu-mente bis zum Wegspeichern der Ergebnisse, und tclock die Zyklus-Zeit(clock time) der Verarbeitungselemente, also die Verarbeitungszeit ei-ner jeden Stufe der pipeline.Dann ist tcond + tflush die Ausfuhrungszeit einer Skalar-Operation undn Skalar-Operationen dauern tcond + n · tflush. Also ergibt sich eineAusfuhrungszeit Tscal(n) = tflush +

tcondn pro Operation bei n Opera-

tionen.

Falls die pipeline in jedem Zyklus, also alle tclock Zeiteinheiten einErgebnis produziert und falls in jedem Zyklus Operanden geholt undErgebnisse abgespeichert werden, so ist tcond + tflush +(n−1) · tclock =tconf + n · tclock mit tconf = tcond + tflush − tclock die Zeit fur die Bear-beitung eines Vektors der Lange n durch eine Vektor-Operation und

Page 125: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 125

damit

Tvect(n) = tclock +tconf

ndie Ausfuhrungszeit pro Vektor-Element bei Vektor-Lange n. Die Leis-tung P der pipeline, also die Anzahl von Operationen pro Zeiteinheitist dann

P =P (n)=1

Tvect(n)=

1

tclock(1 +tconftclock

1n )

Fur n → ∞ ergibt sich die theoretische Maximal-Leistung P∞ =1

tclockund fur n1/2 =

tconftclock

die halbe Maximal-Leistung P (n1/2) =

P (tconftclock

) = 1tclock(1+1) = 1

2 P∞ und somit auch P = P (n) = P∞n

n+n1/2.

Def. nx und n1/2 messen die Nutzlichkeit von Vektor-Prozessoren:

nx =Vektor-Lange, so daß Skalar-

= Vektor-Geschwindigkeit, Tscal(nx) = Tvect(nx)

n1/2 =Vektor-Lange, so daß Vektor-Geschwindigkeit

= 12

asymptotische Vektor-Geschwindigkeit

Page 126: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 6: pipeline-Prozessor 126

so daß

Tvect(n1/2) =Tvect(∞)

2nx ist der break even point der Vektorisierung.

Je kleiner nx und n1/2 ausfallen, um so nutzlicher ist Vektorisierung.Wie schon bei pipeline-Rechnern muß hier das Speicher-System erstrecht mithalten konnen(Daumen-Regel: Speicher-Bandbreite = dreifache pipeline-Rate).

Z.B. Die Vektor-Ausfuhrung fur n Elemente brauche tconf + n tclock

Zeiteinheiten oder Zyklen, die Skalar-Ausfuhrung n tscal. Vektorisie-rung empfiehlt sich also fur tconf + n tclock < n tscal oder eben fallsn > tconf/(tscal − tclock).Fur die CRAY-1 gilt tconf = 5, tclock = 1 sowie tscal = 2 und damitn > 5. c

Page 127: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

127

7. Speicher-Hierarchie

Welche Bestandteile hat die Speicher-Hierarchie?

Memory

CPU

Memory

Size Cost ($/bit)Speed

Smallest

Biggest

Highest

Lowest

Fastest

Slowest Memory

Page 128: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 128

Daten stehen auf einer Ebene jeweils in Kopie aus der darunterliegen-den Ebene zur Verfugung:

Processor

Data are transferred

Page 129: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 129

Inwiefern ist die Speicher-Hierarchie eine Pyramide?

CPU

Level n

Level 2

Level 1

Levels in the memory hierarchy

Increasing distance from the CPU in

access time

Size of the memory at each level

Page 130: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 130

• Kenngroßen

etwas aktuellere Angaben zur Speicher-Hierarchie (2002 und 2005)

17.05.05 Dr. Jörg Gruner 7

Betriebssysteme

• Speicherverwaltung

– Speicherhierarchie

Register

Cache

Main Memory

Disk

Tape

1 ns

2 ns

10 ns

10 ms

100 s

Zugriffszeit

< 1 KB

< 2 MB

256-2048 MB

40-400 GB

> 0,5 TB

Kapazität

Page 131: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 131

• Lokalitat

Die Speicher-Hierarchie funktioniert nur aufgrund der Lokalitat vonZugriffen auf die jeweils unterliegende Speicher-Ebene:

zeitliche Lokalitat: auf den Zugriff auf ein Datum folgt mit hoherWahrscheinlichkeit bald ein erneuter Zugriff.

raumliche Lokalitat: auf den Zugriff auf ein Datum folgt mit hoherWahrscheinlichkeit bald ein Zugriff auf ein benachbartes Datum.

Der Nutzen der Speicher-Hierarchie beruht wieder auf einer 90/10-Faustregel: ein Programm verbraucht 90% der Laufzeit in 10% desCodes.

z.H. Wie sieht die 90/10-Faustregel fur Daten aus? o

z.H. Verifikation? Bedeutung? Konsequenz? o

Page 132: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 132

7.1. caching

Platzierung von Daten im cache:

suchen & finden oder ggfls. nachladen & verdrangen

a. Before the reference to Xn

X3

Xn – 1

Xn – 2

X1

X4

b. After the reference to Xn

X3

Xn – 1

Xn – 2

X1

X4

Xn

X2X2

Page 133: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 133

• direct mapped caches

Jeder Speicher-Adresse entspricht genau eine cache line!

00001 00101 01001 01101 10001 10101 11001 11101

000

Cache

Memory

001

01

0011

100

101

110

111

Page 134: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 134

Identifiziere Kenngroßen und Arbeitsweise der Implementation einesdirect mapped caches!

Address (showing bit positions)

20 10

Byte offset

Valid Tag DataIndex

0

1

2

1021

1022

1023

Tag

Index

Hit Data

20 32

31 30 13 12 11 2 1 0

Page 135: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 135

B direct mapped cache: one word blocks

trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit8 1-Wort-Blocken

5 6 14 25 15 5 6 15 26 16 5 60 161 252 26345 5 5 56 6 14 6 67 15 15

m m m m m t m t m m t t

Adresse mod 8 4 hits

Keine raumliche Lokalitat! Keine Verdrangungsstrategie!

Page 136: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 136

Z.B. DEC-Station mit direct mapped cache c

Address (showing bit positions)

16 14 Byte offset

Valid Tag Data

Hit Data

16 32

16K entries

16 bits 32 bits

31 30 17 16 15 5 4 3 2 1 0

Page 137: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 137

B direct mapped cache: four word blocks

erst ganze Blocke in jeder cache line erlauben, auch raumliche Loka-litat zu nutzen!

Address (showing bit positions)

16 12 Byte offset

V Tag Data

Hit Data

16 32

4K entries

16 bits 128 bits

Mux

32 32 32

2

32

Block offsetIndex

Tag

31 16 15 4 32 1 0

Page 138: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 138

trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit4 2-Wort-Blocken

5 6 14 25 15 5 6 15 26 16 5 60 (24,25) (16,17)1 (26,27)2 (4,5) (4,5) (4,5)3 (6,7)(14,15) (14,15) (6,7)(14,15) (6,7)

m m m m s t m m m m t m

2 mal temporal hits1 mal spatial hits

(Adresse/2) mod 4 3 hits

Keine Verdrangungsstrategie!

Page 139: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 139

hits bzw. misses in Abhangigkeit von cache- und Block-Große

1 KB

8 KB

16 KB

64 KB

256 KB

256

40%

35%

30%

25%

20%

15%

10%

5%

0%

Mis

s ra

te

64164

Block size (bytes)

Page 140: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 140

• fully associative caches

Eroffnen von Freiheiten, Blocke in cache lines zu platzieren!

1

2Tag

Data

Block # 0 1 2 3 4 5 6 7

Search

Direct mapped

1

2Tag

Data

Set # 0 1 2 3

Search

Set associative

1

2Tag

Data

Search

Fully associative

macht Verdrangungsstrategie und hardware-Aufwand notwendig:

• random • fifo • lru

Page 141: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 141

• set associative caches

verschiedene Assoziativitat bei fester cache-Netto-Kapazitat

Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

Eight-way set associative (fully associative)

Tag Data Tag Data Tag Data Tag Data

Four-way set associative

Set

0

1

Tag Data

One-way set associative (direct mapped)

Block

0

7

1

2

3

4

5

6

Tag Data

Two-way set associative

Set

0

1

2

3

Tag Data

Page 142: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 142

B set associative cache: one word blocks

trace: Zugriffe auf einen 2-assoziativen cache mit 1-Wort-Blocken(2-assoziativ, also 2 Blocke pro set)

5 6 14 25 15 5 6 15 26 16 5 6set 0 16

set 1 5 5 525

set 2 6 6 614 26

set 3 15 15

m m m m m t t t m m t t

Adresse mod 4 5 hits

Keine raumliche Lokalitat! least recently used, LRU!

Page 143: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 143

B set associative cache: two word blocks

trace: Zugriffe auf einen 2-assoziativen cache mit 2-Wort-Blocken(2-assoziativ, also 2 Blocke pro set)

5 6 14 25 15 5 6 15 26 16 5 6set 0 (4,5) (4,5) (4,5)

(24,25) (16,17)set 1 (6,7) (6,7) (26,27)

(14,15) (14,15) (14,15) (6,7)m m m m s t t t m m t m

(Adresse/2) mod 2 5 hits

least recently used, LRU!

Page 144: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 144

Implementation eines 4-assoziativen caches

Address

22 8

V TagIndex

012

253254255

Data V Tag Data V Tag Data V Tag Data

3222

4-to-1 multiplexor

Hit Data

123891011123031 0

Page 145: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 145

Performance set-assoziativer caches

0%

3%

6%

9%

12%

15%

Eight-wayFour-wayTwo-wayOne-way

1 KB

2 KB

4 KB

8 KB

Mis

s ra

te

Associativity 16 KB

32 KB

64 KB

128 KB

Page 146: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 146

Performance set-assoziativer caches

20%

Mis

s ra

te p

er t

ype

2%

4%

6%

8%

10%

12%

14%

1 4 8 16 32 64 128

One-way

Two-way

Cache size (KB)

Four-way

Eight-way

Capacity

Page 147: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 147

• cache-Schreibstrategien

Prozessor, DMA-hardware, EA-Prozessoren und erst recht andere Pro-zessoren greifen unabhangig auf einen gemeinsamen cache/Speicher zu⇒ Konsistenz-Problem!

Def. Datenkonsistenz von cache und Speicher ⇐⇒ cache undSpeicher-Ausschnitt stimmen stets uberein.Def. Datenkoharenz von cache und Speicher ⇐⇒ stets wird derzuletzt geschriebene Wert gelesen.

write through immer zugleich in den cache und in den Speicher zuschreiben garantiert Konsistenz!

copy back erst beim Verdrangen der (modifizierten) Daten (dirtybit) aus dem cache diese in den Speicher zuruckzuschreiben ga-rantiert Koharenz!

Page 148: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 148

Koharenz per Schnuffel-Logik:falls die zu schreibende Speicher-Adresse am Bus im cache vorkommt,valid=false (also cache miss). (Aufwand?)

Ebenso bei Prozeß-Wechsel alle cache lines oder per Prozeß-Kennungnur die des noch aktuellen Prozesses invalidieren (cache flush).

cache miss beim Schreiben (miss on write):

fetch on write oder write allocate der entsprechende Block wirdgeladen und danach (ohne miss) geschrieben

write around oder no write allocate der entsprechende Block wirdunter Umgehung des caches in den Hauptspeicher geschrieben.

z.H. Beschleunigungsfaktor aufgrund des Verzichts auf Konsistenzzugunsten von Koharenz oZ.B. s.a. Optimierung der Matrix-Multiplikation (nur) bei Beruck-sichtigung des caching in Abschnitt 3.4, S. 54ff cvgl. www.weblearn.hs-bremen.de/risse/RST/docs/cacheSim.pdf

Page 149: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 149

• Havard-Architektur

Def. Maschinen mit getrennten Speichern (damals) bzw. caches(heute) fur Instruktionen und Daten weisen die sogenannte Havard-Architektur auf.

Z.B. 1997 COD2e pp 611–6141st level caches Pentium Pro vs PowerPC 604

feature Pentium Pro PowerPC 604organisation split I-cache and D-cachecache sizes 8KB each 16KB eachassociativity 4-associativereplacement pseudo LRU LRUblock size 32Bwrite policy write back write back/through

2nd level caches Pentium Pro vs PowerPC 604:256KB or 512KB instructions and data c

Page 150: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 150

7.2. Speicher: SRAM vs DRAM

Tue2Nov04 From Lect12 Lect18Slide 85

DRAM (Dynamic Random Access Memory)

a dynamic RAM cell for one bit• bit stored as charge in capacitor• optimized for density (1 transistor, 6 for SRAM)– capacitor discharges on a read (destructive read)

• read is automatically followed by a write (to restore bit)– charge leaks away over time

• refresh by reading/writing every bit once every 5ms (row at a time)• access time (time to read)• cycle time (minimum time between reads) > access time

“word select line”

“bitline” (datain/out)

pass transistor

capacitor

©2004 by WiscGang & Wittie

Page 151: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 151

Tue2Nov04 From Lect12 Lect18Slide 86

DRAM Organization

square row/column matrixmultiplexed address linesinternal row bufferoperation

• put row address on lines• set row address strobe (RAS)• read row into row buffer• put column address on lines• set column address strobe (CAS)• read column bits out of row buffer

write row buffer contents to row• rewrite since destructive read

data pin interface usually narrow

©2004 by WiscGang & Wittie

Page 152: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 152

Z.B. 4M×1 DRAM, multiplexed address (22bit = 11bit + 11bit)

RAS/CAS

Address[10–0]

Row decoder

11-to-2048

2048 × 2048 array

Column latches

Mux

Dout

statt immer nur auf nur ein bit einer ganzen Zeile zuzugreifen:page mode bzw. static column mode: mehrere bits bei fester row-address oder nibble mode: ein nibble bei fester row-address c

Page 153: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 153

Tue2Nov04 From Lect12 Lect18Slide 87

DRAM Specs

density: +60% annual increase (post ‘92: 40%)• Moore’s law: doubles every 18 months (post ‘92: 24 months)

speed: only 5% annual improvement in access time• much flatter improvement

70ns55ns3.8ns1Gb200480ns60ns5ns512Mb200290ns65ns7ns256Mb2000100ns70ns10ns128Mb1998110ns75ns12ns64Mb1996120ns90ns15ns16Mb1992165ns110ns20ns4Mb1989190ns135ns25ns1Mb1986

Cycle TimeAccess TimeMin Clock#bits/chip1st Year

©2004 by WiscGang & Wittie

Page 154: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 154

7.3. Speicher-Organisation

Anforderung an Speicher-Verwaltung/Memory Management

• hardware-Unabhangigkeit (Speicher-Große)

• effiziente Nutzung des physikalischen Speichers

• schneller context switch

• Protection innerhalb und zwischen Prozessen:code/data, user/system, multiprogramming

• Verschiebbarkeit (relocatable code)

• sharing memory regions:sharing code (reentrant programs),sharing data (inter-process communication)

• dynamic allocation of new memory:dynamic sizing of existing memory (heap, stack)

Page 155: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 155

• virtueller Speicher

Obige Anforderungen werden durch virtuellen Speicher bedient!

Physical addresses

Disk addresses

Virtual addresses

Address translation

Page 156: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 156

Vergleich cache vs memory

H.&P. cache/memory physical/virtual 1990proccache

memory

cachememory

hard diskblock 4-128B 512B-8KB pagehit time 1 cycle 110 cycles hit timemiss time 8-32 cycles 100K-600K cycles miss timeaccess time 6-10 cycles 100K-500K cycles access timetransfer time 2-22 cycles 10K-100K cycles transfer timemiss rate 10−2 – 2 · 10−1 10−7 – 10−5 miss ratecache size 1KB – 256KB 4MB – 2GB memory size

typical access times (1997):SRAM 5–25ns DRAM 60–120ns Disk 10–20 Mio ns

Page 157: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 157

• paging

Seiten-Tabelle/page table – Verwendung

Physical memory

Disk storage

Valid

1

1

1

1

0

1

1

0

1

1

0

1

Page table

Virtual page number

Physical page or disk address

Page 158: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 158

Seiten-Tabelle/page table – schematisch

Page offsetVirtual page number

Virtual address

Page offsetPhysical page number

Physical address

Physical page numberValid

If 0 then page is not present in memory

Page table register

Page table

20 12

18

31 30 29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

29 28 27 15 14 13 12 11 10 9 8 3 2 1 0

Page 159: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 159

paging – Implementierung

3 2 1 011 10 9 815 14 13 1231 30 29 28 27

Page offsetVirtual page number

Virtual address

3 2 1 011 10 9 815 14 13 1229 28 27

Page offsetPhysical page number

Physical address

Translation

Konsequenzen aus der gigantischen page fault penalty:

• ’große’ pages – aber Verschnitt und Transfer-Zeit

• Verringern der page fault rate per optimaler Verdrangungsstra-tegie (fully associative, LRU)

• handling of page faults per software, i.e. os

• write back strategy

Page 160: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 160

Große der Seiten-Tabelle!

z.H. Große der page table als Funktion der page size! o

Reduktion des Speicherbedarfs der page tables

• dynamisch wachsende page tables(eine bzw. zwei pro Prozess, falls Adreß-Raum in eine bzw. zweiRichtungen wachst)

• inverted page table / hashing

• hierarchy of page tables

• paging the page tables

Page 161: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 161

B Ersetzungsstrategien bei paging

opt optimal – wenn auch illusionar – ware, genau die Seite zu erset-zen, die in Zukunft fur die langste Zeit nicht referenziert wird!nur zum Zweck des Vergleichs!

FIFO first in – first out (alteste ersetzen)

LRU least recently used: am langsten nicht referenziert ersetzen

clock Ring-Puffer-Variante von FIFO: use bit:=1 bei Referenz, erset-ze nachste page mit use bit==0, if (use bits==1) use bit=0;

working set Menge der Seiten wahrend der letzten n Referenzen /wahrend der letzten n virtuellen Zeit-Einheiten eines Prozesses

weitere second chance, not used recently, NUR . . .

zur Illustration diene die folgende Sequenz von Referenzen

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

und zwar fur einen physikalischen Speicher mit drei oder vier pages= frames = Kacheln.

Page 162: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 162

B opt

frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 1 3b 2 2 2 4c 3 4 5 5

m m m m h h m h h m m h

7pagefaults

frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 1 4b 2 2 2c 3 3d 4 5 5

m m m m h h m h h h m h

6pagefaults

Haufigkeit berucksichtigen, Losung nicht eindeutig,ohne Orakel nicht implementierbar!

Page 163: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 163

B FIFO

frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 4 5 5b 2 1 1 3c 3 2 2 4

m m m m m m m h h m m h

9pagefaults

frame 1 2 3 4 1 2 5 1 2 3 4 5a 1 1 5 4b 2 2 1 5c 3 2d 4 3

m m m m h h m m m m m m

10pagefaults

aber: auf alte Seiten kann durchaus haufig zugegriffen werden!FIFO ist per Pointer einfach zu implementieren!Belady’s Anomalie: mehr frames 6⇒ weniger page faults

Page 164: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 164

B LRU

frame 1 2 3 4 1 2 5 1 2 3 4 51 1 4 5 32 2 1 1 43 3 2 2 5

m m m m m m m h h m m m

10pagefaults

frame 1 2 3 4 1 2 5 1 2 3 4 51 1 1 1 52 2 2 23 3 5 44 4 3

m m m m h h m h h m m m

8pagefaults

page fault rate kaum hoher als bei opt,allerdings aufwandige Implementierung!

Page 165: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 165

• segmentation

segments = logical units of programs, individual base address, length,protection etc. in segment descriptor table, z.B. code, data,stack, heap

Z.B. Intel 80x86 segment registers: CS, DS, ES, SS ... plus Se-gReg:Offset addressing, VAX c

virtual address = segment, offset

if (offset>segment.length) protection fault

physical address = segment.base address + offset

• address translation per adder

• Nutzung des physikalischen Speichers: ohne interne aber mitexterner Fragmentierung (splinters, crunching), Segmente sindganz oder garnicht geladen!

• schneller context switch

• Protection: differenziert (f/r/w/e), einfach

Page 166: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 166

• memory sharing: simpel wie protection

• dynamic allocation of new memory, dynamic sizing of existingmemory: schwierig

B paging vs segmentation

paging segmentation1-Wort-Adressen 2-Wort-AdressenHW-orientiert SW-orientiertgroße page table oder hierarchy kleine segment descriptor tableSeiten fester Große Segmente variabler Große (code/data)einfache Blockersetzung schwierige Blockersetzungschwierige Protection einfache Protectioninterne Fragmentierung externe Fragmentierungungenutzter Teile einer Seite ungenutzte Teile des HauptspeichersNachteil: thrashing Nachteil: splinters, zusatzlicher Adderaugmentation einfach augmentation schwierigresizing einfach resizing schwierig (crunching)

z.H. context switch? o

Page 167: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 167

B Segmentierung: Er- und Einsetzungsstrategien

unvermeidliche Uberschneidungen mit der Lehrveranstaltung EBS!

klassische Einsetzungsstrategien bei segmentationanhand einer verzeigerten Liste von freien Bereichen

first fit erster Freibereich, der groß genug ist

next fit nachster erster Freibereich, der groß genug ist

best fit kleinster Freibereich, der groß genug istgesamte Liste muss durchsucht werden; sortiere Freibereich nach derGroße.

worst fit großter Freibereichgesamte Liste muss durchsucht werden.

quick fit fur verschiedene Großen eigene Listen freier Bereiche

Buddy-lists Allokation von Speicher in Blocken mit Kapazitaten von 2n

Speicher-Einheiten fur n = min,min+ 1, . . . ,max

falls Speicher-Anforderung nicht bedient werden kann:Zusammenschieben und Verschmelzen der freien Bereiche= Kompaktierung (wie Festplatten-Defragmentierung)

Page 168: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 168

17.05.05 Dr. Jörg Gruner 37

Betriebssysteme

• Direkte Speicherbelegung

– Belegungstrategien

• FirstFit– Der erste, ausreichend große Speicherbereich, der frei ist, wird

belegt.– Dies führt meist zu einem Restspeicherbereich, der unbelegt

bleibt.

Speicheranforderung

freie Speicherbereiche

Belegung

9 KB 7 KB 12 KB

7 KB 4 KB 11 KB 22 KB 12 KB

7 KB 2KB9 KB4 KB 12 KB 10 KB 12 KB

17.05.05 Dr. Jörg Gruner 38

Betriebssysteme• Direkte Speicherbelegung

– Belegungstrategien• NextFit

– Die FirstFit-Strategie führt dazu, daß in den erstenSpeicherbereichen nur Reststücke (Verschnitt) verbleiben, dieimmer wieder durchsucht werden.

– Um dies zu vermeiden geht man bei der NextFit-Strategie analogder FirstFit-Strategie vor, setzt aber bei dem wiederholtenDurchlauf die Suche an der Stelle fort, an der bei demvorangegangen Durchlauf die Suche beendet wurde.

Speicheranforderung

freie Speicherbereiche

Belegung

9 KB 7 KB 12 KB

7 KB 4 KB 11 KB 22 KB 12 KB

7 KB 2KB9 KB4 KB 15 KB 12 KB7 KB

Page 169: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 169

17.05.05 Dr. Jörg Gruner 39

Betriebssysteme

• Direkte Speicherbelegung

– Belegungstrategien

• BestFit

– Die gesamte Liste bzw. Tabelle wird durchsucht, bis man einenSpeicherbereich findet, der gerade ausreicht, um dieSpeicheranforderung zu befriedigen und den Verschnitt minimiert.

Speicheranforderung

freie Speicherbereiche

Belegung

9 KB 7 KB 12 KB

7 KB 4 KB 11 KB 22 KB 12 KB

7 KB 2KB9 KB4 KB 22 KB 12 KB

17.05.05 Dr. Jörg Gruner 40

22 KB

Betriebssysteme

• Direkte Speicherbelegung

– Belegungstrategien• WorstFit

– Sucht den größten vorhandenen, freien Speicherbereich mit demZiel den Verschnitt zu maximieren

» um bei weiteren Speicheranforderungen ausreichend freien Speicherzur Verfügung zu haben oder

» diesen „Verschnitt“ als „neuen“ freien Speicherbereich zur Verfügungzu stellen.

Speicher-anforderung

freieSpeicher-bereiche

Belegung

9 KB 7 KB 12 KB

7 KB 4 KB 11 KB 12 KB

7 KB 4 KB 15 KB 12 KB

24 KB

15 KB9 KB7 KB11 KB

Page 170: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 170

17.05.05 Dr. Jörg Gruner 41

Betriebssysteme

• Direkte Speicherbelegung

– Belegungstrategien

• QuickFit– Für jede Sorte von Belegungen wird eine separate Liste

unterhalten.– Separate Listen ermöglichen eine schnellere Suche nach

passenden, freien Speicherbereichen.– Beispiel

» Werden durch das Nachrichtensystem des Betriebssystemsregelmäßig Nachrichten der Länge 1 KB versendet, so ist es sinnvolleine Liste für 1 KB Belegungen zu führen und alleSpeicheranforderung schnell und ohne Verschnitt zu befriedigen.

17.05.05 Dr. Jörg Gruner 42

Betriebssysteme• Direkte Speicherbelegung

– Belegungstrategien• QuickFit

1Speicheranforderung 1 1 1 4 1 1 1 1 1 1 17 4

87654321

...11109

1 KBSpeicher-bereiche

87654321

...

sonstige freieSpeicherbereiche

...

Page 171: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 171

B Buddy-Systeme

• Erweiterung der QuickFit-Strategie

• Buddy-Systeme sehen fur jede gangige Speicherbelegungsgroßeeine Liste vor

• gangige Speicherbelegungsgroßen sind z.B. Zweierpotenzen(20, 21, 22, 23, . . . Byte)

• Speicher wird nur in gangigen Speicherbelegungsgroßen verge-ben

• Beispiel: Speicheranforderung von 280 Byte⇒ vergebene Speicherbelegungsgroße 512 Byte = 29 Byte

17.05.05 Dr. Jörg Gruner 46

Betriebssysteme

• Direkte Speicherbelegung

– Belegungstrategien

• Buddy-Systeme

210 Byte

29 Byte29 Byte

211 Byte

211 Byte210 Byte

212 Byte

210 Byte

211 Byte211 Byte

4 KB 2 * 2 KB = 4 KB 2 * 1 KB + 2 KB = 4 KB 2 * 512 B + 1 KB + 2 KB = 4 KB

Page 172: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 172

• Ist kein freier Speicherbereich der Große 2k vorhanden, wird einfreier Speicherbereich 2k+n (n = 1, 2, . . .) gegebenenfalls wie-derholend in zwei Speicherbereiche 2k+n−m (m = 1, 2, . . .) zer-legt (halbiert), bis die Speicherbelegungsgroße 2k zur Verfugungsteht.Ein freier Speicherbereich der Große 2k liegt vor, wenn m = ngilt, d.h. wenn n Speicherbereichshalbierungen bzw. -zerlegungendurchgefuhrt wurden.

• Die Anfangsadressen der Speicherbereiche einer Halbierung (diePartner bzw. Buddies) sind identisch bis auf das k.-Bit in ihrerAdresse.

• Das k.-Bit der Anfangsadressen von Partnern ist invertiert.Beispielsweise sind ...ABC0XYZ... und ...ABC1XYZ... die An-fangsadressen von Partnern.

• Die Invertierung des k.-Bits der Anfangsadresse ermoglicht, ineinem Schritt zu prufen, ob ein frei gewordener Speicherbereichder Große 2k einen freien Partner in der Belegungstabelle be-sitzt.

Page 173: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 173

• Dies ermoglicht die schnelle Verschmelzung der beiden Partnerzu einem Speicherbereich der Große 2k+1.

• Sowohl das Suchen eines freien Speicherbereiches (gegebenen-falls mit Halbierungen) als auch das Verschmelzen zu großerenSpeicherbereichen laßt sich rekursiv uber mehrere Partner-Ebe-nen (Zweierpotenzen) durchfuhren.

B Buddy-Systeme – Bewertung

• Bei Buddy-Systemen, welche auf der Basis von Zweierpoten-zen Speicher zur Verfugung stellen, betragt der Verschnitt imstatistischen Mittel 25% bzw. 1

4 des zur Verfugung gestelltenSpeicherbereiches.Bei einer Speicheranforderung von N Byte, wird namlich einSpeicherbereich von 2k Byte mit 2k−1 < N ≤ 2k vergeben.Angenommen

P (N <= 2k−1 + 2k−2) = P (N > 2k−1 + 2k−2) = 12

Page 174: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 174

dann gilt im statistischen Mittel

N = 2k−1 + 2k−2 = 2k − 2k−2 = 2k − 142k = 1

4 (4 2k − 2k) = 342k

d.h. 34 des zur Verfugung gestellten Speicherbereiches von 2k

Byte werden im statistischen Mittel verwendet. Damit wird 14

des zur Verfugung gestellten Speicherbereiches nicht verwendet.Dies ist der Verschnitt.

• Dadurch charakterisiert sich das Buddy-System auf Basis vonZweierpotenzen als eine Belegungstrategie, die zwar schnell aberbei der Hauptspeicherverwaltung nicht effizient ist.

• Die Ursache fur die schlechte Effizienz dieses Buddy-Systems istdie Verwendung großer Partitionen durch die Speicherplatzver-dopplung.

• Korrigiert man das Verfahren der Speicherplatzverdopplung, sokann man den Nutzungsgrad des Hauptspeichers verbessern. DieHauptspeicherverwaltung wird dann allerdings komplexer.

Page 175: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 175

• paged segments

paged segments = Kombination von paging und segmentation

Intel 80x86 segments, paged segments ...

AT&T,DG,IBM/370,VAX,MC68030,80x86 2-levelvirtual address = segmentindex|pageindex|offset

physical address = PT[ST[root+segmentindex].physpage

+pageindex].page+offset

+ : sharing, non-contiguous PT, growth– : große contiguous ST in main memory,

dynamic growth schwierig

MC68030 4-level: segment, outer, middle, inner page table+ : gut fur uber den ganzen, großen virtuellen Speicher verteilte Da-ten, kleine PTs– : max 4 memory references, PTs mit hoher interner Fragmentierung

IBM RS6000 inverted page table (linked list)+ : kleine inverted PT in main memory– : Anzahl memory accesses fur address translation nicht const.

Page 176: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 176

• Belegungen des physikalischen Speichers ermitteln

unvermeidliche Uberschneidungen mit der Lehrveranstaltung EBS!

Z.B. Gegeben Mini-Speicher, organisiert z.B. per paged segments

• 20 Bit virtuelle Byte-Adressen (s.u.), Seiten a 256B

• physikalischer Speicher mit 64KB Kapazitat = 256 pages

• Zugriff auf segment table: (naturlich) fully-associative

• Segment-Lange in Anzahl Seiten

• Segment-Anfange fallen mit Seiten-Anfangen zusammen.

• Zugriff auf page table: (naturlich) direct-mapped

• Adressen hexadezimal

address format seg# (4 bit) page#(8bit) offset (8bit)

Ermittle die zu virtuellen Adressen gehorenden physikalische Adressenbei gegebener segment table, ST, und gegebener page table, PT.

Page 177: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 177

ST:

seg# base len0x1 0x0A00 0x030x2 0x0100 0x010x3 0xF800 0x020x7 0x0200 0x05

seg#,segoffset︸ ︷︷ ︸,pageoffset

⇓ ||frame#, pageoffset

PT:

page# frame#

· · · · · ·0x01 0x03· · · · · ·

0x02 0x250x03 0xAB0x04 0xBA0x05 0x110x06 0x17· · · · · ·

0x0A 0x020x0B 0x320x0C 0x70· · · · · ·

0xF8 0x180xF9 0xE8· · · · · ·

segmentation violation? konsistente PT? Speicher-Ausbau?maximale Segment-Große? maximale Anzahl Segmente?Segment-Anfang = Seiten-Anfang: notwendig? sinnvoll? c

Page 178: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 178

• TLB – Beschleunigen der Adreß-Umsetzung

TLB = translation lookaside buffer = address translation cache

Valid

1

1

1

1

0

1

1

0

1

1

0

1

Page table

Physical page addressValid

TLB

1

1

1

1

0

1

TagVirtual page

number

Physical page or disk address

Physical memory

Disk storage

Page 179: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 179

TLB & cache (hier z.B. DECstation mit MIPS R2000)

Valid Tag Data

Page offset

Page offset

Virtual page number

Virtual address

Physical page numberValid

1220

20

16 14

Cache index

32

Cache

DataCache hit

2

Byte offset

Dirty Tag

TLB hit

Physical page number

Physical address tag

TLB

Physical address

31 30 29 15 14 13 12 11 10 9 8 3 2 1 0

Page 180: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 180

Zusammenspiel TLB & cache (hier z.B. DECstation mit MIPS R2000)

Yes

Deliver data to the CPU

Write?

Try to read data from cache

Write data into cache, update the tag, and put

the data and the address into the write buffer

Cache hit?Cache miss stall

TLB hit?

TLB access

Virtual address

TLB miss exception

No

YesNo

YesNo

Write access bit on?

YesNo

Write protection exception

Physical address

Page 181: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 181

designing the translation lookaside buffer (TLB)

feature typicalsize 32–4K entriesblock size 1–2 page table entries a 4–8B eachhit time 0.5–1 clock cyclemiss penalty 10–30 clock cyclesmiss rate 0.01%–1%

TLB miss und page fault sind zu unterscheiden!

• entweder kleine, voll-assoziative TLBsoder große TLBs, direct mapped oder mit geringer Assoziati-vitat

• Reduktion der TLB miss penalty ohne page fault per simplerVerdrangungsstrategie

• virtually indexed/tagged caches verwenden virtuelle Adressen!• physically indexed/tagged caches verwenden physikalische Adressen!

Page 182: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 182

virtuelle cache Adressierung CPU ⇔ cache ⇔ MMU

+ virtuelle Adresse gleichzeitig an cache und MMU– konkurrierende DMA-Zugriffe mit physikalischen Adressen wer-

den durch Bus-snooping nicht erkannt: non-cachable odercache-flush/cache-clear vor DMA-Zugriffen

– Tasks mit nicht disjunkten virtuellen aber disjunkten physikali-

schen Adress-Raumen bei Task-Wechsel cache-flush/cache-clear– Tasks mit shared regions und daher mit disjunkten virtuellen aber

nicht disjunkten physikalischen Adress-Raumen: non-cachable

oder spezielle cache-Auslegung

physikalische cache Adressierung CPU ⇔ MMU ⇔ cache

– erst virtuelle Adresse an MMU dann physikalische Adresse ancache! aber wenn cache-Index von der Adress-Umsetzungnicht betroffen, kann cache line schon selektiert werden.

+ Probleme bei Task-Wechsel und address aliasing treten hiernicht auf.

Page 183: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 183

Mischformen von virtueller und physikalischer cache-Adressierung =virtuell/physikalische cache-Adressierung (Index enthalt bitsder virtual page number, tag enthalt physical page number),z.B. hyperSPARC

Z.B. DECstation 3100:nur 4 Kombinationen von mindestens einem miss bei Zugriff auf TLB,(physically indexed/tagged) cache und page table moglich:

pagecache TLB table scenariomiss hit hit TLB hit, page table irrelevant, cache misshit miss hit TLB miss, page table hit, cache hit

miss miss hit TLB miss, page table hit, cache missmiss miss miss TLB miss, page fault, on retry cache must miss

* hit miss translation ok contradicts page not in memoryhit miss miss cache hit contradicts page not in memory

c

Page 184: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 184

Z.B. memory hierarchies PentiumPro vs PowerPC604

feature Pentium Pro PowerPC 604virtual addresses 32 bit 52 bitphysical addresses 32 bitpage size 4KB, 4MB 4KB, 256MBTLB split I-TLB und D-TLB

beide 4-ass. beide 2-ass.pseudo LRU LRU

32 I-TLB lines 128 I-TLB lines64 D-TLB lines 128 D-TLB lines

hw handles TLB misses

c

Page 185: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 185

• Speicherschutz-Maßnahmen

Vorbedingungen fur protection

• mindestens zwei Modi: user/operating system (kernel, supervi-sor) mode

• nur im system mode kann das Betriebssystem mit speziellenInstruktionen page table register, TLB usw. schreiben

• kontrollierter, begrenzter Wechsel von user mode in system mo-de etwa per system call (exception)

Z.B. ¨allgemeine Schutzverletzung¨, ¨segmentation violation¨, ¨pro-tection violation¨ o.a. c

Page 186: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 186

• 80x86-Unterstutzung der Speicher-Anbindung

Intel 80x86/Pentium Memory Management

• unsegmented, unpaged memory:etwa fur high performance µ-controllers ...

• unsegmented, paged memory:e.g. Berkeley UNIX

• segmented, unpaged memory:high granularity protection, segment in memory→ ST in memory, also absehbare Zugriffszeiten

• segmented, paged memory:e.g. UNIX System V

s.a. www.memorymanagement.org/articles/begin.html, 2001

Page 187: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 187

8086 80286 80386 80486 PentiumDatenbus/bits 16 16 32 32 64Adreßbus/bits 20 24 32 32 32Verarbeitung/bits 16 16 32 32 ≥ 32superskalar - - - -

data cache - - - unified ≥ 8KBinstruction cache - - - 8KB cache ≥ 8KBinstruction queue 6B 6B 16B 32B 2·32B# Segemente 4 4 6 6 6segment base 20bit 20/24bit 20/32bit 20/32bit 20/32bitoptional paging - -

√ √ √

modi 1 4 4 4 4multitasking -

√ √ √ √

Page 188: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 188

logical address selector CS ... GS 32 bit offset

-

-

segment table mit 8B segment descriptors

0

8K-1

...

u.a. 20bit Lange, 32bit base address

...

?

+

?

linear address 10bit dir no 10bit page no 12bit offset

-

+

-

-

-

+

? ?

page directory table

page table

0

1023

...

...

0

1023

...

...

physical address 20bit physical page no 12bit offset

Page 189: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 189

virtual addresses = logical addresses = 16bit segment | 32bit offset

• unsegmented memory: 232B = 4GB

• segmented memory: (2bit segment fur protection) 214+32B =64TB

• physical address space: 232B = 4GB

• global virtual memory: 4K segments – 4GB segments

• local virtual memory: 4K segments – 4GB segments

protection of segments: privilege level (geschutzt 0–3 ungeschutzt)plus access attributes (data: r/w; code: r/e)

Programm mit PL p darf nur auf Daten mit PL d zugreifen, falls p ≤ d

• PL0 fur MM, protection, access control

• PL1 fur OS-Rest

• PL2 fur application security (DBMS)

• PL3 fur application

Page 190: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 190

virtual address = 16bit segment selector | 32bit offset

segment selector = 13bit Index | TI | RPL

TI = 1bit Table Indicator = local/globalRPL = 2bit requested privilege level

segmentation = address translation:virtual address →linear address = 10bit dirindex | 10bit pagindex | 12bit offset

paging = address translation:linear address → physical address

2-stufiges table lookup erzeugt physical address:dirindex indiziert das page (table) directory mit max. 1K Eintragenund damit eine der max. 1K page tables mit max. 1K Eintragen fur4K pages. pagindex indiziert in dieser page table den Eintrag eineSeite.

physical address = (PT-No.[PTD[dirindex]])

[pagindex]+offset

Page 191: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 191

segment table, page table directory und page table 32bit entries ent-halten Informationen zu Zielgroßen, protection, Verfugbarkeit, writestrategy, dirty bit etc.

Pentium verfugt uber einen TLB mit 32 page table entries.

Im Unterschied zu 80386 und 80486 unterstutzt der Pentium zweiSeitengroßen:

if page size extension (PSE) ==1

then size=4KB or size=4MB

Bei 4MB-Seiten ergibt sich entsprechend nur ein table lookup!

Page 192: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 192

• performance gap: processor vs memory system

Impr

ovem

ent

fact

or

1

10

100

19801982

19841986

Year

19881990

19921994

1996

CPU (fast)

CPU (slow)

DRAM

DRAM CPU (slow) CPU (fast) DRAM cycle times slow P (MHz) 1980 1.00 1.00 1.00 0.25 1981 1.09 1.15 1.25 229.357798 4.6 5 1982 1.19 1.32 1.56 210.419998 5.29 6.25 1983 1.30 1.52 1.95 193.04587 6.0835 7.8125 1984 1.41 1.75 2.44 177.106303 6.996025 9.765625 1985 1.54 2.01 3.05 162.482847 8.04542875 12.2070313 1986 1.68 2.51 4.27 149.066832 10.0567859 17.0898438 1987 1.83 3.14 5.98 136.758561 12.5709824 23.9257813 1988 1.99 3.93 8.37 125.46657 15.713728 33.4960938 1989 2.17 4.91 11.72 115.106945 19.64216 46.8945313 1990 2.37 6.14 16.41 105.602702 24.5527 65.6523438 1991 2.58 7.67 22.98 96.8832126 30.6908751 91.9132813 1992 2.81 9.59 37.17 88.8836813 38.3635938 128.678594 1993 3.07 11.99 45.04 81.5446617 47.9544923 180.150031 1994 3.34 14.99 63.05 74.8116163 59.9431153 252.210044 1995 3.64 18.73 88.27 68.6345103 74.9288942 353.094061 1996 3.97 23.42 123.58 62.9674407 93.6611177 494.331686 700 2800

Page 193: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 7: Speicher-Hierarchie 193

zwei Arten, die Speicher-Bandbreite zu erhohen

CPU

Cache

Bus

Memory

a. One-word-wide memory organization

CPU

Bus

b. Wide memory organization

Memory

Multiplexor

Cache

CPU

Cache

Bus

Memory bank 1

Memory bank 2

Memory bank 3

Memory bank 0

c. Interleaved memory organization

Page 194: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

194

8. Parallelisierung von Algorithmen

• Entwicklung paralleler Algorithmen

• Entwicklung paralleler Rechner-Architekturen

am Beispiel der Losung von linearen Gleichungssystemen (LGS), z.B.DGl-Systeme, partielle DGl-Systeme, FEM . . .

Z.B. s.a. Matrix-Multiplikation cDas LGS

A~x = ~b

bestehe aus n Gleichungen in n Unbekannten;die Koeffizienten-Matrix A ist also quadratisch.

Page 195: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 195

for ( i =1; i<n ; i++) // eliminiere Unbekannte xi, 1 ≤ i < n

for ( j=i +1; j<=n ; j++) // in der j-ten Gleichung, j = i+1, ..., n

{ const double pivot = A[ j ] [ i ] /A[ i ] [ i ] ;

A[ j ] [ i ] = 0 . 0 ; // xi in j-ter Gleichung eliminieren

// restliche Koeffizienten der j-ten Gleichung aktualisieren

for ( k=i +1; k<=n ; k++) A[ j ] [ k ] −= pivot ∗A[ i ] [ k ] ;

b [ j ] −= pivot ∗b [ i ] ; // Koeffizienten der r.S. aktualisieren

}

// Das Gleichungssystem hat jetzt Dreiecksgestalt: die Unbekannten xi

// lassen sich aus∑nj=iAij xj = bi von unten nach oben bestimmen.

for ( i=n ; i >0; i−−) // bestimme xi fur i = n, n− 1, . . . , 1

{ double tmp = b [ i ] ; // berechne bi −∑nj=i+1Aij xj in tmp

for ( j=n ; j>i ; j−−) tmp −= A[ i ] [ j ]∗ x [ j ] ;

x [ i ] = tmp/A[ i ] [ i ] ;

}

Page 196: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 196

Mehrere Fragen sind zu beantworten:

• Welche Operationen lassen sich unter Berucksichtigung von Da-ten-Abhangigkeiten uberhaupt parallelisieren?

• Wieviele Prozessoren oder processing elements (PE) sollen zurVerfugung stehen?

• Wie kommen die PEs an die von ihnen benotigten Daten und wiewerden – soweit notwendig – Zwischenergebnisse ausgetauscht?

Bewertung der Implementierungen anhand von Kenngroßen wie

• Beschleunigungsfaktor aufgrund von Parallelisierung

• Auslastung der PEs

• Kommunikationsaufwand in Abhangigkeit von der angenomme-nen Vernetzung

Page 197: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 197

8.1. Parallelisierung des Gauß’schen Algorithmus

Annahmen, Einschrankungen, Disclaimer:

A sei quadratisch (eben kein least squares problem) ...

A~x = ~b sei eindeutig losbar, det(A) 6= 0 ...

Alle pivot-Elemente sind von 0 verschieden . . .

Keine Berucksichtigung der Numerik, also ohne Pivotisierung, s.a.www.weblearn.hs-bremen.de/risse/MAI/docs/numerik.pdf

www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdf ...

Es stehen p = n+ 1 PEs zur Verfugung . . .

Der Algorithmus selbst besteht aus zwei Teilen:

1. Eliminieren, Triangulierung (Uberfuhren in Dreiecksgestalt)

2. Auflosen: ’von unten nach oben’ (backward substitution)

Page 198: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 198

• Gauß’scher Algorithmus – Eliminieren

1. eliminiere x1 ist in der zweiten, dritten, . . . , n-ten Gleichung, alsoin den n− 1 Gleichungen

n∑k=1

Ajk xk = bj fur j = 2, . . . , n

Aktualisiere n Koeffizienten Ajk fur k = 1, . . . , n und bj derrechten Seite. Wegen

Ajk := Ajk − pAik und bj := bj − p bi

mit pivot =AjiAii

und i = 1

sind diese Operationen Daten-unabhangig und konnen von denn + 1 PEs parallel ausgefuhrt werden (Aj1 := 0 wird aktiv ge-setzt, alle PEs sind busy).

Bem. Die Koeffizienten Ajk und bj werden standig verandert. ◦

Page 199: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 199

2. eliminiere x2 in der dritten bis n-ten Gleichung. n PEs aktualisie-ren n Koeffizienten in n− 2 Gleichungen.

und allgemein fur i = 1, . . . , n− 1 eliminiere xi

i. eliminiere xi in der i+1-ten bis n-ten Gleichung. n− i+2 der n+1PEs aktualisieren n− i+ 2 Koeffizienten in (n− i) Gleichungen.

⇒ SIMD, MAC: sAXPY/dAXPY, Vektorisierung!

In einer Zeiteinheit (ZE) aktualisiere ein PE gerade einen Koeffizien-ten.

Uberfuhrung der Koeffizienten-Matrix in Dreiecksgestalt und Aktua-lisierung der rechten Seite durch n+ 1 PEs in insgesamt

(n− 1) + (n− 2) + . . .+ 1 =

n−1∑i=1

i =(n− 1)n

2ZE

Page 200: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 200

Ein Mono-Prozessor-System braucht dafur

(n+ 1)(n− 1) + n(n− 2) + (n− 1)(n− 3) + . . .+ 3 · 1= 2(n− 1) + (n− 1)2 + 2(n− 2) + (n− 2)2

+2(n− 3) + (n− 3)2 + . . .+ 2 + 1 = 2

n−1∑i=1

i+

n−1∑i=1

i2

= n(n− 1) + 16 (n− 1)n(2n− 1) = 1

6 (n− 1)n (2n+ 5) ZE

Der Beschleunigungsfaktor β aufgrund Parallelisierung fur das Elimi-nieren ist (fur n→∞)

β =16 (n− 1)n (2n+ 5)

12 n (n− 1)

=2n+ 5

3= 2

3 n

(1 +

5

2n

)≈ 2

3 n

Page 201: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 201

Insgesamt sind 16 (n− 1)n (2n+ 5) PEs von insgesamt (PE-Anzahl ×

Eliminierungsschritte) = (n+ 1) 12 (n− 1)n = 1

2 (n− 1)n (n+ 1) PEsaktiv:

die Auslastung α wahrend des Eliminierens betragt also

α =16 (n− 1)n (2n+ 5)12 (n− 1)n (n+ 1)

=1

3

2n+ 5

n+ 1≈ 2

3fur n→∞

Bem. Wenn PEs gleichzeitig lesend auf ein Datum zugreifen konnen,gibt es keine Zugriffskonflikte (no memory contention)! ◦z.H. Bestimme obige Kenngroßen fur eine entsprechende paralleleVersion der Eliminierung im Gauß’schen Algorithmus durch sehr viele,etwa (n−1)(n+ 1) PEs oder wenige PEs, etwa #PE |(n+ 1), d.h. dieAnzahl der PEs ist Teiler von n+ 1. oz.H. Bestimme allgemein β = β(n,#PEs) und α = α(n,#PEs). oz.H. Welcher Beschleunigungsfaktor, welche Auslastung ergeben sichbei Gauß-Jordan? o

Page 202: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 202

• Gauß’scher Algorithmus – Auflosen

n+ 1 PEs stehen zur Verfugung, um parallel nacheinander xn, xn−1,. . . , x1 zu berechnen. Sie berechnen also sukzessive

xi =biAii−

n∑j=i+1

AijAii

xj fur i = n, n− 1, . . . , 1

Jedes PE berechneAijAii

xj bzw. biAii

gerade in einer ZE. Jedes PEbrauche fur das Aufsummieren eines eigenen mit einem fremden Zwi-schenergebnis gerade cm ZE.

n+ 1 PEs erledigen die Auflosung in großenordnungsmaßig

n+ cm

n−1∑i=1

ld i = n+ cm ld

n−1∏i=1

i = n+ cm ld((n− 1)!) ZE

Page 203: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 203

Sequentiell sind dagegen

1 + (2 + c1) + (3 + 2c1) + . . .+ (n+ c1(n− 1)) =

n∑i=1

i+ c1

n−1∑i=1

i

=1

2

((n+ 1)n+ c1 n (n− 1)

)=n

2(n+ 1 + c1 n− d) ZE

erforderlich, wenn eine (lokale) Summation gerade c1 ZE braucht.

Wegen n! ≈√

2π nn e−n√n (Stirling) folgt

ld(n!) ≈ ld√

2π + (n+ 12 ) ldn + ln(e−n) ld e ≈ n(ldn − ld e). Der

Beschleunigungsfaktor β aufgrund Parallelisierung ist (fur n→∞)

β ≈ n

2

(n+ 1 + c1 n− c1)

n+ cm ld((n− 1)!)≈ 1

2

n (1+c1) + 1−c11 + cm (ldn−ld e)

=n

2

1 + c1 + 1−c1n

1 + cm ld(ne )≈ (1 + c1)n

2 + 2 cm ld(n/e)

Page 204: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 204

Die Auslastung α der PEs (fur n→∞) ist etwa fur c = c1 = cm

α = 12n (n+1+c n−c)(n+1)(n+c ldn) = 1

2

(1 + c n−1

n+1

)n

n+c ldn ≈1+c

2

Bem. Wegen∑n−1i=1 ld i = n ldn − 1

ln 2 (n − 1) + g(n) fur ein g(n) ∈O(ldn) gilt

β ≈ 12n (n (1+c1)+1−c1)

n+cm (n ldn−n−1ln 2 )

≈ 12n (1+c1)+1−c1

1+cm (ldn− 1ln 2 )≈ n

21+c1

1+cm ldn

asymptotisch fur n→∞. ◦z.H. Bestimme obige Kenngroßen einer entsprechenden parallelenVersion fur das Auflosen im Gauß’schen Algorithmus durch (maxi-mal?) p = (n− 1)(n+ 1) PEs oder fur den Fall, daß n ein Vielfachesder PE-Anzahl p ist. o

Page 205: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 205

• Kommunikation

Unterstellt wurde: jedes PE kann auf alle Daten zugreifen: Daten lie-gen in einem gemeinsamen globalen Speicher ((multi port) shared glo-bal memory).

memory

PE1

6?

PE2

6?

· · · PEn+1

6?

Aufgrund dieser Annahme des unbeschrankten Zugriffs der PEs aufjedes Datum konnten obige Kenngroßen insbesondere fur das Auflosenbestimmt werden.

Page 206: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 206

Aber Machbarkeit und andere Aspekte wie Kosten und eben

• Geschwindigkeit

• Zugriffsschutz

• Ausfallssicherheit, Fehlertoleranz (Zuverlassigkeit, Verfugbarkeit)

• Erweiterbarkeit, Flexibilitat, Skalierbarkeit etc.

konnen lokale Speicher und spezielle Verbindungsstrukturen fur diePEs notwendig machen. Dann fallen zusatzlich Kosten fur die Inter-Prozessor-Kommunikation an.

Probleme des global/shared memory

• Synchronisation der Speicher-Zugriffe,

• cache Koharenz, z.B. MESI

• Verbindungsstrukturen zwischen PEs und memory:Bus, Ring, Stern, Gitter, Torus, Kreuzschienenverteiler (crossbar), hypercube ...

• Speicher-Organisation

Page 207: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 207

Gesetzt den gunstigsten Fall, daß das k-ten PE bzw. das n+ 1-te PEdirekt nur auf die Koeffizienten Ajk bzw. bj zugreifen kann.

Dann kommt zu jedem Schritt der Eliminierung noch ein Kommuni-kationsoverhead:

• initial werden die Koeffizienten A1k und b1 der ersten Gleichunggeladen,

• dann werden A2k und b2 der zweiten Gleichung geladen undaktualisiert,

• dann A3k und b3 usw.

• bis zuletzt die Koeffizienten Ank und bn der n-ten Gleichunggeladen und aktualisiert werden.

Page 208: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 208

Entweder legen die PEs die aktualisierten Koeffizienten in genugendgroßen lokalen Speichern aboder sie schreiben sie zugleich wieder in den globalen Speicher zuruck.Angenommen, die mit einer Aktualisierung verbundene Kommunika-tion koste c = c1 = cm ZE. Dann betragt der Kommunikationsauf-wand fur die parallele Eliminierung

12 c (n− 1)n ZE

und derjenige der sequentiellen Eliminierung16 c (n− 1)n (2n+ 5) ZE

Der Beschleunigungsfaktor β aufgrund Parallelisierung ist

β =16 c (n− 1)n (2n+ 5)

12 c n (n− 1)

=2n+ 5

3= 2

3 n

(1 +

5

2n

)≈ 2

3 n

fur n→∞In diesem gunstigsten Fall – die Speicherzugriffsbreite kann so wie dieAnzahl der PEs gesteigert werden – bleibt auch die Auslastung α ≈ 2

3unverandert.

Page 209: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 209

Gesetzt der ungunstige Fall, daß die PEs Ketten-formig angeordnetsind und die Koeffizienten – wie etwa in Transputer-Netzen – nur ubergenau ein Interface-Prozessor PEo durch die Kette der verarbeitendenPEs durchgereicht werden konnen.

PE0- PEn+1 - PEn - · · · - PE1

6

PEs seien wieder den Spalten der Koeffizienten-Matrix fest zugeordnet(PEk bzw. PEn+1 bearbeitet Ajk bzw. bj).

Alle PEs bearbeiten zu einem Zeitpunkt dieselbe j-te Gleichung.

Eliminiere x1:Es dauert cm(n + 1) ZE, bis die Koeffizienten der ersten Gleichungin die vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − 1Gleichungen: Gesamtdauer also cm

((n+ 1) + (n− 1)(n+ 1)

)ZE.

Page 210: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 210

Eliminiere x2:Es dauert cm(n) ZE, bis die Koeffizienten der zweiten Gleichung indie vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − 2Gleichungen: Gesamtdauer also cm

((n) + (n− 2)(n+ 1)

)ZE.

allgemein also:

Eliminiere xi:Es dauert cm(n+ 2− i) ZE, bis die Koeffizienten der i-ten Gleichungin die vorgesehenen PEs geladen sind. Laden und Ruckschreiben dermodifizierten Koeffizienten dauert cm(n + 1) ZE fur jede der n − iGleichungen: Gesamtdauer also cm

((n+ 2− i) + (n− i)(n+ 1)

)ZE.

Zusammen ergibt sich ein Kommunikationsaufwand C von

C = cm

n−1∑i=1

((n+ 2− i) + (n+ 1)(n− i)

)= cm

((n+2)(n−1)− 1

2n(n−1) + (n+1)n(n−1)−(n+1)12 (n−1)n

)= 1

2cm(n− 1)(4 + 2n+ n2

)= 1

2cm(n− 1)(n+ 2)2

Page 211: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 211

Wenn der Mono-Prozessor c1 ZE fur einen Speicherzugriff braucht, gitfur die Beschleunigung β aufgrund Parallelisierung

β =(1+c1) 1

6 (n−1)n (2n+5)12n(n−1)+ 1

2 cm(n−1)(n+2)2= (1+c1)n (2n+5)

3n+3cm(n+2)2 = 13

(1+c1)(2n+5)+

3cm(n+2)2

(1+c1)(2n+5)

,

also asymptotisch β ≈ 23

1+c1cm

fur n→∞.

Bei dieser Verbindungsstruktur der PEs wird der Geschwindigkeitsge-winn durch Parallelisierung der Eliminierung in diesem (schlechten)Fall durch den Kommunikationsaufwand zunichte gemacht.

z.H. Untersuche Kommunikationsaufwand bei der Parallelisierungder Auflosung fur best und worst case. oz.H. Berechne β und α fur Verbindungsstrukturen wie Ring, Stern,Torus, cross bar, hypercube usw. Beispielsweise lassen sich PEs aufeinem Chip gunstig Gitter-formig (wie z.B. Transputer) anordnen.

Berechne β und α fur quadratisch angeordnete(n+1

2

)2PEs. o

z.H. Welcher overhead ergibt sich bei Gauß-Jordan? o

Page 212: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 212

• Parallelisierung des Gauß’schen Algorithmus durch denCompiler

Compiler konnen program code vektorisieren bzw. (allge-meiner) parallelisieren.

• entweder durch den Programmierer mit Konstrukten wie par-begin und parend und/oder

• automatisch durch den compiler: Grundlage ist – wie im Beispiel– eine Datenfluß-Analyse, die Daten-Abhangigkeiten erkennt,soweit moglich auflost und Vektor-Operationen oder parallelenCode erzeugt.

Z.B. vektorisierende FORTRAN-compiler etwa auf Convex C1, HPN-class etc. c

Maschinen-abhangiger code! & AmdahlZ.B. paralleles Sortieren, s.a.www.inf.fh-flensburg.de/lang/algorithmen/sortieren/ c

Page 213: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 213

Z.B. Zum Addieren von 217 Zahlen – etwa in zwei-dimensionalem array –auf 128 = 27 PEs berechnet jedes PE die Summe von 1024 = 210 Zahlen.

sum=0.0; for(i=0; i<1024; i++) sum+=local_array[i];

Dann sendet eine Halfte der PEs der anderen Halfte die eigenen Ergebnissezum Aufaddieren, von denen wieder eine Halfte die eigenen Teilsummen deranderen Halfte sendet, bis auf diese Weise schließlich ein PE die Gesamt-Summe bestimmt.

limit=128; half=128;

repeat

half=half/2; // send vs receive dividing line

if (half<=Pn && Pn<limit) send(Pn-half,sum);

if (Pn<half) sum=sum+receive();

limit=half; // upper limit of senders

until (half==1)

Pn ist das betrachtete der ausfuhrenden PEs, send(p,v) sendet den Wert

v uber das Verbindungsnetzwerk an Prozessor p, wahrend receive() das

betreffende PE veranlaßt, einen Wert uber das Netz entgegenzunehmen. c

Page 214: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 214

8.2. Effizienz/Effektivitat der Parallelisierung

Def. Fur einen gegebenen Algorithmus definiert β(p) = T (1)/T (p)den Beschleunigungsfaktor β(p) aufgrund von Parallelisierung mit pPEs, wo T (p) Zeit fur Abarbeitung des Algorithmus’ auf p PEs ist.E(p) = β(p)/p mißt die Effizienz eines parallelen Algorithmus’.F (p) = β(p)/(p T (p)) = Beschleunigung/Kosten mißt die Effektivitatvon parallelen Algorithmen.Ein paralleler Algorithmus, der F (p) maximiert, heißt effektiv.

Z.B. einige wenige BeispieleProblem bzw. Algorithmus β(p)Matrizenrechnungen, Diskretisierung O(p)Sortieren, tridiagonale Systeme, lineare Rekursion,Polynomauswertung

O(p/ ld(p)

)Suchen O

(ld(p)

)Horner, gewisse nichtlineare Rekursion, bestimmteAnteile der Compilation

O(1)

c

Page 215: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 215

Z.B. Fur die Addition von 16 Zahlen ai gilt T (1) = 15 sowiep T (p) β(p) E(p) F (p)T (1) = β(p)E(p)1 15 1.00 1.00 1.002 8 1.88 0.94 1.763 6 2.50 0.83 2.084 5 3.00 0.75 2.258 4 3.75 0.47 1.76

c

8.3. parallele Speicher-Zugriffe auf Matrizen

Z.B. Zugriff auf Matrix A = (aij) in verteiltem Speicher

P1 P2 P3

a11 a12 a13

a21 a22 a23

a31 a32 a33

P1 P2 P3

a11 a12 a13

a23 a21 a22

a32 a33 a31

P1 P2 P3 P4

a11 a12 a13 a14

a24 a21 a22 a23

a33 a34 a31 a32

a42 a43 a44 a41

zyklisch geshiftete Zeilen cVerallgemeinerungen: Schiefe-Systeme

Page 216: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 216

8.4. Baumhohenreduktion

Compiler nutzen Assoziativitat, Kommutativitat und Distributivitatzur Reduktion der Baumhohe h = h(A) algebraischer Ausdrucke A.

Z.B.h A per A′ h′

3 (((a+ b) + c) + d) Assoziativitat (a+ b) + (c+ d) 23 a+ bc+ d Kommutativitat a+ d+ bc 2

c

∃ allgemeine Verfahren. Jedoch NB: moglicher Verlust numerischerStabilitat, z.B. fl

((1 + ε) + ε

)6= fl

(1 + (ε+ ε)

)!

8.5. Parallelisierung rekurrenter Relationen

Z.B. Beispiele linearer rekurrenter RelationenProblem Algorithmus Anfangsbedingung Rekurrenz

Skalarprodukt z =∑xkyk z := 0 z = z + xkyk

Horner p =∑akx

ko p := an p = an−k + xop

Fibonacci(fk

)f2 := f1 = 1 fk = fk−1 + fk−2

c

Def. ~x = ~c+A~x mit strikter unterer Dreiecksbandmatrix A ist lineare

Page 217: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 217

rekurrente Relation mit xk =

{0 furk ≤ 0

ck +∑k−1j=k−m akjxj fur1 < k < n

.

Falls xk = f(Al, Ar) mit parallel abzuarbeitenden Algorithmen Alund Ar gleicher Komplexitat, wende rekursives Doppeln auf Al undAr an, dann Parallelisierung bzw. Vektorisierung, falls identische Ope-ratoren in identischer Reihenfolge in Al und Ar.

column sweep algorithm mit β(p) = n2 und E(p) = n

2(n−1) >12 fur

p = n− 1

1. x1 bekannt; parfor(i=2;i<=n;i++) berechne c(1)i = ai1x1 + ci

rofrap und damit x2

2. . . .

3. xk bekannt; parfor(i=k+1;i<=n;i++) berechne c(k)i = aikxk +

c(k−1)i rofrap und damit xk+1

4. . . .

5. xn−1 bekannt; berechne xn = ai,n−1xn−1 + c(n−2)i

∃ Verallgemeinerungen fur nichtlineare rekurrente Relationen!

Page 218: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 218

8.6. Modellierung durch DAGs

Gleichartige PEs bearbeiten eine Menge von #tasks voneinander abhangi-gen (sub-) tasks. Abhangigkeiten, Ausfuhrungszeiten und Kommuni-kationszeiten (communication overhead) lassen sich durch gerichtete,azyklische Graphen mit Knoten- und Kanten-Labeln beschreiben.

• Jedes PE bearbeitet zu einer Zeit maximal ein (sub-) task.

• Ein PE kann eine subtask st erst dann zu bearbeiten beginnen,wenn alle Zwischenergebnisse der tasks vorliegen, von denen stabhangig ist.

• Kommunikation je nach Modell-Vorgaben (gleichzeitiges undmehrfaches Senden und Empfangen?)Kommunikation auf ein und demselben PE braucht 0ZE!

Fur gegebene Zuordnung von PE zu (sub-) task PAT = (pi)i=1,...,#tasks

mit pi ∈ {0, 1, . . . ,#PEs − 1} eine der #PEs vielen PEs minimie-re die Zeit tDAG(PAT ), die die PEs bei gegebener Zuordnung PATbrauchen, um die gesamte task zu bearbeiten.

Page 219: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 219

5a 3b

3c 2d

1e

12

3

3 1

1 2 3 4 5 6 7 8 9 0 1 2 3 4 5a(α)b(α)

b(α) to d(β)c(α)d(β)

d(β) to e(α)e(α)

fur beispielsweise PAT = αααβα. Berechne also nacheinander

tDAG = minPAT∈{PATs}

tDAG(PAT )

fur geeignete Mengen {PATs} und ggfls.

t = minDAG∈{DAGs}

tDAG

Z.B. Ein algebraischer Ausdruck expr definiert verschiedene Aus-wertungsbaume, also zugehorige DAGs. Zu expr bestimme t, wo uberalle zugehorigen DAGs und alle PATs mit vorgegebener Anzahlen vonPEs, die jeweils genau die in expr vorkommenden algebraischen Ope-rationen ausfuhren konnen, zu minimieren ist. cz.H. Erzeuge Beispiele obiger Art und bestimme jeweils t. o

Page 220: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 220

8.7. Programmierung

per fork, d.h. duplizieren von Prozessen, identifiziert durch idz.B. zwei Prozesse/oren addieren vier Feldelemente x[1], . . . , x[4]Annahme: shared memory! Programmer: static scheduling

shared x, childs_sum, parents_sum;

unshared id, i, nprocs=2, sum=0;

id = fork(); // child gets 0, parent gets child’s pid

if (id==0) i = 1; else i = 2;

while (i<=4) { // child adds odd, parent even elements

sum += x[i]; i += nprocs;

}

if (id==0) {childs_sum = sum; exit()} else parents_sum = sum;

return childs_sum+parents_sum; // race condition

hazard = race condition, aufzulosen etwa durch Synchronisation perinit_barrier(A,nprocs)

if (id==0) childs_sum = sum; else parents_sum = sum;

barrier(A);

if (id==0) exit(); return childs_sum+parents_sum;

Page 221: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 221

Aufwand fur x[i]=g(i) sei unterschiedlich oder nicht abschatzbar.Programmer: dynamic scheduling per mutual exclusion, MUTEX

shared si, childs_sum, parents_sum, lck; // lock

unshared id, i, nprocs=2, sum=0;

si = 1;

id = fork(); // child gets 0, parent gets child’s pid

for(;;) {

mutex_lock(lck); // atomically test & set a memory cell

i = si; si +=1; // critical region

mutex_unlock(lck);

if (i>4) break;

sum += g(i);

}

if (id==0) childs_sum = sum; else parents_sum = sum;

barrier(A);

if (id==0) exit();

return childs_sum+parents_sum;

if locked: busy wait oder sleep waitz.H. Vorteile/Nachteile? o

Page 222: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 222

Duplizieren von Prozessen und deren Verwaltung ist teuer! Verwendestattdessen threads = light weight processes mit shared code, aber’eigene’ lokale Daten, PC, SP, Stack, vgl. hyperthreading

global n=10; x[n], sum, nthreads=3, si=1, lckA, lckB;

% ...

for(i=0;i<nthreads;i++) thread_create_run(&workerID[i],work());

for(i=0;i<nthreads;i++) thread_join(&workerID[i]); // barrier

return sum;

function work()

local i, mysum=0, myID=thread_self();

for(;;) {

mutex_lock(lckA);

i = si; si += 1;

mutex_unlock(lckA);

if (i>n) break; mysum += x[i];

}

mutex_lock(lckB);

sum += mysum;

mutex_unlock(lckB); // implicit thread_exit()

Page 223: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 8: Parallelisierung von Algorithmen 223

S

S

S * S *

*

a

a2

a4 a3

a8 a7 a6 a5

Russian Peasant Algorithm(im Bild n = 8 im Programm n = 32)berechne x1, x2, . . . , xn

mit einem thread/Multiplikation

global x, y[1..32]; // compute y[i] = x^i

% ...

local n=1, i, k; y[1] = x;

for(k=1;k<=5;k++) { // 5 = ld(32)

for(i=1;i<=n;i++) thread_create(mult(),n); // pass n to mult

// threads generated with thread id = 1,2,...,n

while (thread_join()==0); // barrier

n *= 2;

}

function mult(int n)

local i=thread_self();

y[i+n] = y[i]*y[n];

Page 224: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

224

9. Vektor-Prozessor-Systeme (SIMD)

z.B. Matrix-Multiplikation C = AB mit cij =∑nk=1 aikbkj

skalar processing

for(i=1; i<=n; i++)

for(j=1; j<=n; j++)

{

c[i][j]=0;

for(k=1; k<=n; k++)

c[i][j]+=a[i][k]*b[k][j];

}

Page 225: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 225

9.1. vector processing (per pipelining oder n ALUs)

for(i=1; i<=n; i++)

{

parfor(j=1; j<=n; j++) c[i][j]=0;

for(k=1; k<=n; k++)

parfor(j=1; j<=n; j++)

c[i][j]+=a[i][k]*b[k][j];

}

zeilenweise parallel

Page 226: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 226

9.2. parallel processing (per n parallel processes/processors)

for(j=1; j<=n; j++)

fork (j)

{

for(i=1; i<=n; i++)

{

c[i][j]=0;

for(k=1; k<=n; k++)

c[i][j]+=a[i][k]*b[k][j];

}

}

join(n);

jeder Prozess berechnet eine Spalte:zeilenweise parallel

Page 227: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 227

9.3. pipelining within/across operations

z.B.pipelined fadd = (compare exponents, shift significand, add signifi-cands, normalize)

pipelining across operations, chaining, d.h. unmittelbare Weitergabevon Zwischen-Ergebnissen an functional units ohne Speicherung derZwischen-Ergebnisse in (Vektor-) Registern

z.B. in CRAYs etwa bei a~x+ ~y (sAXPY, dAXPY)

V1=X

V2=Y ; can

V3=a*V1 ; be

V4=V2+V3 ; chained

C=V4

Page 228: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 228

9.4. Beispiel: IBM 3090 Vector Facility

• Vektor-Instruktionen vermindern den Schleifen-Overhead (vgl.loop unrolling/unfolding)

• Vektor-Operationen pipelined oder parallel

• Zwischenergebnisse in Vektor-Registern vermeiden Speicher-Zu-griffe

Skalar-Prozessor mit Skalar-Registern (Sr) wird um Vektor-Prozessormit Vektor-Registern (Vr) erganzt! (sw-kompatibel)Befehlssatz ist um Vektor-Instruktionen erganzt! (unterbrechbar, vec-tor interruption index)

Vector Facility = Add on, integriert in die /370-Architektur

Page 229: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 229

• reconfigurable vector registers

1 Speicher-Zugriff pro cycle,2 read und 1 write Register pro cycle,1 ALU-Operation pro cycle.

16 Vektor-Register mit 128 32bit-Elementen oder 8 Vektor-Registermit 128 64bit-Elementen (single/double/integer), pipelined vector ALUVektor-Register fur 32bit oder 64bit integer oder floating point!

’architecture specifies’ vector registers with 8–512 elements!

relative start-up time der Vektor-ALU-pipelinevs

save/restore Vektor-Register on process switch etc.

plus vector mask register, vector status register (u.a. length), vectoractivity count (register) (timer) . . .

Page 230: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 230

• Compound Instructions

z.B. Multiply-and-Accumulate (=add) mit drei Quell-Operanden!etwa Vr=Vr*V[Mem]+Vr

accumulate instructions berechnen partielle Summen von Vektoren,wegen Latenz ’interleaved’, d.h. in speziellem Vektor-Register

partial sum0 = v0 + v4 + . . .+ v124

partial sum1 = v1 + v5 + . . .+ v125

partial sum2 = v2 + v6 + . . .+ v126

partial sum3 = v3 + v7 + . . .+ v127

in

speziellemVektor-

Register P

target vector =∑

partial sumi Stallings: non critical!

Page 231: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 231

• z.B. komplexe Multiplikation

z.B. ~a,~b,~c ∈ |Cn mit cj = aj ∗ bj ∈ |C mit |C 3 z = (<z,=z) = (zr,zi)

for(j=1; j<=n; j++)

{

cr[j]=ar[j]*br[j]-ai[j]*bi[j]; // real part

ci[j]=ar[j]*bi[j]+ai[j]*br[j]; // imaginary part

}

memory to memoryOperation Cycles

t1[j]=ar[j]*br[j] 3

t2[j]=ai[j]*bi[j] 3

cr[j]=t1[j]-t2[j] 3

t3[j]=ar[j]*bi[j] 3

t4[j]=ai[j]*br[j] 3

ci[j]=t3[j]+t4[j] 3

total 18

compound instructionsOperation Cycles

v1[j]=ar[j] 1

v2[j]=v1[j]*br[j] 1

v3[j]=ai[j] 1

v2[j]=v2[j]-v3[j]*bi[j] 1

cr[j]=v2[j] 1

v4[j]=v1[j]*bi[j] 1

v4[j]=v4[j]+v3[j]*br[j] 1

ci[j]=v4[j] 1

total 8

Page 232: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 232

register to registerOperation Cycles

v1[j]=ar[j] 1

v2[j]=br[j] 1

v3[j]=v1[j]*v2[j] 1

v4[j]=ai[j] 1

v5[j]=bi[j] 1

v6[j]=v4[j]*v5[j] 1

v7[j]=v3[j]-v6[j] 1

cr[j]=v7[j] 1

v8[j]=v1[j]*v5[j] 1

v9[j]=v4[j]*v2[j] 1

v0[j]=v8[j]+v9[j] 1

ci[j]=v0[j] 1

total 12

memory to registerOperation Cycles

v1[j]=ar[j] 1

v2[j]=v1[j]*br[j] 1

v4[j]=v3[j]*bi[j] 1

v5[j]=v2[j]-v4[j] 1

cr[j]=v5[j] 1

v6[j]=v1[j]*bi[j] 1

v7[j]=v3[j]*br[j] 1

v8[j]=v6[j]+v7[j] 1

ci[j]=v8[j] 1

total 10

Page 233: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 233

• IBM 3090 Vector Facility – Vector Instructions

Operationargtype

Vr=OP(operands), Vmr=comp(operands) resp.

add sdi Vr+Vr Vr+Mem Sr+Vr Sr+Memsub sdi Vr–Vr Vr–Mem Sr–Vr Sr–Memmult sdi Vr*Vr Vr*Mem Sr*Vr Sr*Memdiv sd Vr/Vr Vr/Mem Sr/Vr Sr/Memcomp sdi Vr op Vr Vr op Mem Sr op Vr Sr op Memmul & add sd Vr+Vr*Mem Vr+Sr*Vr Vr+Sr*Memmul & sub sd Vr–Vr*Mem Vr–Sr*Vr Vr–Sr*Memmul & acc sd P+op Vr P+op Memcomplement sdi –Vrpos/neg abs sdi ±|Vr|max/min sd Sr op Vrsll/srl lgcl op Vrand/or/xor lgcl Vr op Vr Vr op Mem Sr op Vr Sr op Mem

P = partial sum of vector: sumj =∑i mod 4=j vi, j = 0, 1, 2, 3

Page 234: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

234

10. parallele Architekturen

Ziel ist eine skalierbare, hochverfugbare, hochzuverlassige oderetwa fehlertolerante Architektur, auf der eine Anwendung, einigewenige oder beliebige Anwendungen mit moglichst maximalem, d.h.mit linearem speedup abgearbeitet werden.

Mehrere PEs bearbeiten eine gemeinsame Anwendung⇒ PEs greifen auf gemeinsame Daten zu!

• single address space/shared (global) memorysynchronization by e.g. memory locks

– uniform memory access, UMA oder symmetric multipro-cessors, SMP

– non uniform memory access, NUMA

• message passing fur PEs mit lokalem/privatem Speicher, z.B.cluster

Verbindung der PEs uber (einen) Bus oder uber ein Netzwerk!

Page 235: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 235

10.1. Klassifizierung anhand von Beispielen

• Symmetric / Shared-Memory Multiprocessors (SMP), Uni-form Memory Access (UMA)

• Digital AlphaServer 8400

• Hewlett Packard 9000

• IBM servers (PC, AS/400, RS/6000, S/390)

• Sun Microsystems Ultra Enterprise 6000

• Sun Microsystems Ultra Enterprise 10000

• Non-Uniform Memory Access (NUMA) Multiprocessors

• HP/Convex Exemplar

• Sequent NUMA-Q 2000

• Silicon Graphics Origin2000

Page 236: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 236

• Clusters

• Hewlett Packard 9000 EPS 21

• Sun Ultra Enterprise Cluster HA Server

• Massively Parallel Processors (MPP)

• Cambridge Parallel Processing Inc.’s DAP: ¨The DAP now hasan 8 bit processing element, but is still a classic SIMD MPP,with 1024 or 4096 processing elements!¨

• DOE Accelerated Strategic Computing Initiative (ASCI)

– IBM RS/6000 SP – ASCI Blue Pacific model (costing $93M)to reach 3 TeraFLOPS by December, 1998

– Intel Scalable Server – ASCI Red (9000 Pentium Procscosting $46M with 1.8 TeraFLOPS peak) reached 1 Tera-flops on December, 1996

– SGI/CRAY Origin – ASCI Blue Mountain model (3072processors costing $110M) to reach 3 TeraFLOPS in 1998

• s.a. top500

Page 237: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 237

10.2. Multiprocessor-Systeme mit gemeinsamem Bus

• gangige PEs, gangige Bus-Systeme

• caches mindern Bus-traffic, reduzieren Latenz

• cache-Koharenz etwa per MESI

PE 1 PE 2 · · · PE nm m m

cache 1 cache 2 · · · cache nm m m

gemeinsamer Busm m

Memory IO

z.B. Compac Proliant mit 4 Pentium Pro, Digital AlphaServer mit12 Alpha 21164, HP 9000 mit 4 PA8000, IBM RS/6000 mit 8 Po-werPC 604, SGI Power Challenge mit 36 MIPS R10000, SUN Enter-prise 6000 mit 30 UltraSPARC 1 usw.

Page 238: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 238

10.3. cache-Koharenz in Multiprozessor-Systemen

ein gemeinsamer Bus und globaler Speicher: per snooping protocol

Cache tag and data

Processor

Single bus

Memory I/O

Snoop tag

Cache tag and data

Processor

Snoop tag

Cache tag and data

Processor

Snoop tag

Page 239: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 239

• cache-Koharenz durch Invalidieren

event PE1 PE2 PE3start no copy no copy no copyPE1 reads clean copy no copy no copyPE2 reads clean copy clean copy no copyPE3 writes invalidated copy invalidated copy dirty copyPE2 reads invalidated copy clean copy clean copy

• cache-Koharenz durch Aktualisieren

event PE1 PE2 PE3start no copy no copy no copyPE1 reads clean copy no copy no copyPE2 reads clean copy clean copy no copyPE3 writes updated copy updated copy updated copyPE2 reads clean copy clean copy clean copy

Page 240: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 240

• cache-Koharenz

Anforderungen, Koharenz zu garantieren

• PEs write exclusively

• after a write: invalidate or update all copies

• write shared data: invalidate or update all copies

• on read miss: check other caches first

snooping protocols mit write invalidate oder write update

write invalidate writing PE invalidiert (per bus signal) alle Kopienin anderen caches und andert erst dann lokale Kopie– wie write back (nur first write is signaled)

write update/write broadcast writing PE broadcasts die neuenDaten zwecks update aller Kopien– wie write through (reduziert Latenz)

bus traffic? Vorteile/Nachteile?

Page 241: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 241

• Einfaches cache-Koharenz Protokoll

Simples cache-Koharenz write invalidate/write back Protokoll per fsm

read only cache line is clean (not written) and may be shared

read/write cache line is not clean (written, dirty), may not be shared

invalid cache line is invalid

Invalid (not valid

cache block)

Read/Write (dirty)

Read Only (clean)

)tihfietadilavnidneS(

(Writ

e back

dirty

block

tomem

ory)

Processor read miss

Processor write

Processor write miss

Processor read miss

Processor write (hit or miss)

Cache state transitions using signals from the processor

Invalid (not valid

cache block)

Read/Write (dirty)

Read Only (clean)Invalidate or

another processor has a write miss

for this block (seen on bus)

Another processor has a read miss or a write miss for this block (seen on bus);

write back old block

a.

Cache state transitions using signals from the busb.

Invalid (not valid

cache block)

Read/Write (dirty)

Read Only (clean)

)tihfietadilavnidneS(

(Writ

e back

dirty

block

tomem

ory)

Processor read miss

Processor write

Processor write miss

Processor read miss

Processor write (hit or miss)

Cache state transitions using signals from the processor

Invalid (not valid

cache block)

Read/Write (dirty)

Read Only (clean)Invalidate or

another processor has a write miss

for this block (seen on bus)

Another processor has a read miss or a write miss for this block (seen on bus);

write back old block

a.

Cache state transitions using signals from the busb.

Page 242: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 242

Generellkein Zustandsubergang on read hitZustandsubergange on read miss, write hit, write miss

read miss new block: state=read only;old block: if dirty write back to memoryremote caches with old block: state=invalid if dirty

write hit send invalidate (remote caches with block: state=invalid)write into block: state=read/write

write miss wie read miss; new block: state=read/write

• MESI/MOESI

MESI ist ein cache-Koharenz write invalidate/write back Protokoll

Modified wie read/write: dirty, no to be shared

Exclusive wie read only, aber nur genau eine Kopie

Shared wie read only, aber mehrere Kopien

Invalid wie invalid

z.H. Zustandsubergange? MOESI? (Owned = modified shared)

Page 243: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 243

© 1997, 1999, G.Q. Kenney CSC 506, Summer 1999 Page 2

Picture the MESI cache states:

Valid Data

Modified in Cache A

M

Cache A

Invalid Data

Cache B

Invalid DataSystemMemory

Valid Data

Shared in Cache A

S

Cache A

Valid Data

Cache B

Valid Data

Valid Data

Exclusive in Cache A

E

Cache A

Invalid Data

Cache B

Valid Data

Invalid Data

Invalid in Cache A

I

Cache A

Don't Care

Cache B

Don't Care

SI

SystemMemory

SystemMemory

SystemMemory

Page 244: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 244

Coherency & Synchronization Architecture of Parallel Computers Page 3

MESI State Diagram

Invalid Shared

Modified Exclusive

RH

SHR

RHRH

SHR

WH

SHI

RME

Read

SHI

RMS Read

SHR

Push WH

Invalidate

WMSHI

Push

WH

LRU

Push

Invalidate

Read

Events:

RH = Read HitRMS = Read miss, sharedRME = Read miss, exclusiveWH = Write hitWM = Write missSHR = Snoop hit on readSHI = Snoop hit on invalidateLRU = LRU replacement

Bus Transactions:

Push = Write cache line back to memory

Invalidate = Broadcast invalidateRead = Read cache line from

memory

Events:RH = Read HitRMS = Read miss, sharedRME = Read miss, exclusiveWH = Write hitWM = Write missLRU = LRU replacement

Snoop Events:SHR = Snoop hit on readSHI = Snoop hit on invalidate

Bus Transactions:Push = Write back to memoryInvalidate = Broadcast invalidateRead = Read from memory

Page 245: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 245

10.4. Verbindungsstrukturen

• Beispiele

bus

PE PE PE PE PE

mem grid

star

PE

PE

PE

PE

PE

PE

ring

PE

PE

PE

PE

PE

PE

Page 246: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 246

torus crossbar PE

m

PE

m

PE

m

PE

m

PE

m

PE

m

complete

PE

PE

PE

PE

PE

PE

hypercube dim=0 dim=10 1

dim=2

00 01

10 11

dim=3

000 001

010 011

100 101

110 111

Page 247: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 247

c. Omega network switch box

A

B

C

D

P0

P1

P2

P3

P4

P5

P6

P7

a. Crossbar b. Omega network

P0

P1

P2

P3

P4

P5

P6

P7

vgl. z.B.www.top500.org/2007 overview recent supercomputers/shared memory mimd machines

basierend aufwww.top500.org/2007 overview recent supercomputers/main architectural classes

Page 248: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 248

Page 249: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 249

• Merkmale einschlagiger Verbindungsstrukturen

Qualitative Merkmale

• Skalierbarkeit

Quantitative Merkmale

• Durchmesser = langste Weglange

• # ports pro PE

• # switches in Verbindungsstruktur

• total bandwidth = # links × link-bandwidth

• bisection bandwidth

• (min/average/max) Latenz

• Fehlertoleranz = # verschiedene Wege

Page 250: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 10: parallele Architekturen 250

Sei n = # PEs. Alle links seien bidirectional.

Topologie skalierbar Durchmesser #ports #switches # linksBus ja 1 1 – 1 oder20n− 1Ring ja n 2 – n− 1Stern ja 2 1 – n√

n×√n-Gitter ja 2

√n− 2 4 n ? 2n ?

complete nein 1 n− 1 – 12n(n− 1)

ldn-hypercube nein ldn ldn n ldn 12n ldn

crossbar ja 1 1 n2 2ncrossbarh stages

ja 2h+ 1 hhC fur C = h

√n

C × C-crossbars2hC

Omega ja ldn 4 2n ldn oder21 n2 ldn

mehr-stufig ja log n 1 n ldn n log nBenes ja 2 log n− 1 1 n(ldn− 1/2) n(2 ldn− 1)

21ja nach Auslegung

Page 251: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

251

11. Addenda

11.1. Addendum in 2003: top 500

www.top500.org, s.a. c’t ≈14/2003# brand computer1 NEC Earth Simulator2 HP ASCI-Q – AlphaServer 1,25 GHz3 Linux NetworX MCR Linux Cluster XEON 2,4GHZ, Quadrics4 IBM ASCI-White SP Power3, 375MHz5 IBM SP Power3, 375MHz 16way

24 IBM IBM Regatta, Power4, 1,3GHz29 Hitachi Hitachi SR 8000-F133 NEC NEC-SX-6 (6 proc) / 192M24

# TFLOPS Betreiber Jahr N1 35,860 Earth Simulation Center, Yokohama, JP 2002 51202 13,880 Los Alamos Natl. Lab, USA 2002 81923 7,634 Lawrence Livermore Natl. Lab, USA 2002 23044 7,304 Lawrence Livermore Natl. Lab, USA 2000 81925 7,304 NERSC, LBNL, USA 2002 6656

24 2,050 MPI, Garching 2002 76829 1,653 Leibniz-RZ, Munchen 2002 16833 1,484 Dt. Klima-RZ, DKRZ 2003 192

Page 252: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 252

11.2. Addendum in 2004: announced in 2004

vgl. www.top500.org

ASCI =DOE’s Accelerated Strategic Computing InitiativeAdvanced Simulation and Computing Program

• ASCI Purple im Auftrag des DOE, am Lawrence LivermoreNational Laboratory: IBM, 12544 Power5 Prozessoren, 50 TBHaupt-Speicher, 2 PB Festplatten-Speicher, 100 TFLOPS, 156TB/s Speicher-Bandbreite (31200 DVD-Filme/s) und 12,5 TB/sKommunikationsbandbreite

• IBM Blue Gene/L: fur physikalische, biologische und metereo-logische Simulationen; ca 130000 procs, ca 367 TFLOPS, Linux

• IBM Blue Gene: fur Faltung großer Eiweiß-Molekule in der Gen-Technik; SMASH (simple, many and self-healing): 1 Mio procs,8 Mio parallel threads, 1 PFLOPS; jeweils als 32×32×32 = 215

Wurfel

Page 253: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 253

11.3. Addendum in 2005: top 500

s.a. c’t 14/2005, S.18; Rmax = maximal LINPACK performanceRechner Betreiber Land rank procs Rmax

11/04 TFlop/s

BlueGene LLNL/DOE USA 1 65536 PowerPC440, 700MHz 136,7BlueGene IBM, T.J.Watson USA – 40960 PowerPC440, 700MHz 91,3Columbia NASA USA 2 10160 Itanium 2, 1.6GHz 51,9Earth Simulator Earth Simulation Center Japan 3 5120 NEC SX6 35,9MareNostrum Barcelona SCC Spain 4 4800 PowerPC970, 2.2GHz 27,9BlueGene ASTRON/Uni Groningen NL – 12288 PowerPC440, 700MHz 27,5Thunder LLNL USA 7 4096 Itanium 2, 1.4 GHz 19,9BlueGene Ecole Polytec. Lausanne CH – 8192 PowerPC440, 700MHz 18,2BlueGene JAIST Japan – 8192 PowerPC440, 700MHz 18,2Cray Red Storm Oak Ridge NL USA – 500 Opteron, 2GHZ 15,2

unter www.top500.org s.a.

• home: The Linpack benchmark can now be run using HPL,A Portable Implementation of the High-Performance Linpack Benchmark

for Distributed-Memory Computers

• home: lists, list statistics – since June 1995

• home: highlights, trends

• home: Overview of Recent Supercomputers

• InFocus: Literatur, upcoming supercomputers etc.

Page 254: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 254

11.4. Addendum in 2006: top 500

s.a. c’t 15/2006, S.18; Rmax = maximal LINPACK performanceRechner Betreiber Land rank procs Rmax

11/05 TFlop/s

BlueGene DOE/LLNL USA 1 131072 PowerPC440, 700MHz 280,6BlueGene IBM, T.J.Watson USA 2 40960 PowerPC440, 700MHz 91,3ASC purple DOE/LLNL USA 3 12208 PowerS, 1.9GHz 75,8Columbia NASA USA 4 10160 Itanium2, 1,6GHz 51,9Tera-10 Comm.Energ.Atom. France – 8704 Itanium2, 1,6GHz 42,9Thunderbird Sandia Natl.Lab. USA 5 9024 Xeon, 3,6GHz 38,3TSUBAME Tokyo IT Japan – 10368 Opteron, 2,6GHz 38,2JUBL,BlueGene FZ Julich BRD 6 16384 PowerPC440, 700MHz 37,3Cray Red Storm Oak Ridge N.L. USA 10 10880 Opteron, 2,4GHz 36,2Earth Simulator Earth Simulation Ctr Japan 7 5120 NEC SX6 35,9

www.top500.org: The TOP500 table shows the 500 most powerfulcommercially available computer systems known to us.

Die Liste stellt ein halbjahrliches ranking dar. Sie ist unter diversenKriterien durchsuchbar. Es gibt ein Archiv alter Listen.

www.top500.org bietet damit den Herstellern von Super-Computerneine Buhne. Werbung! Die veroffentlichten technischen Details lassenaber auch trends im high performance computing, HPC erkennen.

Page 255: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 255

• statt Linpack benchmark in Zukunft HPC Challenge, HPCC ?

• wohl haufig nur ’transient’ zusammengestellte Super-Computer

• clusters, clouds . . .

• FPGA-Beschleuniger, cell-Prozessoren, GPGPUs . . .

• s. InFocus: Literatur, upcoming supercomputers etc.

Page 256: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 256

11.5. Addendum in 2007: cell-Prozessor

• entwickelt seit 2000 von IBM, Sony, Toshiba

• Ziel: 100-fache PS2-Leistung

• gaming, multi media, real time responsiveness

• von IBM: 90nm-Prozess, SiliconOnInsulator, low-k dielectrics,copper interconnects, Architektur22

B hardware performance and efficiency

• memory latency & -bandwidth (”memory wall/gap“): DRAM

latencies ↗, = hundreds of multi-GHz processor cycles = athousand of (multi-) processor (with shared memory) cycles;Spekulation ist kein Ausweg

• power: improve power efficiency along with performance

• Frequenz-Steigerungssackgasse (kurzere cycles⇒ immer langerepipelines ⇒ immer hohere penalties)

22 Kahle et al: Introduction to the Cell multiprocessor; IBM J. Res.&Dev. Vol49, No 4/5, July/Sept. 2005 http://researchweb.watson.ibm.com/journal/rd/494/kahle.html

Page 257: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 257

B real time responsiveness to user and network

”keep the players satisfied!“

• support real time OS

• support communication oriented workload

• variety of e.g. streaming standards ⇒ flexibility and program-mability of acceleration

• security, DRM, privacy

B Applicability to a wide range of platforms

long term 64bit Broadband Architecture23 + LINUX-based softwaredevelopment environment = software development community

B Introduction in 2005

Power Architecture = basis for Cell

23 s.a. http://www-306.ibm.com/chips/techlib/techlib.nsf/products/Cell

Page 258: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 258

B Design Concept and Architecture

Cell = 64bit Power + synergistic processors + DMA + memory flow control

first generation Cell = dual issue 64bit Power processor element, PPE+ 8 synergistic processor elements, SPE+ on chip memory controller + on chip IO controller

� A high-bandwidth on-chip coherent bus and high

bandwidth memory to deliver performance on

memory-bandwidth-intensive applications and to

allow for high-bandwidth on-chip interactions

between the processor elements. The bus is coherent

to allow a single address space to be shared by the

PPEs and SPEs for efficient communication and ease

of programming.� High-bandwidth flexible I/O configurable to support

a number of system organizations, including a single-

chip configuration with dual I/O interfaces and a

‘‘glueless’’ coherent dual-processor configuration that

does not require additional switch chips to connect

the two processors.� Full-custom modular implementation to maximize

performance per watt and performance per square

millimeter of silicon and to facilitate the design of

derivative products.� Extensive support for chip power and thermal

management, manufacturing test, hardware and

software debugging, and performance analysis.� High-performance, low-cost packaging technology.� High-performance, low-power 90-nm SOI

technology.

High design frequency and low supply voltage

To deliver the greatest possible performance, given a

silicon and power budget, one challenge is to co-optimize

the chip area, design frequency, and product operating

voltage. Since efficiency improves dramatically (faster

than quadratic) when the supply voltage is lowered,

performance at a power budget can be improved by using

more transistors (larger chip) while lowering the supply

voltage. In practice the operating voltage has a minimum,

often determined by on-chip static RAM, at which the

chip ceases to function correctly. This minimum

operating voltage, the size of the chip, the switching

factors that measure the percentage of transistors that

will dissipate switching power in a given cycle, and

technology parameters such as capacitance and leakage

currents determine the power the processor will dissipate

as a function of processor frequency. Conversely, a power

budget, a given technology, a minimum operating

voltage, and a switching factor allow one to estimate a

maximum operating frequency for a given chip size. As

long as this frequency can be achieved without making

the design so inefficient that one would be better off with

a smaller chip operating at a higher supply voltage, this is

the design frequency the project should aim to achieve. In

other words, an optimally balanced design will operate at

the minimum voltage supported by the circuits and at the

maximum frequency at that minimum voltage. The chip

should not exceed the maximum power tolerated by the

application. In the case of the Cell processor, having

eliminated most of the barriers that cause inefficiency in

high-frequency designs, the initial design objective was

a cycle time no more than that of ten fan-out-of-four

Figure 1

(a) Cell processor block diagram and (b) die photo. The first generation Cell processor contains a power processor element (PPE) with a Power core, first- and second-level caches (L1 and L2), eight synergistic processor elements (SPEs) each containing a direct memory access (DMA) unit, a local store memory (LS) and execution units (SXUs), and memory and bus interface controllers, all interconnected by a coherent on-chip bus. (Cell die photo courtesy of Thomas Way, IBM Burlington.)

Powercore

On-chip coherent bus (up to 96 bytes per cycle)

SXU

LS

SXU

LSLS

SXU

LSLS

SXU

LS

Dual RambusXDR**

RambusFlexIO**

LS

SXU

LS

SXU SXU SXU

Bus interfacecontroller

Memorycontroller

L2

L1

DMA DMADMADMA DMADMA DMA DMA

PPE

SPE

(a)

(b)

Rambus XDR DRAM interfaceRambus XDR DRAM interface

PowerPowercorecore

L2L20.5 MB0.5 MB

Memory controllerMemory controller

Test and debug logicTest and debug logic

Coh

eren

t bu

sC

oher

ent

bus

Rambus XDR DRAM interface

Powercore

L20.5 MB

SPESPE SPESPESPE SPE

SPESPE SPESPESPE SPE

SPESPE SPESPESPE SPE

SPESPE SPESPESPE SPE

Memory controller

I/O controllerI/O controllerI/O controller

Rambus RRACRambus RRACRambus RRAC

Test and debug logic

Coh

eren

t bu

s

J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005

592

Page 259: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 259

• high frequency design, i.e. small number of gates per cycle ⇒(low voltage, low power) & (high frequency, high performance)

• Power architecture compatibility ⇒virtualization, multi OS support, symmetric multiprocessing

• SIMD (PPEs vector media extensions, SPEs vector instructions)

• SPEs for coherent offload: SPEs with local memory, asynchro-nous coherent DMA, large register file . . .

• high bandwith coherent bus, high bandwidth memory (singleaddress space)

• high bandwith flexible configurable IO

B High frequency & low voltage

konfligierende Ziele: performance ↗, power ↘, frequency ↗, voltage↘, area ↘An optimally balanced design operates at minimum voltage suppor-ted by the circuits and at the maximum frequency at that minimumvoltage! ⇒ 10 FO4 later 11 FO4

Page 260: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 260

B Power architecture compatibility

erleichtert Portieren von Software: existing Power applications run onCell

B SIMD

Vektorisierung ist entscheidend fur performante multi media Anwen-dungen! typische Entwicklung solcher Anwendungen

1. develop single threaded software without SIMD

2. use SIMD on PPE

3. use SIMD on SPEs

B Power processor element, PPE

• nur 23 pipeline Stufen bei halber cycle time

”short wire“= short communication delays

• dual issue – in order; two threads (cp. Intels hyperthreading)

• 32KB 1st level I-cache and D-cache, 512KB 2nd level cache

• caching is not transparent: data is lockable in 2nd level cache

Page 261: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 261

• two simultaneous threads in PPE ⇒ PPE = two-way multi-processor with shared dataflow ⇒ software sees two processingunits (all registers are duplicated etc)

• PPE = instruction unit, IU+ fixed point execution (+ load/store) unit, XU+ vector scalar (floating point) unit, VSU

– IU fetches 4 instructions per cycle per thread into bufferand dual issues to execution; nearly all combinations pos-sible; 4KB branch history table

– XU with 32 64bit registers per thread + fixed point unit +load/store unit’The load/store unit supports a non-blocking L1 D-cachewhich allows cache hits under misses.’

– VSU with 32 64bit registers per thread; vector execution= 128bit data flow with 32 128bit vector registers (2×64,4×32, 8×16, 16×8, 128×1) + FUs for simple, complex,permute and SP float operations

Power processor element, PPE: IU, XU, VSU

Page 262: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 262

Figure 2

Power processor element (a) major units and (b) pipeline diagram. Instruction fetch and decode fetches and decodes four instructions in parallel from the first-level instruction cache for two simultaneously executing threads in alternating cycles. When both threads are active, two instructions from one of the threads are issued in program order in alternate cycles. The core contains one instance of each of the major execution units (branch, fixed-point, load/store, floating-point (FPU), and vector-media (VMX). Processing latencies are indicated in part (b) [color-coded to correspond to part (a)]. Simple fixed-point instructions execute in two cycles. Because execution of fixed-point instructions is delayed, load to use penalty is limited to one cycle. Branch miss penalty is 23 cycles and is comparable to the penalty in designs with a much lower operating frequency.

Pre-decode

L1 instruction cache

Microcode

SMT dispatch (queue)

Decode

Dependency

Issue

Branch scan

Fetch controlL2

interface

VMX/FPU issue (queue)

VMXload/store/permute

VMXarith./logic unit

FPUload/store

FPUarith./logic unit

Load/storeunit

Branchexecution unit

Fixed-pointunit

FPU completionVMX completion

Completion/flush

8

4

21

2

11 1 1

111

4Thread A Thread B

Threads alternatefetch and dispatchcycles

L1 data cache

2

Fixed-point unit instruction

Branch instruction

Load/store instruction

Branch prediction

IC Instruction cacheIB Instruction bufferBP Branch predictionMC MicrocodeID Instruction decodeIS Instruction issueDLY Delay stageRF Register file accessEX ExecutionWB Write back

ID2 IS1IC1 IC2 IC3 ID1 IS2IB2 IS3IB1 ID3IC4

BP1 BP2 BP3 BP4

RF2 EX1 EX2 EX3RF1DLY EX4 IBZ IC0DLY DLY

RF1 RF2 EX1 EX2 EX3 EX4 EX5 WBDLY DLY DLY

RF1 RF2 EX1 EX3 EX4EX2 EX5 EX7EX6 EX8 WB

PPE pipeline back end

(a)

(b)

Microcode

PPE pipeline front end

Thread AThread B

Thread A

Instruction decode and issue

Instruction cache and buffer

MC1 MC2 MC3 MC4 ... MC10 MC11MC9

IU

XU

VSU

J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005

594

Power processor element, PPE: pipline

Page 263: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 263

Figure 2

Power processor element (a) major units and (b) pipeline diagram. Instruction fetch and decode fetches and decodes four instructions in parallel from the first-level instruction cache for two simultaneously executing threads in alternating cycles. When both threads are active, two instructions from one of the threads are issued in program order in alternate cycles. The core contains one instance of each of the major execution units (branch, fixed-point, load/store, floating-point (FPU), and vector-media (VMX). Processing latencies are indicated in part (b) [color-coded to correspond to part (a)]. Simple fixed-point instructions execute in two cycles. Because execution of fixed-point instructions is delayed, load to use penalty is limited to one cycle. Branch miss penalty is 23 cycles and is comparable to the penalty in designs with a much lower operating frequency.

Pre-decode

L1 instruction cache

Microcode

SMT dispatch (queue)

Decode

Dependency

Issue

Branch scan

Fetch controlL2

interface

VMX/FPU issue (queue)

VMXload/store/permute

VMXarith./logic unit

FPUload/store

FPUarith./logic unit

Load/storeunit

Branchexecution unit

Fixed-pointunit

FPU completionVMX completion

Completion/flush

8

4

21

2

11 1 1

111

4Thread A Thread B

Threads alternatefetch and dispatchcycles

L1 data cache

2

Fixed-point unit instruction

Branch instruction

Load/store instruction

Branch prediction

IC Instruction cacheIB Instruction bufferBP Branch predictionMC MicrocodeID Instruction decodeIS Instruction issueDLY Delay stageRF Register file accessEX ExecutionWB Write back

ID2 IS1IC1 IC2 IC3 ID1 IS2IB2 IS3IB1 ID3IC4

BP1 BP2 BP3 BP4

RF2 EX1 EX2 EX3RF1DLY EX4 IBZ IC0DLY DLY

RF1 RF2 EX1 EX2 EX3 EX4 EX5 WBDLY DLY DLY

RF1 RF2 EX1 EX3 EX4EX2 EX5 EX7EX6 EX8 WB

PPE pipeline back end

(a)

(b)

Microcode

PPE pipeline front end

Thread AThread B

Thread A

Instruction decode and issue

Instruction cache and buffer

MC1 MC2 MC3 MC4 ... MC10 MC11MC9

IU

XU

VSU

J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005

594

RISC = Reduced Inside Complexity

Page 264: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 264

B Synergistic processor elements, SPEs

spezifische ISA24

• 1, 2, 4, 8, 16 byte data types: byte, 12word, word, 2word, 4word

• 128bit SIMD execution unit organisation, 27 registers

• 6 Formate fur die 32bit Instruktionen mit 4–11bit OPcodes:rRR, rRRR (fma = MAC = AXPY), rRI7, rRI10, RI16, RI18

• ISA support to eliminate branches: The SPU ISA defines compare in-

structions to set masks that can be used in three operand select instructions

to create efficient conditional assignments. Such conditional assignments

can be used to avoid difficult-to-predict branches.

• hint for branch instructions, i.e. hints on branch target

• channel instructions, i.e. 128bit IO to external devices

• maskable memory addresses allow for different local memory size

24Synergistic Processor Unit Instruction Set Architecture, s.a.www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/76CA6C7304210F3987257060006F2C44

Page 265: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 265

point and load instructions take six cycles. Two-way

SIMD double-precision floating point is also supported,

but the maximum issue rate is one SIMD instruction per

seven cycles. All other instructions are fully pipelined.

To limit hardware overhead for branch speculation,

branches can be ‘‘hinted’’ by the programmer or compiler.

The branch hint instruction notifies the hardware of an

upcoming branch address and branch target, and the

hardware responds (assuming that local store slots are

available) by pre-fetching at least seventeen instructions

at the branch target address. A three-source bitwise select

instruction can be used to further eliminate branches

from the code.

The control area makes up only 10–15% of the area

of the 10-mm2 SPE core, and yet several applications

achieve near-peak performance on this processor. The

entire SPE is only 14.5 mm2 and dissipates only a few

watts even when operating at multi-GHz frequencies.

High-bandwidth on-chip coherent fabric and

high-bandwidth memory

With the architectural improvements that remove the

latency-induced limitation on bandwidth, the next

challenge is to make significant improvements in

delivering bandwidth to main memory and bandwidth

between the processing elements and interfaces within the

Figure 3

Synergistic processor element (a) organization and (b) pipeline diagram. Central to the synergistic processor is the 256-KB local store SRAM. The local store supports both 128-byte access from direct memory access (DMA) read and write, as well as instruction fetch, and a 16-byte interface for load and store operations. The instruction issue unit buffers and pre-fetches instructions and issues up to two instructions per cycle. A 6-read, 2-write port register file provides both execution pipes with 128-bit operands and stores the results. Instruction execution latency is two cycles for simple fixed-point instructions and six cycles for both load and single-precision floating-point instructions. Instruc-tions are staged in an operand-forwarding network for up to six additional cycles; all execution units write their results in the register file in the same stage. The penalty for mispredicted branches is 18 cycles.

Fixed-point instruction

Floating-point instruction

Branch instruction

Load/store instruction

Permute instruction

IF Instruction fetchIB Instruction bufferID Instruction decodeIS Instruction issueRF Register file accessEX ExecutionWB Write back

ID2 IS1IF1 IF2 IF3 ID1 IS2IB2IB1 ID3IF4

EX4EX1 EX2 EX3

EX4 EX5EX1 EX2 EX3

EX1 EX2

IF5

RF1 RF2

EX1 EX2 EX3 EX4 EX6EX4

SPE pipeline back end

(a)

(b)

SPE pipeline front end

WB

WB

WB

WBEX6

Permute unit

Load/store unit

Floating-point unit

Fixed-point unitBranch unit

Channel unit

Result forwarding and staging

Register file

Local store(256 KB)

Single-port SRAM

128B read 128B write

DMA unit

Instruction issue unit/instruction line buffer

8 bytes per cycle

16 bytes per cycle

64 bytes per cycle

128 bytes per cycle

On-chip coherent bus

J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005

596

• 256KB local memory

• coherent sophisticated DMA access to system memory

• 128bit data flow: all instructions are SIMD (wie PPE)

• max 2 instructions per cycle: fixed/floating point instructiongepaart mit load/store, permutation oder branch

• hint for branch instructions, i.e. hints on branch target:prefetching at least 17 instructions at branch target address

• SPE is only 14.5 mm2, ’only a few watts at multi GHz’

Page 266: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 266

point and load instructions take six cycles. Two-way

SIMD double-precision floating point is also supported,

but the maximum issue rate is one SIMD instruction per

seven cycles. All other instructions are fully pipelined.

To limit hardware overhead for branch speculation,

branches can be ‘‘hinted’’ by the programmer or compiler.

The branch hint instruction notifies the hardware of an

upcoming branch address and branch target, and the

hardware responds (assuming that local store slots are

available) by pre-fetching at least seventeen instructions

at the branch target address. A three-source bitwise select

instruction can be used to further eliminate branches

from the code.

The control area makes up only 10–15% of the area

of the 10-mm2 SPE core, and yet several applications

achieve near-peak performance on this processor. The

entire SPE is only 14.5 mm2 and dissipates only a few

watts even when operating at multi-GHz frequencies.

High-bandwidth on-chip coherent fabric and

high-bandwidth memory

With the architectural improvements that remove the

latency-induced limitation on bandwidth, the next

challenge is to make significant improvements in

delivering bandwidth to main memory and bandwidth

between the processing elements and interfaces within the

Figure 3

Synergistic processor element (a) organization and (b) pipeline diagram. Central to the synergistic processor is the 256-KB local store SRAM. The local store supports both 128-byte access from direct memory access (DMA) read and write, as well as instruction fetch, and a 16-byte interface for load and store operations. The instruction issue unit buffers and pre-fetches instructions and issues up to two instructions per cycle. A 6-read, 2-write port register file provides both execution pipes with 128-bit operands and stores the results. Instruction execution latency is two cycles for simple fixed-point instructions and six cycles for both load and single-precision floating-point instructions. Instruc-tions are staged in an operand-forwarding network for up to six additional cycles; all execution units write their results in the register file in the same stage. The penalty for mispredicted branches is 18 cycles.

Fixed-point instruction

Floating-point instruction

Branch instruction

Load/store instruction

Permute instruction

IF Instruction fetchIB Instruction bufferID Instruction decodeIS Instruction issueRF Register file accessEX ExecutionWB Write back

ID2 IS1IF1 IF2 IF3 ID1 IS2IB2IB1 ID3IF4

EX4EX1 EX2 EX3

EX4 EX5EX1 EX2 EX3

EX1 EX2

IF5

RF1 RF2

EX1 EX2 EX3 EX4 EX6EX4

SPE pipeline back end

(a)

(b)

SPE pipeline front end

WB

WB

WB

WBEX6

Permute unit

Load/store unit

Floating-point unit

Fixed-point unitBranch unit

Channel unit

Result forwarding and staging

Register file

Local store(256 KB)

Single-port SRAM

128B read 128B write

DMA unit

Instruction issue unit/instruction line buffer

8 bytes per cycle

16 bytes per cycle

64 bytes per cycle

128 bytes per cycle

On-chip coherent bus

J. A. KAHLE ET AL. IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005

596

B High Bandwidth: on-chip (SPE)

• local memory to local memory per DMA

B High Bandwidth: main memory

• main = system memory = Rambus XDR DRAM with two 32bit channels a 12.8GB/s vs 96byte per cycle on chip

Page 267: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 267

B High Bandwidth: IO

• configurable to support multiple high bandwidth system confi-gurations: base, 2-way, 4-way symmetric multiprocessor

Cell processor. Memory bandwidth at a low system cost

is improved on the first-generation Cell processor by

using next-generation Rambus XDR** DRAM memory

[15]. This memory delivers 12.8 GB/s per 32-bit memory

channel, and two of these channels are supported on the

Cell processor for a total bandwidth of 25.6 GB/s. Since

the internal fabric on the chip delivers nearly an order of

magnitude more bandwidth (96 bytes per cycle at peak),

there is almost no perceivable contention on DMA

transfers between units within the chip.

High-bandwidth flexible I/O

In order to build effective dual-processor systems and

systems with a high-bandwidth I/O-connected accelerator

as well as an I/O-connected system interface chip, Cell

is designed with a high-bandwidth configurable I/O

interface. At the physical layer, a total of seven transmit

and five receive Rambus RRAC FlexIO** bytes [16] can

be dedicated to up to two separate logical interfaces, one

of which can be configured to operate as a coherent

interface. Thus, the Cell processor supports multiple

high-bandwidth system configurations (Figure 4).

Full-custom implementation

The first-generation Cell processor is a highly optimized

full-custom high-frequency, low-power implementation

of the architecture [17]. Cell is a system on a chip;

however, unlike most SoCs, Cell has been designed with

a full-custom design methodology. Some aspects of the

physical design stand out in comparison with previous

full-custom efforts:

� Several latch families, ranging from a more

conventional static latch to a dynamic latch with

integrated function to a pulsed latch that minimizes

insertion delay. Most chip designs standardize on a

single latch type and do not achieve the degree of

optimization that is possible with this wide a choice.

To manage the design and timing complexities

associated with such a large number of latches, all

latches share a common block that generates the local

clocking signals that control the latch elements. The

latches support only limited use of cycle-stealing,

simplifying the design process.� Extensive custom design on the wires. Several of the

larger buses are fully engineered, controlling wiring

levels and wire placement and using noise-reduction

techniques such as wire twisting, and can be regarded

as full-custom wire-only macros. A large fraction

of the remaining wires are manually controlled

to run preferentially on specific wiring layers. With

transistors improving more rapidly than wires from

one technology to the next, more of the engineering

resource must be spent on managing and controlling

wires than in the past.� A design methodology which ensures that synthesized

(usually control logic) macros are modified, timed, and

analyzed at the transistor level consistently with custom

designs. This allows macros to be changed smoothly

from synthesized to custom. Among other

advantages, this requires all macros to have

corresponding transistor schematics.� Extensive chip electrical and thermal engineering for

power distribution and heat dissipation. Whereas

previous projects would do the bulk of this analysis

on the basis of static models, this project required

pattern (program)-dependent analysis of the power

dissipation and used feedback from these analysis

tools to drive the design. Fine-grained clock gating

was utilized to activate sections of logic only when

they were needed. Multiple thermal sensors in the chip

Figure 4

Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)

Cellprocessor

Cellprocessor

XDR XDR

XDR XDR XDR XDR

IOIF BIF IOIF

XDR XDR XDR XDR

BIF

BIFSwitch

Cellprocessor

Cellprocessor

XDR XDR XDR XDR

Cellprocessor

Cellprocessor

Cellprocessor

(a)

(b)

(c)

IOIF

IOIF

IOIF

IOIF

IOIF0 IOIF1

IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.

597

Cell processor. Memory bandwidth at a low system cost

is improved on the first-generation Cell processor by

using next-generation Rambus XDR** DRAM memory

[15]. This memory delivers 12.8 GB/s per 32-bit memory

channel, and two of these channels are supported on the

Cell processor for a total bandwidth of 25.6 GB/s. Since

the internal fabric on the chip delivers nearly an order of

magnitude more bandwidth (96 bytes per cycle at peak),

there is almost no perceivable contention on DMA

transfers between units within the chip.

High-bandwidth flexible I/O

In order to build effective dual-processor systems and

systems with a high-bandwidth I/O-connected accelerator

as well as an I/O-connected system interface chip, Cell

is designed with a high-bandwidth configurable I/O

interface. At the physical layer, a total of seven transmit

and five receive Rambus RRAC FlexIO** bytes [16] can

be dedicated to up to two separate logical interfaces, one

of which can be configured to operate as a coherent

interface. Thus, the Cell processor supports multiple

high-bandwidth system configurations (Figure 4).

Full-custom implementation

The first-generation Cell processor is a highly optimized

full-custom high-frequency, low-power implementation

of the architecture [17]. Cell is a system on a chip;

however, unlike most SoCs, Cell has been designed with

a full-custom design methodology. Some aspects of the

physical design stand out in comparison with previous

full-custom efforts:

� Several latch families, ranging from a more

conventional static latch to a dynamic latch with

integrated function to a pulsed latch that minimizes

insertion delay. Most chip designs standardize on a

single latch type and do not achieve the degree of

optimization that is possible with this wide a choice.

To manage the design and timing complexities

associated with such a large number of latches, all

latches share a common block that generates the local

clocking signals that control the latch elements. The

latches support only limited use of cycle-stealing,

simplifying the design process.� Extensive custom design on the wires. Several of the

larger buses are fully engineered, controlling wiring

levels and wire placement and using noise-reduction

techniques such as wire twisting, and can be regarded

as full-custom wire-only macros. A large fraction

of the remaining wires are manually controlled

to run preferentially on specific wiring layers. With

transistors improving more rapidly than wires from

one technology to the next, more of the engineering

resource must be spent on managing and controlling

wires than in the past.� A design methodology which ensures that synthesized

(usually control logic) macros are modified, timed, and

analyzed at the transistor level consistently with custom

designs. This allows macros to be changed smoothly

from synthesized to custom. Among other

advantages, this requires all macros to have

corresponding transistor schematics.� Extensive chip electrical and thermal engineering for

power distribution and heat dissipation. Whereas

previous projects would do the bulk of this analysis

on the basis of static models, this project required

pattern (program)-dependent analysis of the power

dissipation and used feedback from these analysis

tools to drive the design. Fine-grained clock gating

was utilized to activate sections of logic only when

they were needed. Multiple thermal sensors in the chip

Figure 4

Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)

Cellprocessor

Cellprocessor

XDR XDR

XDR XDR XDR XDR

IOIF BIF IOIF

XDR XDR XDR XDR

BIF

BIFSwitch

Cellprocessor

Cellprocessor

XDR XDR XDR XDR

Cellprocessor

Cellprocessor

Cellprocessor

(a)

(b)

(c)

IOIF

IOIF

IOIF

IOIF

IOIF0 IOIF1

IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.

597

Cell processor. Memory bandwidth at a low system cost

is improved on the first-generation Cell processor by

using next-generation Rambus XDR** DRAM memory

[15]. This memory delivers 12.8 GB/s per 32-bit memory

channel, and two of these channels are supported on the

Cell processor for a total bandwidth of 25.6 GB/s. Since

the internal fabric on the chip delivers nearly an order of

magnitude more bandwidth (96 bytes per cycle at peak),

there is almost no perceivable contention on DMA

transfers between units within the chip.

High-bandwidth flexible I/O

In order to build effective dual-processor systems and

systems with a high-bandwidth I/O-connected accelerator

as well as an I/O-connected system interface chip, Cell

is designed with a high-bandwidth configurable I/O

interface. At the physical layer, a total of seven transmit

and five receive Rambus RRAC FlexIO** bytes [16] can

be dedicated to up to two separate logical interfaces, one

of which can be configured to operate as a coherent

interface. Thus, the Cell processor supports multiple

high-bandwidth system configurations (Figure 4).

Full-custom implementation

The first-generation Cell processor is a highly optimized

full-custom high-frequency, low-power implementation

of the architecture [17]. Cell is a system on a chip;

however, unlike most SoCs, Cell has been designed with

a full-custom design methodology. Some aspects of the

physical design stand out in comparison with previous

full-custom efforts:

� Several latch families, ranging from a more

conventional static latch to a dynamic latch with

integrated function to a pulsed latch that minimizes

insertion delay. Most chip designs standardize on a

single latch type and do not achieve the degree of

optimization that is possible with this wide a choice.

To manage the design and timing complexities

associated with such a large number of latches, all

latches share a common block that generates the local

clocking signals that control the latch elements. The

latches support only limited use of cycle-stealing,

simplifying the design process.� Extensive custom design on the wires. Several of the

larger buses are fully engineered, controlling wiring

levels and wire placement and using noise-reduction

techniques such as wire twisting, and can be regarded

as full-custom wire-only macros. A large fraction

of the remaining wires are manually controlled

to run preferentially on specific wiring layers. With

transistors improving more rapidly than wires from

one technology to the next, more of the engineering

resource must be spent on managing and controlling

wires than in the past.� A design methodology which ensures that synthesized

(usually control logic) macros are modified, timed, and

analyzed at the transistor level consistently with custom

designs. This allows macros to be changed smoothly

from synthesized to custom. Among other

advantages, this requires all macros to have

corresponding transistor schematics.� Extensive chip electrical and thermal engineering for

power distribution and heat dissipation. Whereas

previous projects would do the bulk of this analysis

on the basis of static models, this project required

pattern (program)-dependent analysis of the power

dissipation and used feedback from these analysis

tools to drive the design. Fine-grained clock gating

was utilized to activate sections of logic only when

they were needed. Multiple thermal sensors in the chip

Figure 4

Cell system configuration options: (a) Base configuration for small systems. (b) “Glueless” two-way symmetric multiprocessor. (c) Four-way symmetric multiprocessor. (IOIF: Input–output interface; BIF: broadband interface.)

Cellprocessor

Cellprocessor

XDR XDR

XDR XDR XDR XDR

IOIF BIF IOIF

XDR XDR XDR XDR

BIF

BIFSwitch

Cellprocessor

Cellprocessor

XDR XDR XDR XDR

Cellprocessor

Cellprocessor

Cellprocessor

(a)

(b)

(c)

IOIF

IOIF

IOIF

IOIF

IOIF0 IOIF1

IBM J. RES. & DEV. VOL. 49 NO. 4/5 JULY/SEPTEMBER 2005 J. A. KAHLE ET AL.

597

Page 268: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 268

B Full custom implementation/optimization

• latch families

• custom design of wires

• design methodology (analysis at transistor level)

• power distribution and heat dissipation engineering:fine grained clock gating, multiple thermal sensors

• modular design allows for multiple PPEs and SPEs

• multiple clock grids

• power-on reset, self test, test support

• packaging

• low power CMOS SOI

Page 269: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 269

B Programming

• Cell runs 32bit and 64bit Power and PowerPC applications!

• inter processor communication and data movement facilities ma-ke a wide range of programming models feasible!

– function offload to one or more SPEs specified by∗ programmer/hints to the compiler/compiler

– device extension, e.g. SPE in isolated mode for DRM, pri-vacy/security

– PPE is host for SPEs which perform tasks in parallel(based both on shared memory or message passing)∗ parallelized/scheduled by programmer/compiler

– streaming models: PPE acts as streaming controller, SPEsas stream data processors in a pipeline

– shared memory multiprocessor model: per DMA: sharedmemory ↔ local store; per load/store: local store ↔ regis-ters; locking per DMA lock line command

– asymmetric thread runtime model: on PPEs or SPEs, mostflexible

Page 270: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 270

B Benchmarking

benchmarking25 according to objectives

• matrix multiplication

• LINPACK

• MPEG2 video decoding

• triangle transform and lightning in the graphic render pipeline

• cryptography: AES, DES, MD5, SHA-1, SHA-256

25 Chen et al: Cell Broadband Engine Architecture and its first implementation– A Performance View; 2005www-128.ibm.com/developerworks/power/library/pa-cellperf

Page 271: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 271

11.6. Addendum in 2010: Core i2000

siehe Christof Windeck: Intels neue Prozessor-Generation Core i-2000alias Sandy Bridge; c’t 3/2011, S. 94-99 Core i3-2000, i5-2000 undi7-2000

in 32nm-Technik gefertigte desktop- und mobil-Versionen im neuenSockel LGA1155 fur neue mainboards mit geanderter Stromversor-gung und neuen Chipsatzen

GPUcore core core core

shared L3 cache, LLCMMU

GPU = Processor graphicsLLC = last level cacheMMU = System Agent

GPU fur 1-2 displays, System Agent = Speicher-, PCI und IO-Controllersowie Taktsteuerung, Einheiten, insbesondere jeder Kern uber Ring-Bus vernetzt (mit ’1000 Signalleitungen in eigenem layer’): max 300GB/s.GPU nutzt auch den LLC: ’das RAM kann haufiger schlafen’.

Unterstutzten Advanced Vector Extensions, AVX, d.h. 256bit breiteArgumente vs 128bit in SSE4: βSSE→AVX ≈ 1.86 fur Linpack aber nurunter Win7SP1, Linux, aber fused multiply add, FMADD erst 2012

Page 272: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 272

Mit AVX einhergehend Verbesserungen bei load/store units, branchprediction, (großerer?) Puffer fur µ-Ops. Aber: AVX-units ’bearbeiteneinige SSE-Instruktionen langsamer als die Vorganger’.

Aus einem externen 100MHz Taktgeber werden alle Takte intern er-zeugt – kein Ubertakten. Wie bisher Turbo-Boost, jetzt aber mit ein-gebautem Ubertakten – konfigurierbar: ’wir haben es jedenfalls raschgeschafft, soviel falsch zu machen, daß das System erst nach BIOS-reset per CMOS clear wieder startete’Turbo Boost auch fur GPU; LLC per Prozessor-Takt.

Automatisches Umschalten zwischen GPU und externer Grafikkarte.GPU mit 6 oder 12 execution units, EUs unterstutzt DirectX 10.1 undOpenCL 1.1. GPU mit separatem Hardware encoder fur das Transco-dieren von Video-streams, z.B. 97min MPEG4 HD-Video mit 8Mbit/sund AAC-Stereo-Ton in iPod-Format per QuickSync in 7’15”, per Me-diaConverter 7 in 25’, auch 3D-Unterstutzung, aber keine 3D-Spieleauf 120Hz displays

PCIe 2.0 mit 500MB/s/lane, sollte u.a. fur USB 3.0 reichen, c’t mißt

Page 273: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 273

197MB/s lesend, ca die Halfte schreibend, je nach Chipsatz 12-14USB 2.0 ports, SATA-6G fur Platten > 2TB, setzt aber notwendigUEFI 2.0 voraus.

Chipsatze mit Fernwartung (Active Management Technology, AMT ),TPM (Trusted Execution Technology), Virtualisierung . . .

Performance-Messungen per SPEC CPU2006, Cinebench, BaPCo SYS-mark 2007, Office, gcc, zip etc. also alles ohne AVX, siehehttp://www.heise.de/ct/inhalt/2011/03/94/ bishttp://www.heise.de/ct/inhalt/2011/03/99/.

Fazit: viel Rechenleistung fur’s Geld, Preis/Leistung besser als beiVorganger-Prozessoren und besser als bei AMD!integrierte GPU ’konkurriert mit 40Euro-Grafikkarten’, vorteilhaft furnotebooks und Buro-Computer, GPU reicht nicht fur gamer.

Page 274: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 274

11.7. Addendum in 2011: K Computer

www.top500.org

The K Computer, built by Fujitsu, currently combines 68544 SPARC64VIIIfx CPUs, each with eight cores, for a total of 548,352 cores - almosttwice as many as any other system in the TOP500. The K Computeris also more powerful than the next five systems on the list combined.

The K Computers name draws upon the Japanese word ’Kei’ for 1016,representing the system’s performance goal of 10 petaflops. RIKEN isthe Institute for Physical and Chemical Research. Unlike the Chinesesystem it displaced from the No. 1 slot and other recent very largesystem, the K Computer does not use graphics processors or otheraccelerators. The K Computer is also one of the most energy-efficientsystems on the list.

Some Other Highlights from the newest List:

• Intel continues to provide the processors for the largest share(77.4 percent) of TOP500 systems. Intels Westmere processorsincreased their presence in the list strongly with 169 systems,

Page 275: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 275

compared with 56 in the last list.

• Quad-core processors are used in 46.2 percent of the systems,while already 42.4 percent of the systems use processors withsix or more cores.

Tracking Changes

• The entry level to the list moved up to the 40.1 Tflop/s mark onthe Linpack benchmark, compared to 31.1 Tflop/s six monthsago.

• The last system on the newest list was listed at position 262 sixmonths ago. This turnover rate has steadily increased duringthe last few lists and is now above average.

Some Final Notes on Power Consumption

• Average power efficiency is 248 Mflops/W (up from 219 Mflops/Wsix months ago and 195 Mflops/watt one year ago).

• The No. 1 system, the K Computer, also reports the highesttotal power consumption of 9.89 MW.

Page 276: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 276

Site RIKEN Advanced Institute for Computational Science (AICS)System Family Fujitsu ClusterSystem Model K computerComputer K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnectVendor FujitsuApplication area ResearchInstallation Year 2011Operating System LinuxInterconnect CustomProcessor SPARC64 VIIIfx 2000 MHz (16 GFlops)

The K system does not have GPUs, because they really would notadd to the performance of the system. The most important part isthe direct network connection, which currently is based on Infiniband.The individual speed of the nodes is not that important, as long astheir connection is.

Actually most of the porting work goes into parallelisation. Adaptingit to the processor and operating system is only minor work.

K computer is a huge system with over 500.000 nodes. About every

Page 277: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 277

15 hours a node fails. So they are working on low level rerouting ofnodes so that applications do not fail.

http://en.wikipedia.org/wiki/K computer:On the 20th of June 2011, K topped the LINPACK benchmark withthe performance of 8.162 petaflops with a computing efficiency ratioof 93.0%, making it the fastest supercomputer in the world.

The system is still under construction and enters service in Novem-ber 2012 with 864 cabinets. Currently it uses 68,544 2.0GHz 8-coreSPARC64 VIIIfx processors packed in 672 cabinets, for a total of548,352 cores, manufactured by Fujitsu with 45 nm CMOS processtechnology. Each cabinet contains 96 compute nodes in addition to 6IO nodes. Each compute node contains a single processor and 16 GBof memory. Its water cooling system minimizes failure rate and powerconsumption.

The K computer uses a special six-dimensional torus network inter-connect called Tofu, and a Tofu-optimized Message Passing Interfacebased on the open-source Open MPI library. Users can create appli-

Page 278: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 278

cation programs adapted to either a one-, two-, or three-dimensionaltorus network.

The system adopts a two-level local/global file system with parallel/-distributed functions, and provides users an automatic staging func-tion for moving files between global and local file systems. Fujitsudeveloped an optimized parallel file system based on Lustre, calledFujitsu Exabyte File System, scalable to several hundred petabytes.

The K also reports the highest total power consumption of 9.89 MW.The K computer’s performance equals

”one million linked desktop

computers“. Its power usage is roughly that of 10,000 houses and itsannual running costs are US$10 million.

http://www.golem.de/1106/84337.html

Die Wasserkuhlung des schnellsten Rechners der Welt: Dieser der-zeit schnellste Supercomputer wird durch eine ausgeklugelte Was-serkuhlung auf Betriebstemperatur gehalten. Die einzelnen Nodes desK-Computers sind aus Rackeinschuben mit nur einer Hoheneinheitaufgebaut. Das ist die Grundlage, um die insgesamt uber eine halbe

Page 279: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 279

Million Prozessorkerne noch bei vertretbaren Latenzen zu vernetzen.Jeder Einschub enthalt vier Sparc-VIII-CPUs mit je acht Kernen.

Ein Board des K-Computers misst nur eine Hoheneinheit. Von denublicherweise rund 40 Hoheneinheiten eines Racks nutzt Fujitsu nur24 fur die Nodes, sie sind oben und unten in Einheiten von je 12Einschuben untergebracht. In der Mitte sitzen Stromversorgung undNetzanbindung, beide Komponenten werden per Luft gekuhlt. Mitden 24 Nodes mit je vier Achtkern-CPUs ergeben sich 768 Kerne proRack.

Um diese hohe Dichte zu erreichen, muss auch die Wasserkuhlungsehr flach gestaltet werden. Fur jeden Node gibt es daher einen zen-tralen Zu- und Ablauf, auf den Bildern als

”Water Cooling Module“

bezeichnet. Die Pumpen sind fur jedes Rack zentral gehalten. Dahersind die Nodes auch leicht gedreht in die Racks gesetzt, um Platz furdie Wasserleitungen zu schaffen.

Jede der vier CPUs und auch die vier Vernetzungsmodule besitzeneinen eigenen Kupferkuhler - nur der Speicher bleibt luftgekuhlt. Uber

Page 280: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 280

die Art der Verschaltung der Prozessorsockel und der Nodes ist nochwenig bekannt, das japanische Forschungszentrum Riken in Kobe, woder K-Computer steht, bezeichnet es als

”Tofu Interconnect“. Auch die

Tabellen von top500.org verzeichnen fur die Vernetzung nur custom-es handelt sich also um ein Design, das fur diese Maschine entwickeltwurde.

www.weblearn.hs-bremen.de/risse/RST/docs/Fujitsu/when-high-performance-computing-meets-energy-efficiency.pdf

www.hotchips.org/uploads/archive22/HC22.24.510-1-Toyoishima-Tofu-icc.pdf

www.wseas.us/e-library/conferences/2011/Paris/ECC/ECC-21.pdf

www.weblearn.hs-bremen.de/risse/RST/docs/Fujitsu/programming-on-k-computer.pdf

Page 281: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 281

11.8. Addendum in 2012: Raspberry Pi

www.raspberrypi.org www.raspberrypi.org/faqs

elinux.org/RaspberryPiBoard List of single-board computers

Erste-Schritte-mit-dem-Raspberry-Pi-1573973.html raspberrycenter.de

http://de.wikipedia.org/wiki/Raspberry Pi:Der Raspberry Pi ist ein kreditkartengroßer Einplatinen-Computer,der von der Raspberry Pi Foundation entwickelt wird. Der PC, der zuExperimenten anregen soll, wird in zwei Versionen, A fur 18e und B26e, angeboten.

Page 282: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 282

Die Platine enthalt im Wesentlichen das Ein-Chip-System BCM 2835von Broadcom mit dem 700-MHz-Hauptprozessor ARM1176JZF-S so-wie 256 MB Arbeitsspeicher. Das Modell B hat zudem Ethernet undeinen zweiten USB-Anschluss. Linux und andere Betriebssysteme, diedie ARM-Architektur unterstutzen, konnen installiert werden. EineFestplatte ist nicht vorgesehen. Stattdessen konnen Speicherkarten(SD bzw. MMC) als nicht-fluchtiger Speicher benutzt werden.Auf Versuchsplatinen wurde gezeigt, dass die Desktop-Umgebung LX-DE unter Debian sowie Quake 3 und H.264-Videos mit einer Auflosungvon 1080p via HDMI funktionieren.

Anvisierter Preis US$25 (GBP £16) / US$35 (GBP £22)

Große Große einer Kreditkarte 85,60 mm × 53,98 mm × 17 mm

SoC Broadcom BCM2835

CPU ARM1176JZF-S (700 MHz)

GPU Broadcom VideoCore IV

SDRAM 256 MB

USB 2.0 Anschlusse 1 / 2 (uber integrierten Hub)

Videoausgabe Composite, HDMI

Page 283: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 283

Tonausgabe 3.5 mm Klinkenstecker, HDMI

Nicht-fluchtiger Speicher SD/MMC/SDIO Kartenleser

Netzwerk - / 10/100 MBit Ethernet-Controller (LAN9512 von SMSC)

Bussysteme Bis zu 16 GPIO Pins, SPI, I2C, UART

Echtzeituhr –

Energieverbrauch 500mA, (2,5 Watt) / 700mA, (3,5 Watt)

Stromquelle 5V Micro USB Anschluss, alternativ 4x AA Batterien

Betriebssysteme GNU/Linux (Debian, Fedora, Arch Linux), RISC OS

B Prozessor

Der Prozessor nutzt den ARMv6-Instruktionssatz. Des Weiteren wirdder ARM-Thumb-Instruktionssatz unterstutzt. Der Speicher ist ubereinen 64 bit breiten Bus angebunden und wird direkt als Package onPackage auf den Prozessor gelotet.http://en.wikipedia.org/wiki/Raspberry Pi: Broadcom don’t release a fulldatasheet for the BCM2835, which is the chip at the heart of theRaspberry Pi.

Page 284: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 284

www.broadcom.com/products/BCM2835:High Definition 1080p Embedded Multimedia Applications ProcessorThe BCM2835 is a cost-optimized, full HD, multimedia applicationsprocessor for advanced mobile and embedded applications that requirethe highest levels of multimedia performance. Designed and optimizedfor power efficiency, BCM2835 uses Broadcom’s VideoCore IV tech-nology to enable applications in media playback, imaging, camcorder,streaming media, graphics and 3D gaming.

• Low Power ARM1176JZ-F Applications Processor• Dual Core VideoCore IV Multimedia Co-Processor• 1080p30 Full HD HP H.264 Video Encode/Decode• Advanced Image Sensor Pipeline (ISP) for up to 20-megapixel ca-meras operating at up to 220 megapixels per second• Low power, high performance OpenGL-ES 1.1/2.0 VideoCore GPU.1 Gigapixel per second fill rate.• High performance display outputs. Simultaneous high resolutionLCD and HDMI with HDCP at 1080p60

Page 285: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 285

B Grafik

Der ARM11-Prozessor ist mit Broadcoms VideoCore-Grafikkoprozes-sor kombiniert. OpenGL ES 2.0 wird unterstutzt, Filme in FullHD-Auflosung (1080p30 H.264 high-profile) konnen dekodiert und uberHDMI und Composite ausgegeben werden.

B Software

Der Linux-Kernel lauft auf dem Raspberry Pi. Eine Entwicklerversiondes RISC OS 5 wurde im Oktober 2011 veroffentlicht.http://en.wikipedia.org/wiki/Raspberry Pi: The Foundation provides De-

Page 286: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 286

bian and Arch Linux ARM distributions for download. Also plannedare tools for supporting Python as the main programming language,with support for BBC BASIC, C, and Perl.

• gooseberry

gooseberry.atspace.co.uk raspberrycenter.de/tags/gooseberry

Das Gosseberry ist keine Eigenentwicklung. Es handelt sich vielmehrum ein Mainboard, das derzeit in verschiedenen Tablets zum Einsatzkommt. Daraus erklart sich auch das Fehlen einer RJ45-Netzwerk-Schnittstelle (dafur ist WLAN onboard). Findige Briten haben denProduzenten ausgemacht und machen es so Endkunden zuganglich.

Die Hardware des Gooseberry im Uberblick:

• CPU: AllWinner A10, 1GHz• ARM Cortex A8 Dual-Core mit bis zu 1,5 GHz• MALI-400 GPU, 400MHz• OpenGL ES 1.1 und 2.0, OpenVG 1.1• 512 MB RAM

Page 287: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 287

• 4 GB Flash• MicroSD Slot• 802.11 b/g/n Wireless Netzwerk• Kopfhorer- und Mikrophon-Anschluss (Mini-Klinke)• HDMI• MiniUSB• Buttons fur Lautstarke und Power• LVDS-Anschluss

Das Board soll 40 britische Pfund kosten, zzgl. 2,70 Pfund fur denVersand innerhalb der EU.

B Goose-Berry vs Raspberry Pi

• The goose-berry board is roughly 3 x more powerful in processingpower than the Pi.• The goose-berry board has a newer ARM architecture meaning it iscompatible with newer software such as Ubuntu which the Pi can notrun.• The goose-berry board has double the RAM of the Pi (512mb).

Page 288: Rechner-Strukturen: slides - TitleFrame · Inhaltsverzeichnis (Forts.) 3 compiler passes 3.2.Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Ana-lyse Ubersetzung

Abschnitt 11: Addenda 288

• The board does not have a Lan port, although Wifi is present.• The board does not have analogue video and so can not connect toold TVs.• Only a limited OS (Android) is supported as of yet fully, the boardhowever is capable of running other OSs such as Ubuntu (currentlywithout graphics acceleration). Premade images for Ubuntu are nowavailable and videos of the board running Ubuntu and other Linuxflavours shall be uploaded.