Computer Architektur, COM(P)ARCH = Rechner-Strukturen, RST

Größe: px
Ab Seite anzeigen:

Download "Computer Architektur, COM(P)ARCH = Rechner-Strukturen, RST"

Transkript

1 Fakultät E-Technik & Informatik Hochschule Bremen Computer Architektur, COM(P)ARCH = Rechner-Strukturen, RST Prof. Dr. Thomas Risse SS 2015 Sinn & Zweck: Unterstützung der Lehrveranstaltung Computer Architektur, COM(P)ARCH = Rechner- Strukturen, RST durch diverse Materialien, s.a. RST-page c risse@hs-bremen.de Letzte Änderung: 12. Juli 2015 Version

2 Inhaltsverzeichnis 0. Vorbemerkung Inhalt Lernziele Herangehensweise Vorbedingungen & Überschneidungen Vor-/Nachbereitung RST page computer architecture im WWW Materialien online Test Leistungsbewertung 1. Einführung Begriffsbestimmung Geschichte Taxonomie 2. Leistung Rechner unterschiedliche Anwendungsbereiche Leistungskenngrößen benchmarks Einflußgrößen Leistungsmessung Repräsentativität Amdahl sches Gesetz Leistungszuwachs Moore sches Gesetz 3. Compiler rechts von/oberhalb der HW-SW-Schnittstelle 3.1. compiler & Konsorten compiler passes 3.2. Code-Optimierung lexikalische Analyse syntaktische Analyse semantische Analyse Übersetzung in Zwischensprache Code-Erzeugung Bei-

3 Inhaltsverzeichnis (Forts.) 3 spiel: Quicksort Beispiel: Quicksort ohne Optimierung Beispiel: Quicksort 1. Optimierung Beispiel: Quicksort 2. Optimierung Beispiel: Quicksort 3. Optimierung Code-Erzeugung & Optimierung 3.3. Resumée 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 Beispiele 4.3. Adressierung Adressierungsarten 4.4. Operationen Befehlshäufigkeiten Befehlshäufigkeiten und -Merkmale 4.5. Anforderungen an Befehlssätze 4.6. z.b. DLX/MIPS-Befehlssatz exemplarische, prototypische DLX/MIPS-Instruktionen DLX/-

4 Inhaltsverzeichnis (Forts.) 4 MIPS-Formate DLX/MIPS-(Pseudo-)Instruktionen Befehlsformate z.b. DLX/MIPS-shifts Klassifizierung des Befehlssatzes 4.7. z.b. Intel 80x86-Befehlssatz Genealogie Register Familien-Entwicklung Adressierung Operationen Befehlsformate Befehlsprefixe Beispiele für 8086 Befehle Beispiele für Befehle Beispiele für Befehlsformate belegen ISA-Heterogenität Dekodierung Condition Codes Sprung- und Verzweigungsanweisungen Bedingungen in Registern vs Condition Codes AMDs 64bit Erweiterungen Intels 64bit Erweiterungen Slogans on 80x86 architecture 4.8. z.b z.b. MicroChip PIC24FJ128GC010Family 4.10.Resumée 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

5 Inhaltsverzeichnis (Forts.) 5 pipeline control data hazards control hazards superskalare Version & Leistung superskalare Prozessoren 6.2. functional pipelines arithmetische pipelines scheduling funktionaler Einheiten pipeline-vektor-prozessoren Leistungsbewertung 7. Speicher-Hierarchie Kenngrößen Lokalität 7.1. caching direct mapped caches fully associative caches set associative caches 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 Beschleunigen der Adreß-Umsetzung Speicherschutz-Maßnahmen 80x86-Unterstützung der Speicher-Anbindung performance gap: processor vs memory system 8. Parallelisierung von Algorithmen 8.1. Parallelisierung des Gauß schen Algorithmus Gauß scher Algorithmus Eliminieren Gauß scher Algorith-

6 Inhaltsverzeichnis (Forts.) 6 mus Auflösen Kommunikation Parallelisierung des Gauß schen Algorithmus durch den Compiler 8.2. Effizienz/Effektivität der Parallelisierung 8.3. parallele Speicher-Zugriffe auf Matrizen 8.4. Baumhöhenreduktion 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 Instructions 10. parallele Architekturen 10.1.Klassifizierung anhand von Beispielen Symmetric / Shared-Memory Multiprocessors (SMP), Uniform Memory Access (UMA) Non-Uniform Memory Access (NUMA)

7 Inhaltsverzeichnis (Forts.) 7 Multiprocessors Clusters Massively Parallel Processors (MPP) 10.2.Multiprocessor-Systeme mit gemeinsamem Bus 10.3.cache-Kohärenz in Multiprozessor-Systemen cache-kohärenz durch Invalidieren cache-kohärenz durch Aktualisieren cache-kohärenz Einfaches cache-kohärenz Protokoll MESI/MOESI 10.4.Verbindungsstrukturen Beispiele Merkmale einschlägiger Verbindungsstrukturen 11. Addenda 11.1.Addendum in 2003: top Addendum in 2004: announced in Addendum in 2005: top Addendum in 2006: top Addendum in 2007: cell-prozessor 11.6.Addendum in 2010: Core i Addendum in 2011: K Computer 11.8.Addendum in 2012: Raspberry Pi 11.9.Addendum in 2013: Haswell Addendum in 2014: Advanced RISC Machines, ARM Cortex A53 and Cortex A57 A32 Genese A32 featu-

8 Inhaltsverzeichnis (Forts.) 8 res ISA, Befehlsformate A32 vs A64 Details aus ARMv8 Instruction Set Overview Addendum in 2015: IBM z13 Mainframe vs Multi-Computer-System Mainframes Distributed Systems

9 9 0. Vorbemerkung Inhalt 1. Einführung 2. Leistungsbewertung, Leistungsmessung 3. Compiler 4. Befehlssätze 5. Prozessor-Architektur 6. pipelining 7. Speicher-Hierarchie: caching 8. Speicher-Organisation: paging, segmentation 9. Parallelisierung 10. Multi-Prozessor/Multi-Computer-Systeme

10 Abschnitt 0: Vorbemerkung 10 Lernziele Interna, Architektur-Prinzipien kennenlernen Abhängigkeiten erkennen und berücksichtigen Angaben zu Leistung/features bewerten können es gibt nicht nur PCs auf dieser Welt! Leistung durch Ausnutzen von Parallelität steigern Herangehensweise Entwurfssicht Vorbedingungen & Überschneidungen Mikro-Computer-Technik Digital-Technik Betriebssysteme, Compiler (-Bau),...

11 Abschnitt 0: Vorbemerkung 11 Vor-/Nachbereitung in der modul-begleitenden Übung praktische Übungen zu den aktuellen Themen, z.b. anhand von 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 auch über AULIS verlinkt! s. no computer without architecture Allerdings sind AULIS-Dokumente nicht notwendig up to date!

12 Abschnitt 0: Vorbemerkung 12 Materialien Literatur: COD, CA & Bibliographie im Skript Patterson & Hennessy: COD; 2 nd ed., MKP COD2e Patterson & Hennessy: COD; 3 rd ed., Elsevier, 40 COD3e Patterson & Hennessy: COD; 4 th ed., MKP, ca 40 Hennessy & Patterson: CA; 3 rd ed., MKP CA Hennessy & Patterson: CA; 4 th ed., MKP ca 40 CA Patterson & Hennessy: Rechner-Organisation und -Entwurf; Elsevier 55e, Oldenbourg 60e COD2e Hennessy & Patterson: CA; deutsche Übersetzung vergriffen CA Dubois, Annavaram, Stenström: Parallel COD; Cambridge 2012 online Materialien s. Skript(e) RST.pdf und RST plus.pdf Folien RSTslide.pdf (Abschluß)Klausuren klausur.pdf und aklausur.pdf COD Graphiken, Dokumente, link lists, Evaluationen etc.

13 Abschnitt 0: Vorbemerkung 13 online Test AULIS RST-Test soll die Veranstaltung RST unterstützen, i.e. multiple choice & fill in blank Test, derzeit zu folgenden Themen Leistung Compiler Befehlssätze Prozessor-Architektur pipelining Speicher-Hierarchie: caching Speicher-Organisation: paging, segmentation Leistungsbewertung BPO: Klausur s.

14 14 1. Einführung Computer-Entwicklung 1 ist Leistungssteigerung! Begriffsbestimmung Def. Rechner-Architektur 2 ist die Organisation von Rechen-Systemen, die das Preis/Leistungsverhältnis für bestimmte Einsatzbereiche und bei gegebener hardware- und software-technologie optimiert. Geschichte 1642 B. Pascal 3 : Addition und Subtraktion 1 s. Vergleich mit Automobil 2 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 für eine Maschine schreiben zu können. 3 Blaise Pascal, www-history.mcs.st-and.ac.uk/history/mathematicians/pascal.html

15 Abschnitt 1: Einführung S. Morland 4, 1671 G. Leibniz 5 Addition und Multiplikation 1812 Charles Babbage 6 : Difference Engine (Polynom-Auswertung), Analytical Engine (Lochkarten-Steuerung), Augusta Ada King, Countess of Lovelace T.J. Watson: 8 von NCR über CTR zu IBM, Astronomical Computing Bureau, Hermann Hollerith: 9 National Bureau of Census 1930 Howard H. Aiken, 10 John Atanasoff, 11 George Stibitz, 12 Konrad Zuse: 13 universelle, programmierbare, digitale (Relais-) Rechner 4 Samuel Morland, es.rice.edu/es/humsoc/galileo/catalog/files/morland.html 5 Gottfried Leibniz, www-history.mcs.st-and.ac.uk/history/mathematicians/leibniz.html 6 Charles Babbage, www-history.mcs.st-and.ac.uk/history/mathematicians/babbage.html 7 Augusta Ada King, www-history.mcs.st-and.ac.uk/history/mathematicians/lovelace.html 8 Thomas J. Watson, j watson history.html 9 Hermann Hollerith, www-history.mcs.st-and.ac.uk/history/mathematicians/hollerith.html 10 Howard H. Aiken, cc.kzoo.edu/ k98hj01/aiken.html 11 John V. Atanasoff, archive.comlab.ox.ac.uk/museums/computing/atanasoff.html 12 George Stibitz, Konrad Zuse, www-history.mcs.st-and.ac.uk/history/mathematicians/zuse.html

16 Abschnitt 1: Einführung Atanasoff: Röhren-Rechner (Lineare Gleichungssysteme) 1943 Mauchly 14 und Eckert: 15 Electronic numerical Integrator and Calculator, ENIAC 1943 M.H.A. Newman 16 und A. Turing 17 : Colossus (Kryptographie), Enigma John von Neuman 18 : Electronic Discrete Variable Automatic Computer, EDVAC, Magnetische Speicher, Atom-Bombe, s.a. COD, pp315, s.a. Forum InformatikerInnen für Frieden und gesellschaftliche Verantwortung, z.h. Pioniere und Computer-Museen ersurfen, s.a. H&P, P&H, Literatur, WWW 14 John W. Mauchly, www-history.mcs.st-and.ac.uk/history/mathematicians/mauchly.html 15 John P. Eckert, www-history.mcs.st-and.ac.uk/history/mathematicians/eckert John.html 16 Max H.A. Newman, www-gap.dcs.st-and.ac.uk/ history/mathematicians/newman.html 17 Alan M. Turing, www-history.mcs.st-and.ac.uk/history/mathematicians/turing.html 18 John von Neuman, ei.cs.vt.edu/ history/vonneumann.html

17 Abschnitt 1: Einführung 17 Zeit Technologie/Architektur SW/Anwendungen Systeme Röhren, Relais, CPU mit ENIAC, Princeton IAS, Assembler, single PC und Accu, Festpunktuser, no linkage Arithmetik IBM 701 diskrete Transistoren, Kern-Speicher, HLL, compiler, libraries, batch pro- CDC 1604, IBM 7090, Gleitpunkt-Arithmetik, I/O-processors, multiplexed memory access cessing Univac LARC SSI/MSI-ICs, Mikroprogrammierung, pipelining, IBM 360/370, multiprogramming, CDC 6600, time sharing, OS, cache, µ-processors TI-ASC, multi user PDP-8 LSI/VLSI-ICs, Halbleiter-Speicher, RISC multiprocessor OS; Apple, PC, vs CISC, multi processors, vector supercomputers, multicomputers ULSI/VHSI-ICs, high density packaging, scalable architectures languages, compilers etc. for parallel processing MPP, grand challenges, heterogeneous processing VAX 9000, Cray X-MP, IBM 3090 Fujitsu VPP500, Cray MPP, CM-5, Intel Paragon

18 Abschnitt 1: Einführung 18 Taxonomie sehr grobe Einteilung von Rechnern (Flynn 19 sche Klassifikation) SD MD single data multiple data SI single SISD SIMD instruction 8051, 8086, etc. MMX, etc; Vektor-Rechner MI multiple MIMD instruction Multi-Prozessoren, -Computer z.h. Finde und klassifiziere weitere Beispiele. 19 Michael Flynn: Very high-speed computing systems; Proceedings of the IEEE, volume 54, pages , December 1966.

19 19 2. Leistung Kosten-zu-Nutzen-Verhältnis 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?

20 Abschnitt 2: Leistung 20 unterschiedliche Anwendungsbereiche... general purpose SoHo Wirtschaft Wissenschaft & Technik Super-Computer, HPC Beispiele?

21 Abschnitt 2: Leistung 21 Leistungskenngrößen MIPS MOPS FLOPS 1/CPI Bus-Bandbreite IO-Bandbreite 1/#wait states TPS FPS KLIPS...? Eigenschaften wie Meßbarkeit, Unbestechlichkeit, Relevanz...? z.h. Klassifiziere den Windows Leistungsindex!

22 Abschnitt 2: Leistung 22 benchmarks Gibson-Befehlsmix (IBM: 13 Klassen mit gemessenen Häufigkeiten) Linpack (Dongarra, Moler et al, ca : linear algebra, LAPACK) Whetstones in MWIPS (Nat. Phys. Lab, 1976: float- und integer- Arithmetik, Zugriff auf Felder) Dhrystones (Reinhold Weicker, 1984: im Gegensatz zu Whet stone nur integer-, char-operationen; compiling etc) Livermore loops (Francis H. McMahon, 1986: vektorisierbare und nicht vektorisierbare Livermore Fortran kernels) SPECmarks in SPECint, SPECfp etc (Standard Performance Evaluation Corparation ) Perfect Club Benchmarks Effective Performance Evaluation of Supercomputers (Berry et al 1994 auf AULIS: external docs) BAPCo SYSmark (Business Applications Performance Corporation PC, tablets, mobile; SoHo) Eigenschaften wie Meßbarkeit, Unbestechlichkeit, Relevanz...? z.h. Vergleiche Leistungskenngrößen vs benchmarks!

23 Abschnitt 2: Leistung 23 Einflußgrößen Sekunden Programm = Instruktionen Clock Zyklen Programm Instruktion Clock Sekunden Zyklus und durch Übergang zu geeigneten Mittelwerten Abhängigkeiten? Sekunden Programm = Instruktionen Programm CPI 1 Taktrate Leistungsmessung Leistung = 1 Ausführungszeit. Beschleunigungsfaktor β aufgrund einer Modifikation ist β = Leistung mit Modifikation Leistung ohne Modifikation = Ausführungszeit ohne Ausführungszeit mit

24 Abschnitt 2: Leistung 24 Leistungsgewinn γ aufgrund einer Modifikation ist 1 + γ = Leistung mit Modifikation Leistung ohne Modifikation = Ausführungszeit ohne Ausführungszeit mit bzw. aufgelöst γ = Leistung mit Leistung ohne Leistung ohne = Ausführungszeit ohne Ausführungszeit mit Ausführungszeit mit Repräsentativität Arithmetisches Mittel oder gewichtetes Mittel AZ = 1 n n i=1 AZ i AZ = n i=1 w i AZ i der Ausführungszeiten AZ i ausgewählter Programme P i mit zugehörigen Gewichten w i 0 und n i=1 w i = 1 bzw. harmonisches Mittel r der Raten r i r = n 1 n bzw. i=1 1 AZ = r i n n 1 i=1 1/AZ i der Raten 1 AZ i ausgewählter Programme P i Z.B. mittlere MIPS, MOPS, FLOPS; CPI? FLOPS/Watt?

25 Abschnitt 2: Leistung 25 z.h. Benjamin Benz: Auf den Zahn gefühlt PC-Performance selbst beurteilen; c t 18/ mit Tests CPU: 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. z.h. vgl. aktuelle c t-artikel zu benchmarking auf AULIS Amdahl sches Gesetz Für α = Anteil verändert liege Beschleunigungsfaktor β verändert vor. Ausführungszeit neu = (1 α)ausführungszeit alt + α Ausführungszeit alt β verändert Beispiele! β gesamt = Ausführungszeit alt 1 = Ausführungszeit (1 α)+ neu α β verändert

26 Abschnitt 2: Leistung 26 Leistungszuwachs DEC Alpha 21264/ Performance DEC Alpha 5/ SUN-4/ MIPS M/ MIPS M IBM RS DEC Alpha 5/300 DEC Alpha 4/266 IBM POWER 100 DEC AXP/500 HP 9000/ Year

27 Abschnitt 2: Leistung 27 Also jährliche Verdoppelung der Prozessor-Leistung (gemessen etwa in MIPS oder FLOPS) Leistung= 2 Jahr 1984 (Joy sches/moore sches Gesetz) und ca alle drei Jahre Vervierfachung der Speicher-Chip-Kapazitäten 100,000 16M 64M 10,000 4M Kbit capacity K 1M K 16K Year of introduction z.h. Aktualisiere! s. z.b. (zur Methodik s. gateway.cfm?id= ),

28 nt s- - i- - n - r- ) - u n - s - - n - s f l- - n -. der werbewirksamen Performance-Aussage 669 SPECint_rate2006base des Xeon 2699v3 des Abschnitt,,House-Moore'schen Gesetzes". 2: Leistung Seit gut (Haswell-EP, nur ein Chip,22 nm, 662 mm2, 28 zehn Jahren gibt es mit den Mehrkern-prozessoren nämlich eine Aufspaltung in zwei 5,56 Mrd. Transistoren) im März Damit Moore sches Gesetz Zweige: Single-Threaded und Multi-Threaded. Die 2l Monaten. Und das ist schon sehr ge- kommt man aut eine Verdopplungszeit von s.a. Andreas Stiller: 50 Jahre Moore sches Gesetz; c t 2015/10 S Transistorzahlen gä ngiger prozestoren Die Transistorzahl der größten Chips mit einer Verdoppelung et\ /a alle zwei Jahre wird meist als,,das" Moor'sches Gesetz interpretiert. E le+r0-9 rr+oe F 1E t lntels{1386. l lntet lnrel r@0 r----t elntel8086 lt (oreXmn phi 72.(ore leon phi Xl,lL 10-(oreXeon Wertmere.U^ O 9"] - et lö-qxeleon HaswetFU, pentium 4 e e6{orexeon7400 eg(ore optelor 2400 PiäiitimFioai :gäädk6 '':''' '.'-- -t '"-"" ' lntel80186,rry s

29 . I Abschnitt 2: Leistung 29 Moore's Law 1975 Aus Moores Vortrag auf dem IEDM I 975, mit Rückblick auf die vergangenen zehn und Vorhersage aufdie l0folgenden Jahre. I Bipolarlogk I Bipolararray I MOSlogic I M0Sarray ;e 16M o älm g o+t o E = 4k.lqG*:.ryg+-, - hes Geset2 Durchsch n ittliche Tra nsistorkosten Die Kosten pro Transistor halbieren sich,la,ut lntel etwa alle drei Jahre. Die expliziten Kosten in US-Ceht/Mio. hat c,t hinzugefügt e 13,0 ct g o 6,5 ct 2,6 ct ḡ F o =e e, ty6u nm 45 nm 32 nm 22 nm 14nm l0nm 1,3 ct M ittlere Single-Thread-Performa nce Größe einer 6T-SRAM-ZeIle zwischen Moore's Law 1 und Moore,s Law 2 c't hatte und kam so auf eine Verdoppelung der performance Moore's alle Law 1998 schon mal die Transistorzahlen aller lntel-prozessoren vom 4004 bis führung Single-Thread-Performance hat sich seit Ein- 18 in der Monate, Performance-Variante sozusagen Moore,s von des Benchmark SPEC Dave House Die Größe zum einer CPU2006 SRAM-Bitzelle Mitte damals aus 6 frisch Transistoren ist ein herausgekommenen Law ist für 1 'l/2.lrgendwie Single-Thread-Applikation'en Mendocino (0,25 beliebtes sind diese,,gesetze,,in schon längst ungültig clt-like gemessen Maß für den Herstellungsprozess. ohne verfälschende pm, 19 Mio Transistoren, Autoparallelisierung der Compiler den Folgejahren - nicht einmal vervierfacht. Das entspricht allenfalls dann durcheinander geraten E 154 mm2 Die) halblogarithmisch - jeder t 1000 loo aufgetragen und eine durchschnittliche Verdopp- einer Verdopplung alle 5 Jahre,f nahm sich das heraus, was er brauchte. - also weit, Statt,,Komponenten" also inklusive Widerstände, Kondensatoren et cetera Iungsrate alle 2,22Jahre ermittelt. weit weg von den ursprünglich mal postulierten 18 duzierte man das Komplexitätsgesetz zumeist auf die reinen Transistorzahlen ^eo Faktencheck vor allem in e@@ dem abrupten Ende Monaten. Der Hauptgrund dafür - Xeon der5160 lghz Moore'schen Geseaes für den Prozessortakt. marktgängigen Produkte. Pentium 4 16Hz Jetzt ist man knapp 17 Jahre später mit dem Anfang der 2000er Jahre geriet der nach einer Vom Aspekt der hat größten lntel-chip Xeon Phi Knights Landing stürmischen Steigerungsrate im Wettbewerb man sich ebenfalls verabschiedet, 6 schließlich bei 8,1 Milliarden Transistoren (14-nm-prozess, ca. 710 mm2 Die-Größe), also beim 426- nach dem Pentium-4-Desaster mit viel zu mit AMD nahezu abrupt in eine,,sättigung" wollte man die Kosten ja gar - nicht offenlegen. Allerdings veröffentlichte lntel vereinzelt Grafiken, _ die in Pentium normalisierter Fachen angelangt, da stimmt der Verdopplungsfaktor alle zwei Jahre für die Komplexität Nur wenn die Prozessoren ihre vielen hohem Energieverbrauch. 75 Form die Kosten pro Transistor auflisteten, wenn auch noch immer recht gut. Das sind allerdings Kerne in Stellung 2005 bringen können, lässt 2015sich ohne explizite Dollar-Angabe. Danach ist die auch Riesenchips. Bei der reinen Transistordichte gehts hingegen nicht so schnell: eine den rund 19 SPECint_rate2006base des Pen- House-Moore hoch ansatzweise retten. Von Rate in den letzten zehn Jahren zwar einigermaßen konstant, aber.,unter Moore'sch,, mit schönt, Verdoppelung nur etvva alle 2,6 Jahre. tium D 940 (Presler, 65 nm, 162 mm2,376 einer denn bei CPU2006 Halbierung wird einfach n- Längen oder Breiten ist die Moore'sche Rate etwa alle als Maß heranzieht. drei Diese Knoten kann man Jahre. mal der gleiche Richtig problematisch wird es jedoch mit Mio. Transistoren) im Jahre 2006 bis zu den Die Job parallel gestartet. konkreten Übliche halb so hoch Werte in wie bei der proportional zur allerdings recht freizügig Dollar definieren. Die tatsächlichen 669 SPECint_rate2006base physikalischen Kenngrößen des Xeon 2699v3 und Cent der werbewirksamen Mu lti-th readed-anwend ungen erfordern Fläche verlaufenden Transistorzahl. Performance-Aussage Eine Hal- wie

30 30 3. Compiler rechts von/oberhalb der HW-SW-Schnittstelle Def. Ein Compiler überführt ein Programm in Quellsprache, etwa in einer Problem-orientierten Programmiersprache, in ein äquivalentes Programm in einer Zielsprache, etwa in Maschinensprache. Die Übersetzung kann in mehreren passes erfolgen und Programme in Zwischensprachen 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

31 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 31 C program Compiler Assembly language program Assembler Object: Machine language module Object: Library routine (machine language) Linker Executable: Machine language program Loader Memory

32 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 32 compiler passes Untersuche EVA für jeden compiler pass, d.h. untersuche, welche Darstellung des Programmes ein jeder compiler pass in welche andere Darstellung des Programmes überführt und welche Daten dabei verwendet bzw. erzeugt werden.

33 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 33 Quellprogramm P Umgebung ( -variable) lexikalische Analyse Folge PP von Grundsymbolen syntaktische Analyse abstrakter Baum A Fehler-Datei semantische Analyse attributierter abstrakter Baum AA Optimierung modifizierter attributierter Baum moda Symboltabelle Konstantentabelle Optimierungstabelle... Übersetzung Programm PZ in Zwischensprache Z Code-Erzeugung Objektprogramm MP Optimierung Objektprogramm optmp Testhilfen -Tabelle

34 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle Code-Optimierung Kontext-unabhängige lokale Optimierung, Registerzuteilung, Variablen-Zuweisung, Parameter-Übergabe, Elimination von redundanten Sprüngen, von redundanten Ausdrücken, von totem Code und von gemeinsamen Teilausdrücken, Verbreitung von Kopien von Konstanten und Variablen (constant propagation, variable propagation) Berechnung konstanter Ausdrücke zur Compile-Zeit (constant expression folding), Reduktion der Stärke (langsame Operationen durch schnellere ersetzen) (strength reduction), Schleifen Rotation, Beseitigung von Schleifenvariablen, Aufrollen von Schleifen (loop unrolling/unfolding), Optimieren von Prozedur-Aufrufen und -Rücksprung inline functions (C++), usw. usf.

35 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 35 lexikalische Analyse Die lexikalische Analyse überführt 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 gefüllt, etc.

36 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 36 syntaktische Analyse Die syntaktische Analyse erzeugt aus dieser Folge einen abstrakten Baum. assign ID U MUL MUL ID PI 2 ID ID r

37 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 37 semantische Analyse Die semantische Analyse versieht den abstrakten Baum mit zusätzlichen Attributen. assign ID (SYMBOL,$U) (TYPE,real) (TYPE,int) MUL (TYPE, real) (SYMBOL, $PI) (TYPE,real) MUL ID (SYMBOL,$2) (TYPE,int) ID ID (SYMBOL,$r) (TYPE,int)

38 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 38 Übersetzung in Zwischensprache Gegebenenfalls nach einer Optimierung wird dieser Baum in eine Maschinen-unabhängige Zwischensprache übersetzt: mul_int, $2, $r, $tempint conv_ir, $tempint, $tempreal1 mul_real, $tempreal1, $PI, $tempreal2 assign, $tempreal2, $U

39 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 39 Code-Erzeugung Aus diesem Zwischencode wird nun der Maschinen-Code der Ziel- Maschine erzeugt, etwa LOAD, R1, 2 MULINT, R1, mem[adr[r]] CONV_IR, R1 MULREAL, R1, mem[adr[pi]] STORE, R1, ADR[U] und gegebenenfalls optimiert. Wenn typischerweise 90% der Laufzeit in 10% des Codes verbracht wird, ist es sinnvoll, diese 10% des Codes zuerst zu optimieren: z.b. innere Schleifen.

40 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 40 Beispiel: Quicksort Verschiedene Optimierungen seien am Beispiel von Quicksort, vgl. etwa demonstriert. Für das folgende C-Programm sei zunächst die Aufteilung des Programms in Blöcke dargestellt. z.h. Was ist ein Block? Drei beispielhafte Optimierungsschritte werden dann am Code in Zwischensprache illustriert.

41 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 41 void quicksort(m,n) // sortiere Feld a[i] fuer i=m,m+1,...,n int m,n; { int i,j; int v,x; if (n<=m) return; // Anfang des zu optimierenden Teils // auch andere Setzung von v moeglich, z.b. v=a[(n+m)/2] i=m-1; j=n; v=a[i]; // B1 while (1) { do i++; while (a[i]<v); // B2 do j--; while (a[j]>v); // B3 if (i>=j) break; // B4 x=a[i]; a[i]=a[j]; a[j]=x;// B5 } x=a[i]; a[i]=a[n]; a[n]=x; // B6 // Ende des zu optimierenden Teils quicksort(m,j); quicksort(i+1,n); }

42 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 42 Beispiel: Quicksort ohne Optimierung i:=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 j:=j-1 t4:=4*j t5:=a[t4] if t5>v goto B3 Block B2 (1. do loop) Block B3 (2. do loop) nicht optimierter code 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)

43 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 43 Beispielsweise in Block B5 werden (Index-) Ausdrücke mehrfach berechnet: verwende also t6 bzw. t8, anstatt t7 bzw. t10 erneut zu berechnen.

44 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 44 Beispiel: Quicksort 1. Optimierung i:=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) in B5 und B6 lokal optimierter code 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)

