Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 1 2 Grundlegende Prozessortechniken Prozessorarchitektur.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 1 2 Grundlegende Prozessortechniken Prozessorarchitektur."—  Präsentation transkript:

1 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer Einfache Prozessoren und Prozessorkerne Grundkonzept des von- Neumann-Prinzips

8 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 8 Überlappende Befehlsausführung Befehl n: Bereitstellung u. Decodierung Befehl n: Ausführung Befehl n+1: Bereitstellung u. Decodierung Befehl n+1: Ausführung Befehl n+2: Bereitstellung u. Decodierung Zeit

9 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 11 Pipeline-Stufen und Pipeline-Register

12 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 15 Pipeline (Übersicht)

16 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 16 Pipeline (Instruction fetch) I-cache Add IF/ID Registers Instruction fetch (IF) MUX PC Instruction Register

17 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 17 Pipeline (Instruction Decode) Register File Register Addressing Result Register Selector ID/EX Registers IF/ID Registers Instruction decode/ register fetch (ID) PC ALU Input Register 1 ALU Input Register 2 Immediate Register Instruction Register Sign Extended Registers Write Value

18 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 18 Pipeline (Execute) EX/MEM Registers ID/EX Registers Execution/effective address calculation (EX) MUX ALU PC ALU Input Register 1 ALU Input Register 2 Immediate Register True/False Conditional Register 32 ALU Output Register 1 Zero ? Store Value Register True/False

19 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 19 Pipeline (MEM&WB) D-cache MUX Write back (WB) MEM/WB Registers EX/MEM Registers Memory access/branch completion (MEM) Load Memory Data Register ALU Result Register Store Value Register ALU Output Register True/False Conditional Register Load/Store Address Jump/Branch Target Address ALU Result Value

20 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer Datenkonflikte und deren Lösungsmöglichkeiten Man betrachte zwei aufeinander folgende Befehle Inst 1 und Inst 2 Es besteht eine echte Datenabhängigkeit (true dependence) t von Inst 1 zu Inst 2, wenn Inst 1 seine Ausgabe in ein Register Reg (oder in den Speicher) schreibt, das von Inst 2 als Eingabe gelesen wird. Es besteht eine Gegenabhängigkeit (antidependence) a von Inst 1 zu Inst 2, falls Inst 1 Daten von einem Register Reg (oder einer Speicherstelle) liest, das anschließend von Inst 2 überschrieben wird. Es besteht eine Ausgabeabhängigkeit (output dependence) o von Inst 2 zu Inst 1, wenn beide in das gleiche Register Reg (oder eine Speicherstelle) schreiben und Inst 2 sein Ergebnis nach Inst 1 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

24 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 25 IFIDEXMEM load Reg1,A load Reg2,B add Reg2,Reg1,Reg2 mul Reg1,Reg2,Reg1 IFIDEXMEM IFIDEXMEM IFIDEXMEMWB timecycle time Datenkonflikte in einer Befehls-Pipeline

26 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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, Inst 2 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 29 branch instruction branch target instruction IFIDEXMEM IFIDEXMEMWB time PC three bubbles Leertakte nach einem genommenen bedingten Sprung

30 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 34 Sprungzieladress-Cache

35 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 36 load Reg2,A mul Reg3,Reg4,Reg5 IFIDEX MEM IFIDEX MEM WB time cycle time Register file WB Ein Strukturkonflikt, der durch eine veränderte Pipeline-Organisation verursacht wird

37 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer Ausführung in mehreren Takten Problem Mehrtaktbefehle mögliche Lösungen: - Pipeline anhalten: Die einfachste Weise, mit einem solchen Strukturkonflikt umzugehen, ist es, Inst 2 in der Pipeline anzuhalten, bis Inst 1 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 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 "Universität Karlsruhe - Prof. Dr. U. Brinkschulte Universität Augsburg - Prof. Dr. Th. Ungerer 1 2 Grundlegende Prozessortechniken Prozessorarchitektur."

Ähnliche Präsentationen


Google-Anzeigen