CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /

Slides:



Advertisements
Ähnliche Präsentationen
Definition Überlappung und Überdeckung
Advertisements

Vom HW-Automaten zum Prozessor
Programmierung: Einführung
3.2 Subtraktion, Multiplikation, ALU
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Leistung.
Multiplizierer Gesucht: Schaltkreis zur Multiplikation zweier Binärzahlen , Beispiel: RW-Systemarchitektur Kap. 3.
Befehlssatz und Struktur
© 1999 by MSc-AST. Dipl. Informatikerin Cornelia Pahnke
Dynamisches Scheduling
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Technische Universität Dortmund
2.3 Register-Transfer-Strukturen
Claas J. Cornelius - Ogg-on-a-chip - MDCT MDCT Funktionsweise und Limitierende Faktoren.
Entwicklungstrends bei Mikroprozessoren
2.5 Vektorrechner & Multimedia-Erweiterungen
Peter Marwedel Informatik 12
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
Parser für CH3-Sprachen
Kapitel 3 5 Rechnerorganisation
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 11.1.
Rechneraufbau & Rechnerstrukturen, Folie 10.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 10.
Schwierigkeitsgrad III 6 X - 7 = X
Aufbau und Funktionsweise von Prozessoren
ilmenau.de Exploiting Pocket PC. ilmenau.de Exploiting Pocket PC PocketPC existiert seit über 5 Jahren (Windows CE seit ca. 10)
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 Gliederung 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Methodenentwurf.
Programmiermethodik Übung 6 Methoden verstehen und entwerfen.
Von-Neumann-Prinzip Der Rechner ist zentral gesteuert und aus Funktionseinheiten aufgebaut. (Zentraleinheit, Speicher, Ein-/Ausgabeeinheit, Verbindungseinrichtung)
2 Grundlegende Prozessortechniken
Zyklus Nr 0 Instruction Queue Instruction tag Instruction Register IF Stage CDB nameb ADD1 ADD2 ADD3 MUL1 MUL2 DIV INT MU1 MU2 MU3 Reservations OPV1Q1V2Q2.
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 Gliederung 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Methodenentwurf.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
EPIC, IA-64 und Itanium Eine Kurzpräsentation von Jan Hübbers bei Prof. Dr.-Ing. Risse im Fach Labor Rechnerstrukturen an der Hochschule Bremen
Brückenschaltung 1.
Mikroprogrammierte Ablaufsteuerung
© 1999 by MSc-AST. Dipl. Informatikerin Cornelia Pahnke
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
Der Simple As Possible Computer
2.3 Register-Transfer-Strukturen
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
Duo- und Quad Prozessor-Architektur
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Mikrocomputertechnik 1 Einführung Prof. J. Walter Stand Oktober Mikrocomputertechnik Jürgen Walter Indirekte Adressierung- Quickie Beschreibung.
Benutzerhinweise: Die nächste Folie sowie die jeweils nächste
Anwendung von Microcontollern
Advanced Digital Design Übung 3. Aufgabe 2 + R1R2R3 +
Advanced Digital Design Übung 3. Aufgabe 1: Algorithmus für Phasen Inverter Plazierung Systematic approach: 1. Identify combinational logic and registers/memories.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in Assembler
Rechnerarchitekturen
Moderne Rechner-Architekturen
Johann Baron von Neumann
Informatik Formale Sprachen 1.2 Grammatiken formaler Sprachen
Rd2 Versuchsübersicht: „Wir zaubern mit Reibung“
6. Übung Informatik 1 Inhalte: Der DLX-Prozessor
Goethe-Universität Frankfurt am Main – Lehrstuhl für Eingebettete Systeme - Prof. Dr. U. Brinkschulte Analoge Schnittstellen Wesentliche Aufgaben:
2.8 Signalprozessor-Beispiele
Der Prozessor Von Stephan Blum.
Lernfeld 4: Informationstechnische Systeme Bereitstellen
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
Parallelität auf Instruktionsebene Übersetzung von künstlichen Sprachen Präsentation: Christoph Heitmann
Data Hazards 0x30 sub $6 $0 $1 0x34 add $7 $6 $
VHDL-Modellierung der Pipeline eines DLX-Prozessors
Vom HW-Automaten zum Prozessor
Compiler für Eingebettete Systeme [CS7506]
מבוא למערכות מחשב ואסמבלי
CSL211 Computer Architecture
 Präsentation transkript:

CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle / Zeit Neue definieren: CPI = 1/ Durchsatz = Zeit / #Befehle (Zeit in Takten)

Pipelining: Speedup bei ideal gefüllter Pipeline(1) Annahmen: Abarbeitungszeit eines Befehls ohne Pipelining in k Phasen, jede Phase braucht 1 Zyklus Beschleunigung bei m auszuführenden Befehlen: m = 1: Laufzeit mit Pipeline = k * 1/k = k  keine Beschleunigung m = 2: Laufzeit mit Pipeline = k + 1  Beschleunigung um Faktor 2 k / (k+1) Kap. 3

Pipelining: Speedup bei ideal gefüllter Pipeline (2) m  1: Laufzeit ohne Pipeline = m k Laufzeit mit Pipeline = (m-k+1) + 2 (k-1) = m + k -1,  Beschleunigung (Speedup) um Ergebnis: Für m >> k nähert sich der Speedup also der Anzahl k der Pipelinestufen. Kap. 3

Pipelining: Hazards Pipeline kann nicht in jedem Takt einen Befehl ausführen. Grund: Hazards Typen von Hazards: Cache Misses, z.B. Instruction-Fetch Miss Datenabhängigkeiten (data hazards) – benötigter Operand ist noch nicht berechnet, Ressourcen-Konflikte (resource hazards) – mehrere Befehle in der Pipeline brauchen in einem Zyklus dieselbe Ressource, bedingte Sprünge (control hazards) – Fortsetzung noch unklar.

Pipelining: Hazards Datenabhängigkeiten (data hazards): Befehlsfolge: 1. LOAD R0, 5, R1; // Adresse = Inhalt von Register R0 + 5, // lade Speicherinhalt an Adresse in Register R1 2. ADD R1, R2, R3; // Addiere Inhalte der Register R1, R2, // speichere Ergebnis in R3 ab. 3. SUB R4, R5, R6; // Subtrahiere Inhalt von R5 von R4, Erg. in R6 4. MUL R7, R8, R9; // Multipliziere Inhalt von R8 und R7, Erg. in R9 Problem: Der Wert in R1 steht dem ADD-Befehl nicht rechtzeitig zur Verfügung, falls man die Pipeline nicht stoppt. Kap. 3 5 5

Pipelining: Hazards Takt Befehlholen Decodieren/ Ausführen Abspeichern Operand holen 1 LOAD 2 ADD LOAD 3 SUB ADD LOAD 4 MUL SUB ADD LOAD 5 MUL SUB ADD Problem: In Takt 3 ist Register R1 noch nicht mit dem richtigen Wert belegt! Nehme 4 Pipelinestufen an: Operandholen  Operand holen

Pipelining: Hazards Lösung 1: Einfügen von NOPs (NOP = no operation) Takt Befehlholen Decodieren/ Ausführen Abspeichern Operand holen 1 LOAD 2 NOP LOAD 3 NOP NOP LOAD 4 ADD NOP NOP LOAD 5 SUB ADD NOP NOP Jetzt korrekt: In Takt 4 wurde R1 korrekt belegt und in Takt 5 der richtige Operand aus Register R1 geladen!

Pipelining: Hazards Beobachtung: 1 NOP kann eingespart werden, wenn das Ergebnis des LOAD-Befehls nach der Execute-Phase direkt der ALU zur Verfügung gestellt wird, um den ADD-Befehl auszuführen. Takt Befehlholen Decodieren/ Ausführen Abspeichern Operand holen 1 LOAD 2 NOP LOAD 3 ADD NOP LOAD 4 SUB ADD NOP LOAD 5 MUL SUB ADD NOP Aber: Dazu ist Zusatzhardware nötig, die diese Datenabhängigkeiten erkennt und das „Forwarding“ durchführt! Linie verschoben

Forwarding: „Zusatzleitungen“ Daten werden ohne Umweg über die Register direkt an die ALU gelegt e g i s t r 1 R a d 2 6 S n x W A D m o y L U u l M Z I F : c f h / E X x e c u t e / M E M : M e m o r y a c c e s s W B : W r i t e b a c k a d d r e s s c a l c u l a t i o n I n s t r u c i o m e y A d 4 3 2 l S h f M x 1 P C W a R g

Pipelining: Hazards Neue Befehlsfolge: Lösung 2: Umordnen von Befehlen 1. LOAD R0, 5, R1; // Adresse = Inhalt von Register R0 + 5, lade // Speicherinhalt an Adresse in Register R1 2. ADD R1, R2, R3; // Addiere Inhalte der Register R1, R2, // speichere Ergebnis in R3 ab. 3. SUB R4, R5, R6; // Subtrahiere Inhalt von R5 von R4, Erg. in R6 4. MUL R7, R8, R9; // Multipliziere Inhalt von R8 und R7, Erg. in R9 Neue Befehlsfolge: 1. LOAD R0, 5, R1; 2. SUB R4, R5, R6; 3. MUL R7, R8, R9; 4. ADD R1, R2, R3; Wichtig: Umordnen nicht beliebig möglich (Datenabhängigkeiten beachten!)

Pipelining: Hazards Lösung 2: Umordnen von Befehlen Takt Befehlholen Decodieren/ Ausführen Abspeichern Operand holen 1 LOAD 2 SUB LOAD 3 MUL SUB LOAD 4 ADD MUL SUB LOAD 5 ADD MUL SUB Jetzt korrekt: In Takt 4 wurde R1 korrekt belegt und in Takt 5 der richtige Operand aus Register R1 geladen!

Pipelining: Hazards Bedingte Verzweigungen (control hazards): Befehlsfolge: 1. ADD R1, R2, R3; // Addiere Inhalte der Register R1, R2, Erg. in R3 2. JMP>0 R4 <label>; // Wenn Inhalt von R4 > 0, springe zu // Programmzeile <label> 3. MUL R5, R6, R7; // Multipliziere Inhalt von R5 und R6, Erg. in R7 … <label>: Problem: Die Ausführung des MUL-Befehls wird angefangen, bevor die Sprungbedingung ausgewertet wurde. Mögliche Lösung: Branch Prediction „Raten“ der nächsten Instruktion (z.B. durch Analysen der Häufigkeit des einen oder anderen Ausgangs der Abfrage) Spekulativer Sprung Leeren der Pipeline und „Rücksetzen“ bei falscher Vorhersage

Zusammenfassung Beschleunigung um bis zu Faktor k durch Einsatz einer Pipeline (k = Anzahl der Pipeline-Stufen). Hazards verringern die Beschleunigung. Viele Möglichkeiten (z.T. in Hardware) Hazards zu vermeiden Softwaremäßig: NOPs Umstellen der Instruktionen eines Maschinenprogramms durch Code-optimierende Compiler Hardwaremäßig: Forwarding Branch Prediction (Hardware merkt sich, ob bei den letzten Ausführungen des bedingten Sprungbefehls verzweigt wurde oder nicht) Kap. 3