Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Der Crusoe-Prozessor von Transmeta

Ähnliche Präsentationen


Präsentation zum Thema: "Der Crusoe-Prozessor von Transmeta"—  Präsentation transkript:

1 Der Crusoe-Prozessor von Transmeta
Autor: Roland Preuss Fach: LCT-L (Prof.Dr.Risse) Semester: I5I (SS01) Datum: Vorstellung der Technologie des Crusoe-Prozessors

2 Einleitung Crusoes bestehen zu ¼ aus Hardware und zu ¾ aus Software
Einfacher 128-Bit-VLIW-Prozessor der allerdings vier Instruktionen pro Takt ausführen kann + Code-Morphing-Software (c) Roland Preuss

3 Speicherbedarf Code-Morphing-Software ist in einem 512 KByte Flash gespeichert entpackt 2 MByte 6 bis 14 MByte Zwischenspeicher ( Translation Cache ) die Code-Morphing-Software ist in einem 512 KByte Flash gespeichert beim Booten wird die Software in den Hauptspeicher übertragen und entpackt ( 2 MByte ) dazu kommen noch 6 bis 14 MByte Zwischenspeicher ( Translation Cache ) (c) Roland Preuss

4 Übersicht Code-Morphing-Verfahren setzt komplexe x86-Befehle in einfachere Befehle um ( sogenannte Atome ) max. 4 Atome werden zu Molekülen zusammengesetzt Moleküle werden parallel vom Prozessor ausgeführt spekulatives Ausführen von Befehlen wird praktiziert Code-Morphing unterstützt durch Hardware 64 Allzweck- und 32 FPU-Register haben sogenannte Schattenregister ( Shadow ) Code-Morphing-Verfahren setzt komplexe x86-Befehle in einfachere Befehle um ( sogenannte Atome ) Bis zu 4 Atome werden zu sogenannten Molekülen zusammengesetzt Moleküle werden dann parallel vom Prozessor ausgeführt spekulatives Ausführen von Befehlen wird praktiziert Crusoe unterstützt das wesentlich durch die Hardware die 64 Allzweck- und 32 FPU-Register haben sogenannte Schattenregister ( Shadow ) (c) Roland Preuss

5 Ansatz große Anzahl an Wiederholungen
CMS übersetzt Befehle einmal, optimiert und speichert im Translation Cache bei Aufruf der gleichen Befehlskette kann Übersetzung und Optimierung übersprungen werden übersetzte Ergebnis wird übertragen und ausgeführt nutzt die große Anzahl an Wiederholungen bei der Arbeit mit Software die CMS übersetzt Befehle einmal, optimiert sie und speichert das Ergebnis im Translation Cache ab bei nächsten Aufruf der gleichen Befehlskette kann die Übersetzung und Optimierung übersprungen werden es wird nur noch das einmal übersetzte Ergebnis übertragen und ausgeführt z.B. DVD bevor das erste Videobild erscheint, hat der Crusoe den DVD-Decoder komplett übersetzt und optimiert d.h. kein Overhead stört die Wiedergabe (c) Roland Preuss

6 Filter CMS benutzt verschiedene Prioritätsstufen Interpretationen
hohe Optimierung dynamische feedback Informationen typische Anwendungen nutzen 95% der Ausführungszeit nur etwa 10% ihres Codes es muß entschieden werden wieviel Aufwand für eine Codeübersetzung getrieben wird die CMS benutzt dazu verschiedene Prioritätsstufen sie reichen von Interpretationen ( d.h. kein Überstzungsoverhead, einfache Codeausführung ) bis hoher Optimierung ( d.h. es dauert länger die Übersetzung und Optimierung zu erstellen, aber dann ist der Befehlssatz auch sehr schnell ) das wird durch dynamische feedback Informationen erreicht die während der Laufzeit gesammelt werden ( z.B. Blockausführungs Häufigkeit oder Verzweigungshistorie ) (c) Roland Preuss

7 Beispiel addl %eax, (%esp) // load data from stack, add to %eax
addl %ebx, (%esp) // ditto, for %ebx movl %esi, (%ebp) // load %esi from memory subl %ecx, 5 // subtract 5 from %ecx register ld %r30, [%esp] // load from stack, into temporary add.c %eax, %eax, %r30 // add to %eax, set condition codes ld %r31, [%esp] add.c %ebx, %ebx, %r31 ld %esi, [%ebp] sub.c %ecx, %ecx, 5 zuerst wird das Codebeispiel in eine simple Folge von Atomen übersetzt (c) Roland Preuss

8 Beispiel ld %r30, [%esp] // load from stack, into temporary
add.c %eax, %eax, %r30 // add to %eax, set condition codes. ld %r31, [%esp] add.c %ebx, %ebx, %r31 ld %esi, [%ebp] sub.c %ecx, %ecx, 5 ld %r30, [%esp] // load from stack only once add %eax, %eax, %r30 add %ebx, %ebx, %r30 // reuse data loaded earlier ld %esi, [%ebp] sub.c %ecx, %ecx, 5 // only this last condition code needed in der nächsten Stufe werden z.B. loops oder unbenutzter Code entfernt außerdem wird auf mögliche Vereinfachungen reagiert und der Code dann neu geordnet (c) Roland Preuss

