2 Grundlegende Prozessortechniken

Slides:



Advertisements
Ähnliche Präsentationen
Vom HW-Automaten zum Prozessor
Advertisements

Fast Fourier Transformation
Programmierung: Einführung
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /
Leistung.
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
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
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Entwicklungstrends bei Mikroprozessoren
2.5 Vektorrechner & Multimedia-Erweiterungen
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Zentraleinheit CPU, Motherbord, RAM
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Agenda Die Hardwearkomponenten und ihre Funktionen - Mikroprozessor
Zentraleinheit CPU, Motherbord, RAM
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Kapitel 3 5 Rechnerorganisation
Neumannrechner.
Algorithmentheorie 04 –Hashing
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Geometrisches Divide and Conquer
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 11.1.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
W. Oberschelp G. Vossen Kapitel 7.
Rechneraufbau & Rechnerstrukturen, Folie 10.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 10.
Aufbau und Funktionsweise von Prozessoren
2.5. Mikrocontroller-Komponenten
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Vorlesung 2 Rechnerarchitektur Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Rechnerarchitektur Vorlesung 2 Peter B. Ladkin
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Einführung.
Hochperformante Mikroprozessoren - 6
4. Mikrocontroller-Komponenten
Beispiele für Mikroprozessoren 9
Von-Neumann-Prinzip Der Rechner ist zentral gesteuert und aus Funktionseinheiten aufgebaut. (Zentraleinheit, Speicher, Ein-/Ausgabeeinheit, Verbindungseinrichtung)
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
Der Prozessor - zentraler Bestandteil eines jeden Computers
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
2.3 Register-Transfer-Strukturen
EDO-RAM,SDRAM,RDRAM,DDR2-SDRAM.
So arbeitet ein PC.
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
Duo- und Quad Prozessor-Architektur
Effiziente Algorithmen
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
INTEL Pentium 4 Prozessor
Entwicklung der Programmiersprachen
Polynome und schnelle Fourier-Transformation
3.4 CPU-Chips und Busse CPU-Chips
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Anwendung von Microcontollern
Programmieren in Assembler
Rechnerarchitekturen
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Moderne Rechner-Architekturen
Johann Baron von Neumann
Aufbau, Funktion und Grundzusammenhänge
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.
Aufbau und Funktionsweise einer CPU
VHDL-Modellierung der Pipeline eines DLX-Prozessors
Vom HW-Automaten zum Prozessor
מבוא למערכות מחשב ואסמבלי
 Präsentation transkript:

2 Grundlegende Prozessortechniken Prozessorarchitektur definiert die Grenze zwischen Hardware und Software. Das sind die für den Compilerbauer und Systemprogrammierer sichtbaren Teil des Prozessors. Synonym: Befehlssatz-Architektur (ISA – Instruction Set Architecture) oder Programmiermodell eines Prozessors. Prozessorarchitektur betrifft keine Details der Hardware. Mikroarchitektur (microarchitecture) bezeichnet die Implementierung einer Prozessorarchitektur in einem Mikroprozessor. Prozessortechniken: Architektur- oder Mikroarchitekturtechniken Prozessorfamilie: alle Prozessoren haben die gleiche Basisarchitektur, die neueren oder die komplexeren Prozessoren der Familie erweitern die Architekturspezifikation.

CISC- und RISC-Prinzipien CISC (Complex Instruction Set Computers) RISC (Reduced Instruction Set Computer): Beobachtung: manche Maschinenbefehle werden fast nie verwendet. Komplexe Befehle lassen sich prinzipiell durch eine Folge einfacher Befehle ersetzen.

Charakteristische Eigenschaften von RISC-Architekturen: Der Befehlssatz besteht aus wenigen, unbedingt notwendigen Befehlen (Anzahl ≤ 128) und Befehlsformaten (Anzahl ≤ 4) mit einer einheitlichen Befehlslänge von 32 Bit und mit nur wenigen Adressierungsarten (Anzahl ≤ 4). Damit wird die Implementierung des Steuerwerks erheblich vereinfacht und auf dem Prozessorchip Platz geschaffen für weitere begleitende Maßnahmen. Eine große Registerzahl von mindestens 32 allgemein verwendbaren Registern ist vorhanden. Der Zugriff auf den Speicher erfolgt nur über Lade-/Speicherbefehle.

