www.wikidata.de-de.nina.az
Registerumbenennung englisch register renaming bezeichnet eine Phase in der Befehlsdekodierung die meist von superskalaren Mikroprozessoren angewandt wird Sie hilft unnotige Sequentialisierung zu vermeiden bzw verbessert die Out of Order Execution d h die Moglichkeit kleine Teile des Programms nebenlaufig auszufuhren Inhaltsverzeichnis 1 Motivation 2 Beispiel 3 Alternativen 4 Siehe auch 5 LiteraturMotivation BearbeitenSuperskalare Prozessoren besitzen einen verhaltnismassig kleinen Satz an direkt ansprechbaren Architekturregistern die durch den Befehlssatz vorgegeben sind Es konnen daher nicht mit jeder Prozessorgeneration neue Register im Befehlssatz aufgenommen werden weil das die Binarkompatibilitat brechen wurde Deshalb konnen aber im Programmablauf Datenabhangigkeiten zwischen Programmteilen auftreten die eine Out of Order bzw nebenlaufige Ausfuhrung verhindern Es handelt sich dabei allerdings nicht um echte Abhangigkeiten sondern um Namensabhangigkeiten in diesem Fall auch Datenkonflikte genannt In der x86 Familie kam Registerumbenennung erstmals im Pentium Pro zum Einsatz in dem acht fur den Programmierer sichtbare bzw ansprechbare Register des Befehlscodes auf 96 unsichtbare bzw nicht ansprechbare aber physisch vorhandene Register umgelegt wurden Die Abhangigkeiten Write After Read WAR und Write After Write WAW konnen nun durch Registerumbenennung aufgelost werden Dazu existiert eine grosse Zahl an Schattenregistern die nicht direkt vom Programm verwendet werden konnen Ublicherweise wird nun in der Dekodierstufe ID des Prozessors bei jeder Definition eines Registers sprich bei jeder Instruktion die ein Ergebnis produziert und es in einem Register ablegen mochte das verwendete Register in ein Schattenregister umbenannt daher der Name Danach enthalt der Code nur noch echte Datenabhangigkeiten und die unabhangigen Teile konnen parallel oder in einer anderen Reihenfolge ausgefuhrt werden Beispiel BearbeitenDer folgende Code kann in dieser Form nur sequentiell abgearbeitet werden da Datenabhangigkeiten bestehen 1 R1 R2 R3 2 R4 R1 R5 RAW Abhangigkeit mit Zeile 1 3 R5 R6 R7 WAR Abhangigkeit mit Zeile 2 4 R1 R8 R9 WAW Abhangigkeit mit Zeile 1 Benennt man nun konsequent das Zielregister jeder definierenden Operation um losen sich die WAR und WAW Abhangigkeiten auf 1 A R2 R3 2 B A R5 RAW Abhangigkeit mit Zeile 1 3 C R6 R7 4 D R8 R9 Die Blocke 1 und 2 3 und 4 konnen nun in beliebiger Reihenfolge oder auch parallel ausgefuhrt werden Alternativen BearbeitenEinen anderen Ansatz ist man mit dem Explicitly Parallel Instruction Computing beim Itanium Prozessor gegangen dieser stellte sich jedoch als weniger erfolgreich heraus Dabei werden Anweisungen die parallel ausgefuhrt werden konnen in speziellen Instruktionen kodiert und zu sog Anweisungsblocken instruction groups zusammengefasst Ein Nachteil dieser Methode ist dass der Zielprozessor zum Zeitpunkt der Ubersetzung bekannt sein muss und eine nachtragliche Anpassung nicht mehr bzw nur noch durch erneutes Ubersetzen moglich ist Siehe auch BearbeitenTomasulo AlgorithmusLiteratur BearbeitenJean Loup Baer Microprocessor Architecture From Simple Pipelines to Chip Multiprocessors S 89 ff Cambridge University Press 2010 ISBN 9780521769921 Christian Muller Schloer Wolfgang Karl Sami Yehia Architecture of Computing Systems ARCS 2010 23rd International Conference Hannover Germany February 22 25 2010 Proceedings S 127 ff Springer Science amp Business Media 2010 ISBN 9783642119491 John L Hennessy David A Patterson Computer Architecture A Quantitative Approach S 208 ff Elsevier 2012 ISBN 9780123838728 Abgerufen von https de wikipedia org w index php title Registerumbenennung amp oldid 163487681