45 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 45 Kopien können nach Datenfluß-Analyse auch Block-übergreifend verbreitet werden!

46 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 46 Beispiel: Quicksort 2. Optimierung i:=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) Block-übergreifendes Verbreiten von Kopien 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)

47 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 47 Block-übergreifend wurde also t4 aus B3 verwendet (das laut Datenfluß-Analyse nicht verändert wurde), anstatt t8 erneut zu berechnen. z.h. Wovon hängt der Beschleunigungsfaktor aufgrund dieser Optimierung ab? Variable heißen zu einem Zeitpunkt lebendig, wenn auf sie zu einem späteren Zeitpunkt noch einmal zugegriffen wird. Elimination gemeinsamer Ausdrücke kann tote Variable erzeugen, die eliminiert werden können. Verbreiten von Kopien bereitet weitere Optimierung vor: nach Ausdrücken der Form g:=f ersetze im Programm-Text g auf rechten 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-unabhängige Berechnungen vor die Schleife ziehen),

48 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 48 Eliminieren von Schleifen-Variablen in Ausdrücken zusammen mit Reduktion der Stärke (etwa Multiplikationen durch mehrfache Additionen ersetzen) optimiert. Z.B. Ersetzen von t4:=4*j in B3 durch t4:=t4-4 mit der nun notwendigen Initialisierung t4:=4*j in B1.

49 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 49 Beispiel: Quicksort 3. Optimierung 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) Reduktion der Stärke in Verbindung mit Elimination der do loop Variablen 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)

50 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 50 z.h. Prüfe die Kontext-Neutralität dieses Optimierungsschrittes. Optimierung bislang in welchen compiler passes? Optimierende Compiler erzeugen also Code, dessen Struktur sich stark von derjenigen des Quellprogrammes unterscheidet mit der einen Folge, daß Fehler schwieriger zu erkennen sind.

51 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 51 Code-Erzeugung & Optimierung Verwaltung von Variablen im Speicher und Binden von Variablen an Register abhängig! Datenfluß-Analyse notwendig! Ziele? Variable t, u, v, w, x, y, z und ihre Lebensdauern 1 t u 2 t u v 3 t u v w 4 t u v w x 5 u v w x 6 u v w x y 7 u w x y 8 u w x y z 9 u y z Z e i t vier Register in Speicher rot grün blau gelb auszulagern 1 t u 2 t u v 3 t u v w 4 t u v w x 5 u v w x 6 y u v w x 7 y u w x 8 y u z w x 9 y u z

52 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 52 C-Programme Anweisungen in % Speicher-Zugriffe (Patterson 1982) Quellsprache Maschinensprache % Prozeduren Schleifen Zuweisungen Alternativen sonstige Befehle Unterschiedliche architektonische Antworten auf Prozedur-Aufruf mit Parameter-Übergabe: Register-Fenster Prozeß-Wechsel mit Kontext-switch: multiple Register-Sätze

53 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 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 6 regs for in/out params 10 regs for global variables RISC I 8 Fenster à 32 32bit Register SPARC 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 8 regs for in/out params 8 regs for global variables Vorteile/Nachteile?

54 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle Resumée (optimierende) Compiler sind für 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 < β < 4 oder mehr! Maschinen-unabhängige Optimierung: redundanten Code entfernen, toten Code entfernen, Kopien verbreiten, Berechnungen an seltener ausgeführte Stelle verschieben, etc. Maschinen-abhängige Optimierung: Register-Zuweisung verbessern, sowohl Reduktion der Stärke als auch exotische Instruktionen verwenden, Latenz verbergen, etc. Z.B. loop unrolling/unfolding bei Matrix-Multiplikation

55 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle z.b. Matrix-Multiplikation Matrix-Multiplikation pure C = AB für n n-matrizen A = (a i,j ), B = (b i,j ) und C = (c i,j ) mit c i,j = n 1 k=0 a i,kb k,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; } 2 n 3 fl op, n 3 (branch und loop increment und jump) pro Iteration in k-loop: 2 load und 2 fl op und 1 n store