9 Beispiel ld %r30, [%esp] // load from stack only once
add %eax, %eax, %r30 add %ebx, %ebx, %r30 // reuse data loaded earlier ld %esi, [%ebp] sub.c %ecx, %ecx, 5 // only this last condition code needed ld %r30, [%esp] ; sub.c %ecx, %ecx, 5 ld %esi, [%ebp] ; add %eax, %eax, %r30 ; add %ebx, %ebx, %r30 im letzten Schritt, werden die Atome nochmals neu geordnet und in Moleküle zusammengefaßt nach der Bearbeitung haben wir die vier Orginalbefehle auf zwei Moleküle reduziert (c) Roland Preuss

10 Alias ld %r30, [%x] // first load from location X ...
st %data, [%x] // might overwrite location X ld %r31, [%x] // this accesses location X again use %r31 ldp %r30, [%x] // load from X and protect it ... stam %data, [%x] // this store traps if it writes X use %r30 // can use data from first load bei der Neuordnung der Befehle, kann es bei load und store Anweisungen zu Problemen kommen für diesen Fall gibt es die Alias Hardware wenn der Übersetzer bei der Neuanordnung einen load Befehl vor einen store Befehl versetzt, so ändert er den load Befehl in einen load-and-protect Befehl und den store Befehl in einen store-under-alias-mask Befehl es ergibt sich dann folgende Übersetzung (c) Roland Preuss

11 Spekulationen alle Register, die x86 Statusinformationen enthalten sind doppelt Vorhanden Workingregister und Shadowregister Normalfall nur Workingregister update Spekulation richtig commit Operation Spekulation falsch rollback Befehl CMS setzt wieder an und übersetzt neu commit Befehl wird parallel zu VLIW Befehlen ausgeführt alle Register, die x86 Statusinformationen enthalten sind doppelt Vorhanden es gibt ein sogenanntes Workingregister und ein Shadowregister im Normalfall, werden nur die Workingregister mit Atomen upgedatet eine Spekulation wird also geladen erweist sich die Spekulation als richtig, so werden mit einer speziellen commit Operation alle Workingregister bevor der nächste Befehl geladen wird in die Shadowregister kopiert erweist sich die Spekulation als falsch, wird der letzte richtige Übersetzungstand durch einen rollback Befehl aus den Shadowregistern wieder geladen die CMS setzt an der Stelle wieder an und übersetzt den entsprechenden Codebereich neu der commit Befehl wird parallel zu den VLIW Befehlen ausgeführt (c) Roland Preuss

12 Spekulationen II Undo für Speicher sehr aufwendig
deshalb gated store buffer Crusoe schreibt alle Speicheropperationen zunächst in diesen Speicher bei commit Befehl wird gated store buffer auf Moemorybereich übertragen bei rollback Befehl wird gated store buffer gelöscht ein Undo für den Speicher zu realisieren wäre sehr aufwendig deshalb hat der Crusoe einen sogenannten gated store buffer der Crusoe schreibt alle Speicheropperationen zunächst in diesen Speicher bei Ausführung des commit Befehls wird dann der gated store buffer auf den Moemorybereich übertragen bei auftreten eines rollback Befehls ( d.h. eine Spekulation war falsch ) wird der gated store buffer einfach gelöscht (c) Roland Preuss

13 Hardware viel Performance wird benötigt
große Cache und lokalen Speicher im Kern 96 KByte ( TM3200 ) bzw. 384 KByte ( TM5400 ) Cache 8 KByte Local Data Memory 8 KByte Local Programm Memory viel Performance wird benötigt ( CMS benötigt ca. 6 mal mehr Speicher für einen x86 Befehl ) d.h. große Caches und lokalen Speicher im Kern 96 KByte ( TM3200 ) bzw. 384 KByte ( TM5400 ) Cache 8 KByte Local Data Memory 8 KByte Local Programm Memory ( zur Laufzeit änderbarer Microcode ) (c) Roland Preuss

14 Northbridge normalerweise extern enthält Speicher und PCI Controller
TM3200 unterstützt PC133 TM5400 zusätzlich DDR-SDRAM PC266 TM5400 zwei 64-Bit Speicherinterfaces normalerweise extern enthält Speicher und PCI Controller TM3200 unterstützt PC133 TM5400 unterstützt zusätzlich DDR-SDRAM PC266 TM5400 besitzt zwei 64-Bit Speicherinterfaces (c) Roland Preuss

15 noch zu erwähnen ist der TLB ( Translation Lookaside Buffer )
er cacht die Übersetzungstabelle ( physisch zu linear ) markiert Seiten, die bereits übersetzt wurden und gibt Auskunft über Speicherattribute ( d.h. ob es sich um normalen Speicher oder eine als Speicher angesprochene I/O-Adresse handelt ) (c) Roland Preuss

16 Schlußwort noch nicht vorgesehen :
speichern bereits erlernter Optimierungen Eingriffe zur Auswahl von Optimierungsstrategien noch nicht vorgesehen sind folgende Dinge das Abspeichern bereits erlernter Optimierungen z.B. Programmzugehörig Eingriffe des Benutzers zur Auswahl von Optimierungsstrategien (c) Roland Preuss

17 Literatur transmeta „The Technology behind Crusoe processors“
transmeta TM3200 Beschreibung transmeta TM5400 Beschreibung Andreas Stiller „Zu neuen Ufern“ ( c´t ) Andreas Stiller „Robinsons Patente“ ( c´t ) ( Transmetapatente ) (c) Roland Preuss


Herunterladen ppt "Der Crusoe-Prozessor von Transmeta"

Ähnliche Präsentationen


Google-Anzeigen