Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

2 Grundlegende Prozessortechniken

Ähnliche Präsentationen


Präsentation zum Thema: "2 Grundlegende Prozessortechniken"—  Präsentation transkript:

1 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.

2 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.

3 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.

4 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.

5 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.

6 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.

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

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

9 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)

10 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.

11 Pipeline-Stufen und Pipeline-Register

12 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.

13 Grundlegendes Befehlspipelining: DLX-Pipeline

14 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).

15 Pipeline (Übersicht)

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

17 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

18 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

19 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

20 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.

21 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.

22 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.

23 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

24 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

25 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

26 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

27 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.

28 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.

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

30 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

31 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.

32 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.

33 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.

34 Sprungzieladress-Cache

35 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.

36 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

37 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.

38 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

39 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.

40 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.


Herunterladen ppt "2 Grundlegende Prozessortechniken"

Ähnliche Präsentationen


Google-Anzeigen