www.wikidata.de-de.nina.az
Der Tomasulo Algorithmus ist ein Algorithmus zur Implementierung von dynamischem Scheduling in Prozessoren Er wurde von Robert Tomasulo bei IBM entwickelt ursprunglich fur die Gleitkommaeinheit des 360 91 1 Inhaltsverzeichnis 1 Einordnung 2 Strategie 3 Prozessoraufbau 4 Funktionsweise 5 Weitere Merkmale 6 Einzelnachweise 7 WeblinksEinordnung BearbeitenUm die Geschwindigkeit zu erhohen mit der ein Prozessor auszufuhrende Instruktionen bei konstanter Taktfrequenz durchlauft wird die Ausfuhrung von Instruktionen in mehrere Schritte unterteilt Sobald eine Instruktion eine Stufe durchlaufen hat kann die nachste Instruktion bereits diese Stufe betreten so dass der Prozessor stets an mehreren Instruktionen gleichzeitig arbeitet Dieses Verfahren bezeichnet man als Pipelining die Stationen die die Befehle durchlaufen als Stages Wenn nun Teile der Pipeline oder die gesamte Pipeline mehrfach vorkommen spricht man von Superskalaritat Da sich mehrere Befehle gleichzeitig in der Pipeline befinden kann es durch Abhangigkeiten zwischen den auszufuhrenden Befehlen zu Problemen kommen Eine naive Losung ist es mit der Abarbeitung der nachsten Befehle zu warten Ein intelligenteres Verfahren das dies umgeht ist das dynamische Scheduling Der Tomasulo Algorithmus stellt eine konkrete Implementierung dieses Verfahrens dar Ein weiteres Verfahren ist z B das Scoreboarding Strategie BearbeitenDer Tomasulo Algorithmus verfolgt das Ziel die Ausfuhrung von Befehlen fortzusetzen selbst wenn Datenabhangigkeiten vorliegen Zum einen handhabt er Read after write Hazards RAW indem der Prozessor verfolgt wann ein Operand zur Verfugung steht Zum anderen verhindert er Write after write WAW und Write after read Hazards WAR indem relevante Registerinhalte beim Decodieren eines Befehls in sogenannten Reservation Stations zwischengespeichert und so vor vorzeitigem Uberschreiben geschutzt werden Prozessoraufbau Bearbeiten nbsp Tomasulos GleitkommaeinheitEin Prozessor der den Tomasulo Algorithmus implementiert enthalt unter anderem folgende Komponenten Functional Units FU Die Functional Units sind Prozessorbausteine die logisch arithmetische Berechnungen ausfuhren Es gibt hiervon meist mehrere sie unterscheiden sich in der Art der Operationen welche sie ausfuhren konnen floating point integer load store etc Bei modernen Prozessoren ist funf eine typische Zahl fur die Anzahl an FUs Reservation Stations RS Jeder FU sind zwei bis acht Reservation Stations zugeordnet Diese implementieren Registerumbenennung und werden wie temporare Register behandelt Eine Reservation Station enthalt den Opcode der auszufuhrenden Operation zwei Felder fur die Werte der Operanden und zwei Felder fur die Adressen der RSs die die Operanden berechnen falls sie zum aktuellen Zeitpunkt noch nicht zur Verfugung stehen bzw noch nicht gultig sind Registersatz Der Registersatz enthalt fur jedes Register neben einem Feld fur den gespeicherten Wert auch ein Feld fur die Adresse einer RS Hier wird eine RS eingetragen falls diese den Wert des Registers noch berechnet Common Data Bus Alle FUs und RSs sind durch einen gemeinsamen Ergebnisbus miteinander verbunden Eine FU legt nach Fertigstellung einer Berechnung die Adresse der bearbeiteten RS und das Ergebnis auf den Bus Die RSs beobachten den Bus um den Wert noch benotigter Operanden direkt zu ubernehmen Funktionsweise BearbeitenJeder auszufuhrende Befehl durchlauft drei Stationen Issue Der Befehl an der aktuellen Position in der Operation Queue wird dekodiert und entsprechend seiner auszufuhrenden Operation in eine passende Reservation Station eingetragen Operanden werden direkt aus der Registerdatei ubernommen wenn sie gultig sind Dieser Vorgang wird als Registerumbenennung bezeichnet Steht ein Operand noch nicht zur Verfugung wird stattdessen die Adresse der RS eingetragen die den Wert gerade berechnet Ist keine passende RS frei verbleibt der Befehl in der Operation Queue und die Zuweisung wird im nachsten Takt erneut versucht Execute Sobald alle Operanden in der Reservation Station zur Verfugung stehen wird die Operation an die FU weiter gegeben und ausgefuhrt Andernfalls wird der Common Data Bus auf eingehende Werte beobachtet und fehlende Operanden ubernommen wenn die Adresse der Quell RS mit der benotigten Adresse ubereinstimmt Write result Sobald das Ergebnis der Operation berechnet wurde wird es mitsamt der Adresse der ausgefuhrten RS auf den Common Data Bus gelegt und somit fur die RS sichtbar welche auf das Ergebnis warten Weitere Merkmale BearbeitenUber die obige Logik hinaus erkennt der Tomasulo Algorithmus sich uberlappende Write Befehle auf ein und dasselbe Register und fuhrt nur den letzten zum Aktualisieren des Registers aus Einzelnachweise Bearbeiten John Hennessy David Patterson Computer Architecture A Quantitative Approach 4th Edition Morgan Kaufmann Publishers ISBN 978 0 12 370490 0 engl S 92Weblinks BearbeitenUrsprunglicher Aufsatz engl An Efficient Algorithm for Exploiting Multiple Arithmetic Units Einfuhrung Rechnerarchitektur von Holger Kreissl Superskalaritat WebHASE Tomasulo s Algorithm HASE Java applet simulation of the Tomasulo s Algorithm Institute for Computing Systems Architecture Edinburgh University Dynamic Scheduling Tomasulo engl Abgerufen von https de wikipedia org w index php title Tomasulo Algorithmus amp oldid 231152163