56 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 56 Matrix-Multiplikation 4-fach n n-matrizen A, B und C = AB cache lines à 4 words for(i=0; i<n; i++) for(j=0; j<n; j++) { register float sum = 0.0; for(k=0; k<n; k++) // n mod 4 = 0 { sum+ = a[i,k]*b[k,j]; k++; sum+ = a[i,k]*b[k,j]; k++; sum+ = a[i,k]*b[k,j]; k++; sum+ = a[i,k]*b[k,j]; } c[i,j]=sum; } 2 n 3 fl op, n 3 loop increment, 1 4 n3 (branch und jump) pro Iteration in k-loop: 8 load und 8 fl op und 4 n store a[i,k] aus cache line; dagegen b[k,j] problematisch!

57 Abschnitt 3: Compiler rechts von/oberhalb der HW-SW-Schnittstelle 57 Matrix-Multiplikation 4-fach, 4-fach cache s.o. for(j=0; j<n; j++) // n mod 4 = 0 for(i=0; i<n; i+=4) // precompute i+1, i+2, i+3... { c[i,j] = c[i+1,j] = c[i+2,j] = c[i+3,j] = 0.0; for(k=0; k<n; k+=4) // precompute k+1, k+2, k+3... { c[i,j] += a[i,k]*b[k,j]+a[i,k+1]*b[k+1,j] +a[i,k+2]*b[k+2,j]+a[i,k+3]*b[k+3,j]; c[i+1,j] += a[i+1,k]*b[k,j]+a[i+1,k+1]*b[k+1,j] +a[i+1,k+2]*b[k+2,j]+a[i+1,k+3]*b[k+3,j]; c[i+2,j] += a[i+2,k]*b[k,j]+a[i+2,k+1]*b[k+1,j] +a[i+2,k+2]*b[k+2,j]+a[i+2,k+3]*b[k+3,j]; c[i+3,j] += a[i+3,k]*b[k,j]+a[i+3,k+1]*b[k+1,j] +a[i+3,k+2]*b[k+2,j]+a[i+3,k+3]*b[k+3,j]; } } 2 n 3 fl op, n 3 loop increment, 1 16 n3 (branch und jump) pro Iteration: einmal (8 load & 8 fl op), dreimal (4 load & 8 fl op) a[i,k] aus cache line; b[k,j] und c[i,j] re-used!

58 58 4. Befehlssatz links von der HW-SW-Schnittstelle Def. Der Befehlssatz (instruction set) ist die hardware/software- Schnittstelle eines Prozessors... Was sagt der Befehlssatz über einen Prozessor aus?, Ein minimales Beispiel: Z.B. Der single instruction computer (SIC) kennt nur eine einzige Instruktion: subtract and branch if negative, SBN mit sbn a,b,c; // Mem[a]-=Mem[b]; if (Mem[a]<0) goto c. z.h. Konstanten, Move, Addition, Multiplikation im SIC? z.h. Inwiefern ist der SIC ein vollwertiger Computer? um welchen Preis? z.h. Gibt es ein maximales Beispiel?

59 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle Klassifikation Es gibt (mindestens) vier unterscheidende Merkmale für Befehlssätze: wie und wieviele Operanden sind in CPU gespeichert? wie werden Operanden addressiert? welche Operationen werden auf welchen Operanden ausgeführt? welche und wieviele Formate haben die Befehle? Wieviele Operanden sind in CPU gespeichert? Man unterscheidet Akkumulator-Architektur Stack-Architektur Register-Architektur

60 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 60 Akkumulator-Architektur: Ein Operand liegt implizit im Akkumulator, 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; Stack-Architektur: Operanden liegen implizit auf einem Stapel, Ergebnisse 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;

61 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 61 Register-Architektur: Operanden und Ergebnisse liegen in Registern. Beispiele sind IBM /360 oder DEC VAX oder aktueller Intel 80x86 mit 8, mit 16, PowerPC mit 32, MIPS, DLX mit 32, MIPS R2000 mit 32, RISC I mit 32 von 138 oder SPARC mit 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/store Load Ra,A; Load Rb,B; Add Rc,Ra,Rb; Store C,Rc; Z.B. Der Intel 80x86-Befehlssatz enthält auch PUSH und POP- Befehle. Die 80x86-Register sind nur bedingt Allzweck-Register!

62 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 62 z.h. Klassifiziere die GK-Operationen der Intel 80x86-Prozessor- Familie. z.h. Klassifiziere µ-controller- und DSP-Befehlssätze. Exkurs: JavaVM die Java Virtual Machine ISA s.a. Das C = A+B Beispiel, hier für die JavaVM ( iload_0 iload_1 iadd istore_2 // push the int in local variable 0, i.e. A // push the int in local variable 1, i.e. B // pop two ints, add them, push result // pop int, store into local variable 2, i.e. C weitere Beispiele zur Illustration der JavaVM-ISA

63 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 63 class Act { public static void domathforever() { int i = 0; for (;;) { i += 1; i *= 2; } }} mit Byte-Code ( // Bytecode stream: 03 3b a b 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 // iload_0 // 1a 6 iconst_2 // 05 7 imul // 68 8 istore_0 // 3b 9 goto 2 // a7 ff f9

64 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 64 class SquareCircle { static void squareitforever() { float f = 2; for (;;) { f *= f; f = 0 - f; } } } mit Byte-Ccode ( 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

65 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle Register-Architekturen Wegen der Vorteile schneller Register in den letzten Jahren nur noch Universal-Register-Maschinen mit als einem wichtigen Unterschied dyadischen oder triadischen ALU-Befehlen sowie mit verschiedener Lokalisation der Operanden: Register-Register-Operationen auch load/store mit einfacher Dekodierung, einfacher Code-Erzeugung, ähnlichen Ausführungszeiten; jedoch mit größerer Anzahl von abzuarbeitenden Befehlen Register-Speicher-Operationen mit Zugriffen ohne Laden; jedoch unterschiedliche Ausführungszeiten Speicher-Speicher-Operationen mit kompaktem Code; jedoch mit unterschiedlichen Ausführungszeiten und Speicher-Engpaß.

66 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 66 Beispiele gpr Architektur Jahr gpr Architektur Jahr EDSAC 1 accumulator 1949 Intel extended accu 1978 IBM accumulator 1953 Motorola reg mem 1980 CDC load/store 1963 Intel reg mem 1985 IBM / reg mem 1964 MIPS 32 load/store 1985 DEC PDP-8 1 accumulator 1965 HP-PA RISC 32 load/store 1986 DEC PDP-11 8 reg mem 1970 SUN SPARC 32 load/store 1987 Intel accumulator 1972 Power-PC 32 load/store 1992 Motorola accumulator 1974 DEC Alpha 32 load/store 1992 DEC VAX 16 reg/mem mem 1977 JAVA-VM 0 stack 1995 und zwar ist die Anzahl der Argumente arithmetisch-logischer Instruktionen im Speicher bei SPARC, MIPS, PA, PowerPC sowie Alpha jeweils 0 von maximal 3, bei Intel 80x86 sowie Motorola jeweils 1 von maximal 2 und bei der VAX 2 von maximal 2 bzw. 3 von maximal 3 Operanden. z.h. Klassifiziere die Operationen von µ-controllern und DSPs.

67 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle Adressierung In aller Regel arbeiten heutige Rechner byte-adressiert, und zwar big endian Byte mit Adresse x..x00 an der most significant position im Wort z.b. IBM /360, MIPS, Motorola, SPARC, DLX little endian Byte mit Adresse x..x00 an der least significant position im Wort z.b. DEC VAX, DEC RISC, Intel 80x86. Def. Ein Zugriff auf ein Datum der Länge s Byte, ab der Byte- Adresse A ist aligned genau dann, wenn A mod s = 0 sonst misaligned.

68 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 68 Adressierungsarten Diverse Adressierungsarten reduzieren die Anzahl der Befehle, machen aber gleichzeitig die Decodierung und damit den Prozessor komplexer und langsamer. So braucht der Motorola MC68020 bis zu 12 Takte nur für bestimmte Adressierungen. Art Beispiel Bedeutung Bemerkung register Add R4,R3 R4+=R3 immediate Add R4,#3 R4+=3 immediate-größe? displacement Add R4,10(R1) R4+=M[10+R1] lokale Variable register indirect Add R4,(R1) R4+=M[R1] per pointer indexed Add R4,(R2+R3) R4+=M[R2+R3] Feld mit Base und Index direct/absolute Add R4,(1001) R4+=M[1001] static data memory indirect Add R4+=M[M[R3]] linked list auto-increment Add R4,(R3)+ R4+=M[R3] sequentieller Zugriff auf R3+=d Feldelemente, push/pop auto-decrement Add R4,-(R3) R3 =d sequentieller Zugriff auf R4+=M[R3] Feldelemente, push/pop scaled Add R4,10(R2)[R3] R4+=M[10+R2+d*R3] sequentieller Zugriff auf lok. Daten der Länge d

69 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 69 Beim Entwurf ist beispielsweise festzulegen Anzahl zu benennender Register Größe von Displacement und Immediate was noch alles? Displacement und Immediate sind die häufigsten Adressierungsarten. Z.B. Die Codierung der vielen Adressierungsarten der VAX illustriere eine ternären Instruktion: add13 r1, 737(r2), (r3) addiert zwei 32-bit integer bei einem OP-Code von 1byte. Address specifier enthalten in 4bit die Adressierungsart, in weiteren 4bit das zu verwendende Register: also 1byte für r1, 3byte für 737(r2), nämlich 1byte specifier für 16-bit displacement und 2byte displacement 737 und schließlich 1byte specifier für indirect (r3) insgesamt also 6byte. Maximale VAX-Befehlslänge ist 53byte. Z.B. DSPs mit Zugriff auf Ring-Puffer, z.b. TI z.h. Klassifiziere die Addressierungsarten von µ-controllern.

70 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle Operationen Klassifikation anhand der Funktionalität und/oder des Daten-Typs arithmetisch-logische Befehle, wie integer add, sub oder and, or Datentransfer, wie load, store oder move Programm-Ablaufssteuerung, wie Verzweigungen, Sprünge, Unterpro Sprünge und -Rücksprünge, traps Betriebssystem-Aufrufe, Speicher-Verwaltung Gleitpunkt-Befehle, d.h. arithmetische Operationen auf Gleitkomma-Zahlen, wie fadd, fmult oder fdiv (vgl. COD chapter 4, 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 Parallelität auf Instruktionsebene nutzen (Intels MMX, AMDs 3Dnow, Intels ISSE),

71 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 71 Befehlssatz-Erweiterungen wie SUN-SPARC visual instruction set (VISual) Befehlshäufigkeiten Häufigkeiten von Befehlen und der Art ihrer Operanden (Typ, Adressierung, Sprungziele,...) hängen 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-Befehle CA präsentiert detaillierte Messungen etwa für Intel 8086 Prozessoren. Das Häufige schnell machen!

72 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 72 Befehlshäufigkeiten und -Merkmale Befehle, die den Programmfluß verändern: 2/3 branches, 1/6 jumps, 1/6 jump to/return from subroutine Ziele von Verzweigungen sind meist PC-relativ (3/4 vorwärts, 1/4 rückwärts). Der mittlere Verzweigungsabstand beträgt weniger als 2 7 Befehle (abhängig von der mittleren Befehlslänge). 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 Verfügung gestellt ist. Wie bedingen sich maximale Sprungweite bei unbedingten Sprüngen und das Befehlsformat gegenseitig? Bei Unterprogramm-Sprüngen muß zumindest die Rückkehr-Adresse zumeist auf dem Stack gerettet werden (wie auch die Register), gegebenenfalls auch hardware-gestützt (z.b. per jal im DLX/MIPS)

73 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle Anforderungen an Befehlssätze Verschiedene Prozessoren haben teilweise sehr unterschiedliche Befehlssätze. Z.B. Die IBM /370 hat 2-, 4- und 6-Byte-Befehle, die CDC CYBER Halb- und Ganzwort-Befehle bei einer Wortlänge von 16 (?) Byte; DEC PDP11 und Motorola MC68020 Ein-, Zwei- und u.u. auch Drei- Wort-Befehle bei 2-Byte-Worten z.b. DLX/MIPS-Befehlssatz Der DLX und dem MIPS R2000 gemeinsam sind 32 Allzweck-Register à 32bit und 32 GK-Register à 32bit, load store Architektur, 32bit Adreß-Raum, flat memory; z.h. Bewerte Umstand R0 = $0 0 und DLX/MIPS-Instruktionen wie jal, jalr, b zal.

74 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 74 exemplarische, prototypische DLX/MIPS-Instruktionen exemplarisch für (Klassen von) Instruktionen: Funktionalität Format/Codierung, Verwendung von op-code-erweiterungen (etwa op=0 für bestimmte arithmetisch/logisch und Sprung-Anweisungen, op=1 für bestimme Verzweigungsanweisungen, op=0x11 für Gleitpunkt-Anweisungen) prototypisch für Implementierung von Instruktionen single/multi cycle implementation pipeline implementation \index{addi}\index{mips!add}\index{mips!lw}\index{mips!beq}\i 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

75 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 75 DLX/MIPS-Formate 1. Immediate addressing op rs rt Immediate 2. Register addressing op rs rt rd... funct Registers Register 3. Base addressing op rs rt Address Memory Register + Byte Halfword Word 4. PC-relative addressing op rs rt Address Memory PC + Word 5. Pseudodirect addressing op Address Memory PC Word

76 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 76 DLX/MIPS-(Pseudo-)Instruktionen displacement als einzige Adressierungsart für Daten per lw, lh, lb bzw. sw, sh, sb lhi (load high immediate der DLX) bzw. lui (load upper immediate des MIPS) zum Laden der oberen beiden bytes eines 4-byte-Wortes Spezialitäten wie lwl (load word left) bzw. lwr (load word right) sowie swl (store word left) bzw. swr (store word right) für den unaligned memory access ternäre arithmetisch-logische Befehle add, sub, s, mit den immediate-varianten addi, subi, s i, wobei für lt, le, eq, ne, ge, gt steht ternäre Verzweigungen wie beq, bne mit immediate-varianten beqz, bnez Sprung-Anweisungen j, und jal (im J-Format, s. S 77) sowie nicht PC-relativ jr (im R-Format! s. S 77)

77 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 77 Befehlsformate Alle Instruktionen sind 4byte lang, was etwa bei der Sprungziel-Adressierung ausgenutzt wird. Es gibt i.w. nur drei Befehlsformate: R-type OPcode 6 Rs 5 Rt 5 Rd 5 shamt 5 func 6 I-type OPcode 6 Rs 5 Rt 5 immediate 16 J-type OPcode 6 jump offset Der MIPS OpCode spezifiziert die Instruktion vollständig, außer für die OpCodes 0 arithmetisch-logische Befehle mit drei Operanden in integer Registern 1 branch on Rs zero wobei cond in Rt codiert ist = 0x10+z Instruktionen für coprocessor z = 0, 1, 2, 3 f (float) steht für s (single) falls rs=16 und op=17, f (float) steht für d (double) falls rs=17 und op=17. Im Feld rs steht z für 0, 1, 2 oder 3, f alls op=17, 18, 19 bzw. 20. Falls z=0, so spezifiziert Instr[4-0] die Instruktion; falls z=1, so spezifiziert funct die Instruktion mit f=s;... 26

78 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle a 0b 0c 0d 0e 0f a 1b 1c 1d 1e 1f a 2b 2c 2d 2e 2f a 3b 3c 3d 3e 3f 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 = funct (4:0)

79 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 79 z.b. DLX/MIPS-shifts mnemonic op Rs Rt Rd sa fn semantic sll Rd, Rt, sa 0 * Rt Rd sa 0 Rd = Rt << sa sllv Rd, Rt, Rs 0 Rs Rt Rd 0 4 Rd = Rt << Rs sra Rd, Rt, sa 0 * Rt Rd sa 3 Rd = Rt >> sa srav Rd, Rt, Rs 0 Rs Rt Rd 0 7 Rd = Rt >> Rs srl Rd, Rt, sa 0 * Rt Rd sa 2 Rd = Rt >> sa srlv Rd, Rt, Rs 0 Rs Rt Rd 0 6 Rd = Rt >> Rs * unused (in MIPS ISA zeroed) logical: shift & mit Nullen auffüllen arithmetic: shift mit Erhalt des Vorzeichens, d.h. mit Nullen oder Einsen auffüllen

80 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 80 Klassifizierung des Befehlssatzes DLX und MIPS R2000 und höher sind typische RISC-Prozessoren mit wenigen einfachen Befehlen: 6bit opcode, basic instructions only (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 Befehlslänge: 32bit z.h. Wende diese Kriterien zur Klassifikation von Befehlssätzen auf andere RISC-Prozessoren wie etwa PA, PowerPC, SPARC usw. an, s.a. WebExtns.ion/survey.pdf

81 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle z.b. Intel 80x86-Befehlssatz Jeder Prozessor der Intel 80x86-Prozessor-Familie ist abwärtskompatibel zu seinen Vorgängern, damit dieselbe software weitergenutzt werden kann (vgl. Bähring und Lieb et al sowie CA, chapter 4.4). Genealogie wenige 16 bit Register, nicht Allzweck FP-co-Prozessor mit ca. 60 FP-Befehlen, stack orientiert bit Adreß-Raum, memory mapping, memory protection bit Register, 32 bit Adreß-Raum added addressing modes, added operations 8 Allzweck-Register bis Pentium (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), multi core Processors (2005) im Hinblick auf x86-isa, AVX (2008 angekündigt, verfügbar 2011)

82 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 82 80x86-Register (ab 80386) Name 31 EAX ECX EDX EBX ESP EBP ESI EDI Use 0 GPR 0 GPR 1 GPR 2 GPR 3 GPR 4 GPR 5 GPR 6 GPR 7 CS SS DS ES FS GS Code segment pointer Stack segment pointer (top of stack) Data segment pointer 0 Data segment pointer 1 Data segment pointer 2 Data segment pointer 3 EIP EFLAGS Instruction pointer (PC) Condition codes

83 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 83 Register Der Intel 8080 verfügte über acht 8-bit-Register AL, AH, DL, DH, CL, CH, BL und BH sowie 16-bit SP und IP-Register (accumulator machine) 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 (processor status) gibt es weitere 16bit-Register wie SP (stack pointer) oder BP (base pointer). Quell-Index-Register source index (SI) und Ziel-Index-Register destination index (DI) verwendet etwa MOVSB: M[ES:DI]=M[DS:SI]; DI++; SI++. soviel zum Thema Allzweck-Register!

84 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 84 Wegen des dedizierten Gebrauchs der Register ist der 8086 zwischen accumulator und general purpose register machine zu platzieren, laut CA eine sogenannte extended accumulator machine. Aus Gründen der Abwärtskompatibilität mußte aber immer noch auch auf die 8-bit Register zugegriffen werden können. Familien-Entwicklung 1980 ergänzt der 8087 coprocessor 8 floating point register à 80bit und den Befehlssatz um 60 floating point instructions (extended stack architecture) bietet der einen 24bit Adreßraum mit memory mapping and protection und dem real (addressing) mode für die Abwärtskompatibilität mit dem erfüllt dieselbe Anforderung auch der mit seinen 32-bit Erweiterungen EAX, ECX, EDX und EBX der Register AX, CX, DX bzw. BX. Weiterhin gibt es zusätzliche 16-bit Segment-Register FS und GS sowie 32bit-Erweiterungen EIP, EFLAGS, ESP, EBP, ESI bzw. EDI der Register IP, FLAGS, SP, BP, SI bzw. DI.

85 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle bit AH AL AX CH CL CX DH DL DX BH BL BX CS SS DS ES FS GS Befehlsformate Register 16 bit 32 bit AX EAX CX ECX DX EDX BX EBX SP ESP BP EBP SI ESI DI EDI FLAGS EFLAGS IP EIP Byte\bit Bem. 1a OP-Code 1b (1 oder 2 byte) 2a Mod Reg R/M Mode Reg/Mem 2b Scl IReg BReg ScaleIndexBase 3a Address-Displacement.. 3d 0,1,2,3 oder 4 byte 3? 4a Immediates.. 3? 4d 0,1,2,3 oder 4 byte

86 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 86 Das Register EFLAGS enthält den Prozessor-Status (PSW) u.a. mit aligned, virtual mode, nested, i/o priviledge, overflow, direction, interrupt enable, trap, sign, zero, auxiliary carry, parity und carry flags; das Register EIP enthält den Befehlszähler (instruction pointer, IP). wenige, nämlich nur 8 Allzweck-Register! Adressierung Die 16-bit Segment-Register CS (Code), SS (Stack) sowie DS, ES, FS und GS (Daten) stehen für die Adressierung SR:X entsprechend (SR<<4)+X address = zur Verfügung. CS... GS je EAX,..., EDX, ESP, EBP, ESI, EDI segment + base address + (index 1, 2, 4 oder 8 scale factor) + in 0, 8, 32 bit displacement mindestens vier Addressierungsarten! Intel terminology address = restriction register indirect register reg ESP, EBP based mode with displacement base+displacement reg ESP, EBP base plus scaled index base+2 scale index index ESP base plus scaled index with displacement base+2 scale index+displacement index ESP

87 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 87 Operationen Dyadische arithmetisch-logischen Befehle (1.source=destination) mit allen Kombinationen bis auf Speicher Speicher. Befehle für bit, byte, 16bit, 32bit, 64bit, float, double, bit-felder bis 32bit, word strings, 8bit BCD Zahlen, gepackt/ungepackt (SIMD) Befehlsformate dyadische Operationen auf vielen Datentypen! Instruktionslänge zwischen einem und 12 bytes (im Fall des Intel auch noch länger). OP-Code (incl. der Angabe über die Längen der folgenden Felder) und Register plus Adressierungsart (register, memory, scaled und index based) jeweils ein oder zwei Byte, Adress- Displacement und Immediates jeweils 0, 1, 2, 3 oder 4 Byte.

88 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 88 Befehlsprefixe Es gibt optionale instruction-, address size-, operand size- und segment override prefixes von je 1 byte Länge: instruction prefix enthält Wiederholungszähler incl. Abbruchbedingung, address- und operand size prefix bestimmen Adreß- und Operanden-Länge (default ist 16bit im real und 32bit im protected mode), segment override prefix hebt die implizite Segment-Register-Zuordnung für den betreffenden Befehl auf. Prefixe machen 0 bis 4 byte aus, vgl. etwa Repeat/Lock xf0 (LOCK) xf2, xf3 Segment override x2e(cs), x36(ss) x3e(ds), x26(es) x64(fs), x65(gs) This prefix guarantees that the instruction will have exclusive use of all shared memory until the instruction completes execution. 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 also terminated on the occurrence of a specified value of ZF. This prefix causes the memory access to use the specified segment, instead of the default segment expected for that instruction.

89 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 89 Operand size override x66 This prefix changes the size of data expected for this instruction: instructions expecting 32-bit data elements use 16-bit data elements; instructions expecting 16-bit data elements use 32-bit data elements. Address size override x67 This prefix changes the size of operand addresses expected for this instruction: instructions expecting a 32-bit address use 16-bit addresses; instructions expecting 16-bit addresses use 32-bit addresses. Beispiele für 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

90 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 90 Beispiele für 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 hängen auch vom verwendeten Assembler wie etwa nasm, GNUas etc. ab! vgl. mov, movl, movsd o.ä. 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.

91 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 91 Beispiele für Befehlsformate belegen ISA-Heterogenität a. JE EIP + displacement JE Condition Displacement b. CALL 8 32 CALL Offset c. MOV EBX, [EDI + 45] 6 MOV d. PUSH ESI 5 3 PUSH 1 1 d w Reg 8 8 r-m postbyte Displacement e. ADD EAX, # ADD Reg w Immediate f. TEST EDX, # TEST w Postbyte Immediate

92 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 92 Dekodierung Intel-Befehle sind aufwändig zu decodieren: viele Formate diverse Interpretationen des Postbyte m, reg, r/m, gesteuert von mode m und w-feld (width) im OP-Code (Fig. 3.35) w=1 16b 32b 0 AL AX EAX 1 CL CX ECX 2 DL DX EDX 3 BL BX EBX 4 AH SP ESP 5 CH BP EBP 6 DH SI ESI 7 BH DI EDI reg w=0 m=0 m=1 m=2 r/m 16bit 32bit 16bit 32bit 16bit 32bit 0 =BX+SI =EAX 1 =BX+DI =ECX same addr as in m=0 with 2 =BP+SI =EDX disp8 disp16 disp32 3 =BP+DI =EBX 4 =SI =(sib) SI+disp16 (sib)+disp8 SI+disp8 (sib)+disp32 5 =DI =disp32 DI+disp8 EBP+disp8 DI+disp16 EBP+disp32 6 =disp16 =ESI BP+disp8 ESI+disp8 BP+disp16 ESI+disp32 7 =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- 10.pdf s.a. s.a. de.html s.a. AULIS z.h. Klassifiziere den Intel 80x86-Befehlssatz. Wieso CISC?

93 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 93 Condition Codes CMP (compare) {reg, mem} {reg, mem, const} \ {(mem, mem)} berechnet arg1 arg2 und setzt a,c,o,p,s,z FLAGS oder EFLAGS entsprechend ( !) a uxiliary (hier bei BCD-Überlauf) c arry o verflow p arity s ign z ero TEST {reg, mem} {reg, mem, const} \ {(mem, mem)} berechnet arg1&arg2, löscht c sowie o und setzt p,s,z FLAGS oder EFLAGS entsprechend ( !)

94 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 94 Sprung- und Verzweigungsanweisungen JMP unconditional jump JA branch if above (c==0)&&(z==0) JAE branch if above or equal (c==0) wie JNC JB branch if below (c==1) wie JC JBE 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 JB JO,JNO branch if overflow set/not set (o==1) / (o==0) JP,JNP branch if parity set/not set (p==1) / (p==0) PE, PO JS,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)

95 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 95 Bedingungen in Registern vs Condition Codes DLX/MIPS Verzweigungsbedingungen in Registern slt Ra,Rb,Rc; Ra=(Rb<Rc) bnez Ra, lt; if (Ra) goto lt lt: AMDs 64bit Erweiterungen Intel 80x86 Verwendung von Conditioncodes CMP BX,CX; (BX<CX) in FLAGS JL lt; if ( lower flags ) goto lt lt: Der sledgehammer von AMD ist eine abwärtskompatible 64bit Erweiterung des Pentium. Dazu werden die 8 Allzweck-Register auf 64bit Register EAX, ECX, EDX, EBX, ESP, EPB, ESI und EDI 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.

96 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 96 Alle 1byte OP-Codes sind vergeben: neue Register müssen per Präfix angesprochen werden. Die Kurzform der 16 Dekrement/Inkrement- Befehle werden dazu für die sogenannten REX-Instruktionen umdefiniert. Ein paar andere Instruktionen werden im 64bit-Modus nicht mehr unterstützt. MOVSXD erweitert 32bit Daten vorzeichenrichtig auf 64bit. Wie bei der 80x86-Familie sind alle Operationen 2-Operanden Operationen. 3DNow! wurde zugunsten von ISSE2 der Kompatibilität geopfert... Der Prozessor unterstützt im legacy mode den real, virtual und protected mode, im long mode den 32bit compatibility mode und endlich den 64bit mode. Im 64bit mode greift der Prozessor ohne Segmentierung auf den Speicher zu (flat memory), hierarchische Adress-Umsetzung, 4KB- oder 2MB-Seiten im Gegensatz zu den zwischen 4KB und 4GB variabel großen Seiten des ia64. Details in

97 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 97 Intels 64bit Erweiterungen vgl. Gautam Doshi: Understanding the IA-64 Architecture, 1999 http: // vgl. Chris Lomont: Introduction to x64 assembly intel.com/en-us/articles/introduction-to-x64-assembly Slogans on 80x86 architecture This history illustrates the impact of the golden handcuffs of compatibility! Adding new features as someone might add clothing to a packed bag! An architecture that is difficult to explain and impossible to love! What the 80x86 lacks in style is made up in quantity, making it beautiful from the right perspective! 4.8. z.b Der 8051 µ-controller ist ein typischer 8 bit CISC-Rechner der 80er Jahre (vgl. z.b pdf):

98 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 98 Er weist wie auch die 80x86 Prozessoren Merkmale sowohl einer Akkumulator- 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 unterstützt mancherlei Adressierungsart. Der Prozessor unterstützt in keineswegs orthogonaler Weise wenige Datentypen. Der Prozessor verarbeitet Verzweigungsanweisungen unter Verwendung von condition codes Programme sollten geringe Anforderungen an den Speicher stellen. Die Instruktionen sind also kompakt, verschieden lang und sehr inhomogen. z.h. Führe Belege für obige Aussagen an.

99 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle z.b. MicroChip PIC24FJ128GC010Family s Resumée Neben technologischen Randbedingungen sind damit zwei fast kontroverse Anforderungen zu befriedigen.

100 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 100 Für Compiler (-Bauer) sind folgende Eigenschaften wünschenswert: Wenn Operation, Datentyp und Adressierungsart orthogonal, d.h. unabhängig sind, vereinfacht sich die Code-Erzeugung! Lieber Primitive als Konstrukte für eine bestimmte Programmier- Sprache! Leitlinie: einfachere Entscheidung zwischen Code-Alternativen! Befehle, die zur Compile-Zeit vorhandene Information auch zu nutzen erlauben! Z.B. Für die VAX enthält eine Maske, welche Register bei Prozedur-Aufrufen zu retten sind. Z.B. Compiler können MMIX mitteilen, welches Verzweigungsverhalten zu erwarten ist. Z.B. Der VAX-Befehlssatz ist hoch-orthogonal, erlaubt einfache Zuordnung von Hochsprachen-Anweisungen zu Maschinen-Befehlen. Der Code ist so optimiert, daß Programme nur wenig vom damals knappen Speicher brauchen war die VAX die erste Speicher-Speicher-Architektur.

101 Abschnitt 4: Befehlssatz links von der HW-SW-Schnittstelle 101 Für den Prozessor (-Designer) sind folgende Eigenschaften wünschenswert: leichte Dekodierbarkeit load/store Architektur wenige Addressierungsarten leichtes pipelining Z.B. Wie die ersten ausgesprochenen RISC-Maschinen (IBM 801, RISC I und RISC II in Berkeley sowie MIPS in Stanford) weisen DLX und MIPS mit load/store-architektur, mit 32-bit-Festformat-Befehlen und mit einem in der pipeline-implementierung CPI-Wert von kleiner als zwei exemplarische RISC-Befehlssätze auf. Der Befehlssatz legt einen Prozessor weitgehend fest! Insofern ist der Befehlssatz mitentscheidend für die Leistung eines Prozessors! z.h. Identifiziere andere Einflußgrößen für die Prozessor-Leistung.

102 Prozessor-Architektur Das Material ist COD entnommen, aufbereitet und kommentiert, s single cycle Implementierung s. fig 5.1 fig 5.29 (1 23 von 40) multi cycle Implementierung s. fig 5.30 fig 5.51 (24 40 von 40) Wegen der Bedeutung für die Implementierung hier wie auch im Skript die Tabelle der Phasen der Abarbeitung der fünf prototypischen Befehle, nämlich ADD, LW, SW, BEQ und J, Fig. 5.35:

103 Abschnitt 5: Prozessor-Architektur 103 R-Type load/store branch jump ADD LW, SW BEQ J step R-Type load/store branch jump IF IR = Mem[PC] PC += 4 ID A = Reg[IR[25-21]]; B = Reg[IR[20-16]] ALUOut = PC+(sign ext(imm)<<2) EX/ BEQ & J completion ALUOut ALUOut = A if (A-B==0) PC = PC[31-28] = A op B +sign ext(imm); PC = ALUOut (IR[25-0]<<2) ADD & SW Mem/ completion Reg[IR[15-11]] MDR = Mem[ALUOut] = ALUOut or Mem[ALUOut] = B WB Reg[IR[20-16]] = MDR 5.3. Implementieren der Steuerung s. fig C.3 fig C.20 (1 7) c.pdf

104 Abschnitt 5: Prozessor-Architektur 104 Modellieren der Steuerung durch FSM (C.6) erlaubt diverse Implementierungen 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 für MIPS R2000 mit ADD, LW, SW, BEQ, J ALU Register PC write sequenlabel cntrl SRC1 SRC2 control Memory control cing Fetch Add PC 4 read PC ALU seq Add PC Extshft read dispatch1 Mem1 Add A Extend dispatch2 LW2 read ALU seq write MDR to Rt fetch SW2 write ALU fetch R-Type1 func A B seq write ALU to Rd fetch BEQ1 Sub A B ALU-zero fetch JUMP1 jumpaddr fetch

105 pipeline-prozessor Das Material ist COD entnommen, aufbereitet und kommentiert, s. Materialien zur DLX ( MIPS) gibt es reichlich, beispielsweise Valentin Gherman: DLXSim für Windows bzw. für Linux zum Download; Vorlesungsmitschrift - Kapitel 3 Der DLX als RISC- Beispiel; Minitutorial für DLX; Institute of Computer Science, University of Stuttgart Christian Hochberger: Mikrorechner; Fakultät Informatik, TU Dresden Kapitel4-Rechner.pdf und Kapitel4-Rechner-Teil2.pdf (allg.&dlx) ws/infet1/docs/ Rade Kutil: DLX-Simulator für Windows; Kurze Einführung zur Assemblerprogrammierung in DLX; link auf Gherman Department of Computer Sciences, University of Salzburg

106 Abschnitt 6: pipeline-prozessor instruction pipelines pipeline control s. fig 6.29 fig 6.35 (25 31 von 59) data hazards s. fig 6.36 fig 6.49 (32 44 von 59) control hazards s. fig 6.50 fig 6.56 (45 51 von 59) superskalare Version & Leistung s. fig 6.58 fig 6.71 (52 59 von 59)

107 Abschnitt 6: pipeline-prozessor 107 superskalare Prozessoren Def. Superskalare Prozessoren haben mehrere (unabhängige) funktionale Einheiten (FUs); spezielle HW (scoreboard) dient der Synchronisation der FUs; Programm-Parallelität auf Anweisungsebene wird in Parallelarbeit von FUs umgesetzt. Z.B. superskalare Version des MIPS Prozessors durch Verdoppelung der Befehlspipeline: eine für arithmetisch/logische Operationen und Verzweigungen und eine ausschließlich für load/store Operationen.. z.h. Bewerte die Auslastung einer jeden pipeline. z.h. Verbessere die Auslastung einer jeden pipeline. z.h. Implikationen für data hazards? für control hazards?

108 Abschnitt 6: pipeline-prozessor 108 superskalare Erweiterung des MIPS-Prozessors M u x 4 M u x ALU PC Instruction memory Registers M u x Write data Data memory Sign extend Sign extend ALU Address M u x

109 Abschnitt 6: pipeline-prozessor 109 Inkrementierung eines jeden Feldelementes um eine Konstante ; cycle loop: lw Rt,0(Rp) ; load Mem[Rp] into temporary Rt 1 add Rt,Rt,Rs ;increment element by scalar in Rs 2 sw Rt,0(Rp) ; store result at Rp 3 addi Rp,Rp,4 ; increment pointer Rp 4 bne Rp,Re,loop; if (Rp!=Re) goto loop 5 ALU/branch load/store ; cycle loop: lw Rt,0(Rp) ; Rt Mem[Rp] 1 add Rt,Rt,Rs ; increment Rt 2 addi Rp,Rp,4 ; increment Rp 3 bne Rp,Re,loop sw Rt,-4(Rp);branch and store 4 ergibt sich CPI von 4 5 = 0.8. Unter welchen Annahmen? z.h. Läßt sich obiger code für die superskalare Erweiterung weiter optimieren? z.h. Welcher Beschleunigungsfaktor ergibt sich? Welche Arten von Kenngrößen gehen grundsätzlich in den Beschleunigungsfaktor ein?

110 Abschnitt 6: pipeline-prozessor 110 Abarbeitung von Befehlspaaren im superskalaren MIPS Paare bestehen aus zwei Instruktionen, aus einer arithmetisch-logischen oder einer branch-instruktion einer load- oder einer store-instruktion etwa ADD/BEQ und LW/SW. ADD BEQ LW SW IF IRa=Mem[PC]; IRm=Mem[PC+4]; PC+=8; ID Aa=Reg[IRa[25-21]] Am=Reg[IRm[25-21]] Ba=Reg[IRa[20-16]] Bm=Reg[IRm[20-16]] target=pc+signext(ira[15-0]) EX ALUouta IF (Aa==Ba) ALUoutm=Am+SignExt(IRm[15-0]) = Aa op Ba PC = target MEM MDR=Mem[ALUoutm] Mem[ALUoutm]=Bm WB Reg[IRa[15-11]] Reg[IRm[20-16]] = ALUouta = MDR Für die Bearbeitung der ADD/BEQ- bzw. der LW/SW-Instruktionen nötige, ansonsten aber gleichnamige Register sind hier durch die Suffixe a bzw. m voneinander unterschieden.

111 Abschnitt 6: pipeline-prozessor functional pipelines arithmetische pipelines Beispielsweise die Multiplikation einer 8-bit mit einer 4-bit unsigned integer kann konventionell mit drei Addierern und vier Bus-gates multiplicand multiplier bus gate 8bit adder bus gate 0 bus gate 8bit adder bus gate 8bit adder } {{ } 12 bit product

112 Abschnitt 6: pipeline-prozessor 112 und pipelined nur mit zusätzlichen latches realisiert werden. multiplicand input latches multiplier bus gate 8bit adder bus gate 0 1 st /2 nd stage latches bus gate 8bit adder 2 nd /3 rd stage latches bus gate 8bit adder output latch 12 bit product

113 Abschnitt 6: pipeline-prozessor 113 Implementierungen der Multiplikation von breiteren Faktoren liegen auf der Hand. Welche Vorteile/Nachteile ergeben sich zu welchen Kosten? Def. Die Auflösung einer Operation in pipeline-stufen heißt Granularität. Z.B. x = (x 123) (x 456) x 789, liefert Multiplikations-pipelines unterschiedlicher Granularität. Def. Die Menge der verschiedenen Funktionen, die eine multifunktionale pipeline ausführen kann, bestimmt die sogenannte Variabilität einer pipeline. Z.B. Texas Instruments Advanced Scientific Computer, TI ASC mit dynamisch zu konfigurierender pipeline zur Abarbeitung arithmetischer Operationen: float +, *, Skalarprodukt... s. z.b. Daniel P. Siewiorek, C. Gordon Bell, Allen Newell: Computer Structures Principles and Examples; McGraw-Hill pp753 Structures Principles and Examples/

114 Abschnitt 6: pipeline-prozessor 114 scheduling funktionaler Einheiten FUs aufeinander abstimmen und synchronisieren; dabei Daten-Abhängigkeiten berücksichtigen! Z.B. CDC der erste Super-Computer mit 10 FUs: 2 Addierer, 2 Inkrementierer, 2 Multiplizierer, 1 Dividierer sowie je eine branch, Boolean und shift unit. Je FUs zwei Operanden-Register F j und F k, ein Ergebnis-Register F i, Operationsmodus F m, busy flag, read flags R j und R k (falls R j bzw. R k gesetzt sind, sind die Daten in F j bzw. F k valide) sowie Zeiger Q j und Q k auf die die Operanden produzierenden FUs. je acht (Basis-) Adreß-Register A 0,..., A 7, Index-Register B 0,..., B 7 und Akkumulatoren X 0,..., X 7. control unit (CU), scoreboard verwaltet XBA result register designators (welche FU beliefert welches XBA- Register) entry operand register designators (welches XBA-Register ent-

115 Abschnitt 6: pipeline-prozessor 115 hält Werte für welchen Operanden einer FU) function unit designators Q j bzw. Q k (welche FU produziert O- peranden für F j bzw. F k ) 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 ist nicht Ergebnis-Register einer Instruktion, die noch bearbeitet wird) issue instruction to FU X6:=X1*X2 X5:=X6+X4 X3:=X1/X2 X5:=X4*X3 X4:=X0+X6 score board resolves structure hazards and data hazards (RAW, WAR)! (X6: RAW) (X3: RAW) (X4: WAR)

116 Abschnitt 6: pipeline-prozessor 116 X3:=X1/X2; X5:=X4*X3; X4:=X0+X6 X3 X4 X5. DIV ADD DIV MUL F m DIV F j X1 F k X2 Q j Q k RF j 1 RF k 1 busy 1.

117 Abschnitt 6: pipeline-prozessor 117 X3:=X1/X2; X5:=X4*X3; X4:=X0+X6 X3 X4 X5. DIV MUL ADD DIV MUL F m DIV MUL F j X1 X4 F k X2 X3 Q j Q k DIV RF j 1 1 RF k 1 0 busy 1 1.

118 Abschnitt 6: pipeline-prozessor 118. X3:=X1/X2; X3 DIV X5:=X4*X3; X4 ADD X4:=X0+X6 X5 MUL. ADD DIV MUL F m ADD DIV MUL F j X0 X1 X4 F k X6 X2 X3 Q j Q k DIV RF j RF k busy 1 1 1

119 Abschnitt 6: pipeline-prozessor 119 z.h. Untersuche WAW hazards. CDC6600 ist erster superskalarer Prozessor. theoretisch maximal erzielbare Leistung = #FUs Taktrate Z.B. Weitere Beispiele superskalarer Prozessoren sind DEC21064 und DEC (Alpha), Intel i80860xp, IBM RS/6000, Motorola MC88110, MIPS R4000 oder SUN SuperSPARC. Bem. 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 delays ausgleichen, während der Compiler für superskalar-architekturen möglichst keine Paare, Tripel o.ä. abhängiger Befehle erzeugen sollte, damit die funktionalen Einheiten stets ausgelastet sind. Z.B. DEC (Alpha) und MIPS R4000 gelten als sowohl superskalar als auch superpipelined.

120 Abschnitt 6: pipeline-prozessor 120 pipeline-vektor-prozessoren Vektor-Operationen wie z = a x + y mit a, x, y, z IR n entweder durch n Rechen-Elemente das i-te Rechen-Element berechnet z i = a i x i + y i effektiv ausführen oder eben durch pipeline-multiplizierer mit nachgeschaltetem pipeline-addierer. a i F U i a i x i + zi x i + z i y i y i Wichtigste Beispiele sind die SAXPY- bzw. DAXPY-Benchmarks, d.h. single/double a*x[i]+y[i]. Anwendungen?

121 Abschnitt 6: pipeline-prozessor 121 Def. pipeline-vektor-prozessoren verfügen typischerweise über spezialisierte, dynamisch konfigurierbare pipelines. Vektor-Operationen effizient ausführen: per komponentenweiser arithmetischer Operation, per compress( v, b), expand( v, b), merge( v, w, b), gather( v, i) mit Boole schen Vektoren b und Index-Vektoren i, per speziellen triadischen Operationen, z.b. D[i]:=A[i]*B[i]+C[i]. Spezielle Vektor-Register, caches und häufig verschränkte Speicher unterstützen 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 NEC SX-, Siemens VPx und Fujitsu VPx-EX-Familien mit den gemeinsamen Merkmalen: Befehls-pipeline, mehrere pipeline-fus, verschränkter Speicher (interleaved memory), unabhängige Befehls-caches (instruction cache) und Daten-caches (data cache) sowie mehrfache Bus- Systeme (multiple buses).

122 Abschnitt 6: pipeline-prozessor 122 Jahr Anzahl Vektor- Register Vektor- Register Länge funktionale Vector Einheiten Cray (+,, inv, logic, shift) 1 Cray X-MP (+,, inv, 2 logic, shift) Y-MP 1988 Cray (+,,, inv, logic) 1 Fujitsu (+,, /) je GK und FK 2 VP100/200 Hitachi S810/820 load store units 2 load 1 store (2 (FK+, logic), +, /+) 4 Convex C (+,, /, FK-logic) NEC SX/ (4 (+,, /, shift, FK+, logic)) 8 8K konfig DLXV (+,, /, FK+, logic) 1 z.h. Fortschreiben!

123 Abschnitt 6: pipeline-prozessor 123 Z.B. Die DLX kann über Kommando-Zeilen-Parameter zur Vektor- Maschine DLXV mit Vektor-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 dem Speicher ab Adresse R1) und Speicher-Vektor-Operationen, z.b. SV V1,R1 (store V1 im Speicher ab Adresse R1) konfiguriert werden. Weitere Operationen wie beispielsweise Boole sche Vektor-Operationen oder das Setzen und Auslesen von Vektor-Längen- bzw. Vektor- Masken-Registers. Z.B. CNAPS coprozessor board von Adaptive Solutions mit 64 bzw. 256 Prozessoren (s. Labor ELKA). Vektorisierung erzielt verhältnismäßig große Leistungssteigerungen mit verhältnismäßig geringen Mehrkosten für hardware und Compiler.

124 Abschnitt 6: pipeline-prozessor 124 Vektor-Instruktionen im Mikro-Programm reduzieren Speicher- Zugriffe; Schleifen werden im Mikro-Programm i.a.r. schneller ausgeführt als solche im Assembler-Programm. HW-Verarbeitung entsprechender Vektor-Instruktionen reduziert ebenso Speicher-Zugriffe und eliminiert darüberhinaus den Schleifen- Overhead. Z.B. frühe Vektor-Maschinen: STAR100 und CYBER203 mit verschränkten Speichern, multiplen Bussen, E/A-Prozessoren und Strom- Einheit, stream unit (Mikro-Controller, Register-Bänke, 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. n 1/2 200! Befehlskeller mit bit Wörtern; Pipeline-Inhalte werden in spezielle Unterbrechungsregister gerettet. Heute sind Vektor-Operationen meist ununterbrechbar; bei Unterbrechungen löst das exception handling z.b. ein roll back aus. Z.B. CRAY-1: load/store-architektur, je acht Vektor-Register (V),

125 Abschnitt 6: pipeline-prozessor 125 Skalar-Register (S) und Adreß-Regsister (A) mit einem Adreß-Multiplizierer, z.b. für mehrdimensionale Felder, und Funktionseinheiten als pipelines mit 2 bis 14 Stufen. Verketten von Operationen, also mehrere Operationen nacheinander auf einem Datenstrom auszuführen (z.b. für LGS). vier Befehlspuffer für je 64 Befehle; scoreboard Einheit synchronisiert durch Register-Verriegelung die diversen Funktionseinheiten.

126 Abschnitt 6: pipeline-prozessor 126 Leistungsbewertung Sei t cond die für die Konditionierung der pipeline notwendige Zeit, t flush die Durchflußzeit (flushing time), d.h. die Zeit für den Durchlauf durch die (konditionierte) pipeline, also die Zeit vom Holen der Argumente bis zum Wegspeichern der Ergebnisse, und t clock die Zyklus-Zeit (clock time) der Verarbeitungselemente, also die Verarbeitungszeit einer jeden Stufe der pipeline. Dann ist t cond +t flush die Ausführungszeit einer Skalar-Operation und n Skalar-Operationen dauern t cond + n t flush. Also ergibt sich eine Ausführungszeit T scal (n) = t flush + t cond n pro Operation bei n Operationen. Falls die pipeline in jedem Zyklus, also alle t clock Zeiteinheiten ein Ergebnis produziert und falls in jedem Zyklus Operanden geholt und Ergebnisse abgespeichert werden, so ist t cond + t flush + (n 1) t clock = t conf + n t clock mit t conf = t cond + t flush t clock die Zeit für die Bearbeitung eines Vektors der Länge n durch eine Vektor-Operation und

127 Abschnitt 6: pipeline-prozessor 127 damit T vect (n) = t clock + t conf n die Ausführungszeit pro Vektor-Element bei Vektor-Länge n. Die Leistung P der pipeline, also die Anzahl von Operationen pro Zeiteinheit ist dann 1 P =P (n)= T vect (n) = 1 t clock (1 + t conf 1 t clock 1 t clock n ) Für n ergibt sich die theoretische Maximal-Leistung P = und für n 1/2 = t conf t die halbe Maximal-Leistung P (n 1/2 ) = clock P ( t conf t clock ) = 1 t clock (1+1) = 1 2 P und somit auch P = P (n) = P n n+n 1/2. Def. n x und n 1/2 messen die Nützlichkeit von Vektor-Prozessoren: n x = Vektor-Länge, so daß Skalar- = Vektor-Geschwindigkeit, T scal(n x ) = T vect (n x ) n 1/2 = Vektor-Länge, so daß Vektor-Geschwindigkeit = 1 asymptotische Vektor-Geschwindigkeit 2

128 Abschnitt 6: pipeline-prozessor 128 so daß T vect (n 1/2 ) = T vect( ) 2 n x ist der break even point der Vektorisierung. Je kleiner n x und n 1/2 ausfallen, um so nützlicher ist Vektorisierung. Wie schon bei pipeline-rechnern muß hier das Speicher-System erst recht mithalten können (Daumen-Regel: Speicher-Bandbreite = dreifache pipeline-rate). Z.B. Die Vektor-Ausführung für n Elemente brauche t conf + n t clock Zeiteinheiten oder Zyklen, die Skalar-Ausführung n t scal. Vektorisierung empfiehlt sich also für t conf + n t clock < n t scal oder eben falls n > t conf /(t scal t clock ). Für die CRAY-1 gilt t conf = 5, t clock = 1 sowie t scal = 2 und damit n > 5.

129 Speicher-Hierarchie Welche Bestandteile hat die Speicher-Hierarchie? Speed CPU Size Cost ($/bit) Fastest Memory Smallest Highest Memory Slowest Memory Biggest Lowest

130 Abschnitt 7: Speicher-Hierarchie 130 Daten stehen auf einer Ebene jeweils in Kopie aus der darunterliegenden Ebene zur Verfügung: Processor Data are transferred

131 Abschnitt 7: Speicher-Hierarchie 131 Inwiefern ist die Speicher-Hierarchie eine Pyramide? CPU Levels in the memory hierarchy Level 1 Level 2 Increasing distance from the CPU in access time Level n Size of the memory at each level

132 Abschnitt 7: Speicher-Hierarchie 132 Kenngrößen etwas aktuellere Angaben zur Speicher-Hierarchie (2002 und 2005) Betriebssysteme Speicherverwaltung Speicherhierarchie Zugriffszeit 1 ns 2 ns 10 ns 10 ms 100 s Register Cache Main Memory Disk Tape Kapazität < 1 KB < 2 MB MB GB > 0,5 TB Dr. Jörg Gruner 7

133 Abschnitt 7: Speicher-Hierarchie 133 Lokalität Die Speicher-Hierarchie funktioniert nur aufgrund der Lokalität von Zugriffen auf die jeweils unterliegende Speicher-Ebene: zeitliche Lokalität: auf den Zugriff auf ein Datum folgt mit hoher Wahrscheinlichkeit bald ein erneuter Zugriff. räumliche Lokalität: auf den Zugriff auf ein Datum folgt mit hoher Wahrscheinlichkeit 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% des Codes. z.h. Wie sieht die 90/10-Faustregel für Daten aus? z.h. Verifikation? Bedeutung? Konsequenz?

134 Abschnitt 7: Speicher-Hierarchie caching Platzierung von Daten im cache: suchen & finden oder ggfls. nachladen & verdrängen X4 X1 Xn 2 X4 X1 Xn 2 Xn 1 X2 X3 a. Before the reference to Xn Xn 1 X2 Xn X3 b. After the reference to Xn

135 Abschnitt 7: Speicher-Hierarchie 135 direct mapped caches Jeder Speicher-Adresse entspricht genau eine cache line! Cache Memory

136 Abschnitt 7: Speicher-Hierarchie 136 Identifiziere Kenngrößen und Arbeitsweise der Implementation eines direct mapped caches! Hit Address (showing bit positions) Byte offset Tag Index Data Index Valid Tag Data

137 Abschnitt 7: Speicher-Hierarchie 137 direct mapped cache: one word blocks trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit 8 1-Wort-Blöcken m m m m m t m t m m t t line = Adresse mod 8 Keine räumliche Lokalität! 4 hits Keine Verdrängungsstrategie!

138 Abschnitt 7: Speicher-Hierarchie 138 Z.B. DEC-Station mit direct mapped cache Address (showing bit positions) Hit Byte offset Data 16 bits 32 bits Valid Tag Data 16K entries 16 32

139 Abschnitt 7: Speicher-Hierarchie 139 direct mapped cache: four word blocks erst ganze Blöcke in jeder cache line erlauben, auch räumliche Lokalität zu nutzen! Address (showing bit positions) Hit Tag Byte offset Index Block offset Data 16 bits 128 bits V Tag Data 4K entries Mux 32

140 Abschnitt 7: Speicher-Hierarchie 140 trace: Zugriffe auf einen direct mapped oder 1-assoziativen cache mit 4 2-Wort-Blöcken (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 line = (Adresse/2) mod 4 2 mal temporal hits 1 mal spatial hits 3 hits Keine Verdrängungsstrategie!

141 Abschnitt 7: Speicher-Hierarchie 141 hits bzw. misses in Abhängigkeit von cache- und Block-Größe 40% 35% 30% Miss rate 25% 20% 15% 10% 5% 0% Block size (bytes) 1 KB 8 KB 16 KB 64 KB 256 KB

142 Abschnitt 7: Speicher-Hierarchie 142 fully associative caches Eröffnen von Freiheiten, Blöcke in cache lines zu platzieren! Direct mapped Block # Set associative Set # Fully associative Data Data Data Tag 1 2 Tag 1 2 Tag 1 2 Search Search Search macht Verdrängungsstrategie und hardware-aufwand notwendig: random fifo lru

143 Abschnitt 7: Speicher-Hierarchie 143 set associative caches verschiedene Assoziativität bei fester cache-netto-kapazität One-way set associative (direct mapped) Block 0 Tag Data Two-way set associative Set Tag Data Tag Data Set 0 1 Four-way set associative Tag Data Tag Data Tag Data Tag Data Eight-way set associative (fully associative) Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data

144 Abschnitt 7: Speicher-Hierarchie 144 set associative cache: one word blocks trace: Zugriffe auf einen 2-assoziativen cache mit 1-Wort-Blöcken (2-assoziativ, also 2 Blöcke pro set) set 0 16 set set set m m m m m t t t m m t t set = Adresse mod 4 Keine räumliche Lokalität! 5 hits least recently used, LRU!

145 Abschnitt 7: Speicher-Hierarchie 145 set associative cache: two word blocks trace: Zugriffe auf einen 2-assoziativen cache mit 2-Wort-Blöcken (2-assoziativ, also 2 Blöcke pro set) set 0 (4,5) (4,5) (4,5) (24,25) (16,17) set 1 (6,7) (6,7) (26,27) (14,15) (14,15) (14,15) (6,7) m m m m s t t t m m t m set = (Adresse/2) mod 2 5 hits least recently used, LRU!

146 Abschnitt 7: Speicher-Hierarchie 146 Implementation eines 4-assoziativen caches Address Index V Tag Data V Tag Data V Tag Data V Tag Data to-1 multiplexor Hit Data

147 Abschnitt 7: Speicher-Hierarchie 147 Performance set-assoziativer caches 15% 12% 9% Miss rate 6% 3% 0% One-way Two-way Four-way Eight-way Associativity 1 KB 2 KB 4 KB 8 KB 16 KB 32 KB 64 KB 128 KB

148 Abschnitt 7: Speicher-Hierarchie 148 Performance set-assoziativer caches 14% 12% 10% Miss rate per type 8% 6% 4% 2% Capacity 0% Cache size (KB) One-way Four-way Two-way Eight-way

149 Abschnitt 7: Speicher-Hierarchie 149 cache-schreibstrategien Prozessor, DMA-hardware, EA-Prozessoren und erst recht andere Prozessoren greifen unabhängig auf einen gemeinsamen cache/speicher zu Konsistenz-Problem! Def. Datenkonsistenz von cache und Speicher cache und Speicher-Ausschnitt stimmen stets überein. Def. Datenkohärenz von cache und Speicher stets wird der zuletzt geschriebene Wert gelesen. write through immer zugleich in den cache und in den Speicher zu schreiben garantiert Konsistenz! copy back erst beim Verdrängen der (modifizierten) Daten (dirty bit) aus dem cache diese in den Speicher zurückzuschreiben garantiert Kohärenz!

150 Abschnitt 7: Speicher-Hierarchie 150 Kohärenz per Schnüffel-Logik: indexcache!sniffing 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ß-Kennung nur die des noch aktuellen Prozesses invalidieren (cache flush). cache miss beim Schreiben (miss on write): fetch on write (miss) oder write allocate: der entsprechende Block wird geladen und danach (ohne miss) geschrieben. write around oder no write allocate: der entsprechende Block wird unter Umgehung des caches in den Speicher der darunter liegenden Speicher-Hierarchie-Ebene geschrieben. z.h. Beschleunigungsfaktor aufgrund des Verzichts auf Konsistenz zugunsten von Kohärenz Z.B. s.a. Optimierung der Matrix-Multiplikation (nur) bei Berücksichtigung des caching in Abschnitt 3.4, S. 55ff vgl.

151 Abschnitt 7: Speicher-Hierarchie 151 Havard-Architektur Def. Maschinen mit getrennten Speichern (damals) bzw. caches (heute) für Instruktionen und Daten weisen die sogenannte Havard- Architektur auf. Z.B COD2e pp st level caches Pentium Pro vs PowerPC 604 feature Pentium Pro PowerPC 604 organisation split I-cache and D-cache cache sizes 8KB each 16KB each associativity 4-associative replacement pseudo LRU LRU block size 32B write policy write back write back/through 2 nd level caches Pentium Pro vs PowerPC 604: 256KB or 512KB instructions and data

152 Abschnitt 7: Speicher-Hierarchie Speicher: SRAM vs DRAM DRAM (Dynamic Random Access Memory) word select line pass transistor capacitor bitline (data in/out ) 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 2004 by WiscGang & Wittie Tue2Nov04 From Lect12 Lect18Slide 85

153 Abschnitt 7: Speicher-Hierarchie 153 DRAM Organization square row/column matrix multiplexed address lines internal row buffer operation 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 Tue2Nov04 From Lect12 Lect18Slide 86

154 Abschnitt 7: Speicher-Hierarchie 154 Z.B. 4M 1 DRAM, multiplexed address (22bit = 11bit + 11bit) Row decoder 11-to array Address[10 0] Column latches Mux RAS/CAS statt immer nur auf nur ein bit einer ganzen Zeile zuzugreifen: page mode bzw. static column mode : mehrere bits bei fester rowaddress oder nibble mode: ein nibble bei fester row-address Dout

155 Abschnitt 7: Speicher-Hierarchie 155 1st Year DRAM Specs #bits/chip Min Clock Access Time 1Mb 25ns 135ns 4Mb 20ns 110ns 16Mb 15ns 90ns 64Mb 12ns 75ns 128Mb 10ns 70ns 256Mb 7ns 65ns 512Mb 5ns 60ns 1Gb 3.8ns 55ns Cycle Time 190ns 165ns 120ns 110ns 100ns 90ns 80ns 70ns 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 2004 by WiscGang & Wittie Tue2Nov04 From Lect12 Lect18Slide 87

156 Abschnitt 7: Speicher-Hierarchie Speicher-Organisation Anforderung an Speicher-Verwaltung/Memory Management hardware-unabhängigkeit (Speicher-Größ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)

157 Abschnitt 7: Speicher-Hierarchie 157 virtueller Speicher Obige Anforderungen werden durch virtuellen Speicher bedient! Virtual addresses Address translation Physical addresses Disk addresses

158 Abschnitt 7: Speicher-Hierarchie 158 Vergleich cache vs memory H.&P. cache/memory physical/virtual 1990 proc cache cache memory memory hard disk block 4-128B 512B-8KB page hit time 1 cycle 110 cycles hit time miss time 8-32 cycles 100K-600K cycles miss time access time 6-10 cycles 100K-500K cycles access time transfer time 2-22 cycles 10K-100K cycles transfer time miss rate fault rate cache size 1KB 256KB 4MB 2GB memory size typical access times (1997): SRAM 5 25ns DRAM ns Disk Mio ns

159 Abschnitt 7: Speicher-Hierarchie 159 paging Seiten-Tabelle/page table Verwendung Virtual page number Valid Page table Physical page or disk address Physical memory Disk storage

160 Abschnitt 7: Speicher-Hierarchie 160 Seiten-Tabelle/page table schematisch Page table register Virtual address Virtual page number Page offset Valid Physical page number Page table If 0 then page is not present in memory Physical page number Page offset Physical address

161 Abschnitt 7: Speicher-Hierarchie 161 paging Implementierung Virtual address Virtual page number Page offset Translation Physical page number Page offset Physical address Konsequenzen aus der gigantischen page fault penalty: große pages aber Verschnitt und Transfer-Zeit Verringern der page fault rate per optimaler Verdrängungsstrategie (fully associative, LRU) handling of page faults per software, i.e. os write back Strategie: copy back

162 Abschnitt 7: Speicher-Hierarchie 162 Größe der Seiten-Tabelle! z.h. Größe der page table als Funktion der page size! Reduktion des Speicherbedarfs der page tables dynamisch wachsende page tables (eine bzw. zwei pro Prozess, falls Adreß-Raum in eine bzw. zwei Richtungen wächst) inverted page table / hashing hierarchy of page tables paging the page tables

163 Abschnitt 7: Speicher-Hierarchie 163 Ersetzungsstrategien bei paging opt optimal wenn auch illusionär wäre, genau die Seite zu ersetzen, die in Zukunft für die längste Zeit nicht referenziert wird! nur zum Zweck des Vergleichs! FIFO first in first out (älteste ersetzen) LRU least recently used: am längsten nicht referenziert ersetzen clock Ring-Puffer-Variante von FIFO: use bit:=1 bei Referenz, ersetze nächste page mit use bit==0, if (use bits==1) use bit=0; working set Menge der Seiten während der letzten n Referenzen / während 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 für einen physikalischen Speicher mit drei oder vier pages = frames = Kacheln.

164 Abschnitt 7: Speicher-Hierarchie 164 opt frame a b c m m m m h h m h h m m h 7 page faults frame a b c 3 3 d m m m m h h m h h h m h Häufigkeit berücksichtigen, Lösung nicht eindeutig, ohne Orakel nicht implementierbar! 6 page faults

165 Abschnitt 7: Speicher-Hierarchie 165 FIFO frame a b c m m m m m m m h h m m h 9 page faults frame a b c 3 2 d 4 3 m m m m h h m m m m m m aber: auf alte Seiten kann durchaus häufig zugegriffen werden! FIFO ist per Pointer einfach zu implementieren! Bélády s Anomalie: mehr frames weniger page faults 10 page faults

166 Abschnitt 7: Speicher-Hierarchie 166 LRU frame m m m m m m m h h m m m 10 page faults frame m m m m h h m h h m m m page fault rate kaum höher als bei opt, allerdings aufwändige Implementierung! 8 page faults

167 Abschnitt 7: Speicher-Hierarchie 167 segmentation segments = logical units of programs, individual base address, length, protection etc. in segment descriptor table, z.b. code, data, stack, heap Z.B. Intel 80x86 segment registers: CS, DS, ES, SS... plus SegReg:Offset addressing, VAX 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 mit externer Fragmentierung (splinters, crunching), Segmente sind ganz oder garnicht geladen! schneller context switch Protection: differenziert (f/r/w/e), einfach

168 Abschnitt 7: Speicher-Hierarchie 168 memory sharing: simpel wie protection dynamic allocation of new memory, dynamic sizing of existing memory: schwierig paging vs segmentation paging 1-Wort-Adressen HW-orientiert große page table oder hierarchy Seiten fester Größe einfache Blockersetzung schwierige Protection interne Fragmentierung ungenutzter Teile einer Seite Nachteil: thrashing augmentation einfach resizing einfach z.h. context switch? segmentation 2-Wort-Adressen SW-orientiert kleine segment descriptor table Segmente variabler Größe (code/data) schwierige Blockersetzung einfache Protection externe Fragmentierung ungenutzte Teile des Hauptspeichers Nachteil: splinters, zusätzlicher Adder augmentation schwierig resizing schwierig (crunching)

169 Abschnitt 7: Speicher-Hierarchie 169 Segmentierung: Er- und Einsetzungsstrategien unvermeidliche Überschneidungen mit der Lehrveranstaltung EBS! klassische Einsetzungsstrategien bei segmentation anhand einer verzeigerten Liste von freien Bereichen first fit erster Freibereich, der groß genug ist next fit nächster erster Freibereich, der groß genug ist best fit kleinster Freibereich, der groß genug ist gesamte Liste muss durchsucht werden; sortiere Freibereich nach der Größe. worst fit größter Freibereich gesamte Liste muss durchsucht werden. quick fit für verschiedene Größen eigene Listen freier Bereiche Buddy-lists Allokation von Speicher in Blöcken mit Kapazitäten von 2 n Speicher-Einheiten für n = min, min + 1,..., max falls Speicher-Anforderung nicht bedient werden kann: Zusammenschieben und Verschmelzen der freien Bereiche = Kompaktierung (wie Festplatten-Defragmentierung)

170 Abschnitt 7: Speicher-Hierarchie Belegungstrategien 170 freie Speicherbereiche FirstFit Der erste, ausreichend große Speicherbereich, der frei ist, wird belegt. Dies führt meist zu einem Restspeicherbereich, der unbelegt bleibt. Speicheranforderung Betriebssysteme 9 KB 7 KB 12 KB 7 KB 4 KB 11 KB 22 KB 12 KB 2 7 KB 4 KB 9 KB 12 KB 10 KB 12 KB KB Direkte Speicherbelegung Belegung Belegungstrategien NextFit Dr. Jörg Gruner 37 Die FirstFit-Strategie führt dazu, daß in den ersten Speicherbereichen nur Reststücke (Verschnitt) verbleiben, die immer wieder durchsucht werden. Um dies zu vermeiden geht man bei der NextFit-Strategie analog der FirstFit-Strategie vor, setzt aber bei dem wiederholten Durchlauf die Suche an der Stelle fort, an der bei dem vorangegangen 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 4 KB 9 KB 2 KB 7 KB 15 KB 12 KB Dr. Jörg Gruner 38

171 Abschnitt Belegungstrategien 7: Speicher-Hierarchie 171 BestFit Speicheranforderung freie Speicherbereiche Die gesamte Liste bzw. Tabelle wird durchsucht, bis man einen Speicherbereich findet, der gerade ausreicht, um die Speicheranforderung zu befriedigen und den Verschnitt minimiert. Betriebssysteme 9 KB 7 KB 12 KB Direkte Speicherbelegung 7 KB 4 KB 11 KB 22 KB 12 KB 2 Belegung 7 KB 4 KB 9 KB 22 KB 12 KB Belegungstrategien KB WorstFit Dr. Jörg Gruner 39 Sucht den größten vorhandenen, freien Speicherbereich mit dem Ziel den Verschnitt zu maximieren» um bei weiteren Speicheranforderungen ausreichend freien Speicher zur Verfügung zu haben oder» diesen Verschnitt als neuen freien Speicherbereich zur Verfügung zu stellen. 9 KB 7 KB 12 KB Speicheranforderung freie Speicherbereiche Belegung 7 KB 4 KB 11 KB 22 KB 12 KB 7 KB 4 KB 11 KB 7 KB 15 KB 12 KB 9 KB 24 KB Dr. Jörg Gruner KB

172 Belegungstrategien Abschnitt 7: Speicher-Hierarchie 172 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 Betriebssystems regelmäßig Nachrichten der Länge 1 KB versendet, so ist es sinnvoll eine Liste für 1 KB Belegungen zu führen und alle Speicheranforderung Betriebssysteme schnell und ohne Verschnitt zu befriedigen. Direkte Speicherbelegung Belegungstrategien 05 QuickFit Dr. Jörg Gruner 41 Speicheranforderung sonstige freie 1 Speicherbereiche 1 KB Speicherbereiche Dr. Jörg Gruner 42...

173 Abschnitt 7: Speicher-Hierarchie 173 Buddy-Systeme Erweiterung der QuickFit-Strategie Buddy-Systeme sehen für jede gängige Speicherbelegungsgröße Betriebssysteme eine Liste vor. Gängige Speicherbelegungsgrößen sind z.b. Zweierpotenzen (2 0, 2 1, 2 2, 2 3,... Byte). Direkte Speicherbelegung Speicher wird nur in gängigen Speicherbelegungsgrößen vergeben. Belegungstrategien Beispiel: Speicheranforderung von 280 Byte vergebene Buddy-Systeme Speicherbelegungsgröße 512 Byte = 2 9 Byte 2 11 Byte 2 11 Byte 2 11 Byte 2 12 Byte 2 11 Byte 2 10 Byte 2 10 Byte 2 10 Byte 2 9 Byte 2 9 Byte 4 KB 2 * 2 KB = 4 KB 2 * 1 KB + 2 KB = 4 KB 2 * 512 B + 1 KB + 2 KB = 4 KB Dr. Jörg Gruner 46

174 Abschnitt 7: Speicher-Hierarchie 174 Ist kein freier Speicherbereich der Größe 2 k vorhanden, wird ein freier Speicherbereich 2 k+n (n = 1, 2,...) gegebenenfalls wiederholend in zwei Speicherbereiche 2 k+n m (m = 1, 2,...) zerlegt (halbiert), bis die Speicherbelegungsgröße 2 k zur Verfügung steht. Ein freier Speicherbereich der Größe 2 k liegt vor, wenn m = n gilt, d.h. wenn n Speicherbereichshalbierungen bzw. -zerlegungen durchgeführt wurden. Die Anfangsadressen der Speicherbereiche einer Halbierung (die Partner bzw. Buddies) sind identisch bis auf das k.-bit in ihrer Adresse. Das k.-bit der Anfangsadressen von Partnern ist invertiert. Beispielsweise sind...abc0xyz... und...abc1xyz... die Anfangsadressen von Partnern. Die Invertierung des k.-bits der Anfangsadresse ermöglicht, in einem Schritt zu prüfen, ob ein frei gewordener Speicherbereich der Größe 2 k einen freien Partner in der Belegungstabelle besitzt.

175 Abschnitt 7: Speicher-Hierarchie 175 Dies ermöglicht die schnelle Verschmelzung der beiden Partner zu einem Speicherbereich der Größe 2 k+1. Sowohl das Suchen eines freien Speicherbereiches (gegebenenfalls mit Halbierungen) als auch das Verschmelzen zu größeren Speicherbereichen läßt sich rekursiv über mehrere Partner-Ebenen (Zweierpotenzen) durchführen. Buddy-Systeme Bewertung Bei Buddy-Systemen, welche auf der Basis von Zweierpotenzen Speicher zur Verfügung stellen, beträgt der Verschnitt im 1 statistischen Mittel 25% bzw. 4 des zur Verfügung gestellten Speicherbereiches. Bei einer Speicheranforderung von N Byte, wird nämlich ein Speicherbereich von 2 k Byte mit 2 k 1 < N 2 k vergeben. Angenommen P (N <= 2 k k 2 ) = P (N > 2 k k 2 ) = 1 2 dann gilt im statistischen Mittel N = 2 k k 2 = 2 k 2 k 2 = 2 k 1 4 2k = 1 4 (4 2k 2 k ) = 3 4 2k

176 Abschnitt 7: Speicher-Hierarchie d.h. 4 des zur Verfügung gestellten Speicherbereiches von 2k Byte werden im statistischen Mittel verwendet. Damit wird 1 4 des zur Verfügung gestellten Speicherbereiches nicht verwendet. Dies ist der Verschnitt. Dadurch charakterisiert sich das Buddy-System auf Basis von Zweierpotenzen als eine Belegungstrategie, die zwar schnell aber bei der Hauptspeicherverwaltung nicht effizient ist. Die Ursache für die schlechte Effizienz dieses Buddy-Systems ist die Verwendung großer Partitionen durch die Speicherplatzverdopplung. Korrigiert man das Verfahren der Speicherplatzverdopplung, so kann man den Nutzungsgrad des Hauptspeichers verbessern. Die Hauptspeicherverwaltung wird dann allerdings komplexer.

177 Abschnitt 7: Speicher-Hierarchie 177 paged segments paged segments = Kombination von paging und segmentation Intel 80x86 segments, paged segments... AT&T,DG,IBM/370,VAX,MC68030,80x86 2-level virtual 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 MC level: segment, outer, middle, inner page table + : gut für über den ganzen, großen virtuellen Speicher verteilte Daten, 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 für address translation nicht const.

178 Abschnitt 7: Speicher-Hierarchie 178 Belegungen des physikalischen Speichers ermitteln unvermeidliche Überschneidungen mit der Lehrveranstaltung EBS! Z.B. Gegeben Mini-Speicher, organisiert z.b. per paged segments 20 Bit virtuelle Byte-Adressen (s.u.), Seiten à 256B physikalischer Speicher mit 64KB Kapazität = 256 pages Zugriff auf segment table: (natürlich) fully-associative Segment-Länge in Anzahl Seiten Segment-Anfänge fallen mit Seiten-Anfängen zusammen. Zugriff auf page table: (natürlich) direct-mapped Adressen hexadezimal address format seg# (4 bit) page#(8bit) offset (8bit) Ermittele die zu virtuellen Adressen gehörenden physikalischen Adressen bei gegebener segment table, ST, und gegebener page table, PT.

179 Abschnitt 7: Speicher-Hierarchie 179 ST: seg# base len 0x1 0x0A00 0x03 0x2 0x0100 0x01 0x3 0xF800 0x02 0x7 0x0200 0x05 seg#,segoffset } {{ },pageoffset frame#, pageoffset PT: page# frame# 0x01 0x03 0x02 0x25 0x03 0xAB 0x04 0xBA 0x05 0x11 0x06 0x17 0x0A 0x02 0x0B 0x32 0x0C 0x70 0xF8 0x18 0xF9 0xE8 segmentation violation? konsistente PT? Speicher-Ausbau? maximale Segment-Größe? maximale Anzahl Segmente? Segment-Anfang = Seiten-Anfang: notwendig? sinnvoll?

180 Abschnitt 7: Speicher-Hierarchie 180 TLB Beschleunigen der Adreß-Umsetzung TLB = translation lookaside buffer = address translation cache indexmemory!translation lookaside buffer, TLB

181 Abschnitt 7: Speicher-Hierarchie 181 Virtual page number Valid Tag TLB Physical page address Physical memory Page table Physical page Valid or disk address Disk storage

182 Abschnitt 7: Speicher-Hierarchie 182 TLB & cache (hier z.b. DECstation mit MIPS R2000) Virtual address Virtual page number Page offset 12 Valid Dirty Tag Physical page number TLB TLB hit 20 Physical page number Page offset Physical address Physical address tag Cache index Byte offset Valid Tag Data Cache 32 Cache hit Data

183 Abschnitt 7: Speicher-Hierarchie 183 Zusammenspiel TLB & cache (hier z.b. DECstation mit MIPS R2000) Virtual address TLB access TLB miss exception No TLB hit? Yes Physical address No Write? Yes Cache miss stall No Try to read data from cache Cache hit? Yes No Write protection exception Write access bit on? Yes Write data into cache, update the tag, and put the data and the address into the write buffer Deliver data to the CPU

184 Abschnitt 7: Speicher-Hierarchie 184 designing the translation lookaside buffer (TLB) feature typical size 32 4K entries block size 1 2 page table entries à 4 8B each hit time clock cycle miss penalty clock cycles miss rate 0.01% 1% TLB miss und page fault sind zu unterscheiden! entweder kleine, voll-assoziative TLBs oder große TLBs, direct mapped oder mit geringer Assoziativität Reduktion der TLB miss penalty ohne page fault per simpler Verdrängungsstrategie virtually indexed/tagged caches verwenden virtuelle Adressen! physically indexed/tagged caches verwenden physikalische Adressen!

185 Abschnitt 7: Speicher-Hierarchie 185 virtuelle cache Adressierung CPU cache MMU + virtuelle Adresse gleichzeitig an cache und MMU konkurrierende DMA-Zugriffe mit physikalischen Adressen werden durch Bus-snooping nicht erkannt: non-cachable oder cache-flush/cache-clear vor DMA-Zugriffen Tasks mit nicht disjunkten virtuellen aber disjunkten physikalischen Adress-Räumen bei Task-Wechsel cache-flush/cache-clear Tasks mit shared regions und daher mit disjunkten virtuellen aber nicht disjunkten physikalischen Adress-Räumen: non-cachable oder spezielle cache-auslegung physikalische cache Adressierung CPU MMU cache erst virtuelle Adresse an MMU dann physikalische Adresse an cache! aber wenn cache-index von der Adress-Umsetzung nicht betroffen, kann cache line schon selektiert werden. + Probleme bei Task-Wechsel und address aliasing treten hier nicht auf.

186 Abschnitt 7: Speicher-Hierarchie 186 Mischformen von virtueller und physikalischer cache-adressierung = virtuell/physikalische cache-adressierung (Index enthält bits der virtual page number, tag enthält 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 möglich: page cache TLB table scenario miss hit hit TLB hit, page table irrelevant, cache miss hit miss hit TLB miss, page table hit, cache hit miss miss hit TLB miss, page table hit, cache miss miss miss miss TLB miss, page fault, on retry cache must miss * hit miss translation ok contradicts page not in memory hit miss miss cache hit contradicts page not in memory

187 Abschnitt 7: Speicher-Hierarchie 187 Z.B. memory hierarchies PentiumPro vs PowerPC604 feature Pentium Pro PowerPC 604 virtual addresses 32 bit 52 bit physical addresses 32 bit page size 4KB, 4MB 4KB, 256MB TLB split I-TLB und D-TLB beide 4-ass. beide 2-ass. pseudo LRU LRU 32 I-TLB lines 128 I-TLB lines 64 D-TLB lines 128 D-TLB lines hw handles TLB misses

188 Abschnitt 7: Speicher-Hierarchie 188 Speicherschutz-Maßnahmen Vorbedingungen für protection mindestens zwei Modi: user/operating system (kernel, supervisor) mode nur im system mode kann das Betriebssystem mit speziellen Instruktionen page table register, TLB usw. schreiben kontrollierter, begrenzter Wechsel von user mode in system mode etwa per system call (exception) Z.B. allgemeine Schutzverletzung, segmentation violation, protection violation o.ä.

189 Abschnitt 7: Speicher-Hierarchie x86-Unterstützung der Speicher-Anbindung Intel 80x86/Pentium Memory Management unsegmented, unpaged memory: etwa für 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

190 Abschnitt 7: Speicher-Hierarchie Pentium Datenbus/bits Adreßbus/bits Verarbeitung/bits superskalar data cache unified 8KB instruction cache KB cache 8KB instruction queue 6B 6B 16B 32B 2 32B # Segemente segment base 20bit 20/24bit 20/32bit 20/32bit 20/32bit optional paging - - modi multitasking -

191 Abschnitt 7: Speicher-Hierarchie 191 logical address selector CS... GS 32 bit offset segment table mit 8B segment descriptors 0. u.a. 20bit Länge, 32bit base address. + linear address 10bit dir no 10bit page no 12bit offset 8K-1 page directory table 0 +. page table physical address 20bit physical page no 12bit offset

192 Abschnitt 7: Speicher-Hierarchie 192 virtual addresses = logical addresses unsegmented memory: 2 32 B = 4GB = 16bit segment 32bit offset segmented memory: (2bit segment für protection) B = 64TB physical address space: 2 32 B = 4GB global virtual memory: 4K segments 4GB segments local virtual memory: 4K segments 4GB segments protection of segments: privilege level (geschützt 0 3 ungeschützt) 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 für MM, protection, access control PL1 für OS-Rest PL2 für application security (DBMS) PL3 für application

193 Abschnitt 7: Speicher-Hierarchie 193 virtual address = 16bit segment selector 32bit offset segment selector = 13bit Index TI RPL TI = 1bit Table Indicator = local/global RPL = 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 Einträgen und damit eine der max. 1K page tables mit max. 1K Einträgen für 4K pages. pagindex indiziert in dieser page table den Eintrag eine Seite. physical address = (PT-No.[PTD[dirindex]]) [pagindex]+offset

194 Abschnitt 7: Speicher-Hierarchie 194 segment table, page table directory und page table 32bit entries enthalten Informationen zu Zielgrößen, protection, Verfügbarkeit, write strategy, dirty bit etc. Pentium verfügt über einen TLB mit 32 page table entries. Im Unterschied zu und unterstützt der Pentium zwei Seitengrößen: if page size extension (PSE) ==1 then size=4kb or size=4mb Bei 4MB-Seiten ergibt sich entsprechend nur ein table lookup!

195 Abschnitt 7: Speicher-Hierarchie 195 performance gap: processor vs memory system 100 Improvement factor Year CPU (fast) CPU (slow) DRAM

196 Abschnitt 7: Speicher-Hierarchie 196 zwei Arten, die Speicher-Bandbreite zu erhöhen CPU CPU CPU Cache Multiplexor Cache Cache Bus Bus Bus Memory Memory bank 0 Memory bank 1 Memory bank 2 Memory bank 3 Memory b. Wide memory organization c. Interleaved memory organization a. One-word-wide memory organization

197 Parallelisierung von Algorithmen Entwicklung paralleler Algorithmen Entwicklung paralleler Rechner-Architekturen am Beispiel der Lösung von linearen Gleichungssystemen (LGS), z.b. DGl-Systeme, partielle DGl-Systeme, FEM... Z.B. s.a. Matrix-Multiplikation Das LGS A x = b bestehe aus n Gleichungen in n Unbekannten; die Koeffizienten-Matrix A ist also quadratisch.

198 Abschnitt 8: Parallelisierung von Algorithmen 198 for ( i =1; i<=n ; i ++) // eliminiere Unbekannte x i, 1 i < n for ( j=i +1; j<=n ; j++) // in der j-ten Gleichung, j = i+1,..., n { const double p i v o t = A[ j ] [ i ] /A[ i ] [ i ] ; A[ j ] [ i ] = 0. 0 ; // x i in j-ter Gleichung eliminieren // restliche Koeffizienten der j-ten Gleichung aktualisieren for ( k=i +1; k<=n ; k++) A[ j ] [ k ] = p i v o t A[ i ] [ k ] ; b [ j ] = p i v o t b [ i ] ; // Koeffizienten der r.s. aktualisieren } // Das Gleichungssystem hat jetzt Dreiecksgestalt: die Unbekannten x i // lassen sich aus n j=i Aij xj = bi von unten nach oben bestimmen. for ( i=n ; i >0; i ) // bestimme x i für i = n, n 1,..., 1 { double tmp = b [ i ] ; // berechne b i n j=i+1 Aij xj in tmp for ( j=n ; j>i ; j ) tmp = A[ i ] [ j ] x [ j ] ; } x [ i ] = tmp/a[ i ] [ i ] ;

199 Abschnitt 8: Parallelisierung von Algorithmen 199 Mehrere Fragen sind zu beantworten: Welche Operationen lassen sich unter Berücksichtigung von Daten-Abhängigkeiten überhaupt parallelisieren? Wieviele Prozessoren oder processing elements (PE) sollen zur Verfügung stehen? Wie kommen die PEs an die von ihnen benötigten Daten und wie werden soweit notwendig Zwischenergebnisse ausgetauscht? Bewertung der Implementierungen anhand von Kenngrößen wie Beschleunigungsfaktor aufgrund von Parallelisierung Auslastung der PEs Kommunikationsaufwand in Abhängigkeit von der angenommenen Vernetzung

200 Abschnitt 8: Parallelisierung von Algorithmen Parallelisierung des Gauß schen Algorithmus Annahmen, Einschränkungen, Disclaimer: A sei quadratisch (eben kein least squares problem)... A x = b sei eindeutig lösbar, det(a) 0... Alle pivot-elemente sind von 0 verschieden... Keine Berücksichtigung der Numerik, also ohne Pivotisierung, s.a. Es stehen p = n + 1 PEs zur Verfügung... Der Algorithmus selbst besteht aus zwei Teilen: 1. Eliminieren, Triangulierung (Überführen in Dreiecksgestalt) 2. Auflösen: von unten nach oben (backward substitution)

201 Abschnitt 8: Parallelisierung von Algorithmen 201 Gauß scher Algorithmus Eliminieren 1. eliminiere x 1 ist in der zweiten, dritten,..., n-ten Gleichung, also in den n 1 Gleichungen n A jk x k = b j für j = 2,..., n k=1 Aktualisiere n Koeffizienten A jk für k = 1,..., n und b j der rechten Seite. Wegen A jk := A jk p A ik und b j := b j p b i mit pivot = A ji und i = 1 A ii sind diese Operationen Daten-unabhängig und können von den n + 1 PEs parallel ausgeführt werden (A j1 := 0 wird aktiv gesetzt, alle PEs sind busy). Bem. Die Koeffizienten A jk und b j werden ständig verändert.

202 Abschnitt 8: Parallelisierung von Algorithmen eliminiere x 2 in der dritten bis n-ten Gleichung. n PEs aktualisieren n Koeffizienten in n 2 Gleichungen. und allgemein für i = 1,..., n 1 eliminiere x i i. eliminiere x i in der i + 1-ten bis n-ten Gleichung. n i + 2 der n + 1 PEs aktualisieren n i + 2 Koeffizienten in (n i) Gleichungen. SIMD, MAC: saxpy/daxpy, Vektorisierung! In einer Zeiteinheit (ZE) aktualisiere ein PE gerade einen Koeffizienten. Überführung der Koeffizienten-Matrix in Dreiecksgestalt und Aktualisierung der rechten Seite durch n + 1 PEs in insgesamt n 1 (n 1) + (n 2) = i = i=1 (n 1)n 2 ZE

203 Abschnitt 8: Parallelisierung von Algorithmen 203 Ein Mono-Prozessor-System braucht dafür (n + 1)(n 1) + n(n 2) + (n 1)(n 3) = 2(n 1) + (n 1) 2 + 2(n 2) + (n 2) 2 n 1 n 1 +2(n 3) + (n 3) = 2 i + = n(n 1) (n 1)n(2 n 1) = 1 6 (n 1) n (2 n + 5) ZE Der Beschleunigungsfaktor β aufgrund Parallelisierung für das Eliminieren ist (für n ) 1 6 (n 1) n (2 n + 5) β = 1 2 n (n 1) = 2 n + 5 ( = n ) 2 2n 3 n i=1 i=1 i 2

204 Abschnitt 8: Parallelisierung von Algorithmen 204 Insgesamt sind 1 6 (n 1) n (2 n + 5) PEs von insgesamt (PE-Anzahl Eliminierungsschritte) = (n + 1) 1 2 (n 1)n = 1 2 (n 1) n (n + 1) PEs aktiv: die Auslastung α während des Eliminierens beträgt also α = 1 6 (n 1) n (2 n + 5) 1 2 (n 1) n (n + 1) = n + 5 n für n Bem. Wenn PEs gleichzeitig lesend auf ein Datum zugreifen können, gibt es keine Zugriffskonflikte (no memory contention)! z.h. Bestimme obige Kenngrößen für eine entsprechende parallele Version der Eliminierung im Gauß schen Algorithmus durch sehr viele, etwa (n 1)(n + 1) PEs oder wenige PEs, etwa #PE (n + 1), d.h. die Anzahl der PEs ist Teiler von n + 1. z.h. Bestimme allgemein β = β(n, #PEs) und α = α(n, #PEs). z.h. Welcher Beschleunigungsfaktor, welche Auslastung ergeben sich bei Gauß-Jordan?

205 Abschnitt 8: Parallelisierung von Algorithmen 205 Gauß scher Algorithmus Auflösen n + 1 PEs stehen zur Verfügung, um parallel nacheinander x n, x n 1,..., x 1 zu berechnen. Sie berechnen also sukzessive x i = b n i A ij x j für i = n, n 1,..., 1 A ii A ii j=i+1 Jedes PE berechne Aij A ii x j bzw. A ii gerade in einer ZE. Jedes PE brauche für das Aufsummieren eines eigenen mit einem fremden Zwischenergebnis gerade c m ZE. n + 1 PEs erledigen die Auflösung in größenordnungsmäßig i=1 b i n 1 n 1 n + c m ld i = n + c m ld i = n + c m ld((n 1)!) ZE i=1

206 Abschnitt 8: Parallelisierung von Algorithmen 206 Sequentiell sind dagegen n n (2 + c 1 ) + (3 + 2c 1 ) (n + c 1 (n 1)) = i + c 1 i i=1 i=1 = 2( 1 (n + 1) n + c1 n (n 1) ) = n 2 (n c 1 n d) ZE erforderlich, wenn eine (lokale) Summation gerade c 1 ZE braucht. Wegen n! 2π n n e n n (Stirling) folgt ld(n!) ld 2π + (n ) ld n + ln(e n ) ld e n(ld n ld e). Der Beschleunigungsfaktor β aufgrund Parallelisierung ist (für n ) β n 2 = n 2 (n c 1 n c 1 ) n + c m ld((n 1)!) c c1 n 1 + c m ld( n e ) (1 + c 1 )n c m ld(n/e) n (1+c 1 ) + 1 c c m (ld n ld e)

207 Abschnitt 8: Parallelisierung von Algorithmen 207 Die Auslastung α der PEs (für n ) ist etwa für c = c 1 = c m ( ) α = 1 n (n+1+c n c) 2 (n+1)(n+c ld n) = c n 1 n n+1 n+c ld n 1+c 2 Bem. Wegen n 1 i=1 O(ld n) gilt β ld i = n ld n ln 2 (n 1) + g(n) für ein g(n) n (n (1+c 1)+1 c 1) 1 n (1+c 1)+1 c 1 n+c m (n ld n n 1 ln 2 ) 2 asymptotisch für n. 1+c m (ld n 1 ln 2 ) n 2 1+c 1 1+c m ld n z.h. Bestimme obige Kenngrößen einer entsprechenden parallelen Version für das Auflösen im Gauß schen Algorithmus durch (maximal?) p = (n 1)(n + 1) PEs oder für den Fall, daß n ein Vielfaches der PE-Anzahl p ist.

208 Abschnitt 8: Parallelisierung von Algorithmen 208 Kommunikation Unterstellt wurde: jedes PE kann auf alle Daten zugreifen: Daten liegen in einem gemeinsamen globalen Speicher ((multi port) shared global memory). memory PE 1 PE 2 PE n+1 Aufgrund dieser Annahme des unbeschränkten Zugriffs der PEs auf jedes Datum konnten obige Kenngrößen insbesondere für das Auflösen bestimmt werden.

209 Abschnitt 8: Parallelisierung von Algorithmen 209 Aber Machbarkeit und andere Aspekte wie Kosten und eben Geschwindigkeit Zugriffsschutz Ausfallssicherheit, Fehlertoleranz (Zuverlässigkeit, Verfügbarkeit) Erweiterbarkeit, Flexibilität, Skalierbarkeit etc. können lokale Speicher und spezielle Verbindungsstrukturen für die PEs notwendig machen. Dann fallen zusätzlich Kosten für die Inter- Prozessor-Kommunikation an. Probleme des global/shared memory Synchronisation der Speicher-Zugriffe, cache Kohärenz, z.b. MESI Verbindungsstrukturen zwischen PEs und memory: Bus, Ring, Stern, Gitter, Torus, Kreuzschienenverteiler (cross bar), hypercube... Speicher-Organisation

210 Abschnitt 8: Parallelisierung von Algorithmen 210 Gesetzt den günstigsten Fall, daß das k-ten PE bzw. das n + 1-te PE direkt nur auf die Koeffizienten A jk bzw. b j zugreifen kann. Dann kommt zu jedem Schritt der Eliminierung noch ein Kommunikationsoverhead: initial werden die Koeffizienten A 1k und b 1 der ersten Gleichung geladen, dann werden A 2k und b 2 der zweiten Gleichung geladen und aktualisiert, dann A 3k und b 3 usw. bis zuletzt die Koeffizienten A nk und b n der n-ten Gleichung geladen und aktualisiert werden.

211 Abschnitt 8: Parallelisierung von Algorithmen 211 Entweder legen die PEs die aktualisierten Koeffizienten in genügend großen lokalen Speichern ab oder sie schreiben sie zugleich wieder in den globalen Speicher zurück. Angenommen, die mit einer Aktualisierung verbundene Kommunikation koste c = c 1 = c m ZE. Dann beträgt der Kommunikationsaufwand für die parallele Eliminierung 1 2 c (n 1) n ZE und derjenige der sequentiellen Eliminierung 1 6 c (n 1) n (2n + 5) ZE Der Beschleunigungsfaktor β aufgrund Parallelisierung ist 1 6 c (n 1) n (2 n + 5) β = 1 2 c n (n 1) = 2 n + 5 ( = n ) 2 2n 3 n für n In diesem günstigsten Fall die Speicherzugriffsbreite kann so wie die Anzahl der PEs gesteigert werden bleibt auch die Auslastung α 2 3 unverändert.

212 Abschnitt 8: Parallelisierung von Algorithmen 212 Gesetzt der ungünstige Fall, daß die PEs Ketten-förmig angeordnet sind und die Koeffizienten wie etwa in Transputer-Netzen nur über genau ein Interface-Prozessor PE o durch die Kette der verarbeitenden PEs durchgereicht werden können. PE 0 PEn+1 PEn PE1 PEs seien wieder den Spalten der Koeffizienten-Matrix fest zugeordnet (PE k bzw. PE n+1 bearbeitet A jk bzw. b j ). Alle PEs bearbeiten zu einem Zeitpunkt dieselbe j-te Gleichung. Eliminiere x 1 : Es dauert c m (n + 1) ZE, bis die Koeffizienten der ersten Gleichung in die vorgesehenen PEs geladen sind. Laden und Rückschreiben der modifizierten Koeffizienten dauert c m (n + 1) ZE für jede der n 1 Gleichungen: Gesamtdauer also c m ( (n + 1) + (n 1)(n + 1) ) ZE.

213 Abschnitt 8: Parallelisierung von Algorithmen 213 Eliminiere x 2 : Es dauert c m (n) ZE, bis die Koeffizienten der zweiten Gleichung in die vorgesehenen PEs geladen sind. Laden und Rückschreiben der modifizierten Koeffizienten dauert c m (n + 1) ZE für jede der n 2 Gleichungen: Gesamtdauer also c m ( (n) + (n 2)(n + 1) ) ZE. allgemein also: Eliminiere x i : Es dauert c m (n + 2 i) ZE, bis die Koeffizienten der i-ten Gleichung in die vorgesehenen PEs geladen sind. Laden und Rückschreiben der modifizierten Koeffizienten dauertc m (n + 1) ZE für jede der n i Gleichungen: Gesamtdauer also c m ( (n + 2 i) + (n i)(n + 1) ) ZE. Zusammen ergibt sich ein Kommunikationsaufwand C von n 1 ( ) C = c m (n + 2 i) + (n + 1)(n i) i=1 = c m ( (n+2)(n 1) 1 2 n(n 1) + (n+1)n(n 1) (n+1) 1 2 (n 1)n) = 1 2 c m(n 1) ( 4 + 2n + n 2) = 1 2 c m(n 1)(n + 2) 2

214 Abschnitt 8: Parallelisierung von Algorithmen 214 Wenn der Mono-Prozessor c 1 ZE für einen Speicherzugriff braucht, gilt für die Beschleunigung β aufgrund Parallelisierung β = (1+c1) 1 6 (n 1) n (2 n+5) 1 = 2 n(n 1)+ 1 2 cm(n 1)(n+2)2 (1+c1) n (2 n+5) 1 3n+3c m(n+2) = 2 3 (1+c 1 )(2n+5) + 3cm(n+2)2 (1+c 1 )(2n+5) also asymptotisch β 2 1+c 1 3 c m für n. Bei dieser Verbindungsstruktur der PEs wird der Geschwindigkeitsgewinn durch Parallelisierung der Eliminierung in diesem (schlechten) Fall durch den Kommunikationsaufwand zunichte gemacht. z.h. Untersuche Kommunikationsaufwand bei der Parallelisierung der Auflösung für best und worst case. z.h. Berechne β und α für Verbindungsstrukturen wie Ring, Stern, Torus, cross bar, hypercube usw. Beispielsweise lassen sich PEs auf einem Chip günstig Gitter-förmig (wie z.b. Transputer) anordnen. Berechne β und α für quadratisch angeordnete ( ) n PEs. z.h. Welcher overhead ergibt sich bei Gauß-Jordan?,

215 Abschnitt 8: Parallelisierung von Algorithmen 215 Parallelisierung des Gauß schen Algorithmus durch den Compiler Compiler können program code vektorisieren bzw. (allgemeiner) parallelisieren. entweder durch den Programmierer mit Konstrukten wie parbegin und parend und/oder automatisch durch den compiler: Grundlage ist wie im Beispiel eine Datenfluß-Analyse, die Daten-Abhängigkeiten erkennt, soweit möglich auflöst und Vektor-Operationen oder parallelen Code erzeugt. Z.B. vektorisierende FORTRAN-compiler etwa auf Convex C1, HP N-class etc. Maschinen-abhängiger code! & Amdahl Z.B. paralleles Sortieren, s.a.

216 Abschnitt 8: Parallelisierung von Algorithmen 216 Z.B. Zum Addieren von 2 17 Zahlen etwa in zwei-dimensionalem array auf 128 = 2 7 PEs berechnet jedes PE die Summe von 1024 = 2 10 Zahlen. sum=0.0; for(i=0; i<1024; i++) sum+=local_array[i]; Dann sendet eine Hälfte der PEs der anderen Hälfte die eigenen Ergebnisse zum Aufaddieren, von denen wieder eine Hälfte die eigenen Teilsummen der anderen Hälfte 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 ausführenden PEs, send(p,v) sendet den Wert v über das Verbindungsnetzwerk an Prozessor p, während receive() das betreffende PE veranlaßt, einen Wert über das Netz entgegenzunehmen.

217 Abschnitt 8: Parallelisierung von Algorithmen Effizienz/Effektivität der Parallelisierung Def. Für einen gegebenen Algorithmus definiert β(p) = T (1)/T (p) den Beschleunigungsfaktor β(p) aufgrund von Parallelisierung mit p PEs, wo T (p) Zeit für 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 Effektivität von parallelen Algorithmen. Ein paralleler Algorithmus, der F (p) maximiert, heißt effektiv. Z.B. einige wenige Beispiele Problem bzw. Algorithmus β(p) Matrizenrechnungen, Diskretisierung O(p) Sortieren, tridiagonale Systeme, lineare Rekursion, O ( p/ ld(p) ) Polynomauswertung Suchen O ( ld(p) ) Horner, gewisse nichtlineare Rekursion, bestimmte O(1) Anteile der Compilation

218 Abschnitt 8: Parallelisierung von Algorithmen 218 Z.B. Für die Addition von 16 Zahlen a i gilt T (1) = 15 sowie p T (p) β(p) E(p) F (p)t (1) = β(p)e(p) parallele Speicher-Zugriffe auf Matrizen Z.B. Zugriff auf Matrix A = (a ij ) in verteiltem Speicher P 1 P 2 P 3 a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 P 1 P 2 P 3 a 11 a 12 a 13 a 23 a 21 a 22 a 32 a 33 a 31 zyklisch geshiftete Zeilen Verallgemeinerungen: Schiefe-Systeme P 1 P 2 P 3 P 4 a 11 a 12 a 13 a 14 a 24 a 21 a 22 a 23 a 33 a 34 a 31 a 32 a 42 a 43 a 44 a 41

219 Abschnitt 8: Parallelisierung von Algorithmen Baumhöhenreduktion Compiler nutzen Assoziativität, Kommutativität und Distributivität zur Reduktion der Baumhöhe h = h(a) algebraischer Ausdrücke A. Z.B. h A per A h 3 (((a + b) + c) + d) Assoziativität (a + b) + (c + d) 2 3 a + bc + d Kommutativität (a + d) + bc 2 Z.B. y 2 + y 3 = y(y + y 2 ) = y 2 (1 + y) mit DAG-Höhen 3, 3 bzw. 2 allgemeine Verfahren. Jedoch NB: möglicher Verlust numerischer Stabilität, z.b. fl ( (1 + ɛ) + ɛ ) fl ( 1 + (ɛ + ɛ) )! 8.5. Parallelisierung rekurrenter Relationen Z.B. Beispiele linearer rekurrenter Relationen Problem Algorithmus Anfangsbedingung Rekurrenz Skalarprodukt z = x k y k z := 0 z = z + x k y k Horner p = a k x k o p := a n p = a n k + x op ) Fibonacci (f k f 2 := f 1 = 1 f k = f k 1 + f k 2 Def. x = c+a x mit strikter unterer Dreiecksbandmatrix A ist lineare

220 Abschnitt 8: Parallelisierung von Algorithmen 220 { 0 fürk 0 rekurrente Relation mit x k = c k + k 1 j=k m a kjx j für1 < k < n. Falls x k = f(a l, A r ) mit parallel abzuarbeitenden Algorithmen A l und A r gleicher Komplexität, wende rekursives Doppeln auf A l und A r an, dann Parallelisierung bzw. Vektorisierung, falls identische Operatoren in identischer Reihenfolge in A l und A r. column sweep algorithm mit β(p) = n 2 und E(p) = n 2(n 1) > 1 2 für p = n 1 1. x 1 bekannt; parfor(i=2;i<=n;i++) berechne c (1) i rofrap und damit x = a i1 x 1 + c i 3. x k bekannt; parfor(i=k+1;i<=n;i++) berechne c (k) i = a ik x k + c (k 1) i rofrap und damit x k x n 1 bekannt; berechne x n = a i,n 1 x n 1 + c (n 2) i Verallgemeinerungen für nichtlineare rekurrente Relationen!

221 Abschnitt 8: Parallelisierung von Algorithmen Modellierung durch DAGs Gleichartige PEs bearbeiten eine Menge von #tasks voneinander abhängigen (sub-) tasks. Abhängigkeiten, Ausführungszeiten und Kommunikationszeiten (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 st abhängig ist. Kommunikation je nach Modell-Vorgaben (gleichzeitiges und mehrfaches Senden und Empfangen?) Kommunikation auf ein und demselben PE braucht 0ZE! Für gegebene Zuordnung von PE zu (sub-) task PAT = (p i ) i=1,...,#tasks mit p i {0, 1,..., #P Es 1} eine der #P Es vielen PEs minimiere die Zeit t DAG (P AT ), die die PEs bei gegebener Zuordnung PAT brauchen, um die gesamte task zu bearbeiten.

222 Abschnitt 8: Parallelisierung von Algorithmen 222 a 5 b 3 1 c 3 d 2 e a(α) b(α) b(α) to d(β) c(α) d(β) d(β) to e(α) e(α) für beispielsweise P AT = αααβα. Berechne also nacheinander t DAG = min t DAG(P AT ) P AT {P AT s} für geeignete Mengen {P AT s} und ggfls. t = min DAG {DAGs} t DAG Z.B. Ein algebraischer Ausdruck expr definiert verschiedene Auswertungsbäume, also zugehörige DAGs. Zu expr bestimme t, wo über alle zugehörigen DAGs und alle PATs mit vorgegebener Anzahlen von PEs, die jeweils genau die in expr vorkommenden algebraischen Operationen ausführen können, zu minimieren ist. z.h. Erzeuge Beispiele obiger Art und bestimme jeweils t.

223 Abschnitt 8: Parallelisierung von Algorithmen Programmierung per fork, d.h. duplizieren von Prozessen, identifiziert durch id z.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, aufzulösen etwa durch Synchronisation per init_barrier(a,nprocs) if (id==0) childs_sum = sum; else parents_sum = sum; barrier(a); if (id==0) exit(); return childs_sum+parents_sum;

224 Abschnitt 8: Parallelisierung von Algorithmen 224 Aufwand für x[i]=g(i) sei unterschiedlich oder nicht abschätzbar. 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 wait z.h. Vorteile/Nachteile?

225 Abschnitt 8: Parallelisierung von Algorithmen 225 Duplizieren von Prozessen und deren Verwaltung ist teuer! Verwende stattdessen 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()

226 Abschnitt 8: Parallelisierung von Algorithmen 226 a a 2 S S * a 4 a 3 S * S * a 8 a 7 a 6 a 5 Russian Peasant Algorithm (im Bild n = 8 im Programm n = 32) berechne a 1, a 2,..., a n mit einem thread/multiplikation global x, y[1..32]; // compute y[i] = x^i %... local n=1, i, k; y[1] = x; for(k=1;k<=5;k++) { // 5 = ld(32) for(i=1;i<=n;i++) thread_create(mult(),n); // pass n to mult // threads generated with thread id = 1,2,...,n while (thread_join()==0); // barrier n *= 2; } function mult(int n) local i=thread_self(); y[i+n] = y[i]*y[n];

227 Vektor-Prozessor-Systeme (SIMD) z.b. Matrix-Multiplikation C = AB mit c ij = n k=1 a ikb kj 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]; }

228 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 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

229 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 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

230 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) pipelining within/across operations z.b. pipelined fadd = (compare exponents, shift significand, add significands, normalize) pipelining across operations, chaining, d.h. unmittelbare Weitergabe von Zwischen-Ergebnissen an functional units ohne Speicherung der Zwischen-Ergebnisse in (Vektor-) Registern z.b. in CRAYs etwa bei a x + y (saxpy, daxpy) V1=X V2=Y V3=a*V1 V4=V2+V3 C=V4 ; can ; be ; chained

231 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 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-Zugriffe Skalar-Prozessor mit Skalar-Registern (Sr) wird um Vektor-Prozessor mit Vektor-Registern (Vr) ergänzt! (sw-kompatibel) Befehlssatz ist um Vektor-Instruktionen ergänzt! (unterbrechbar, vector interruption index) Vector Facility = Add on, integriert in die /370-Architektur

232 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 232 reconfigurable vector registers 1 Speicher-Zugriff pro cycle, 2 read und 1 write Register pro cycle, 1 ALU-Operation pro cycle. 16 Vektor-Register mit bit-Elementen oder 8 Vektor-Register mit bit-Elementen (single/double/integer), pipelined vector ALU Vektor-Register für 32bit oder 64bit integer oder floating point! architecture specifies vector registers with elements! relative start-up time der Vektor-ALU-pipeline vs save/restore Vektor-Register on process switch etc. plus vector mask register, vector status register (u.a. length), vector activity count (register) (timer)...

233 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 233 Compound Instructions z.b. Multiply-and-Accumulate (=add) mit drei Quell-Operanden! etwa Vr=Vr*V[Mem]+Vr accumulate instructions berechnen partielle Summen von Vektoren, wegen Latenz interleaved, d.h. in speziellem Vektor-Register partial sum 0 = v 0 + v v 124 partial sum 1 = v 1 + v v 125 partial sum 2 = v 2 + v v 126 partial sum 3 = v 3 + v v 127 target vector = partial sum i in speziellem Vektor- Register P Stallings: non critical!

234 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 234 z.b. komplexe Multiplikation z.b. a, b, c C n mit c j = a j b j C mit C z = (Rz, Iz) = (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 memory Operation 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 instructions Operation 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

235 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 235 register to register Operation 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 register Operation 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

236 Abschnitt 9: Vektor-Prozessor-Systeme (SIMD) 236 IBM 3090 Vector Facility Vector Instructions Operation arg type Vr=OP(operands), Vmr=comp(operands) resp. add sdi Vr+Vr Vr+Mem Sr+Vr Sr+Mem sub sdi Vr Vr Vr Mem Sr Vr Sr Mem mult sdi Vr*Vr Vr*Mem Sr*Vr Sr*Mem div sd Vr/Vr Vr/Mem Sr/Vr Sr/Mem comp sdi Vr op Vr Vr op Mem Sr op Vr Sr op Mem mul & add sd Vr+Vr*Mem Vr+Sr*Vr Vr+Sr*Mem mul & sub sd Vr Vr*Mem Vr Sr*Vr Vr Sr*Mem mul & acc sd P+op Vr P+op Mem complement sdi Vr pos/neg abs sdi ± Vr max/min sd Sr op Vr sll/srl lgcl op Vr and/or/xor lgcl Vr op Vr Vr op Mem Sr op Vr Sr op Mem P = partial sum of vector: sum j = i mod 4=j v i, j = 0, 1, 2, 3

237 parallele Architekturen Ziel ist eine skalierbare, hochverfügbare, hochzuverlässige oder etwa fehlertolerante Architektur, auf der eine Anwendung, einige wenige oder beliebige Anwendungen mit möglichst 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) memory synchronization by e.g. memory locks uniform memory access, UMA oder symmetric multiprocessors, SMP non uniform memory access, NUMA message passing für PEs mit lokalem/privatem Speicher, z.b. cluster Verbindung der PEs über (einen) Bus oder über ein Netzwerk!

238 Abschnitt 10: parallele Architekturen Klassifizierung anhand von Beispielen Symmetric / Shared-Memory Multiprocessors (SMP), Uniform 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 Non-Uniform Memory Access (NUMA) Multiprocessors HP/Convex Exemplar Sequent NUMA-Q 2000 Silicon Graphics Origin2000

239 Abschnitt 10: parallele Architekturen 239 Clusters Hewlett Packard 9000 EPS 21 Sun Ultra Enterprise Cluster HA Server Massively Parallel Processors (MPP) Cambridge Parallel Processing Inc. s DAP: The DAP now has an 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 Procs costing $46M with 1.8 TeraFLOPS peak) reached 1 Teraflops on December, 1996 SGI/CRAY Origin ASCI Blue Mountain model (3072 processors costing $110M) to reach 3 TeraFLOPS in 1998 s.a. top500

240 Abschnitt 10: parallele Architekturen Multiprocessor-Systeme mit gemeinsamem Bus gängige PEs, gängige Bus-Systeme caches mindern Bus-traffic, reduzieren Latenz cache-kohärenz etwa per MESI PE 1 PE 2 PE n cache 1 cache 2 cache n gemeinsamer Bus Memory IO z.b. Compac Proliant mit 4 Pentium Pro, Digital AlphaServer mit 12 Alpha 21164, HP 9000 mit 4 PA8000, IBM RS/6000 mit 8 PowerPC 604, SGI Power Challenge mit 36 MIPS R10000, SUN Enterprise 6000 mit 30 UltraSPARC 1 usw.

241 Abschnitt 10: parallele Architekturen cache-kohärenz in Multiprozessor-Systemen ein gemeinsamer Bus und globaler Speicher: per snooping protocol Processor Processor Processor Snoop tag Cache tag and data Snoop tag Cache tag and data Snoop tag Cache tag and data Single bus Memory I/O

242 Abschnitt 10: parallele Architekturen 242 cache-kohärenz durch Invalidieren event PE1 PE2 PE3 start no copy no copy no copy PE1 reads clean copy no copy no copy PE2 reads clean copy clean copy no copy PE3 writes invalidated copy invalidated copy dirty copy PE2 reads invalidated copy clean copy clean copy cache-kohärenz durch Aktualisieren event PE1 PE2 PE3 start no copy no copy no copy PE1 reads clean copy no copy no copy PE2 reads clean copy clean copy no copy PE3 writes updated copy updated copy updated copy PE2 reads clean copy clean copy clean copy

243 Abschnitt 10: parallele Architekturen 243 cache-kohärenz Anforderungen, Kohärenz 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 Kopien in anderen caches und ändert erst dann lokale Kopie wie write back (nur first write is signaled) write update/write broadcast writing PE broadcasts die neuen Daten zwecks update aller Kopien wie write through (reduziert Latenz) bus traffic? Vorteile/Nachteile?

244 Invalid Abschnitt 10: parallele Architekturen 244 Einfaches cache-kohärenz Protokoll Invalid (not valid (clean) cache block) Simples cache-kohärenz write invalidate/write back Protokoll per fsm Processor write miss read only cache line is clean (not written) and may be shared read miss read/write cache line is not clean (written, dirty), may not be shared invalid cache line is invalid Read/Write (dirty) Processor Processor read miss Read Only (Send if invalidate (Write back dirty block to memory) hit) Processor write (hit or miss) Processor write Invalid (not valid cache block) Processor read miss Read Only (clean) a. Cache state transitions using signals from the processor Processor write miss Processor write Invalid (hit or miss) (not valid Processor cache block) read miss Another processor has a read miss or a write miss for this block (seen on bus); write back old block Read/Write (dirty) Read/Write (dirty) Processor write (Send invalidate if hit) (Write back dirty block to memory) Invalidate or another processor has a write miss for this block (seen on bus) Read Only (clean) a. Cache state transitions using signals from the processor b. Cache state transitions using signals from the bus

245 Abschnitt 10: parallele Architekturen 245 Generell kein Zustandsübergang on read hit Zustandsübergänge on read miss, write hit, write miss read miss new block: state=read only; old block: if dirty write back to memory remote 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-kohärenz 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. Zustandsübergänge? MOESI? (Owned = modified shared)

246 Abschnitt 10: parallele Architekturen 246 Cache A Modified in Cache A Cache B Cache A Shared in Cache A Cache B M Valid Data I Invalid Data S Valid Data S Valid Data Invalid Data System Memory Valid Data System Memory Exclusive in Cache A Cache A Cache B Cache A Invalid in Cache A Cache B E Valid Data Invalid Data I Invalid Data Don't Care Valid Data System Memory Don't Care System Memory

247 Abschnitt 10: parallele Architekturen 247 MESI State Diagram SHR Invalid SHI RMS Read Shared RH LRU Push Invalidate SHR SHI WM Push Read Push RME SHI WH Invalidate SHR Events: RH = Read Hit RMS = Read miss, shared RME = Read miss, exclusive WH = Write hit WM = Write miss LRU = LRU replacement Read RH Modified WH Exclusive RH WH Events: Bus Transactions: Bus Transactions: Snoop Events: RH Read Hit Push = Write cache line Push back to= Write back to memory SHR = Snoop hit on read RMS Read miss, shared memory Invalidate = Broadcast invalidate SHI = Snoop hit on invalidate RME Read miss, exclusive Invalidate = Broadcast invalidate Read = Read from memory WH = Write hit Read = Read cache line from WM = Write miss memory SHR = Snoop hit on read SHI = Snoop hit on invalidate

248 Abschnitt 10: parallele Architekturen Verbindungsstrukturen Beispiele P E P E P E P E P E bus mem grid P E P E P E P E P E P E P E P E star P E ring P E

249 Abschnitt 10: parallele Architekturen 249 m m m m m m P E P E P E P E torus P E crossbar P E dim=2 dim=3 P E P E complete P E P E P E hypercube dim=0 dim=1

250 Abschnitt 10: parallele Architekturen 250 P 0 P 1 P 0 P 1 P 2 P 3 P 4 P 5 P 2 P 3 P 4 P 5 P 6 P 7 P 6 P 7 a. Crossbar b. Omega network A B C D c. Omega network switch box vgl. z.b. overview recent supercomputers/shared memory mimd machines basierend auf overview recent supercomputers/main architectural classes

251 Abschnitt 10: parallele Architekturen 251

252 Abschnitt 10: parallele Architekturen 252 Merkmale einschlägiger Verbindungsstrukturen Qualitative Merkmale Skalierbarkeit Quantitative Merkmale Durchmesser = längste Weglänge # ports pro PE # switches in Verbindungsstruktur total bandwidth = # links link-bandwidth bisection bandwidth (min/average/max) Latenz Fehlertoleranz = # verschiedene Wege

253 Abschnitt 10: parallele Architekturen 253 Sei n = # PEs. Alle links seien bidirectional. Topologie skalierbar Durchmesser #ports #switches # links Bus ja oder 20 n 1 Ring ja n 2 n 1 Stern ja 2 1 n n n-gitter ja 2( n 1) 4 n? 2 n( n 1) 1 complete nein 1 n 1 2n(n 1) n n-torus ja 2 n 2 4 n? 2n 1 ld n-hypercube nein ld n ld n n ld n 2 n ld n crossbar ja 1 1 n 2 2n crossbar hc für C = ja 2h + 1 h n 2hC h stages C C-crossbars Omega ja ld n 4 2n ld n oder 20 n 2 ld n mehr-stufig ja log n 1 n ld n n log n Benes ja 2 log n 1 1 n(ld n 1/2) n(2 ld n 1) z.h. Untersuche Kombinationen. 20 je nach Auslegung

254 Addenda Addendum in 2003: top s.a. c t 14/2003 # brand computer 1 NEC Earth Simulator 2 HP ASCI-Q AlphaServer 1,25 GHz 3 Linux NetworX MCR Linux Cluster XEON 2,4GHZ, Quadrics 4 IBM ASCI-White SP Power3, 375MHz 5 IBM SP Power3, 375MHz 16way 24 IBM IBM Regatta, Power4, 1,3GHz 29 Hitachi Hitachi SR 8000-F1 33 NEC NEC-SX-6 (6 proc) / 192M24 # TFLOPS Betreiber Jahr N 1 35,860 Earth Simulation Center, Yokohama, JP ,880 Los Alamos Natl. Lab, USA ,634 Lawrence Livermore Natl. Lab, USA ,304 Lawrence Livermore Natl. Lab, USA ,304 NERSC, LBNL, USA ,050 MPI, Garching ,653 Leibniz-RZ, München ,484 Dt. Klima-RZ, DKRZ

255 Abschnitt 11: Addenda Addendum in 2004: announced in 2004 vgl. ASCI = DOE s Accelerated Strategic Computing Initiative Advanced Simulation and Computing Program ASCI Purple im Auftrag des DOE, am Lawrence Livermore National Laboratory: IBM, Power5 Prozessoren, 50 TB Haupt-Speicher, 2 PB Festplatten-Speicher, 100 TFLOPS, 156 TB/s Speicher-Bandbreite (31200 DVD-Filme/s) und 12,5 TB/s Kommunikationsbandbreite IBM Blue Gene/L: für physikalische, biologische und metereologische Simulationen; ca procs, ca 367 TFLOPS, Linux IBM Blue Gene: für Faltung großer Eiweiß-Moleküle in der Gen- Technik; SMASH (simple, many and self-healing): 1 Mio procs, 8 Mio parallel threads, 1 PFLOPS; jeweils als = 2 15 Würfel

256 Abschnitt 11: Addenda Addendum in 2005: top 500 s.a. c t 14/2005, S.18; Rmax = maximal LINPACK performance Rechner Betreiber Land rank procs Rmax 11/04 TFlop/s BlueGene LLNL/DOE USA PowerPC440, 700MHz 136,7 BlueGene IBM, T.J.Watson USA PowerPC440, 700MHz 91,3 Columbia NASA USA Itanium 2, 1.6GHz 51,9 Earth Simulator Earth Simulation Center Japan NEC SX6 35,9 MareNostrum Barcelona SCC Spain PowerPC970, 2.2GHz 27,9 BlueGene ASTRON/Uni Groningen NL PowerPC440, 700MHz 27,5 Thunder LLNL USA Itanium 2, 1.4 GHz 19,9 BlueGene École Polytec. Lausanne CH 8192 PowerPC440, 700MHz 18,2 BlueGene JAIST Japan 8192 PowerPC440, 700MHz 18,2 Cray Red Storm Oak Ridge NL USA 500 Opteron, 2GHZ 15,2 unter 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.

257 Abschnitt 11: Addenda Addendum in 2006: top 500 s.a. c t 15/2006, S.18; Rmax = maximal LINPACK performance Rechner Betreiber Land rank procs Rmax 11/05 TFlop/s BlueGene DOE/LLNL USA PowerPC440, 700MHz 280,6 BlueGene IBM, T.J.Watson USA PowerPC440, 700MHz 91,3 ASC purple DOE/LLNL USA PowerS, 1.9GHz 75,8 Columbia NASA USA Itanium2, 1,6GHz 51,9 Tera-10 Comm.Energ.Atom. France 8704 Itanium2, 1,6GHz 42,9 Thunderbird Sandia Natl.Lab. USA Xeon, 3,6GHz 38,3 TSUBAME Tokyo IT Japan Opteron, 2,6GHz 38,2 JUBL,BlueGene FZ Jülich BRD PowerPC440, 700MHz 37,3 Cray Red Storm Oak Ridge N.L. USA Opteron, 2,4GHz 36,2 Earth Simulator Earth Simulation Ctr Japan NEC SX6 35,9 The TOP500 table shows the 500 most powerful commercially available computer systems known to us. Die Liste stellt ein halbjährliches ranking dar. Sie ist unter diversen Kriterien durchsuchbar. Es gibt ein Archiv alter Listen. bietet damit den Herstellern von Super-Computern eine Bühne. Werbung! Die veröffentlichten technischen Details lassen aber auch trends im high performance computing, HPC erkennen.

258 Abschnitt 11: Addenda 258 statt Linpack benchmark in Zukunft HPC Challenge, HPCC? wohl häufig nur transient zusammengestellte Super-Computer clusters, clouds... FPGA-Beschleuniger, cell-prozessoren, GPGPUs... s. InFocus: Literatur, upcoming supercomputers etc.

259 Abschnitt 11: Addenda 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, Architektur 21 hardware performance and efficiency memory latency & -bandwidth ( memory wall/gap ): DRAM latencies, = hundreds of multi-ghz processor cycles = a thousand of (multi-) processor (with shared memory) cycles; Spekulation ist kein Ausweg power: improve power efficiency along with performance Frequenz-Steigerungssackgasse (kürzere cycles immer längere pipelines immer höhere penalties) 21 Kahle et al: Introduction to the Cell multiprocessor; IBM J. Res.&Dev. Vol 49, No 4/5, July/Sept

260 Abschnitt 11: Addenda 260 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 programmability of acceleration security, DRM, privacy Applicability to a wide range of platforms long term 64bit Broadband Architecture 22 + LINUX-based software development environment = software development community Introduction in 2005 Power Architecture = basis for Cell 22 s.a.

261 Abschnitt 11: Addenda 261 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 SXU LS DMA L2 L1 SXU LS DMA SXU SXU SXU SXU SXU SXU LS On-chip coherent bus (up to 96 bytes per cycle) Power core LS LS Memory controller LS Dual Rambus XDR** LS LS DMA DMA DMA DMA DMA DMA PPE (a) Rambus XDR DRAM interface SPE Bus interface controller Rambus FlexIO** between the p to allow a sin PPEs and SPE of programmi High-bandwid a number of s chip configura glueless coh does not requ the two proce Full-custom m performance p millimeter of derivative pro Extensive sup management, software debu

262 Abschnitt 11: Addenda 262 high frequency design, i.e. small number of gates per cycle (low voltage, low power) & (high frequency, high performance) Power architecture compatibility virtualization, multi OS support, symmetric multiprocessing SIMD (PPEs vector media extensions, SPEs vector instructions) SPEs for coherent offload: SPEs with local memory, asynchronous coherent DMA, large register file... high bandwith coherent bus, high bandwidth memory (single address space) high bandwith flexible configurable IO High frequency & low voltage konfligierende Ziele: performance, power, frequency, voltage, area An optimally balanced design operates at minimum voltage supported by the circuits and at the maximum frequency at that minimum voltage! 10 FO4 later 11 FO4

263 Abschnitt 11: Addenda 263 Power architecture compatibility erleichtert Portieren von Software: existing Power applications run on Cell SIMD Vektorisierung ist entscheidend für performante multi media Anwendungen! typische Entwicklung solcher Anwendungen 1. develop single threaded software without SIMD 2. use SIMD on PPE 3. use SIMD on SPEs 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 1 st level I-cache and D-cache, 512KB 2 nd level cache caching is not transparent: data is lockable in 2 nd level cache

264 Abschnitt 11: Addenda 264 two simultaneous threads in PPE PPE = two-way multiprocessor with shared dataflow software sees two processing units (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 buffer and dual issues to execution; nearly all combinations possible; 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-cache which allows cache hits under misses. VSU with 32 64bit registers per thread; vector execution = 128bit data flow with bit 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

265 Abschnitt 11: Addenda IU Pre-decode L2 interface Fetch control Branch scan 4 L1 instruction cache Thread A Thread B 4 Threads alternate fetch and dispatch cycles SMT dispatch (queue) 2 1 Microcode L1 data cache Decode Dependency Issue 2 Thread A Thread B Thread A 1 Load/store unit Fixed-point unit Completion/flush 1 1 Branch execution unit XU VSU VMX load/store/permute VMX/FPU issue (queue) VMX arith./logic unit FPU arith./logic unit FPU load/store VMX completion FPU completion (a) PPE pipeline front end Power processor element, MC1 MC2 PPE: MC3 pipline MC4... MC9 MC10 MC11 Microcode Instruction cache and buffer IC1 IC2 IC3 IC4 IB1 IB2 ID1 ID2 ID3 IS1 IS2 IS3 Instruction decode and issue

266 VMX completion FPU completion Abschnitt 11: Addenda (a) 266 PPE pipeline front end Instruction cache and buffer IC1 IC2 IC3 IC4 IB1 IB2 ID1 ID2 ID3 IS1 IS2 BP1 BP2 BP3 BP4 Branch prediction MC1 MC2 MC3 MC4... MC9 MC10 MC11 Microcode Instruction decode and issue IS3 PPE pipeline back end Branch instruction DLY DLY DLY RF1 RF2 EX1 EX2 EX3 EX4 IBZ IC0 Fixed-point unit instruction Load/store instruction Figure 2 DLY DLY DLY RF1 RF2 EX1 EX2 EX3 EX4 EX5 WB RF1 RF2 EX1 EX2 EX3 EX4 EX5 EX6 EX7 EX8 WB RISC = Reduced Inside Complexity (b) 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. IC IB BP MC ID IS DLY RF EX WB Instruction cache Instruction buffer Branch prediction Microcode Instruction decode Instruction issue Delay stage Register file access Execution Write back

267 Abschnitt 11: Addenda 267 Synergistic processor elements, SPEs spezifische ISA 23 1, 2, 4, 8, 16 byte data types: byte, 1 2word, word, 2word, 4word 128bit SIMD execution unit organisation, 2 7 registers 6 Formate für 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 instructions 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 23 Synergistic Processor Unit Instruction Set Architecture, s.a. www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/76ca6c f f2c44

268 Floating-point instruction Abschnitt 11: Addenda 268 Floating-point unit Fixed-point unit Result forwarding and staging Register file Permute unit Load/store unit Branch unit Channel unit Local store (256 KB) Single-port SRAM 8 bytes per cycle 16 bytes per cycle 64 bytes per cycle 128 bytes per cycle PE pipeline front end IF1 IF2 IF3 IF4 IF5 IB1 IB2 ID1 ID2 ID3 IS1 IS2 PE pipeline back end 128bit Branch instruction data flow: all instructions are SIMD (wie PPE) RF1 Instruction issue unit/instruction line buffer 128B read 128B write On-chip coherent bus DMA unit (a) 256KB local memory coherent sophisticated DMA access to system memory RF2 IF Instruction fetch max 2 instructions per cycle: fixed/floating point instruction IB Instruction buffer Permute instruction gepaart mit load/store, permutation oder branch ID Instruction decode EX1 EX2 EX3 EX4 WB IS Instruction issue RF Register file access hint Load/store for instruction branch instructions, i.e. hints on branch target: EX Execution EX1 EX2 EX3 EX4 EX5 EX6 WB WB Write back prefetching at least 17 instructions at branch target address Fixed-point instruction SPE is only 14.5 mm 2, only a few watts at multi GHz EX1 EX2 WB

269 On-chip coherent bus Abschnitt 11: Addenda DMA unit 269 SPE pipeline front end IF1 IF2 IF3 IF4 IF5 IB1 IB2 ID1 ID2 ID3 IS1 IS2 (a) SPE pipeline back end Branch instruction RF1 RF2 Permute instruction EX1 EX2 EX3 Load/store instruction EX1 EX2 EX3 EX4 EX4 EX5 EX6 WB WB IF IB ID IS RF EX WB Instruction fetch Instruction buffer Instruction decode Instruction issue Register file access Execution Write back Fixed-point instruction EX1 EX2 WB Floating-point instruction EX1 EX2 EX3 EX4 EX4 EX6 High Bandwidth: on-chip (SPE) 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 local supports both memory 128-byte access to from local direct memory access (DMA) per 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 High two cycles for Bandwidth: simple fixed-point instructions and main six cycles for memory both load and single-precision floating-point instructions. Instructions 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. point and load instructions take six cycles. Two-way SIMD double-precision floating point is also supported, (b) main = system memory = Rambus XDR DRAM with two 32 bit channels à 12.8GB/s vs 96byte per cycle on chip WB The control area makes up only 10 15% of the area of the 10-mm 2 SPE core, and yet several applications

270 bandwidth at a low system cost teneration a lowabschnitt systemcell cost 11: processor Addenda by XDR XDR 270 mbus ll processor XDR** by DRAM memory XDR XDR rs * DRAM 12.8 GB/s High memory per Bandwidth: 32-bit memory IO eper channels 32-bit memory are supported on the Cell e supported on configurable the to support multiple Cell high bandwidth processorsystem configurations: Since base, 2-way, IOIF0 4-way symmetric IOIF1 multiprocessor l bandwidth of 25.6 GB/s. Since processor IOIF0 IOIF1 of 25.6 GB/s. chip delivers nearly an order of (a) nearly an order of (a) per th (96 cyclebytes at peak), per cycle at peak), XDR XDR tion vable oncontention DMA on DMA XDR XDR XDR XDR XDR XDR XDR p. ithin the chip. Cell Cell Cell Cell Cell processor processor e I/O processor IOIF BIF processor IOIF processor sor systems IOIF0 and IOIF1 (b) IOIF BIF IOIF ennected dual-processor accelerator(a) systems and (b) width terface I/O-connected chip, Cell accelerator XDR XDR XDR XDR ted nfigurable system XDRI/OXDR interfacexdr chip, XDR Cell XDR XDR XDR XDR andwidth l of seven transmit configurable I/O Cell Cell IO** bytes [16] can processor processor l layer, acell total of seven Cell transmit IOIF CellIOIF ical interfaces, one Cell processor processor IOIF RRAC FlexIO** BIFbytes [16] can BIF as a coherent IOIF Switch processor processor IOIF BIF IOIF pports separate multiple logical (b) interfaces, one IOIF BIF IOIF ed (Figure to operate 4). as a coherent Cell Cell Switch processor processor XDR XDR XDR XDR BIF processor supports multiple IOIF IOIF onfigurations (Figure 4). Cell Cell a highly optimized XDR XDR XDR XDR processor processor Cell Cell r implementation processor processor (c) Fm ation a chip; IOIF

271 Abschnitt 11: Addenda 271 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

272 Abschnitt 11: Addenda 272 Programming Cell runs 32bit and 64bit Power and PowerPC applications! inter processor communication and data movement facilities make 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, privacy/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, SPEs as stream data processors in a pipeline shared memory multiprocessor model: per DMA: shared memory local store; per load/store: local store registers; locking per DMA lock line command asymmetric thread runtime model: on PPEs or SPEs, most flexible

273 Abschnitt 11: Addenda 273 Benchmarking benchmarking 24 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 Chen et al: Cell Broadband Engine Architecture and its first implementation A Performance View; 2005 www-128.ibm.com/developerworks/power/library/pa-cellperf

274 Abschnitt 11: Addenda Addendum in 2010: Core i2000 siehe Christof Windeck: Intels neue Prozessor-Generation Core i-2000 alias Sandy Bridge; c t 3/2011, S Core i3-2000, i und i in 32nm-Technik gefertigte desktop- und mobil-versionen im neuen Sockel LGA1155 für neue mainboards mit geänderter Stromversorgung und neuen Chipsätzen GPU core core core core shared L3 cache, LLC MMU GPU = Processor graphics LLC = last level cache MMU = System Agent GPU für 1-2 displays, System Agent = Speicher-, PCI und IO-Controller sowie Taktsteuerung, Einheiten, insbesondere jeder Kern über Ring- Bus vernetzt (mit 1000 Signalleitungen in eigenem layer ): max 300GB/s. GPU nutzt auch den LLC: das RAM kann häufiger schlafen. Unterstützten Advanced Vector Extensions, AVX, d.h. 256bit breite Argumente vs 128bit in SSE4: β SSE AVX 1.86 für Linpack aber nur unter Win7SP1, Linux, aber fused multiply add, FMADD erst 2012

275 Abschnitt 11: Addenda 275 Mit AVX einhergehend Verbesserungen bei load/store units, branch prediction, (größerer?) Puffer für µ-ops. Aber: AVX-units bearbeiten einige SSE-Instruktionen langsamer als die Vorgänger. Aus einem externen 100MHz Taktgeber werden alle Takte intern erzeugt kein Übertakten. Wie bisher Turbo-Boost, jetzt aber mit eingebautem Übertakten konfigurierbar: wir haben es jedenfalls rasch geschafft, soviel falsch zu machen, daß das System erst nach BIOSreset per CMOS clear wieder startete Turbo Boost auch für GPU; LLC per Prozessor-Takt. Automatisches Umschalten zwischen GPU und externer Grafikkarte. GPU mit 6 oder 12 execution units, EUs unterstützt DirectX 10.1 und OpenCL 1.1. GPU mit separatem Hardware encoder für das Transcodieren von Video-streams, z.b. 97min MPEG4 HD-Video mit 8Mbit/s und AAC-Stereo-Ton in ipod-format per QuickSync in 7 15, per MediaConverter 7 in 25, auch 3D-Unterstützung, aber keine 3D-Spiele auf 120Hz displays PCIe 2.0 mit 500MB/s/lane, sollte u.a. für USB 3.0 reichen, c t mißt 197MB/s lesend, ca die Hälfte schreibend, je nach Chipsatz 12-14

276 Abschnitt 11: Addenda 276 USB 2.0 ports, SATA-6G für Platten > 2TB, setzt aber notwendig UEFI 2.0 voraus. Chipsätze mit Fernwartung (Active Management Technology, AMT ), TPM (Trusted Execution Technology), Virtualisierung... Performance-Messungen per SPEC CPU2006, Cinebench, BaPCo SYSmark 2007, Office, gcc, zip etc. also alles ohne AVX, siehe bis Fazit: viel Rechenleistung für s Geld, Preis/Leistung besser als bei Vorgänger-Prozessoren und besser als bei AMD! integrierte GPU konkurriert mit 40Euro-Grafikkarten, vorteilhaft für notebooks und Büro-Computer, GPU reicht nicht für gamer.

277 Abschnitt 11: Addenda Addendum in 2011: K Computer The K Computer, built by Fujitsu, currently combines SPARC64 VIIIfx CPUs, each with eight cores, for a total of 548,352 cores - almost twice as many as any other system in the TOP500. The K Computer is also more powerful than the next five systems on the list combined. The K Computers name draws upon the Japanese word Kei for 10 16, representing the system s performance goal of 10 petaflops. RIKEN is the Institute for Physical and Chemical Research. Unlike the Chinese system it displaced from the No. 1 slot and other recent very large system, the K Computer does not use graphics processors or other accelerators. The K Computer is also one of the most energy-efficient systems 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 processors increased their presence in the list strongly with 169 systems,

278 Abschnitt 11: Addenda 278 compared with 56 in the last list. Quad-core processors are used in 46.2 percent of the systems, while already 42.4 percent of the systems use processors with six or more cores. Tracking Changes The entry level to the list moved up to the 40.1 Tflop/s mark on the Linpack benchmark, compared to 31.1 Tflop/s six months ago. The last system on the newest list was listed at position 262 six months ago. This turnover rate has steadily increased during the 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/W six months ago and 195 Mflops/watt one year ago). The No. 1 system, the K Computer, also reports the highest total power consumption of 9.89 MW.

279 Abschnitt 11: Addenda 279 Site RIKEN Advanced Institute for Computational Science (A System Family Fujitsu Cluster System Model K computer Computer K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnect Vendor Fujitsu Application area Research Installation Year 2011 Operating System Linux Interconnect Custom Processor SPARC64 VIIIfx 2000 MHz (16 GFlops) The K system does not have GPUs, because they really would not add to the performance of the system. The most important part is the direct network connection, which currently is based on Infiniband. The individual speed of the nodes is not that important, as long as their connection is. Actually most of the porting work goes into parallelisation. Adapting it to the processor and operating system is only minor work. K computer is a huge system with over nodes. About every 15 hours a node fails. So they are working on low level rerouting of

280 Abschnitt 11: Addenda 280 nodes so that applications do not fail. computer: On the 20th of June 2011, K topped the LINPACK benchmark with the performance of petaflops with a computing efficiency ratio of 93.0%, making it the fastest supercomputer in the world. The system is still under construction and enters service in November 2012 with 864 cabinets. Currently it uses 68, GHz 8-core SPARC64 VIIIfx processors packed in 672 cabinets, for a total of 548,352 cores, manufactured by Fujitsu with 45 nm CMOS process technology. Each cabinet contains 96 compute nodes in addition to 6 IO nodes. Each compute node contains a single processor and 16 GB of memory. Its water cooling system minimizes failure rate and power consumption. The K computer uses a special six-dimensional torus network interconnect called Tofu, and a Tofu-optimized Message Passing Interface based on the open-source Open MPI library. Users can create application programs adapted to either a one-, two-, or three-dimensional torus network.

281 Abschnitt 11: Addenda 281 The system adopts a two-level local/global file system with parallel/- distributed functions, and provides users an automatic staging function for moving files between global and local file systems. Fujitsu developed an optimized parallel file system based on Lustre, called Fujitsu 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 its annual running costs are US$10 million. Die Wasserkühlung des schnellsten Rechners der Welt: Dieser derzeit schnellste Supercomputer wird durch eine ausgeklügelte Wasserkühlung auf Betriebstemperatur gehalten. Die einzelnen Nodes des K-Computers sind aus Rackeinschüben mit nur einer Höheneinheit aufgebaut. Das ist die Grundlage, um die insgesamt über eine halbe Million Prozessorkerne noch bei vertretbaren Latenzen zu vernetzen. Jeder Einschub enthält vier Sparc-VIII-CPUs mit je acht Kernen. Ein Board des K-Computers misst nur eine Höheneinheit. Von den

282 Abschnitt 11: Addenda 282 üblicherweise rund 40 Höheneinheiten eines Racks nutzt Fujitsu nur 24 für die Nodes, sie sind oben und unten in Einheiten von je 12 Einschüben untergebracht. In der Mitte sitzen Stromversorgung und Netzanbindung, beide Komponenten werden per Luft gekühlt. Mit den 24 Nodes mit je vier Achtkern-CPUs ergeben sich 768 Kerne pro Rack. Um diese hohe Dichte zu erreichen, muss auch die Wasserkühlung sehr flach gestaltet werden. Für jeden Node gibt es daher einen zentralen Zu- und Ablauf, auf den Bildern als Water Cooling Module bezeichnet. Die Pumpen sind für jedes Rack zentral gehalten. Daher sind die Nodes auch leicht gedreht in die Racks gesetzt, um Platz für die Wasserleitungen zu schaffen. Jede der vier CPUs und auch die vier Vernetzungsmodule besitzen einen eigenen Kupferkühler - nur der Speicher bleibt luftgekühlt. Über die Art der Verschaltung der Prozessorsockel und der Nodes ist noch wenig bekannt, das japanische Forschungszentrum Riken in Kobe, wo der K-Computer steht, bezeichnet es als Tofu Interconnect. Auch die Tabellen von top500.org verzeichnen für die Vernetzung nur custom-

283 Abschnitt 11: Addenda 283 es handelt sich also um ein Design, das für diese Maschine entwickelt wurde

284 Abschnitt 11: Addenda Addendum in 2012: Raspberry Pi elinux.org/raspberrypiboard Erste-Schritte-mit-dem-Raspberry-Pi html List of single-board computers raspberrycenter.de Pi: Der Raspberry Pi ist ein kreditkartengroßer Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Der PC, der zu Experimenten anregen soll, wird in zwei Versionen, A für 18e und B 26e, angeboten.

285 Abschnitt 11: Addenda 285 Die Platine enthält im Wesentlichen das Ein-Chip-System BCM 2835 von Broadcom mit dem 700-MHz-Hauptprozessor ARM1176JZF-S sowie 256 MB Arbeitsspeicher. Das Modell B hat zudem Ethernet und einen zweiten USB-Anschluss. Linux und andere Betriebssysteme, die die ARM-Architektur unterstützen, können installiert werden. Eine Festplatte ist nicht vorgesehen. Stattdessen können Speicherkarten (SD bzw. MMC) als nicht-flüchtiger Speicher benutzt werden. Auf Versuchsplatinen wurde gezeigt, dass die Desktop-Umgebung LX- DE unter Debian sowie Quake 3 und H.264-Videos mit einer Auflösung von 1080p via HDMI funktionieren. Anvisierter Preis US$25 (GBP 16) / US$35 (GBP 22) Größe Größ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 Anschlüsse 1 / 2 (über integrierten Hub) Videoausgabe Composite, HDMI

286 Abschnitt 11: Addenda 286 Tonausgabe 3.5 mm Klinkenstecker, HDMI Nicht-flüchtiger Speicher SD/MMC/SDIO Kartenleser Netzwerk - / 10/100 MBit Ethernet-Controller (LAN9512 von SMSC) Bussysteme Bis zu 16 GPIO Pins, SPI, I 2 C, 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 Prozessor Der Prozessor nutzt den ARMv6-Instruktionssatz. Des Weiteren wird der ARM-Thumb-Instruktionssatz unterstützt. Der Speicher ist über einen 64 bit breiten Bus angebunden und wird direkt als Package on Package auf den Prozessor gelötet. Pi: Broadcom don t release a full datasheet for the BCM2835, which is the chip at the heart of the Raspberry Pi.

287 Abschnitt 11: Addenda 287 High Definition 1080p Embedded Multimedia Applications Processor The BCM2835 is a cost-optimized, full HD, multimedia applications processor for advanced mobile and embedded applications that require the highest levels of multimedia performance. Designed and optimized for power efficiency, BCM2835 uses Broadcom s VideoCore IV technology 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 cameras 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 resolution LCD and HDMI with HDCP at 1080p60

288 Abschnitt 11: Addenda 288 Grafik Der ARM11-Prozessor ist mit Broadcoms VideoCore-Grafikkoprozessor kombiniert. OpenGL ES 2.0 wird unterstützt, Filme in FullHD- Auflösung (1080p30 H.264 high-profile) können dekodiert und über HDMI und Composite ausgegeben werden. Software Der Linux-Kernel läuft auf dem Raspberry Pi. Eine Entwicklerversion des RISC OS 5 wurde im Oktober 2011 veröffentlicht. Pi: The Foundation provides De-

289 Abschnitt 11: Addenda 289 bian and Arch Linux ARM distributions for download. Also planned are tools for supporting Python as the main programming language, with support for BBC BASIC, C, and Perl. Zum Vergleich: gooseberry gooseberry.atspace.co.uk raspberrycenter.de/tags/gooseberry gooseberry-developer-boards-40-alternative-raspberry-pi.html Das Gosseberry ist keine Eigenentwicklung. Es handelt sich vielmehr um ein Mainboard, das derzeit in verschiedenen Tablets zum Einsatz kommt. Daraus erklärt sich auch das Fehlen einer RJ45-Netzwerk- Schnittstelle (dafür ist WLAN onboard). Findige Briten haben den Produzenten ausgemacht und machen es so Endkunden zugänglich. Die Hardware des Gooseberry im Überblick: 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 MB RAM

290 Abschnitt 11: Addenda GB Flash MicroSD Slot b/g/n Wireless Netzwerk Kopfhörer- und Mikrophon-Anschluss (Mini-Klinke) HDMI MiniUSB Buttons für Lautstärke und Power LVDS-Anschluss (Low Voltage Differential Signaling) Preis: GBP 40, zzgl. GBP 2,70 für den Versand innerhalb der EU Details zur CPU :-( s. z.b. a10 inote-allwinner-a10-tablet-pc-integrierter-gps-bluetooth-8-zoll-high-definition affordable-tablet-with-ips-panel-allwinner-a10 Details zur GPU :-( s. z.b mali optimization guide.pdf

291 Abschnitt 11: Addenda 291 typisches SoC, vgl. z.b.

292 Abschnitt 11: Addenda 292 Benjamin Benz: ARM, aber sexy Was Smartphones und Tablets so schnell macht; c t 6/2012 S , also ct S pdf auf AULIS, s.a. Benjamin Benz, Christof Windeck: Wohngemeinschaft Die Technik der Tablet- und Smartphone-Prozessoren; c t 6/2012 S , also ct S pdf auf AULIS, s.a.

293 Abschnitt 11: Addenda 293 Gooseberry vs Raspberry Pi The goose-berry has roughly 3 x the processing power of the Pi. The goose-berry has a newer ARM architecture: the board is compatible with newer software such as Ubuntu which the Pi can not run. The goose-berry has double the RAM of the Pi (512MB). The board does not have a LAN port, although Wifi is present. The board does not have analogue video: no connection to old TVs. Only a limited OS (Android) is supported as of yet fully, the board however is capable of running other OSs such as Ubuntu (currently without graphics acceleration). Premade images for Ubuntu are now available and videos of the board running Ubuntu and other Linux flavours shall be uploaded. zeitgenössische Alternativen 74-android-mini-computer-is-slightly-larger-than-a-thumb-drive cx android-4-0-pc-stick.html

294 Abschnitt 11: Addenda Addendum in 2013: Haswell Die aktuellen Haswell-Prozessoren geben Anlaß zu prüfen, inwieweit die Inhalte der Veranstaltung RST helfen, populärwissenschaftliche Veröffentlichungen einzuordnen und zu bewerten. Andreas Stiller: Der Rechenkünstler Mikroarchitektur und Instruktionssätze der neuen vierten Core-Generation Haswell; c t 14/2013 S sowie Material auf AULIS Pentium grüßt von Ferne out of order execution eigene load/store unit mit load/store L0 cache dicke (breitere) µops 256 bit AVX-Instruktionen physical register file mit 160 integer und 144 GP-Registern µop fusion

295 Abschnitt 11: Addenda 295 Detail-Verbesserungen: Sprungvorhersage, Die Datenpfade sind breiter, die Puffer und die Reservation Station größer, ebenso die Zahl der physischen Register, der Ports und der Ausführungseinheiten., s.a. Buffer und Register, 256 bit Vektoren, cache- System mit L4 cache etc., s.a. Caches und TLBs Volle Integer-Breitseite 256 bit AVX2, BMI1 (s.a. Intrinsics mit CRC), FMA und TSX gather (vgl. array of structures in multi body problem), allerdings kein scatter wie im XEON Phi Volle FMA Power plus zwei 256 bit FMA units mit kleiner Latenz plus zwei (?, vgl. rote Verbesserungen) 256 bit FMUL units angebunden durch load store unit plus (store?) Address Generation Unit, AGU FMA mit drei Operanden, FMA3 oder mit vier Operanden, FMA4

296 Abschnitt 11: Addenda 296 Transactional Memory Transactional Extension, TSX unterstützt zwei Programmier-Modelle (s.a. HLE-Kasten): Hardware Lock Elision, HLE: optimistisch locks ignorieren und bei konfligierenden Zugriffen die ganze Transaktion verwerfen und mit konventionellem (aufwändigen) locking wiederholen Restricted Transactional Memory, RTM: programm-gesteuerte Reaktion im Konfliktfall flexibel und leistungsfähig bei für nicht TSX-fähige Prozessoren inkompatiblem Code! Kasten: Zwischen Performance und Leakage Energie-bewußter Entwurf: gezielter Einsatz von Transistoren im Bereich Ultra Low Power High Performance, hpc/ulp = 10 4 Feinkörnige Stromversorgung: Fully Integrated Voltage Regulator, FIVR weiterer Strom-Spar-Zustand

297 Abschnitt 11: Addenda Addendum in 2014: Advanced RISC Machines, ARM armv8-architecture.php ARMv8-A for applications, ARMv8-R for real time applications, embedded, industrial control, ARMv8-M for micro controller applications ARMv8-A introduces 64-bit architecture support to the ARM architecture and includes: 64-bit general purpose registers, SP (stack pointer) and PC (program counter) 64-bit data processing and extended virtual addressing Two main execution states: AArch32/AArch64 - The 32-bit/64- bit execution state including exception model, memory model, programmers model and instruction set

298 Abschnitt 11: Addenda 298 The execution states support three key instruction sets: 1. A32 (or ARM): a 32-bit fixed length instruction set, enhanced through the different architecture variants. Part of the 32-bit architecture execution environment now referred to as AArch T32 (Thumb) introduced as a 16-bit fixed-length instruction set, subsequently enhanced to a mixed-length 16- and 32-bit instruction set on the introduction of Thumb-2 technology. Part of the 32-bit architecture execution environment now referred to as AArch A64 is a 64-bit fixed-length instruction set that offers similar functionality to the ARM and Thumb instruction sets. Introduced with ARMv8-A, it is the AArch64 instruction set. ARM ISAs are constantly improving to meet the increasing demands of leading edge applications developers, while retaining the backwards compatibility necessary to protect investment in software development. In ARMv8-A there are some additions to A32 and T32 to maintain alignment with the A64 instruction set.

299 Abschnitt 11: Addenda 299 Cortex A53 and Cortex A57 ACP = Accelarator Coherency Port SCU = Snoop Control Unit The ARM Cortex-A57 processor is ARMs highest performing processor, designed for mobile and enterprise computing applications including compute intensive 64-bit applications such as high end computer, tablet and server products. The processor can be implemented individually or paired with the Cortex-A53 processor into an ARM big.little configuration that enables scalable performance and optimal energy-efficiency.

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere

Mehr

Assembler am Beispiel der MIPS Architektur

Assembler am Beispiel der MIPS Architektur Assembler am Beispiel der MIPS Architektur Frühere Einsatzgebiete MIPS Silicon Graphics Unix Workstations (z. B. SGI Indigo2) Silicon Graphics Unix Server (z. B. SGI Origin2000) DEC Workstations (z.b.

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Technische Informatik 2 Adressierungsarten

Technische Informatik 2 Adressierungsarten Technische Informatik 2 Adressierungsarten Prof. Dr. Miroslaw Malek Sommersemester 2009 www.informatik.hu-berlin.de/rok/ca Thema heute X-Adressmaschine 0-Adressmaschine 1-Adressmaschine 2-Adressmaschine

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente

Mehr

Assembler. Dr.-Ing. Volkmar Sieh. Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Assembler. Dr.-Ing. Volkmar Sieh. Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg Assembler Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2017/2018 V. Sieh Assembler (WS16/17) 1 15 Einleitung

Mehr

Grundlagen der Rechnerarchitektur. MIPS Assembler

Grundlagen der Rechnerarchitektur. MIPS Assembler Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32

Mehr

5.BMaschinensprache und Assembler

5.BMaschinensprache und Assembler Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21 Darstellung von Instruktionen Grundlagen der Rechnerarchitektur Assembler 21 Übersetzung aus Assembler in Maschinensprache Assembler Instruktion add $t0, $s1, $s2 0 17 18 8 0 32 6 Bit Opcode Maschinen

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Lösungsvorschlag zur 4. Übung

Lösungsvorschlag zur 4. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 4. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche Aussagen zu Bewertungskriterien

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Speedup: Grundlagen der Performanz Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 30. April 2015 Eine Aufgabe aus der Praxis Gegeben ein

Mehr

Mikroprozessor als universeller digitaler Baustein

Mikroprozessor als universeller digitaler Baustein 2. Mikroprozessor 2.1 Allgemeines Mikroprozessor als universeller digitaler Baustein Die zunehmende Integrationsdichte von elektronischen Schaltkreisen führt zwangsläufige zur Entwicklung eines universellen

Mehr

Rechner-Strukturen: slides

Rechner-Strukturen: slides Fakultät E-Technik & Informatik Hochschule Bremen Rechner-Strukturen: slides Prof. Dr. Thomas Risse SS 2012 Sinn & Zweck: Unterstützung der Lehrveranstaltung Rechner-Strukturen, RST durch diverse Materialien,

Mehr

Binäre Gleitkommazahlen

Binäre Gleitkommazahlen Binäre Gleitkommazahlen Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625? Grundlagen der Rechnerarchitektur Logik und Arithmetik 72

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

Mehr

Beispiel: A[300] = h + A[300]

Beispiel: A[300] = h + A[300] Beispiel: A[300] = h + A[300] $t1 sei Basisadresse von A und h in $s2 gespeichert. Assembler Code? Maschinen Code (der Einfachheit halber mit Dezimalzahlen)? op rs rt rd adr/shamt funct Instruktion Format

Mehr

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht 2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen

Mehr

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

Klausur zur Mikroprozessortechnik

Klausur zur Mikroprozessortechnik Prof. Dr. K. Wüst WS 2001 FH Gießen Friedberg, FB MNI Studiengang Informatik Klausur zur Mikroprozessortechnik Nachname: Vorname: Matrikelnummer: 7.3.2001 Punkteverteilung Aufgabe Punkte erreicht 1 3 2

Mehr

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache

Mehr

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78 32 Bit Konstanten und Adressierung Grundlagen der Rechnerarchitektur Assembler 78 Immediate kann nur 16 Bit lang sein Erinnerung: Laden einer Konstante in ein Register addi $t0, $zero, 200 Als Maschinen

Mehr

H. Intel x86 CPU. Höhere Informatik. Systemprogrammierung: - Betriebssystemkonzepte, Ein- & Ausgabe

H. Intel x86 CPU. Höhere Informatik. Systemprogrammierung: - Betriebssystemkonzepte, Ein- & Ausgabe H. Intel x86 CPU Historische Entwicklung des x86 Registersatzes. Complex Instruction Set Computer (CISC), Deskriptoren & Adressierung, Cacheausstattung. Höhere Informatik Systemprogrammierung: - Betriebssystemkonzepte,

Mehr

Hardware/Software-Codesign

Hardware/Software-Codesign Klausur zur Lehrveranstaltung Hardware/Software-Codesign Dr. Christian Plessl Paderborn Center for Parallel Computing Universität Paderborn 8.10.2009 Die Bearbeitungsdauer beträgt 75 Minuten. Es sind keine

Mehr

Notwendigkeit für andere Instruktionsformate

Notwendigkeit für andere Instruktionsformate Notwendigkeit für andere Instruktionsformate add $t0, $s1, $s2 op rs rt rd shamt funct 6 Bit 5 Bit 5 Bit 5 Bit 5 Bit 6 Bit R Typ? lw $t0, 32($s3) I Typ Opcode 6 Bit Source 5 Bit Dest 5 Bit Konstante oder

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Beispiele von Branch Delay Slot Schedules

Beispiele von Branch Delay Slot Schedules Beispiele von Branch Delay Slot Schedules Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 97 Weniger

Mehr

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1 Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer

Mehr

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer Rechnerarchitektur Marián Vajteršic und Helmut A. Mayer Fachbereich Computerwissenschaften Universität Salzburg marian@cosy.sbg.ac.at und helmut@cosy.sbg.ac.at Tel.: 8044-6344 und 8044-6315 3. Mai 2017

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung ERA-Zentralübung Maschinenprogrammierung M. Meyer LRR TU München 27.10.2017 Arithmetik mit 80386 Inhalt Rechenmodell Register Befehle Beispiele 80386-Rechenmodell Typisches Zwei-Address-Format Ziel :=

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Beispiel einer Übersetzung

Beispiel einer Übersetzung Beispiel einer Übersetzung Ausdruck in C aktuelle_zeit = Startzeit + vergangene_minuten*60 + vergangene_sekunden; Ausdruck im Instruktionssatz des R10000 LW r1,minuten LW r1,sekunden ADDI r2,r0,60 ADD

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

Compiler und Codegenerierung. Hw-Sw-Co-Design

Compiler und Codegenerierung. Hw-Sw-Co-Design Compiler und Codegenerierung Hw-Sw-Co-Design Wo sind wir? System Verhalten Modul Architektur Block SW HW Logik Struktur Compiler und Codegenerierung Compiler - Aufbau Codegenerierung Codeoptimierung Codegenerierung

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Grundlagen der Rechnerarchitektur. Einführung

Grundlagen der Rechnerarchitektur. Einführung Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Computer-Architektur Ein Überblick

Computer-Architektur Ein Überblick Computer-Architektur Ein Überblick Johann Blieberger Institut für Rechnergestützte Automation Computer-Architektur Ein Überblick p.1/27 Computer-Aufbau: Motherboard Computer-Architektur Ein Überblick p.2/27

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Computerarithmetik ( )

Computerarithmetik ( ) Anhang A Computerarithmetik ( ) A.1 Zahlendarstellung im Rechner und Computerarithmetik Prinzipiell ist die Menge der im Computer darstellbaren Zahlen endlich. Wie groß diese Menge ist, hängt von der Rechnerarchitektur

Mehr

E-PRIME TUTORIUM Die Programmiersprache BASIC

E-PRIME TUTORIUM Die Programmiersprache BASIC E-PRIME TUTORIUM Die Programmiersprache BASIC BASIC Beginner s All-purpose Symbolic Instruction Code symbolische Allzweck-Programmiersprache für Anfänger Design-Ziel klar: Eine einfache, für Anfänger geeignete

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 5 am 25.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Johann Wolfgang Goethe-Universität

Johann Wolfgang Goethe-Universität Flynn sche Klassifikation SISD (single instruction, single data stream): IS IS CU PU DS MM Mono (Mikro-)prozessoren CU: Control Unit SM: Shared Memory PU: Processor Unit IS: Instruction Stream MM: Memory

Mehr

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33 Weitere Arithmetik Grundlagen der Rechnerarchitektur Assembler 33 Die speziellen Register lo und hi Erinnerung: ganzzahliges Produkt von zwei n Bit Zahlen benötigt bis zu 2n Bits Eine MIPS Instruktion

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Wichtige Rechnerarchitekturen

Wichtige Rechnerarchitekturen Wichtige Rechnerarchitekturen Teil 1 Überblick 1 Rechnergeschichte: Mechanische Rechenmaschinen Mechanische Rechenmaschinen (17.Jahrhundert) Rechenuhr von Schickard (1623) Pascaline von Blaise Pascal (1642)

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de)

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de) Übung zur Vorlesung Grundlagen Betriebssysteme und Systemsoftware (Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de) http://www11.in.tum.de/veranstaltungen/grundlagenbetriebssystemeundsystemsoftwarews1112

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation Übungsaufgaben Anmerkung Allen Beispielen soll noch hinzugefügt sein, dass wertvolle Hinweise, also die Tipps und Tricks die der schnellen maschinellen Multiplikation zu Grunde liegen, neben dem toff zur

Mehr

Diplomarbeit Antrittsvortrag

Diplomarbeit Antrittsvortrag Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Binärdarstellung von Fliesskommazahlen

Binärdarstellung von Fliesskommazahlen Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Computer-Generationen

Computer-Generationen (K.Zuses Z3, 1941) (Vorschlag) Generation Beispiel Technologie Geschw./Speich. Software Vorgeneration Z3 Elektro- 0,0002 MIPS Verdrahtet 1941-1944 Mark1 mechanik 1.Generation ENIAC, Z22 Elektronen- 0,02

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung ERA-Zentralübung Maschinenprogrammierung M. Meyer LRR TU München 17.11.2017 Inhalt Aufgabe 3.1 Aufgabe 3.2 Aufgabe 3.3 Logische Operationen Schiebebefehle Weitere Befehle Registerübersicht Aufgabe 3.1

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

I.1 Die Parrot Assemblersprache

I.1 Die Parrot Assemblersprache I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Assembler - Variablen

Assembler - Variablen Assembler - Variablen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Variablen 1/30 2008-04-21 Variablen Variablen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder

CA Übung 30.01.2006. Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder CA Übung 30.01.2006 Hallo zusammen! Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder Adrian Schüpbach: scadrian@student.ethz.ch Christian Fischlin: cfischli@student.ethz.ch

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Übung zu Betriebssysteme

Übung zu Betriebssysteme Übung zu Betriebssysteme Threadumschaltung 6. & 8. Dezember 2017 Andreas Ziegler Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für Verteilte Systeme

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Klausur Mikroprozessortechnik 29. März 2010

Klausur Mikroprozessortechnik 29. März 2010 Klausur Mikroprozessortechnik 29. März 2010 Name:... Vorname:... Matr.-Nr:... Studiengang:... Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Zur Klausur zugelassen

Mehr

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10 Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754 Berechnung von Gleitkommazahlen aus Dezimalzahlen Die wissenschaftliche Darstellung einer Zahl ist wie folgt definiert: n = f * 10 e. f ist

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

Brückenkurs / Computer

Brückenkurs / Computer Brückenkurs / Computer Sebastian Stabinger IIS 22 September 2014 1 / 24 Content 1 Allgemeines zum Studium 2 Was ist ein Computer? 3 Geschichte des Computers 4 Komponenten eines Computers 5 Aufbau eines

Mehr

Was ist die Performance Ratio?

Was ist die Performance Ratio? Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen

Mehr

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE

DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE D - CA - IV - AA - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 4 DATEN UND BEFEHLSFORMATE, ADDRESSIERUNGSARTEN UND MASCHINEN- PROGRAMMIERUNGSKONZEPTE Sommersemester 2003 Leitung:

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr