Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74

Ähnliche Dokumente
Das Prinzip an einem alltäglichen Beispiel

Leistung und Pipelining. Einführung in die Technische Informatik Falko Dressler, Stefan Podlipnig Universität Innsbruck

Arbeitsfolien - Teil 4 CISC und RISC

Vorlesung: Technische Informatik 3

Technischen Informatik I, WS 2004/05

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Aufgabe 1) Die folgenden Umwandlungen/Berechnungen beziehen sich auf das 32-Bit Single-Precision Format nach IEEE-754.

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

Mikroprozessortechnik. 03. April 2012

Grundlagen der Rechnerarchitektur

Die Mikroprogrammebene eines Rechners

Vorlesung Rechnerarchitektur. Einführung

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Mikrocomputertechnik. Einadressmaschine

Lösungsvorschlag zur 4. Übung

Computer-Architektur Ein Überblick

Mikroprozessor als universeller digitaler Baustein

Instruktionssatz-Architektur

Stephan Brumme, SST, 2.FS, Matrikelnr

Assembler-Programmierung

5.BMaschinensprache und Assembler

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Der Toy Rechner Ein einfacher Mikrorechner

Asynchrone Schaltungen

Technische Informatik 1

Technische Informatik 1

Instruktionen pro Takt

Einführung in die Systemprogrammierung 02

Aufgabenblatt 7. Es sind keine Abgaben mit mehreren Namen oder Kopien von Abgaben anderer erlaubt

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Assembler und Hochsprachen

Einführung in die Systemprogrammierung

Proseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme

1. Übung - Einführung/Rechnerarchitektur

Einführung in die technische Informatik

DLX Befehlsübersicht

Johann Wolfgang Goethe-Universität

Besprechung des 4. Übungsblattes Was ist MIPS? SPIM-Simulator MIPS-Befehlsformate MIPS-Befehle Assemblerdirektiven Syscalls in MIPS

N Bit binäre Zahlen (signed)

Einführung in die Systemprogrammierung

3 Rechnen und Schaltnetze

Neue Prozessor-Architekturen für Desktop-PC

Java-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

a. Flipflop (taktflankengesteuert) Wdh. Signalverläufe beim D-FF

Benchmarking Intel Pentium III-S vs. Intel Pentium 4

Bitte in Druckschrift ausfüllen: Nachname: Vorname: Fachbereich: Matrikelnummer: Geheimwort: Bitte nicht ausfüllen:

Vom Schalter zum Computer

Grundlagen der Rechnerarchitektur

Verwendung des EASY Mode mit Demo FB für SIMATIC Step7

ZENTRALEINHEITEN GRUPPE

Ein Scan basierter Seitenangriff auf DES

Convey, Hybrid-Core Computing

8.1 Grundsätzlicher Aufbau der Beispiele

früher: CISC ( Complex Instruction Set Computer )

Mikrocomputertechnik

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen.

B1 Stapelspeicher (stack)

Assembler-Programme. Systemprogrammierung (37-023) Elementare Komponenten eines Assembler-Programmes

Im Original veränderbare Word-Dateien

Formal Verification of Pipelined Microprocessors

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

L3. Datenmanipulation

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

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil IV: Programmieren an Beispielen

Rechnerarchitektur. M. Jakob. 1. Februar Gymnasium Pegnitz

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Die Maschinenprogrammebene eines Rechners Jörg Roth 294

Rechnergrundlagen SS Vorlesung

Einführung in die Systemprogrammierung 02

Was ist Arduino? Historie Der Kern Entwicklungsumgebung Hardware Software Und wozu das Ganze? Workshop Mikrorechner 2012 A.

Atmel AVR für Dummies

Shangrila. One Instruction Set Computer

Einführung ins Programmieren

Raytracing auf Desktop PCs Optimizing Cache Usage (Intel Corp.)

Hinweise 80x86-Architektur

Implementierung: Direkt abgebildeter Cache

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Fehlerkorrektur Bild Demoprozessor

, WS2012 Übungsgruppen: Mo., Do.,

Modul Computersysteme Prüfungsklausur SS Prof. Dr. J. Keller LG Parallelität und VLSI Prof. Dr.-Ing. W. Schiffmann LG Rechnerarchitektur

Grundlagen der Rechnerarchitektur

Die Befehle mit dem Ziel IP sind nichts anderes als Sprungbefehle, sie sind unten noch mal aufgeführt.

Referat Mobile Prozessoren

Ein erstes Assembler-Projekt

Von der Aussagenlogik zum Computer

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Echtzeit Videoverarbeitung

3. Rechnerarchitektur

Unterstützte DHCP-Optionen beim IP-Phone

C. BABBAGE ( ): Programmgesteuerter (mechanischer) Rechner

Mikrocomputertechnik. Adressierungsarten

Sin-Funktion vgl. Cos-Funktion

9 Multithreading. 1 Idee des Multithreading

Transkript:

Data Hazards Grundlagen der Rechnerarchitektur Prozessor 74

Motivation Ist die Pipelined Ausführung immer ohne Probleme möglich? Beispiel: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) Also, alle vier nachfolgenden Instruktionen hängen von der sub Instruktion ab. Annahme: $2 speichert 10 vor der sub Instruktion. $2 speichert 20 nach der sub Instruktion. Betrachten wir die Pipeline: Grundlagen der Rechnerarchitektur Prozessor 75

Problem Rückwärtsabhängigkeiten Instr. Zeile and or add sw Sollte aus $2 lesen Liest aus $2 Data Hazard Grundlagen der Rechnerarchitektur Prozessor 76

Behandeln von Data Hazards mittels Forwarding Grundlagen der Rechnerarchitektur Prozessor 77

Allgemeine Lösung mittels Forwarding Unit 0 1 2 WB WB 0 1 2 EX/MEM.Rd MEM/WB.Rd Grundlagen der Rechnerarchitektur Prozessor 78

Implementation der Forwarding Unit Grundlagen der Rechnerarchitektur Prozessor 79

Bemerkungen Die Bestimmung von ForwardB erfolgt analog. (Übung) Das Ganze muss noch als Wahrheitstabelle aufgeschrieben und dann als kombinatorische Schaltung realisiert werden. Wie sieht die Wahrheitstabelle von ForwardA nach voriger hergeleiteter Vorschrift aus? (Übung) [Tipp: um Platz zu sparen sollte man möglichst viele don t cares verwenden.] Auch mit der Erweiterung auf ForwardB ist die Implementation der Forwarding Unit noch unvollständig. Was passiert z.b. für: lw $2, 0($1) sw $2, 4($1) Erweiterung: Forwarding muss z.b. auch in die MEM Stufe eingebaut werden. (Übung) Grundlagen der Rechnerarchitektur Prozessor 80

Nicht auflösbare Data Hazards Nicht jeder Data Hazard lässt sich durch Forwarding auflösen. Beispiel: Zugriff auf vorher gelesenes Register. Grundlagen der Rechnerarchitektur Prozessor 81

Pipeline Stall als Lösung Grundlagen der Rechnerarchitektur Prozessor 82

Allgemeine Lösung mittels Hazard Detection Unit Grundlagen der Rechnerarchitektur Prozessor 83

Implementation der Hazard Detection Unit Grundlagen der Rechnerarchitektur Prozessor 84

Quiz: Vermeiden von Pipeline Stalls Wo findet ein Pipeline Stall statt? Bitte ankreuzen. lw lw $t1, 0($t0) $t2, 4($t0) add $t3, $t1, $t2 sw lw $t3, 12($t0) $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) Anzahl Taktzyklen mit Stalls? Anzahl Taktzyklen ohne Stalls? Bitte Befehle umorganisieren, sodass alle Stalls vermieden werden. Grundlagen der Rechnerarchitektur Prozessor 85

Control Hazards Grundlagen der Rechnerarchitektur Prozessor 86

Control Hazards Grundlagen der Rechnerarchitektur Prozessor 87

Branch Not Taken Strategie und Pipeline Flush Flush = Verwerfe Instruktionen in der Pipeline. Hier: Setze IF/ID, ID/EX und EX/MEM Register auf 0. Grundlagen der Rechnerarchitektur Prozessor 88

Reduktion des Branch Delays Adressberechnung kann schon in der ID Stufe stattfinden beq und bne erfordert lediglich ein 32 Bit XOR und ein 32 Bit OR Dazu braucht man keine ALU Also auch in der ID Stufe realisierbar Beispiel: für $1 und $3: Damit ist der Sprung schon in der ID Stufe entschieden Grundlagen der Rechnerarchitektur Prozessor 89

Reduktion des Branch Delays Konsequenz Branch Delay ist damit ein Instruktions Zyklus Wir brauchen lediglich ein Flush IF/ID Register Grundlagen der Rechnerarchitektur Prozessor 90

Reduktion des Branch Delays Achtung! Forwarding aus späteren Stufen macht die Sache kompliziert. Kann Pipeline Stall aufgrund von Data Hazards erforderlich machen. z.b. ein Zyklus, wenn ALU Ergebnis in den Vergleich einfließt z.b. zwei Zyklen, wenn Vergleichsoperator einen Schritt vorher aus dem Speicher geladen wurde Betrachten wir aber hier nicht genauer. Grundlagen der Rechnerarchitektur Prozessor 91

Dynamic Branch Prediction Strategie 0x400000 : lw $1, 0($4) 0x400004 : beq $1, $0, 40 0x400008 : add $1, $1, $1 0x40000c :......... 0x40c004 : bne $3, $4, 120... Unterer Teil der Adresse 0x00 1 0x04 0 0x08 1... 0xf8 0 0xfc 0 Branch hat stattgefunden Branch Prediction Buffer Grundlagen der Rechnerarchitektur Prozessor 92

Vorhersagegenauigkeit Annahme unendlich langer Loop, der immer 9 mal und dann einmal nicht durchlaufen wird. Was ist die Vorhersagegenauigkeit der vorher beschriebenen Branch Prediction? loop:...... bne $1,$2,loop... j loop Lässt sich das verbessern? Grundlagen der Rechnerarchitektur Prozessor 93

N Bit Vorhersage am Beispiel 2 Bit Grundlagen der Rechnerarchitektur Prozessor 94

Vorhersagegenauigkeit Annahme unendlich langer Loop, der immer 9 mal und dann einmal nicht durchlaufen wird. Was ist die Vorhersagegenauigkeit der vorher beschriebenen 2 Bit Branch Prediction? loop:...... bne $1,$2,loop... j loop Grundlagen der Rechnerarchitektur Prozessor 95

Branch Delay Slot Idee loop:...... bne $1,$2,loop <instruktion> <instruktion> Wird immer ausgeführt. Instruktion muss aber unabhängig von der Branch Entscheidung sein. Das muss der Compiler entscheiden. Im Zweifelsfall: nop passt immer. Grundlagen der Rechnerarchitektur Prozessor 96