Rechnerarchitektur - ti.informatik.uni-frankfurt.de · 1 Rechnerarchitektur, WS 2003/2004 Seite 1 Teil 12 Hardwaresystemarchitektur 2 Johann Wolfgang Goethe-Universität Technische
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
The types of architecture are established not by architectsbut by society, according to the needs of thedifferent institutions. Society setsthe goal and assigns thearchitects the job offinding the meansof achieving them.
Mehrfädige Architekturen:(Multithreaded Architectures, MTAs)wechseln Fäden, um Latenzzeiten zuverstecken („Latency Hiding“).
Fäden:(Threads) sind leichtgewichtige Prozesse.Ein (schwergewichtiger) Prozess (auchTask genannt) kann mehrere Fäden haben.Ein Faden besteht aus mehreren Befehlen.Die Fäden in einem Prozess teilen sicheinen (virtuellen) Adressraum
Latenzzeit:Wartezeit, die durch Abhängigkeiten innerhalb eines Fadens zwischenEinheiten entsteht.z.B. Speicherlatenzzeit, Netzwerk-latenzzeit.
1. Zwischen Instruktionen:(Instrucion Interleaving) nutzt die Verarbei-tungspipeline am besten aus. Alle Latenz-zeiten können versteckt werden. Ein Faden-wechsel muss sehr schnell sein, und esmüssen ausreichend viele Fäden vorhandensein.
2. Zwischen Blöcken von Instruktionen:Gröbere Granularität, wenige häufige Faden-wechsel. Der Compiler kann die Länge der Blöcke optimieren.
3. Bei nicht erfolgreichen Cachezugriffenversteckt nur Speicherlatenzzeiten. Die Latenzzeit bei einem Cache Miss ist erheblich und nicht vorhersagbar.
4. Bei entfernten Speicherzugriffensetzt voraus, dass der Compiler die ent-fernten Zugriffe bereits markieren kann.Die Granularität ist hier sehr grob, dieHardwareunterstützung kann sehr gering –oder gleich Null sein.
„Transmeta´s Code Morphing technologychanges the entire approach to designingmicroprocessors. By demonstrating thatpractical microprocessors can be implemen-ted as hardware-software hybrids, Transmetahas dramatically expanded the design spacethat microprocessor designers can explorefor optimum solutions.
Microprocessor development teams maynow enlist software experts and expertise, working largely in parallel with hardwareengineers to bring products to market faster.
Upgrades to the software portion of a microprocessor can be rolled out inde-pendently for the chip. Finally, decoup-ling the hardware design from the systemand application software that use it freeshardware designers to evolve and eventually replace their designs withoutperturbing legacy software.“
Die IA-64 Architektur, die auf der EPIC (Explicitly Parallel Instruction Computing)Philosophie basiert, zeichnet sich im Wesentlichen durch drei Aspekte aus:
• Expliziter Parallelismus
ILP (instruction level parallelism) wird explizit im Maschinencode sichtbar ge-macht. Der Compiler ermittelt den Graddes ILP und teilt das Scheduling-Ergeb-nis der Hardware zur Ausführung mit.
• Eigenschaften zur Erhöhung des ILP
Die beiden wichtigsten Eigenschaften, die IA-64 bereitstellt, sind das predicationmodel und control speculation.
• Ressourcen zur parallelen Ausführung
Die IA-64 Architektur stellt wesentlich mehr Register als vergleichbare superskalareProzessoren zur Verfügung:128 Integer-Register, 128 Floating-point-Register und 64 Prädikats-Register.Die effiziente Nutzung mehrerer Funktions-einheiten erfordert viele Register. Ein IA-64-Bundle enthält jeweils drei 41bit-Befehle. Einzusätzliches Template eröffnet die Möglich-keit, explizit die Abhängigkeiten der Befehleauszudrücken. Außerdem erlaubt es dem
Compiler, verschiedene unabhängige In-struktionen über verschiedene Bundles zugruppieren.
In der IA-64 Architektur wird das „pre-dication model“ unterstützt, in dem derCompiler den Instruktionen ein Prädikatanfügen kann. Prädikate sind einfachetags, die eine bedingte Ausführung vonInstruktionen erlauben und zwar ab-hängig vom Wert des Prädikats. DerWert entspricht dem Ergebnis einer Vergleichsoperation (conditionalstatement).
Eine Instruktion wird normal ausgeführt, wenn der Wert des Prädikats wahr ist. Ist der Wert des Prädikats falsch, schreibtdie Instruktion ihr Ergebnis nicht in das Register oder den Speicher, auch wenndie Instruktion bereits zugeordnet wurde.
Dieses einfache Verfahren des „predicationmodel“ ist in der Lage, Verzweigungen zu be-seitigen, indem diese parallelisiert werden. Damit sinken auch die Performance-Verluste (penalties), die Verzweigungen in VLIW-Archi-tekturen verursachen können.
Das folgende Beispiel macht deutlich, wie ein herkömmlicher Compiler den C-Code einer if-then-else Anweisung in vier Basisblöcke auflöst. Der Prozessor muss die Instruktionen aller vier Basisblöcke seriell ausführen und somit sind derartige Verzweigungen starke Hemmnisse für die Instruktions-Parallelität auf VLIW-Ebene.
In der IA-64 Architektur werden die Prädikate durch die „compare“ Instruktion erzeugt. Der “then“ Pfad wird ausgeführt, wenn das Vergleichs-resultat wahr ist. Dies wird durch p1 markiert.Der “else“ Pfad wird ausgeführt, wenn das Ver-gleichsergebnis falsch ist. Dies wird durch p2 markiert.
p1 und p2 schließen sich gegenseitig aus (mutually exclusive), also nur eines von beiden kann zu gegebener Zeit wahr sein.
In der IA-64 Architektur kann der Compilerein spekulatives Laden ausführen, um dieSpeicherlatenz zu verringern. Dadurch wirdautomatisch auch der ILP erhöht. Dieser Vorgang wird als "hoisting" bezeichnet, in dem die Ausführung des Ladebefehls vor den Verzweigungsbefehl gehoben wird.
Hierzu wird ein neuer (speculative load (ld.s))Befehl eingeführt, der den Speicher-fetchdurchführt und eine Ausnahmeerkennung (exeption detection) veranlasst.
Eine check.s Instruktion initiiert dann dieAusnahmebehandlung. Dieser Vorgang läuft folgendermaßen ab:
Wenn ld.s eine Ausnahme erkennt, wirddas Zielregister mit einem token-bit mar-kiert. Die check.s Instruktion verzweigtzu der entsprechenden Interrupt-Routinezur Behandlung der Ausnahme, wenn das token-bit für dieses Register gesetzt ist. Durch den speculative load-Mecha-nismus wird die Ausführung eines Lade-befehls ermöglicht, bevor das Programmdie Gültigkeit der Adresse überprüft.
� ISA (instruction set architecture): Befehlsformat
- 41 Bit- Instruktionen(Opcode, 6 Bit Predication, 2x 7 BitRegisteradressen, 7 Bit Zielregister-adresse, Spezialfelder für Integer-und Floating-Point-Arithmetik)
- 128 64 Bit General-Purpose-Register- 128 80 Bit Floating-Point-Register- 64 1 Bit Predication-Register
� Instruktionen werden zu Bundles zu-sammengefasst resp. werden in Bundles kodiert
- 1 Bundle = 128 Bit LIW(3 Befehle + Template )
� Keine NOOPs zum Auffüllen notwendig
� Bundles korrespondieren mit FU-Satz
Eine neue „Instruction group“ beginnt nacheiner "Stop"-Information, die im Templatekodiert ist. Somit können „Instruction groups“eine variable Größe besitzen.
Wichtig: Bundles und "Instruction groups" sind nicht das gleiche.
Die Instruktionen innerhalb einer „Instructiongroup“ können parallel ausgeführt werden, d.h. Instruktionen innerhalb einer „Instructiongroup“ dürfen keine RAW- und WAW-Ab-hängigkeiten aufweisen.
Wieviele Instruktionen in einer "Instructiongroup" parallel ausgeführt werden, hängt vonden verfügbaren Ressourcen (Anzahl und Artder Funktionseinheiten) ab.
� Instruktionen gehören zu einer „Instruction group“
Das Verbindungsnetzwerk benötigt nicht die vollständige Konnektivität, da Punkt zu Punkt-Verbindungen möglich sind.
Die Anzahl der Zyklen für die Transport-bewegung (moves) wird minimiert, da kein runtime matching zu erfolgen hat. Der NCU stellt den Netzwerk-Controller dar und übernimmt praktisch das Routingdes Netzwerkes.
Eine TTA-Instruktion hat damit das folgende Format:
Bus-1 field Bus-2 field Bus-M field
i src dst i src dst i src dst
Jedes Feld spezifiziert eine „move“ Operation von der Quelle zum Ziel. Das i-bit unterschei-det zwischen Immediate und Register-Spezifikation.
z.B. add r3, r2, r1 => r1 � 01 addr2 � 02 add
radd � r3
Eine 3-Adress-Operation bedeutet drei Bewegungen
01add, 02add: Operandenregister des Addierersradd: Ergebnisregister des Addierers