Präsentation zur Vorlesung
Transcrição
Präsentation zur Vorlesung
Designprinzipien moderner Prozessoren Wahlpfichtfach am Fachbereich Informatik SS 2011 G. Fröhlich 05.04.2011 Designprinzipien moderner Prozessoren 1 1964: Complex Intruction Set Computer (CISC)- Argumente für grosse Befehlssätze : Komplexe Befehle vereinfachen den Compiler. Begründung: die optimale Ausnutzung vieler Register ist schwierig. Im Falle von stackoder speicherorientierten Architekturen wird mehr Komplexität unterhalb der Maschinenprogrammebene (im Mikrocode) verborgen. Komplexe Befehle schließen die semantische Lücke zwischen Hochsprache und Maschinensprache. Fernziel war eine Maschine, die direkt Hochsprachen verarbeiten konnte. Komplexe Befehle verringern den Speicherbedarf. Je kürzer der Code ist, desto schneller läuft das Programm. Je mehr Funktionalität unterhalb der Maschinensprache angesiedelt wird, desto zuverlässiger wird ein Computer, denn: Hardware ist sicher, Software enthält Fehler. 05.04.2011 Designprinzipien moderner Prozessoren 2 Register-Register, Register-Speicher und Speicher-Speicher Architekturen Komplexe Befehle benötigen eine Speicher-Speicher Architektur. Deshalb eine Gegenüberstellung der 3 Modelle: Register-Register, Register-Speicher und Speicher-Speicher Architekturen Beispiel: Realisierung der Anweisung A:=B+C (Hochsprache). Register-Register Register Speicher Speicher-Speicher 8 Load 4 rB 16 bit B 8 16 bit 8 Load rC C Load B Add Add rA rC Add rC Store rA A Store A rB 16 B 16 C 16 A Wie man sieht, benötigt die Speicher-Speicher Architektur für diese Instruktion nur 56 bit, während die Register-Register Architektur 104 bit benötigt. Deshalb verringern komplexe Befehle den Speicherbedarf für Programme. 05.04.2011 Designprinzipien moderner Prozessoren 3 Beispiele Motorola 6502 (1975) Register-Speicher Architektur IBM/360 (1964) Speicher-Speicher Architektur Das obige Beispiel wie folgt: Die IBM /360 kennt SpeicherSpeicher Befehle, so daß mit einem Befehl eine Zeichenkette im Speicher auf eine andere Adresse kopiert werden kann. Beim Befehl VA = $1F0 Datendeklaration VB = $1F1 VC = $1F2 LDA VB MVC (R2),Len,(R6) Lade Variable B in Akkumulator ADD VC Lade Variable C und addiere mit B (im Akkumulator) STA VA Schreibe Ergebnis (im Akkumulator) auf die Variable A 05.04.2011 ist die Adresse des Quellstrings in Register R6 abgelegt und die Adresse des Zielstrings in Register R2. Len enthält die Anzahl Bytes, die kopiert werden Designprinzipien moderner Prozessoren 4 Befehlssatzarchitekturen Im Zusammenhang mit dem 1. Argument für grosse Befehlssätze ergibt sich die Frage, wieviel sind eigentlich viele Register bevor man klären kann, was das mit dem Compiler zu hat Es hängt davon ab, welche Befehlssatz-Architektur auf einem Computer implementiert ist. Es gibt unterschiedliche BefehlssatzArchitekturen, die sich hauptsächlich darin unterscheiden, wie die Operanden auf der CPU gespeichert werden. Die Hauptvarianten sind ein Stack, ein Akkumulator oder ein Registersatz. Die Operanden in Stack-Architekturen sind implizit an der Spitze des Stack enthalten; in einer Akkumulator-Architektur ist ein Operand implizit der Akkumulator. Universalregister-Architekturen haben nur explizite Operanden - entweder Register oder Speicherplätze. 05.04.2011 Designprinzipien moderner Prozessoren 5 Befehlssatzarchitekturen Bereitgestellter Rechner/ temporärer ProzessorSpeicher Beispiele Befehlsbeispiele Explizite Ziel für Art des Zugriffs zu OperanErgebnis expliziten den pro se Operanden ALUBefehl Stack B5500, HP PUSH B, PUSH C, ADD, 0 3000/70 POP A (Beispiel von oben : A = B+C) Stack Akkumulator PDP-8, Intel ADC 00FF 8085, ADC (00FF),Y Motorola 6502 Akkumu- Laden/Speichern lator Akkumulator Registersatz IBM 360, DEC VAX und alle heute aktuellen Prozessoren 05.04.2011 1 ADDL3 R1,737(R2),#456 2 oder 3 (Addiere den Inhalt der Adresse 737+dem Displacement von R2 die Zahl 456 und lege sie in Reg. 1 ab. Designprinzipien moderner Prozessoren Push und zum oder Stack Pop vom Register Laden/Speichern oder von Registern Speicher oder dem Speicher. 6 Designprinzipien der 70ger Jahre Befehlssätze sind groß und mikroprogrammiert. Befehle sind komplex, denn Mikrobefehlsabarbeitung ist schneller als normaler Maschinencode. Die Befehlslänge ist variabel. Register sind altmodisch. Auf sie kann gegebenenfalls zugunsten von Stack- oder Speicher-Speicher-Architekturen ganz verzichtet werden. Caches, wenn überhaupt vorhanden, sind sehr viel kleiner als die Mikroprogrammspeicher. IBM 370/168 VAX 11/780 Dorado iAPX 432 Jahr 1973 1978 1978 1982 Befehlszahl 208 303 270 222 CM-Größe (Kbit) 420 480 136 64 Befehlslänge (bit) 16-24 16-456 8-24 6-321 Ausführungsmodell Reg-Reg Sp-Sp Reg-Sp Reg-Reg Sp-Sp Reg-Sp Stack Stack Sp-Sp Cache-Größe (Bit) 64 64 64 0 05.04.2011 Designprinzipien moderner Prozessoren 7 Änderung der Randbedingungen (ab 1980) Die Verbreitung des Halbleiterspeichers auch als Hauptspeicher verringerte die Differenz bei den Zugriffszeiten zwischen Mikrocode-ROM und Hauptspeicher. Maschinencode-Zugriffe waren nicht mehr 10 mal langsamer als Mikroprogrammzugriffe! Cache Speicher verringerten die effektive Hauptspeicherzugriffszeit und reduzierten damit die Lücke zwischen CM- und Hauptspeicherzugriff noch weiter. Bei einer genauen, quantitativen Betrachtung der Programmausführungszeiten wurde klar, daß nicht nur die Anzahl der Befehle pro Programm, sondern auch die Anzahl der Taktzyklen pro Befehl in die Zeit eingehen. Diese Zahl ist bei mikroprogrammierten Maschinen viel größer als bei solchen mit hardwired control. Mit Verbilligung der Speicherbausteine wurde das Optimierungsziel der Speicherplatzverringerung zweitrangig. 05.04.2011 Designprinzipien moderner Prozessoren 8 Änderung der Randbedingungen Die erhoffte höhere Zuverlässigkeit der "Hardware" war nicht realisierbar, denn das unter der Maschinenbefehlsebene liegende Mikroprogramm (die sogenannte Firmware) ist nichts anderes als in Silizium gegossene Software. 400.000 Bit Firmware sind nie fehlerfrei, aber schwer zu ändern Die komplexen Befehle, die eigentlich die Compiler vereinfachen sollten, wurden kaum genützt. Compiler verwendeten nur Subsets der großen Befehlssätze. 05.04.2011 Designprinzipien moderner Prozessoren 9 Die RISC Ursprünge: Neue Design-Prinzipien Neues Optimierungsziel: Geschwindigkeit der Prozessoren Methode: Verringerung der Anzahl Taktzyklen pro Befehl Vorraussetzung: kleine, einfache und regelmäßige Befehlssätze – Reduced Instruction Set Computer (RISC) Daraus folgen neue Designprinzipien: Regel: Mehr als 90% der ausgeführten Befehle sind einfach. Die Unterstützung der restlichen 10% durch komplexe Maschinenbefehle erhöht wahrscheinlich die Zykluszeit, verlangsamt also die 90%. 10% der Befehle schneller zu machen mit der Folge der Verlangsamung von 90% ist nicht vertretbar, da dies die Gesamtleistung senkt. Folge: Vor Einführung eines neuen komplexen Befehls ist nachzuweisen, daß er im Mittel mehr Zyklen einspart als er an Verlusten verursacht. Festverdrahtete Steuerungen erlauben niedrigere Zyklenzahlen pro Befehl als mikroprogrammierte. Voraussetzung dafür sind kleine Befehlssätze und vor allem wenige und regelmäßige Befehlsformate. 05.04.2011 Designprinzipien moderner Prozessoren 10 Die RISC Ursprünge: Neue Design-Prinzipien Die effektivste Maßnahme zur Reduktion der Zyklenzahl ist das Pipelining, also die zeitlich überlappte Abarbeitung des Befehlszyklus. Einfache Befehle eignen sich besser für Pipelines. Compiler sollten aus komplexen Befehlen (Hochsprache) einfache (Maschinensprache) erzeugen. RISC-Compiler tun genau das. CISCCompiler stehen häufig vor dem Problem, einen komplexen Befehl in einen anderen ähnlich komplexen, aber nicht genau passenden umzuwandeln. RISC-Prozessoren benötigen in Folge der einfacheren Maschinenbefehle häufigere Zugriffe zum Befehlsspeicher. Um daraus keinen Nachteil entstehen zu lassen, sind effiziente Speicherhierarchien unter Einsatz von Cache-Speichern notwendig. Der Datenverkehr zwischen Hauptspeicher und Prozessor wird, neben dem Einsatz von Caches, reduziert durch die Lokalhaltung von Daten in großen On-Chip-Registersätzen. 05.04.2011 Designprinzipien moderner Prozessoren 11 Die RISC Ursprünge: Neue Design-Prinzipien 1. Was sind regelmäßige Befehlsformate ? und unregelmäßige 2. Was sind Befehlspipelines ? 3. Was sind Speicherhierarchien ? 4. Was sind Caches ? 5. Was sind On-Chip Registersätze ? 05.04.2011 Designprinzipien moderner Prozessoren 12 Befehlsformate – IBM 360 RR-Format RegisterRegister Opcode R1 R2 Opcode R1 X2 B2 D2 R1 ←R1 op M[X2+B2+D2] RS-Format RegisterSpeicher Opcode R1 R3 B2 D2 R1 ←M[B2+D2] op R3 SI-Format SpeicherImmediate Opcode immediate B1 D1 M[B1+D1] ←immediate SS-Format SpeicherSpeicher Opcode Länge B1 D1 RXFormat Register Indexiert B2 D2 M[B1+D1] ← M[B1+D1] op M[B2+D2] Die Unterschiede bei den Befehlsformaten ergeben sich aus dem Typ und der Anzahl der Operanden : Register und Register, Register und Speicher etc. CISC heist: Unterschiedliche Befehlslängen und viele Formate, die aufwendig zu dekodieren sind. 05.04.2011 Designprinzipien moderner Prozessoren 13 Befehlsformate – Alpha 21064 31 26 25 21 20 16 Opcode 15 3 0 Number Opcode RA Opcode RA RB Opcode RA RB PAL-CodeFormat Branch-Displacement Displacement Function RC Branch Format Memory Format Operate Format Einheitliche Befehlslänge von 32 Bit. Jeder Befehl benötigt die gleiche Anzahl von Holezyklen. Opcode und RA stehen immer an der selben Bitposition -> leicht und damit schnell dekodierbar Unterscheidung der Befehlsformate nach der Funktion der Befehle Das Memory Format realisiert die Load Store Architektur Alle arithmetischen und logischen Befehle arbeiten ausschliesslich mit Registern (Operate Format) 05.04.2011 Designprinzipien moderner Prozessoren 14 Befehlssatzmessungen statisch dynamisch 70% 61% 60% 50% 40% 30% 28% 30% 19% 17% 20% 14% 6% 10% 0% 0% Gleitkomma-Operationen Verzweigungen ALU-Operationen Befehle mit Speicherzugriff Die 20 am häufigsten ausgeführten Befehle wurden in vier Klassen eingeteilt. Sie zeigen, wie unterschiedlich das statische und dynamische Erscheinungsbild sein kann. Im Falle der dynamischen Messungen machen diese 20 Befehle nahezu 100% der Befehlsausführung aus, jedoch nur 75% der statischen Werte. 05.04.2011 Designprinzipien moderner Prozessoren 15 Befehlssatzmessungen – Zeitverteilung und Häufigkeitsverteilung Befehlsfolge nach Häufigkeit Häufigkeit in % Befehlsfolge nach Zeitverteilung Zeitanteil in % L, LR 19 ZAP 16 BC, BCR 14 AP 16 AP 11 MP 13 ZAP 9 MVC 9 MVC 7 CVD 5 Zeitverteilungen sind besonders wichtig bei Architekturen wie der VAX, bei der die Zahl der Zyklen für einen Befehl zwischen einem und mehreren hundert variieren kann. Der Unterschied zwischen Häufigkeitsverteilung und Zeitverteilung existiert nicht bei einfachen LOAD/STORE Architekturen. 05.04.2011 Designprinzipien moderner Prozessoren 16 Befehlssatzmessung – ein Beispiel Der Befehlssatz der VAX besteht aus 303 zum Teil sehr komplexen Befehlen. Die Frage ist, in welcher Häufigkeitsverteilung die Befehle vorkommen. Denn wenn man eine Maschine optimieren will, sollte die Architektur für die am häufigsten vorkommenden Befehle optimal sein. Die VAX wird hier als Beispiel für die CISC Maschinen verwendet, weil es zu ihr sehr eingehende Untersuchungen gibt. Bei Benchmark-Untersuchungen mit den Programmen SPICE, COBOLX, TeX und GCC stellte sich heraus, das 27 Befehle durchschnittlich 88% der ausgeführten Befehle ausmacht. Der Rest der Verteilung ist lang. Es gibt viele Befehle mit einer Häufigkeit von 0,5 bis zu 1,0% . Im SPICE machen die oberen 15 Befehle 90% der ausgeführten Befehle aus, und die oberen 26 tragen zu 95% bei. Es gibt jedoch 149 unterschiedliche Befehle, die wenigstens einmal ausgeführt werden 05.04.2011 Designprinzipien moderner Prozessoren 17 Befehlssatzmessung – ein Beispiel DEC setzte diese Ergebnisse beim Entwurf der MicroVAX 32 um. Es wurden nur noch die am häufigsten benutzten Befehle implementiert. Die restlichen Instruktionen wurden über Softwareroutinen realisiert. Die CPU der MicroVAX paßte dadurch auf einen Chip und erzielte mit nur 64 KBit Microcode und 101 K Transistoren praktisch die gleiche Leistung wie die VLSI VAX, die für den vollen Befehlssatz (303 Instruktionen) 480KBit Microcode und 1250 K Transistoren benötigte. IBM erreichte damals mit einem PL/8 Compiler, der nur die RegisterRegister Teilmenge des System /370-Befehlssatzes unterstützte, eine um 50 % gesteigerte Durchsatzleistung. 05.04.2011 Designprinzipien moderner Prozessoren 18 Befehlssatzmessung – ein Beispiel voller Befehlssatz (VLSI VAX) implementierte Befehle 100% 80% Größe des Steuerspeichers (Bit) 480 K 64 K % der Leistung einer VAX-11/780 100 90 9 2 Anzahl der Chips eines Prozessors Subset-Befehlssatz (Micro-VAX 32) 20 % der VAX-Befehle sind verantwortlich für 60% des Mikrocodes, werden aber nur zu 0,2 % der Zeit abgearbeitet. 05.04.2011 Designprinzipien moderner Prozessoren 19 Die RISC Philosophie RISC-Prozessoren sind einfach in dem Sinne, daß nur solche Komponenten (Befehle, Register, Busse etc.) verwendet werden, die nachweisbar die Leistung im Vergleich zur nötigen Komplexitätserhöhung hinreichend vergrößern. – Alle Resourcen werden zur Unterstützung häufig gebrauchter Funktionen eingesetzt, notfalls auf Kosten der selteneren. Neuere RISC-Prozessorern zeigen, dass Einfachheit nicht niedrige Komplexität bedeutet; das galt nur für die ersten Vertreter der RISCProzessoren. 05.04.2011 Designprinzipien moderner Prozessoren 20 Die RISC Philosophie - Architekturmerkmale Ein-Zyklus Operationen LOAD-STORE-Architektur. Verzicht auf die Mikrobefehlsebene. wenige Befehle weniger Befehlstypen und Adressierungsarten. Konzentration auf wirklich erforderliche und einfach zu realisierende Befehlstypen und Adressierungsmodi. möglichst einheitliches Befehlsformat zur schnellen Befehlsdekodierung ( gleichbleibender inhaltlicher Bedeutung der Bitfelder) . Aufwandsverlagerung von der Hardware in den Compiler, von der Laufzeit in die Compile-Zeit. Delegation von Steuerungsaufgaben an optimierende Compiler. 05.04.2011 Designprinzipien moderner Prozessoren 21 Adressierungsarten Adressierungsart Beispiel Wirkung Anwendung Register ADD R4,R3 R4←R4+R3 Wert ist im Register Immediate oder Literal Add R4,#3 R4←R4+3 Operand ist eine Konstante (Ineinigen Maschinen sind Immediate und Literal zwei verschiedene Adressierungsarten Displacement oder Based Add R4,100(R1) R4←R4+M[100+R1] Zugriff zu lokalen Variablen Register indirekt Add R4, (R1) R4←R4+M[R1] Register dient als Pointer (Zeiger) Indexiert Add R3,(R1+R2) R3←R3+M[R1+R2] Manchmal nützlich für Feldadressierung - R1 = Basis des Feldes, R2=Index des Feldes Direkt oder absolut Add R1 (1001) R1←R1+M[1001] Zugriff zu statischen Daten, notwendige Adreßkonstante kann groß sein. Speicherindirekt Add R1, @(R3) R1←R1+M[M[R3]] Speicherplatz dient als Pointer Autoinkrement Add R1, (R2)+ R1←R1+M[R2] R2←R2 + d Für Zugriff zu Feldern in Schleifen nützlich. R2 zeigt auf den Anfang eines Feldes; jeder Zugriff erhöht R2 um die Länge d eines Elementes Autodekrement Add R1, -(R2) R2←R2 -d R1←R1+M[R2] Dieselbe Anwendung wie Autoincrement. Beide können auch zur Implementierung der Stackoperationen PUSH und POP verwendet werden. Skaliert oder indexiert Add R1,100(R2)[R3] R1←R1+M[100+R2+R3*d] Indexierung von Feldern mit Datentypen der Länge d 05.04.2011 Designprinzipien moderner Prozessoren 22 Adressierungsarten Prozentualer Anteil der Adressierungsarten bei IBM 360 Die einfachen Adressierungsarten werden am häufigsten eingesetzt. Der Verzicht auf die komplexen, langsamen Adressierungsarten bei RISC ist weniger bedeutsam als vermutet. 40,00% 35,00% 30,00% 25,00% 20,00% 15,00% 10,00% 5,00% 0,00% 05.04.2011 Speicherindirekt Skaliert Registerindirekt Immediate Designprinzipien moderner Prozessoren Displacement 23 Performance Berechnung Performance oder Geschwindigkeit ist das neue Optimierungsziel für Prozessoren. Begriffsbestimmung Performance: Ideale Performance. Die CPU wird mit einem regelmäßig im Abstand tc auftretenden Clock-Signal versorgt. Alle Aktionen der CPU können im Vielfachen dieser Taktzeit tc gemessen werden. Der Kehrwert von tc ist die Taktfrequenz fc = 1/tc Beispiele: Taktfrequenz und Taktzeit. fc = 500 MHz tc = 2 ns fc =1000 MHz tc = 1 ns 05.04.2011 Designprinzipien moderner Prozessoren 24 Performance – Befehlsausführung Adreßbus fC CPU Datenbus Hauptspeicher Controlbus 1. A -- Befehlsadresse CPU legt Befehlsadresse auf Adreßbus A 2. D -- Befehl HS legt adressiertes Befehl auf Datenbus 3. Decodieren Die CPU decodiert den Befehl 4. A – Operanden-adresse CPU legt Operanden-adresse auf Adr-Bus 5. D -- Operand HS legt Operand auf D-Bus 6. Befehlsausführung CPU führt Verarbeitung aus 7. A – Ergebnis-adresse CPU legt Ergebnisadresse auf Bus A 8. D -- Ergebnis CPU legt Ergebnis auf D weiter bei 1. 05.04.2011 Designprinzipien moderner Prozessoren 25 Performance - Befehlsausführung Die 8 Schritte der Befehlsausführung kann man in 5 Phasen aufteilen. Jede Phase benötigt eine bestimmte Anzahl Taktzyklen mit der Zeit tc Schritt 1 und 2 3 4 und 5 6 7 und 8 Kürzel BH (IF) BD (R) OH (R) BA (EX) ES (WB) Inhalt Befehl holen Befehl dekodieren Operand holen Befehl ausführen Ergebnis speichern -- tc -- -- tc -- -- tc -Adreßbus -- tc -- -- tc -- fC CPU Datenbus Hauptspeicher Controlbus 05.04.2011 Designprinzipien moderner Prozessoren 26 Performance Berechnung - MIPS Die Befehlsabarbeitungszeit (TL)ergibt aus der Anzahl der dafür notwendigen Taktzyklen CPI (Cycles per instruction) und der Taktzeit tc. TL = CPI * tc. Die Performance P gibt an, wieviel Befehle in einer Sekunde abgearbeitet werden. Deshalb ist die Maßeinheit für die Performance üblicherweise MIPS P = fc / CPI Bei einer mit 20 MHz getakteten CPU mit einem mittleren CPI Wert von 5 ergibt sich also P = 20*106 / 5 P = 4 MIPS Später werden wir sehen, wie mit Hilfe von Fließbandverabeitung (Pipelining) CPI auf den Wert 1 reduziert werden kann. 05.04.2011 Designprinzipien moderner Prozessoren 27 Performance Berechnung – Reale Performance Reale Performance Abweichungen von der idealen Performance ergeben sich durch Verzögerung beim Speicherzugriff Unterschiede in der Befehlssatz-Mächtigkeit – Speicherzugriff – Der Zugriff auf einen aus dynamischen RAMs aufgebauten Hauptspeicher dauert etwa 7 ns bis 70 ns, also länger als die Taktzeit tc der CPU. Das bedeutet, daß die CPU zusätzliche Leerzyklen (Wait States) einschieben muß, die als Verlustzeit zu verbuchen sind. Diese Verzögerung wird als MEMD (memory delay) bezeichnet und muß in der Performance Formel berücksichtigt werden: – P = fc/(CPI+MEMD) Um diese Verzögerungszeit zu minimieren, werden in modernen Prozessoren schnelle Pufferspeicher (Caches) eingesetzt, deren Zugriffszeit auf die Taktzeit der CPU zugeschnitten ist. 05.04.2011 Designprinzipien moderner Prozessoren 28 Performance Berechnung – Mächtigkeit des Befehlssatzes Die verschiedenen Prozessoren unterscheiden sich in Anzahl und Mächtigkeit ihrer Befehle. Allgemein gilt: Die Befehlssätze von CISC Maschinen sind mächtiger als die der RISC. Um die Vergleichbarkeit unterschiedlicher Befehlssätze zu erreichen, normiert man die Befehlssätze auf eine allgemein bekannte und akzeptierte Architektur, die VAX 11/780: nVAX = Anzahl Befehle VAX / Anzahl Befehle Vergleichsarchitektur Für einen Befehlssatz, der einfacher ist als der der VAX, ist nVAX kleiner 1. Typische Werte für RISC-Prozessoren liegen bei 0,5 bis 0,8. Die Performance Gleichung lautet dementsprechend jetzt: P = (fc/(CPI+MEMD)) * NVAX 05.04.2011 Designprinzipien moderner Prozessoren 29 Performance Berechnung – Probleme mit MIPS Aussagen über die reale Performance eines Prozessors mit Hilfe von MIPS zu machen, ist problematisch, da die MIPS Rate vom Befehlssatz abhängt (Befehlssatzmächtigkeit), wodurch Vergleiche zwischen Rechnern mit unterschiedlichem Befehlssatz erschwert werden, die MIPS-Raten zwischen verschiedenen Programmen auf dem gleichen Rechner variieren, die MIPS-Raten sich umgekehrt proportional zur Leistung verhalten können. MIPS (Million Instruction per Seconds) gibt lediglich Aufschluß über die Verarbeitungsgeschwindigkeit, nicht aber über die Leistung. 05.04.2011 Designprinzipien moderner Prozessoren 30 Performance Berechnung – Verfahren zur Leistungsbestimmung Integer Performance - Gemessen wird die Geschwindigkeit der Integer-Arithmetik, von Speicherzugriffen (Load und Store), von Sprüngen und von Unterprogrammaufrufen. Ein typischer IntegerBenchmarks ist der Dhrystone-Benchmark Gleitkomma Performance - Bei naturwissenschaftlichen Anwendungen ist die Gleitkomma-(Floating Po-int) Performance von großer Bedeutung. Standard-Benchmarks dafür sind der Linpack oder der Whetstone. Performance großer Programme - Übliche Benchmark-Programme haben den Nachteil, daß sie ziemlich klein sind; dadurch kann das gesamte Programm in einem schnellen Pufferspeicher der CPU (Cache) untergebracht sein, was zu unrealistisch schnellen Speicherzugriffen (Load und Store) führt. Als eine Art Benchmark für große Programme wird häufig das Simulationsprogramm SPICE verwendet. 05.04.2011 Designprinzipien moderner Prozessoren 31 Performance Berechnung – Verfahren zur Leistungsbestimmung Task-Wechsel - Bei Multi-User und Multi-Tasking Betriebssystemen geht in die reale Prozessor-Performance auch die Zeit ein, die für die Task-Wechsel benötigt wird. Interrupt Response Time - Für Controller-Anwendungen ist die Reaktionszeit auf Interrupts von entscheidender Bedeutung; die Reaktionszeit setzt sich zusammen aus der Interrupt Response Time und zusätzlich aus der Zeit, die für das Wiederaufsetzen des Prozessors benötigt wird. I/O Benchmarks Diese Benchmarks messen die Geschwindigkeit der Peripherie, vor allem des File-Systems. Sie sind ein Indiz für die Leistungsfähigkeit des Gesamtsystems. SPECmark - Um die Performance-Werte aussagekräftiger zu machen, wurde von dem Komitee SPEC eine verbesserte Methode entwickelt. Bei den SPEC Messungen müssen die Systeme eine festgelegte Reihe von Benchmarks absolvieren. Der geometrische Mittelwert dieser Quotienten wird SPECmark genannt und soll einen objektivierten MIPS-Wert ausdrücken. Die SPECAngaben geben gut das Leistungsprofil der untersuchten Rechner wieder. 05.04.2011 Designprinzipien moderner Prozessoren 32 Performance SPEC Report CPU2006 05.04.2011 Designprinzipien moderner Prozessoren 33 Allgemeine Performance Formel f P= * NVax CPI + MEMD P f CPI MEMD Nvax MIPS Performance in MIPS Taktfrequenz in MHz Cycles per instruction Memory Delay Normierungsfaktor auf VAX 11/ 780 Million instruction per second 05.04.2011 Designprinzipien moderner Prozessoren 34 Maßnahmen zur Performance-Steigerung f P= * NVax CPI + MEMD Erhöhung der Taktfrequenz mittels Fortschritte der Halbleitertechnik Verringerung der Speicherzugriffszeit durch optimale Speicherhierarchhie Reduktion der Taktzyklen pro Befehl durch neue Architekturprinzipien Optimaler Befehlssatz 05.04.2011 Designprinzipien moderner Prozessoren 35 Fortschritte der Halbleitertechnik Moores Law I Î Die Anzahl der Transistoren pro Chip kann etwa alle zwei Jahre verdoppelt werden 05.04.2011 Designprinzipien moderner Prozessoren 36 Fortschritte der Halbleitertechnik Moores Law II Î Die Anzahl der Transistoren pro Chip kann etwa alle zwei Jahre verdoppelt werden 05.04.2011 Designprinzipien moderner Prozessoren 37 Fortschritte der Halbleitertechnik Strukturgröße und Integrationsdichte Moores Law basiert auf der kontinuierlichen Vergrößerung der beherrschbaren Chipfläche bei gleichzeitiger Verkleinerung der prozeßtechnisch beherrschbaren Strukturgröße. Heute besteht kein Zweifel mehr an der technischen Realisierbarkeit einer Strukturgröße von 0,07 µm. 05.04.2011 Designprinzipien moderner Prozessoren 38 Moore´s Law Intels Ausführungen Prozessorübersicht (http://www.macinfo.de/hardware/chips.html#intel) 05.04.2011 Designprinzipien moderner Prozessoren 39 Fortschritte der Halbleitertechnik Konsequenzen Kleine Strukturgrößen erhöhen die Integrationsdichte der Schaltelemente – geringere Betriebsspannung – geringere Leistungsaufnahme – geringere Wärmeentwicklung – Verkürzung der Schaltzeiten Verkürzung der Schaltzeiten ermöglicht die Erhöhung der Taktfrequenz Neue Möglichkeiten für den Prozessorentwurf ! Oder: Was soll man mit mehr als 100 Millionen Transistoren Vernünftiges anfangen ? 05.04.2011 Designprinzipien moderner Prozessoren 40 Fortschritte der Halbleitertechnik Beispiele für die Konsequenzen HP PA-RISC 8500 enthält einen 1.5 MB großen First-Level Cache. Alpha 21364 – enthält 128KB L1 und 1,5 MB großen L2 Cache on Chip. – Taktfrequenz > 1000 MHz – 0.18 µm Strukturgröße Intel IA-64 wird 2*128 Register besitzen. Mehrere Ausführungseinheiten pro Chip sind technisch längst kein Problem mehr. 05.04.2011 Designprinzipien moderner Prozessoren 41 Verringerung von CPI Phasenpipelining - das Prinzip n IF n+1 n+2 n+3 n+4 n+5 DR EX MA IF DR EX IF DR IF WB MA EX DR IF P= f * NVax CPI + MEMD IF Instruction Fetch WB MA EX DR IF WB MA WB EX MA WB DR EX BA WB DR Decode and read EX execute MA Memory Access WB Write back Ist eine Implementierungstechnik, die zeitlich überlappendes Bearbeiten von Befehlen ermöglicht. Keine Verringerung der Latenzzeit eines einzelnen Befehls Erhöhter Durchsatz von abgearbeiteten Befehlen pro Zeiteinheit 05.04.2011 Designprinzipien moderner Prozessoren 42 Verringerung von CPI Phasenpipelining P= f * NVax CPI + MEMD Die optimale Pipelineorganisation hat massive Auswirkungen auf die Befehlssatzarchitektur (ISA) eines Prozessors: – einfache Befehle – einheitliche Befehlslänge – LOAD/Store Architektur – Hardware-Steuerwerk – einfache Adressierungsarten Die Berücksichtigung dieses Zusammenhangs führte Mitte der 80er Jahre zu den RISC-Architekturen 05.04.2011 Designprinzipien moderner Prozessoren 43 P= f * NVax CPI + MEMD Verringerung von CPI Konkurrenz zwischen RISC und CISC 05.04.2011 Designprinzipien moderner Prozessoren 44 Verringerung von CPI Pipeline - Ladekonflikte LOAD R1,(R2) NOP NOP NOP ADD R1, R3 IF P= f * NVax CPI + MEMD DR EX MA WB IF DR EX MA WB IF DR EX MA WB IF DR EX MA WB IF DR EX MA WB Benötigt ein Befehl das Ergebnis eines vorherigen LOAD, müssen entsprechend NOPs eingefügt werden ! Muß das Datum aus dem Hauptspeicher geholt werden, wird die ganze Pipeline entsprechend viele Taktzyklen angehalten ! LOAD Befehle machen ~ 18% des Befehlsstroms aus ! 05.04.2011 Designprinzipien moderner Prozessoren 45 Verringerung von CPI Pipeline - Datenkonflikte ADD R1,R2, R3 NOP NOP NOP ADD R4, R1,R2 IF P= f * NVax CPI + MEMD DR EX MA WB IF DR EX MA WB IF DR EX MA WB IF DR EX MA WB IF DR EX MA WB Benötigt ein Befehl als Operanden das Ergebnis eines vorherigen arithmetischen oder logischen Befehls, müssen entsprechend NOPs eingefügt werden (Datenflußkonflikt) Arithmetische Befehle machen ~ 40% des Befehlsstroms aus ! 05.04.2011 Designprinzipien moderner Prozessoren 46 Verringerung von CPI Pipeline - Datenflußkonflikt ADD R1 + R2 → R4 ADD R4 + R3 → R4 SUB R5 - R0 → R6 ADD n ADD n+1 SUB n+2 IF P= f * NVax CPI + MEMD DR EX MA WB IF DR EX MA WB IF DR EX MA WB Softwarelösung : Compiler sortiert Code um oder fügt NOPs ein Hardwarelösung: Forwarding ADD R1 + R2 → R4 SUB R5 - R0 → R6 ADD R4 + R3 → R4 05.04.2011 ADD n SUB n+1 ADD n+2 IF DR EX MA WB IF DR EX MA WB IF DR EX MA WB Designprinzipien moderner Prozessoren 47 P= Verringerung von CPI Pipeline - Strukturelle Konflikte LOAD n STORE n+1 ADD n+2 ADD n+3 ADD n+4 IF f * NVax CPI + MEMD DR EX MA WB IF DR EX MA WB IF EX MA WB DR EX MA WB DR IF IF DR EX MA WB Memory Access und Instruction Fetch benötigen Datenbus Getrennte Befehls- und Datenspeicher vermeiden strukturelle Konflikte (Harvard Architektur) 05.04.2011 Designprinzipien moderner Prozessoren 48 Verringerung von CPI Pipeline - Steuerkonflikte JUMP n IF n+1 n+2 n+3 n+4 n+5 P= f * NVax CPI + MEMD DE EX MA WB IF DE EX MA WB IF DE EX MA WB IF DE EX MA WB IF DE EX MA WB IF DE EX MA WB Die Befehle n+1 bis n+4 müssen durch NOPs ersetzt werden Sprünge machen ~ 15 % des Befehlsstroms aus ! deshalb: Branch Delay Slots - Branch Prediction - Sprungvermeidung (Alpha: Conditional Move Befehle) 05.04.2011 Designprinzipien moderner Prozessoren 49 Verringerung von CPI Pipeline - Branch Delay Slots P= f * NVax CPI + MEMD Adresse normaler Sprung verzögerter Sprung optimierter Sprung 100 LOAD X,A LOAD X,A LOAD X,A 101 ADD 1,A ADD 1,A JUMP 105 102 JUMP 105 JUMP 106 ADD 1,A 103 ADD A,B NOP ADD A,B 104 SUB C,B ADD A,B SUB C,B 105 STORE A,Z SUB C,B STORE A,Z 106 05.04.2011 STORE A,Z Designprinzipien moderner Prozessoren 50 f * NVax CPI + MEMD Verringerung von CPI Pipeline - Häufigkeit von Befehlsklassen P= Befehl bedingte Sprünge unbedingte Sprünge Load Store Arithmetik Rest 05.04.2011 PipelineKonflikte Steuerkonflikt dynamische Häufigkeit in % 11 Steuerkonflikt 4 Ladekonflikt/ Struktureller Konflikt Struktureller Konflikt Datenkonflikt 18 Designprinzipien moderner Prozessoren 8 39 20 51 Verringerung von CPI Pipelinekonflikte P= Die Vermeidung und Auflösung der vielfachen Konflikte nimmt eine zentrale Bedeutung in der Prozessorarchitektur ein - Forwarding - Sprungvermeidende Befehle - Harvard Architektur - große L1 und L2 Caches - Branch Delay Slots - Branch Prediction - Branch History Table - Branch Target Buffer - optimierende, codesortierende Compiler ! Je tiefer die Pipeline, desto schlimmer wirken sich Pipelinekonflikte aus! 05.04.2011 Designprinzipien moderner Prozessoren f * NVax CPI + MEMD ALU. .Load /Store Pentium 5 P6 12..17 NexGen 7 MIPS R4600 5 MIPS R10000 5..7 PowerPC 604 6 PowerPC 620 5 Alpha 21x64 7 SuperSPARC 4 UltraSPARC 5 PA-RISC 8000 7..9 52 Von CPI zu Instruction per Cycle-IPC Superskalare Prozessoren Die Schranke des Phasen-Pipelinings liegt bei einem CPI von bestenfalls eins. Eine weitere Verbesserung, also Instruction per Cycle, erfordert die gleichzeitige Verarbeitung von mehr als einem Befehl in mehr als einer Ausführungseinheit. Diese Superskalar-Technik ist eine Implementierungstechnik, die aus einem sequentiellen Befehlsstrom pro Takt mehr als einen Befehl den Ausführungseinheiten eines Prozessors zuordnen kann Funktions-Pipelining 05.04.2011 Designprinzipien moderner Prozessoren 53 Bus Interface Unit Von CPI zu IPC Superskalarer Prozessor Alpha 21064 Instruction Cache Branch History Table Data Tag Integer Unit (EBOX) Instruction Unit (EBOX) Multiplier Prefetcher Adder ScoreBoard Shifter PCCalculation Floating Point Unit (EBOX) Multiplier/ Adder Devider Logic Box Instruction Translation Buffer Integer Register File Floatingpoint Register File Control Load/Store Unit (ABOX) Write Buffer Tag 05.04.2011 Address Generator Data Translation Table Data-Cache Designprinzipien moderner Prozessoren Load Silo Data 54 Blockschaltbild des Pentium II 05.04.2011 Designprinzipien moderner Prozessoren 55 DEC Alpha 21264 05.04.2011 Designprinzipien moderner Prozessoren 56 Blockdiagramm des Pentium III 05.04.2011 Designprinzipien moderner Prozessoren 57 Blockdiagramm Pentium 4 05.04.2011 Designprinzipien moderner Prozessoren 58 Blockdiagramm Intel Core 2 Architektur 05.04.2011 Designprinzipien moderner Prozessoren 59 Von CPI zu IPC Probleme superskalarer Befehlsausführung Source-Code --------------------------------- Compiler parallelisietrer Code SequentiellerMasch. Code --------------------------------- Hardware Code Parallelisieren parallele Units ... Der vom Compiler erzeugte sequentielle Befehlsstrom soll zur Laufzeit parallel von den Verarbeitungseinheiten ausgeführt werden. Datenabhängigkeiten,die eine sequentielle Ausführung erfordern, verhindern zeitweise die superskalare Bearbeitung Prozessoren werden mit zusätzlicher Logik ausgestattet, um die Datenabhängigkeiten möglichst aufzulösen 05.04.2011 Designprinzipien moderner Prozessoren 60 Von CPI zu IPC Dynamic (Out of Order) - Execution Ziel: optimale Ausnutzung der Verarbeitungseinheiten Idee: Die Instruktionen liegen aufbereitet in einem Zwischenspeicher (reservation station). Diejenigen, deren Operanden bereitstehen und für die eine Verarbeitungseinheit frei ist, werden im nächsten Zyklus ausgeführt. (Datenflußprinzip) Problem: Die Ergebnisse der Operationen müssen nachträglich in der eigentlich erwünschten Reihenfolge ausgegeben werden. Dafür gibt es einen zusätzlichen Reorder Buffer 05.04.2011 Designprinzipien moderner Prozessoren 61 Von CPI zu IPC Exkurs: Datenabhängigkeiten Datenflußabhängigkeit Antiabhängigkeit Ausgabeabhängigkeit I1 I2 I3 I4 R3 = R3 op R5 R4 = R3 + 1 R3 = R5 + 1 R7 = R3 op R4 Datenflußabhängigkeiten (I1,I2) sind nicht auflösbar Antiabhängigkeiten (I3, I2) und Ausgabeabhängigkeiten (I1,I3) sind mit Register Renaming auflösbar. 05.04.2011 Designprinzipien moderner Prozessoren 62 Von CPI zu IPC Beispiel: Dynamic Execution Befehlsstrom in µOps (RISC) seq. Reihenfolge ----Decoder Reservation --------Buffer 1 ..n ----z.B. 40 --------Befehle (P6) ----- Data Cache 05.04.2011 Load Store . . . Reservation Station z.B. 20 Befehle (P6) Unit n Designprinzipien moderner Prozessoren Datenflußprinzip Memory Reorder Buffer 63 Erweiterung der Superskalarität Vielfädige superskalare Prozessoren Kontrollfaden 1 Registersatz 1 PC PSR 1 Kontrollfaden 2 Registersatz 2 PC PSR 2 Kontrollfaden 3 Registersatz 3 Kontrollfaden 4 Registersatz 4 Thread PC PSR 3 PC PSR 4 Ziel: Wartezeiten überbrücken, Ausführungseinheiten ständig beschäftigen Lösung: Mehrere Kontrollfäden (Threads) sind in verschiedenen Registersätzen auf dem Prozessor geladen. Ein schneller Kontextwechsel geschieht durch Umschalten auf einen anderen Registersatz 05.04.2011 Designprinzipien moderner Prozessoren 64 Neuere Entwicklungen bei Intel Wide Dynamic Execution Advanced Smart Cache Smart Memory Access Advanced Digital Media Boost Energie sparend, leistungsstark und schick mit Intel® Core™ Mikroarchitektur (Presseinformation vom 7. März 2006) Intels Pentium Mikroarchitektur (englisch) Multi-Core Flash und Video Demos 05.04.2011 Designprinzipien moderner Prozessoren 65 Zusätzliche Videos ... 3D Pentium III Video Hitzeprobleme Pentium IV (Video) Das 5 GiHz Projekt 05.04.2011 Designprinzipien moderner Prozessoren 66 Multimedia Befehlssatzerweiterungen http://de.wikipedia.org/wiki/Multi_Media_Extension 05.04.2011 Designprinzipien moderner Prozessoren 67 SSE-3 Befehlssatzerweiterungen SSE3-Befehlssatz-Erweiterungen Mit dem Prescott erweitert Intel den IA-32-Befehlssatz um 13 zusätzliche Instruktionen. Die neuen Befehle betreffen vor allem die FPU mit neuen SIMD-Befehlen und Erweiterungen für die Arithmetik mit komplexen Zahlen. Intel bezeichnet die Erweiterungen unspektakulär als SSE3. Die meisten der neuen Befehle sind recht exotisch und dürften lediglich in Spezialfällen zum Tragen kommen. Optimierungspotenzial bieten sie aber etwa für mathematische Libraries, die viel mit komplexen Zahlen rechnen oder den Butterfly-Algorithmus für die Fast Fourier Transformation nutzen. Vor allem wissenschaftliche Anwendungen und Audio/Video-Codecs dürften davon profitieren. 05.04.2011 Designprinzipien moderner Prozessoren 68 SSE-3 Befehlssatzerweiterungen FISTTP wandelt einen Floatingpoint-Wert mit Truncation und nicht wie das bisher vorhandene FISTP durch Runden in einen Integer-Wert um. Dies erspart das sonst nötige manuelle Umschalten auf das gewünschte Umwandlungsverhalten. MOVSHDUP liefert bei einem SIMD-Operanden mit je vier Single-Floatingpoints zwei Mal den ersten Wert und zwei Mal den dritten Wert zurück. Aus dem Vektor (A3,A2,A1,A0) erzeugt MOVSHDUP somit (A3,A3,A1,A1). Ähnlich verhält sich MOVSLDUP, das (A2,A2,A0,A0) zurückliefert. Nützlich sind diese Befehle beim Laden von komplexen Zahlen aus dem Speicher, wo Real- und Imaginärteil in benachbarten Variablen (A3,A2) und (A1,A0) gespeichert sind. ADDSUBPS liefert bei zwei Operanden mit je vier Single-Floatingpoints jeweils die Summe der geraden Datenelemente sowie die Differenz der ungeraden Datenelemente. Aus den Vektoren (A3,A2,A1,A0) und (B3,B2,B1,B0) erzeugt ADDSUBPS (A3+B3, A2-B2, A1+B1, A0-B0). Damit lassen sich Produkte und Quotienten von komplexen Zahlen besonders schnell und elegant berechnen. ADDSUBPD liefert das gleiche Ergebnis für zwei Double-Precision-FloatingpointVariablen. Beide Rechenoperationen kommen bei der Fast Fourier Transformation häufig zum Einsatz. 05.04.2011 Designprinzipien moderner Prozessoren 69 SSE-3 Befehlssatzerweiterungen MOVDDUP kopiert einen 64-Bit-Double-Floatingpoint in den oberen und unteren Teil einer 128-Bit-SIMD-Variablen. LDDQU kann einen 128-Bit-Wert schnell aus dem Speicher in ein Register laden, auch wenn er nicht auf eine 16-Byte-Grenze aligned ist. In diesem Fall lädt LDDQU automatisch die zwei betroffenen Cache-Lines komplett ein und extrahiert die gewünschten 16 Byte. Dieser Fall tritt sehr häufig bei der Motion Estimation von MPEG-Encodern auf. Hierbei werden Bildteile in zwei benachbarten Bildern auf eine Verschiebung verglichen. Typischerweise kann man dabei nur auf einen Block sauber alligned zugreifen. Die meisten SIMD-Befehle verarbeiten Werte aus zwei verschiedenen Operanden. Die neuen horizontalen Befehle HADDPS, HSUBPS, HADDPD und HSUBPD arbeiten dagegen innerhalb eines Operanden. Aus (A3,A2,A1,A0) und (B3,B2,B1,B0) berechnet etwa HADDPS (B3+B2,B1+B0,A3+A2,A1+A0). Diese Funktionen sind bei der Berechnung von Skalarprodukten und Determinanten von Matrizen nützlich. Auch erlauben sie, dass Grafikdaten im Format X1,Y1,X2,Y2,..Xn,Yn und nicht nur im Format X1,X2,..Xn,Y1,Y2,..Yn abgespeichert sind. 05.04.2011 Designprinzipien moderner Prozessoren 70 Von CPI zu IPC Grenzen der Superskalarität Je mehr Funktionseinheiten eingesetzt werden, desto wirkungsvollere Compiler-Optimierungen sind notwendig, um parallel ausführbaren Code zu erzeugen. Die Parallelisierbarkeit steigt aber nicht proportional mit der Anzahl von Funktionseinheiten Superskalare Pipeline- Prozessoren sind nur so gut wie ihre Compiler, die genaue Kenntnis der Hardware benötigen ! Ein Lösungsansatz heißt: – VLIW - Very Large Instruction Word – EPIC - Explicit Parallel Instruction Computing EPIC ist die Intel-Neuauflage des alten VLIW Prinzips 05.04.2011 Designprinzipien moderner Prozessoren 71 Von CPI zu IPC VLIW / EPIC - Konsequent Superskalar VLIW Befehlswort Sub-Instr. 1 MUL Sub-Instr. 2 SUB Funktionseinheiten: Multiplizierer Multiplizierer Sub-Instr. 3 ADD .......... .......... Sub-Instr. n LOAD Steuerwerk Addierer Addierer ......... Registerfile 05.04.2011 Designprinzipien moderner Prozessoren 72 Von CPI zu IPC EPIC - Intels IA-64 Architektur 05.04.2011 Designprinzipien moderner Prozessoren 73 Von CPI zu IPC EPIC - Intels IA-64 Architektur 05.04.2011 Designprinzipien moderner Prozessoren 74 Von CPI zu IPC Explizit parallele Strategie Source --------------------------------- Compiler Parallelität erkennen und über Basisblöcke erweitern Paralleler Masch. Code ----- ----- --------- ----- ----------------- ----- --------- --------- ----- --------- --------- Hardware parallele Units ... Der Compiler erkennt die Parallelität im Source-Code, analysiert sie über die Basisblöcke hinaus und bereitet die Befehle explizit als parallelen Code für die Hardware auf. 05.04.2011 Designprinzipien moderner Prozessoren 75 Von CPI zu IPC Explizit parallele Strategie Nachteile Verzicht auf Phasenpipelining Geringere Taktfrequenz wegen Multiport Register File Bei schlecht parallelisierbarem Code sinkt die Performance auf die eines relativ langsam getakteten skalaren Prozessors (fehlendes Phasenpipelining) Vorteile einfacheres Prozessordesign wegen fehlender Dynamic Execution einfacheres Prozessordesign, weil Pipelinekonflikte nicht aufgelöst werden müssen dadurch zusätzliche Resourcen für Branch Predication 05.04.2011 Designprinzipien moderner Prozessoren 76 Von CPI zu IPC EPIC - Intels IA-64 Architektur Branch Predication Den Befehlen eines Basis-Blocks wird ein Prädikat vom Compiler verliehen, zu welchem Zweig sie gehören: IF- als auch ELSE Zweig können so gleichzeitig ausgeführt werden. Ist die Bedingung geprüft, kann der falsche Zweig eliminiert und die Ergebnisse des Richtigen können nach Außen geführt werden. 05.04.2011 Designprinzipien moderner Prozessoren 77 Alpha 21364 - Prozessorkern 05.04.2011 Designprinzipien moderner Prozessoren 78 Alpha 21364 Chip-Blockdiagramm 05.04.2011 Designprinzipien moderner Prozessoren 79 Alpha 21364 Zusammenfassung Der integrierte 1.5 MB große L2-Cache und der integrierte Memory Controller unterstützen die Ein-Prozessor Performance Durch das integrierte Network-Interface eignet sich der 21364 gut für Hochleistungs-Multiprozessorsysteme 05.04.2011 Designprinzipien moderner Prozessoren 80 f P= Zusammenfassung * NVax CPI + MEMD Senken von CPI • Einführung von Phasenpipelining Beginn der RISC Ära CPI auf eins senken Ziel: Problem: Pipelinekonflikte Lösung: Spezielle Hardware Optimierende Compiler • Einführung von Funktionspipelining Einsatz mehrerer parallel arbeitender Units - Superskalare Prozessoren Register-Renaming Out of Order Execution CPI soll deutlich unter eins Ziel: liegen oder: IPC > 1 Problem: sequentieller Code schränkt parallele Verarbeitung ein 05.04.2011 • Vielfädig superskalare Prozessoren Auslastungslücken der Units sollen durch Mischen von Befehlen aus mehreren Befehlsströmen geschlossen werden. Steigern von IPC auf >4 Ziel: Problem: zusätzlicher Hardwareaufwand für die Organisation des Befehlsstromes im Prozessor • Single Chip Multiprocessor Steigern von IPC auf >4 Ziel: Problem: Vervielfachung der Superskalarprobleme • EPIC/ VLIW Ziel: Drastische Erhöhung von IPC Problem: Performance bei nicht parallelisierbarem Code Designprinzipien moderner Prozessoren 81