Register-Register-Architektur (auch Load/Store Architecture genannt) Zugriff auf den Speicher nur über Lade-/Speicherbefehle. Alle anderen Befehle, d.h. insbesondere auch die arithmetischen Befehle, beziehen ihre Operanden aus den Registern und speichern ihre Resultate in Registern. Prinzip der Register-Register-Architektur ist für RISC-Rechner kennzeichnend und hat sich heute bei allen neu entwickelten Prozessorarchitekturen durchgesetzt.

Weitere Charakteristika von RISC * möglichst alle Befehle sollten so implementierbar sein, dass pro Prozessortakt die Ausführung eines Maschinenbefehls beendet wird. * Konsequenz: bei der Implementierung wird auf Mikroprogrammierung verzichtet und statt dessen das Befehls-Pipelining eingesetzt. * Weiterhin bei den frühen RISC-Rechnern wurde die Überwachung der Befehlspipeline von der Hardware in die Software verlegt.

Frühe RISC-Rechner IBM 801-Projekt: 1975 unter Leitung von Cocke am IBM-Forschungszentrum in Yorktown Heights MIPS-Projekt: 1981 von Hennessy an der Universität von Stanford begonnen. Der erste funktionsfähige Chip in NMOS-VLSI-Technik wurde 1983 fertig. Aus dem Stanford MIPS-Projekt ging die Firma MIPS hervor. Berkeley RISC-Projekt: 1980 an der Universität in Berkeley begonnen, Daraus gingen der SPARC-Prozessor und Nachfolger hervor.

2.3 Einfache Prozessoren und Prozessorkerne Grundkonzept des von-Neumann-Prinzips

Überlappende Befehlsausführung Befehl n: Bereitstellung u. Decodierung Ausführung Befehl n+1: Bereitstellung u. Decodierung Ausführung Befehl n+2: Zeit

2.3.4 Grundlegende Pipeline-Stufen Pipelining — „Fließband-Bearbeitung“ „ Pipelines beschleunigen die Ausführungsgeschwindigkeit eines Rechners in gleicher Weise wie Henry Ford die Autoproduktion mit der Einführung des Fließbandes revolutionierte.“ (Peter Wayner 1992)

Pipelining Unter dem Begriff Pipelining versteht man die Zerlegung einer Maschinenoperation in mehrere Phasen, die dann von hintereinander geschalteten Verarbeitungseinheiten taktsynchron bearbeitet werden, wobei jede Verarbeitungseinheit genau eine spezielle Teiloperation ausführt. Die Gesamtheit dieser Verarbeitungseinheiten nennt man eine Pipeline.

Pipeline-Stufen und Pipeline-Register

2.4 Phasen der Befehlsausführung einer fünfstufigen Befehlspipeline Befehl bereitstellen, Befehl decodieren, Operanden (in den Pipeline-Registern) vor der ALU bereitstellen, Operation auf der ALU ausführen und das Resultat zurückschreiben Befehlspipeline eines Rechners: Die Befehlsbearbeitung wird in n funktionelle Einheiten gegliedert. Ausführung geschieht überlappt.

Grundlegendes Befehlspipelining: DLX-Pipeline

Phasen der Befehlsausführung einer fünfstufigen Befehlspipeline Befehlsbereitstellungsphase (Instruction Fetch): Der Befehl, der durch den Befehlszähler adressiert ist, wird aus dem Hauptspeicher oder dem Cache-Speicher in einen Befehlspuffer geladen. Der Befehlszähler wird weitergeschaltet. Decodier- und Operandenbereitstellungsphase (Decode/Operand fetch): Aus dem Operationscode des Maschinenbefehls werden prozessorinterne Steuersignale erzeugt (1. Takthälfte). Die Operanden werden aus Registern bereitgestellt (2. Takthälfte). Ausführungsphase (ALU Operation): Die Operation wird auf den Operanden ausgeführt. Bei Lade-/Speicherbefehlen wird die effektive Adresse berechnet. Speicherzugriffsphase (memory access): Der Speicherzugriff wird durchgeführt. Resultatspeicherphase (Write Back): Das Ergebnis wird in ein Register geschrieben (1. Takthälfte).

Pipeline (Übersicht)

Pipeline (Instruction fetch) I-cache Add IF/ID Registers Instruction fetch (IF) MUX PC Instruction Register 4 1 32

Pipeline (Instruction Decode) Register File Register Addressing Result Register Selector ID/EX Registers I F / D R e g i s t r Instruction decode/ register fetch (ID) PC ALU Input Register 1 Register 2 Immediate Instruction 5 16 32 Sign Extended Registers Write Value

Pipeline (Execute) EX/MEM Registers ID/EX address calculation (EX) Execution/effective MUX ALU PC ALU Input Register 1 Register 2 Immediate Register True/False Conditional 32 ALU Output 1 Zero ? Store Value

Pipeline (MEM&WB) back (WB) MUX Write MEM/WB Registers D-cache MUX back (WB) Write MEM/WB Registers EX/MEM Memory access/branch completion (MEM) Load Memory Data Register ALU Result Register Store Value ALU Output True/False Conditional Load/Store Address Jump/Branch Target Address ALU Result Value

Diskussion Die Zykluszeit der Pipeline wird vom kritischen Pfad diktiert: der langsamsten Pipeline-Stufe. Alle Stufen der DLX-Pipeline nutzen verschiedene Ressourcen. Im Idealfall wird in jedem Takt ein Befehl in die Pipeline eingefüttert. (CPI=1). Das ist wegen der auftretenden Pipeline-Konflikte häufig nicht der Fall.

2.4.3 Pipeline-Konflikte - drei Arten von Pipeline-Konflikten Pipeline-Konflikt: die Unterbrechung des taktsynchronen Durchlaufs der Befehle durch die einzelnen Stufen einer Befehls-Pipeline. Datenkonflikte: ein Operand ist in der Pipeline (noch) nicht verfügbar. Datenkonflikte werden durch Datenabhängigkeiten im Befehlsstrom erzeugt Struktur- oder Ressourcenkonflikte treten auf, wenn zwei Pipeline-Stufen dieselbe Ressource benötigen, auf diese aber nur einmal zugegriffen werden kann. Steuerflusskonflikte treten bei Programmsteuerbefehlen auf, wenn in der Befehlsbereitstellungsphase die Zieladresse des als nächstes auszuführenden Befehls noch nicht berechnet ist bzw. Wenn im Falle eines bedingten Sprunges noch nicht klar ist, ob überhaupt gesprungen wird.

2.4.4 Datenkonflikte und deren Lösungsmöglichkeiten Man betrachte zwei aufeinander folgende Befehle Inst1 und Inst2 Es besteht eine echte Datenabhängigkeit (true dependence) st von Inst1 zu Inst2, wenn Inst1 seine Ausgabe in ein Register Reg (oder in den Speicher) schreibt, das von Inst2 als Eingabe gelesen wird. Es besteht eine Gegenabhängigkeit (antidependence) sa von Inst1 zu Inst2, falls Inst1 Daten von einem Register Reg (oder einer Speicherstelle) liest, das anschließend von Inst2 überschrieben wird. Es besteht eine Ausgabeabhängigkeit (output dependence) so von Inst2 zu Inst1, wenn beide in das gleiche Register Reg (oder eine Speicherstelle) schreiben und Inst2 sein Ergebnis nach Inst1 schreibt. Gegenabhängigkeiten und Ausgabeabhängigkeiten werden auch falsche Datenabhängigkeiten oder Namensabhängigkeiten genannt.

Abhängigkeitsgraph S1:ADD R1,R2,2 ; R1 = R2+2 S2:ADD R4,R1,R3 ; R4 = R1+R3 S3:MULT R3,R5,3 ; R3 = R5*3 S4:MULT R3,R6,3 ; R3 = R6*3 Abhängigkeitsgraph

Datenkonflikte Datenabhängigkeiten zwischen zwei Befehlen können Datenkonflikte verursachen, wenn die beiden Befehle so nahe beieinander sind, dass ihre Überlappung innerhalb der Pipeline ihre Zugriffsreihenfolge auf ein Register oder einen Speicherplatz im Hauptspeicher verändern würde. drei Arten von Datenkonflikten: Ein Lese-nach-Schreibe-Konflikt (Read After Write, RAW) wird durch eine echte Datenabhängigkeit verursacht Ein Schreibe-nach-Lese-Konflikt (Write After Read, WAR) wird durch eine Gegenabhängigkeit verursacht Ein Schreibe-nach-Schreibe-Konflikt (Write After Write, WAW) wird durch eine Ausgabeabhängigkeit verursacht

Datenkonflikte in einer Befehls-Pipeline IF ID EX MEM load Reg1,A load Reg2,B add Reg2,Reg1,Reg2 mul Reg1,Reg2,Reg1 WB time cycle time

Software-Lösungen für Datenkonflikte Software-Lösungen (Compiler scheduling) no-op Befehle einfügen Befehlsanordnung (instruction scheduling oder pipeline scheduling): Befehlsumordnungen, um no-ops zu entfernen

Hardware-Lösungen für Datenkonflikte Konflikt muss per HW entdeckt werden!! Hardware-Lösungen: Leerlauf der Pipeline: Die einfachste Art, mit solchen Datenkonflikten umzugehen ist es, Inst2 in der Pipeline für zwei Takte anzuhalten. Auch als Pipeline-Sperrung (interlocking) oder Pipeline-Leerlauf (stalling) bezeichnet. Forwarding: Wenn ein Datenkonflikt erkannt wird, so sorgt eine Hardware-Schaltung dafür, dass der betreffende Operand nicht aus dem Universalregister, sondern direkt aus dem ALU-Ausgaberegister der vorherigen Operation in das ALU-Eingaberegister übertragen wird. Forwarding with interlocking: Forwarding löst nicht alle möglichen Datenkonflikte auf.

2.4.5 Steuerflusskonflikte und deren Lösungsmöglichkeiten Steuerflussabhängigkeiten verursachen Steuerflusskonflikte in der DLX-Pipeline, da der Programmsteuerbefehl erst in der ID-Stufe als solcher erkannt und damit bereits ein Befehl des falschen Programmpfades in die Pipeline geladen wurde. Zu den Programmsteuerbefehlen gehören: die bedingten und die unbedingten Sprungbefehle, die Unterprogrammaufruf- und -rückkehrbefehle sowie die Unterbrechungsbefehle Nach bedingten Sprüngen, die genommen werden, startet die Befehlsfolge mit drei Takten Latenz (Verzögerung). Allerdings sind schon drei Befehle des falschen Pfads in der Pipeline.

Leertakte nach einem genommenen bedingten Sprung branch instruction branch target IF ID EX MEM WB time PC three bubbles

Lösung: Sprungrichtung schneller entscheiden Sprungrichtung so schnell als möglich entscheiden und Zieladresse so schnell als möglich berechnen. Am besten bereits in der ID-Stufe  nur noch ein Takt Latenz

Software-Lösungen Verzögerte Sprungtechnik (delayed branch technique): Der Compiler füllt die Verzögerungszeitschlitze (delay slots). Ausfüllen der Verzögerungszeitschlitze mit Leerbefehlen. Statische Befehlsanordnung: Füllen mit Befehlen, die in der logischen Programmreihenfolge vor dem Sprung liegen Angewandt in der ersten Generation von RISC-Prozessoren, z.B. IBM 801, MIPS, RISC I, SPARC. In superskalaren Prozessoren, die mehr als einen Befehl holen und gleichzeitig verarbeiten können, erschwert die verzögerte Sprungtechnik die Befehlszuordnungslogik und die Implementierung präziser Unterbrechungen.

Hardware-Lösungen Pipeline-Leerlauf (Interlocking): einfachste, aber ineffizienteste Methode Spekulation auf nicht genommene bedingte Sprünge: die direkt nach dem Sprungbefehl stehenden drei Befehle werden in die Pipeline geladen Falls die Sprungbedingung zu „genommen“ ausgewertet wird, müssen die drei Befehle wieder gelöscht werden und wir erhalten die üblichen drei Takte Verzögerung. Falls der Sprung nicht genommen wird, so können die drei Befehle als Befehle auf dem gültigen Pfad weiterverarbeitet werden, ohne dass ein Leertakt entsteht. Diese Technik stellt die einfachste der sogenannten statischen Sprungvorhersagen dar.

