Hardware Reference
In-Depth Information
Der Parameter localregs gibt die Anzahl der lokalen Register im Regis-
terring an. MMIX implementiert einen Registerstack: Bei Unterprogrammauf-
rufen kann automatisch eine bestimmte Anzahl an Registern frei gemacht
werden [1]. Bei Unterprogrammaufrufen werden zunachst die physisch vor-
handenen Register umnummeriert. Erst wenn die vorhandenen Register nicht
mehr ausreichen, werden Registerinhalte in das Stack-Segment des Haupt-
speichers ausgelagert. Es konnen mehr Register als die 256 lokalen Register
vorhanden sein. Der Wert von localregs gibt die tatsachlich vorhandene
Zahl physischer Register an. Diese Zahl kann 256, 512 oder 1024 sein.
5.2
5.2 Interna des Pipeline-Simulators
Einige Details des Simulators haben wir bislang außer Acht gelassen:
Manche Befehle erzeugen mehrere Ergebnisse, z.B. die Division, die den
ganzzahligen Quotienten sowie den Divisionsrest (Modulus) erzeugt. Dafur
sind dann auch zwei Rename Register erforderlich. Ferner mussen auch die
Befehle hinsichtlich mehrerer Ergebnisse beobachtet werden konnen, was
in den oben stehenden Tabellen weggelassen wurde, um die Darstellung
nicht zu uberfrachten.
Andere Befehle andern als Seiteneffekt weitere Register. Dazu gehort z.B.
das Erhohen des Spezialregisters rL . Zur Erinnerung: Das Spezialregis-
ter rL gibt an, welches das derzeit hochste verwendete lokale Register
ist. Wird auf ein neues Register zugegriffen, so ist der Wert von rL zu
erhohen. Zur Berechnung solcher Seiteneffekte ist eine zweite Operation
des Rechenwerks erforderlich. Dazu fugt der Simulator eine eigene Instruk-
tion ein, die auf einer Ausfuhrungseinheit fur ganzzahlige Instruktionen
laufen muss.
Der Zugriff auf das Spezialregister rA mit dem Befehl GET kann erst in
dem Moment erfolgen, in dem der GET -Befehl bestatigt wird.
Die Betriebssystemaufrufe sind im Pipeline-Simulator ebenfalls implemen-
tiert. Sie erledigen ihre Arbeit allerdings mit einer gewissen Magie. Es wird
so getan, als sei ein Betriebssystem vorhanden, was ja nicht der Fall ist.
Beispielsweise beim Befehl TRAP 0,Fputs,StdOut liest der Simulator die
auszugebende Zeichenkette einfach aus dem simulierten Speicher. Die Si-
mulation dieser Befehle erlaubt also gar keine Aussage uber das dabei in
der Realitat zu erwartende Verhalten des Prozessors.
Search WWH ::




Custom Search