2.4.6 Sprungzieladress-Cache Sprungzieladress-Cache (Branch-target Address Cache, BTAC) oder Sprungzielpuffer (Branch-target Buffer, BTB): ein kleiner Cache-Speicher, auf den in der IF-Stufe der Pipeline zugegriffen wird, enthält Paare von Spungbefehls- und Sprungzieladressen.

Sprungzieladress-Cache

2.4.8 Strukturkonflikte und deren Lösungsmöglichkeiten Struktur- oder Ressourcenkonflikte treten in unserer einfachen DLX-Pipeline nicht auf. Einen Strukturkonflikt kann man demonstrieren, wenn man unsere DLX-Pipeline leicht verändert: Wir nehmen an, die Pipeline sei so konstruiert, dass die MEM-Stufe in der Lage ist ebenfalls auf den Registersatz zurückzuschreiben.

Ein Strukturkonflikt, der durch eine veränderte Pipeline-Organisation verursacht wird load Reg2,A mul Reg3,Reg4,Reg5 IF ID EX MEM WB time cycle time Register file

Hardware-Lösungen zur Vermeidung von Strukturkonflikten Arbitrierung mit Interlocking: Die Arbitrierungslogik erkennt den Strukturkonflikt und hält den im Programmfluss späteren der beiden um die Ressource konkurrierenden Befehle an. Übertaktung: die Ressource, die den Strukturkonflikt hervorruft, schneller zu takten als die übrigen Pipeline-Stufen. In diesem Fall könnte die Arbitrierungslogik zweimal auf die Ressource zugreifen und die Ressourcenanforderungen in der Ausführungsreihenfolge erfüllen Ressourcenreplizierung: Vervielfachen von Hardware-Ressourcen.

2.4.9 Ausführung in mehreren Takten Problem Mehrtaktbefehle mögliche Lösungen: Pipeline anhalten: Die einfachste Weise, mit einem solchen Strukturkonflikt umzugehen, ist es, Inst2 in der Pipeline anzuhalten, bis Inst1 die EX-Stufe verlässt Ressourcen-Pipelining: EX-Stufe selbst als Pipeline implementieren die EX-Stufe kann in jedem Takt einen neuen Befehl entgegen nehmen (der Durchsatz ist 1). Ressourcenreplizierung: z. B. mehrere Ausführungseinheiten

2.5 Weitere Aspekte des Befehls-Pipelining Super-Pipelining, heute meist mit dem Vorhandensein einer „langen“ Befehls-Pipeline gleichgesetzt zwei Trends: kurze Befehls-Pipelines von 4 – 6 Stufen (Bsp. PowerPC-Prozessoren) und lange Befehls-Pipelines von 7 – 20 Stufen (Bsp. MIPS-Prozessoren, Alpha-Prozessoren, SuperSPARC und UltraSPARC, Pentium III und Pentium 4). Gleitkommaeinheiten: meist dreistufige Pipelines für Gleitkommaoperationen Vektor-Pipelines: mit einem Vektorbefehl wird eine Anzahl von Gleitkommaoperationen auf den Wertepaaren aus zwei Arrays („Vektoren“) von Gleitkommazahlen ausgelöst Bei einer Gleitkommaeinheit löst ein Gleitkommabefehl nur die Ausführung einer Gleitkommaoperation auf einem einzelnen Paar von Gleitkommazahlen aus.

RISC - superskalar RISC-Prozessoren, die das Entwurfsziel von durchschnittlich einer Befehlsausführung pro Takt (CPI – cycles per instruction oder IPC – instructions per cycle von eins) erreichen, werden als skalare RISC-Prozessoren bezeichnet. Die Superskalar-Technik ermöglicht es heute, pro Takt bis zu vier Befehle den Ausfürungseinheiten zuzuordnen und eine gleiche Anzahl von Befehlsausführungen pro Takt zu beenden. Solche Prozessoren werden als superskalare (RISC)-Prozessoren bezeichnet, da die oben definierten RISC-Charakteristika auch heute noch weitgehend beibehalten werden. Heutige Mikroprozessoren nutzen Befehlsebenenparallelität durch die Pipelining- und Superskalartechnik.