-
Die
vorliegende Erfindung betrifft allgemein die Kontextumschaltung
in Mikroprozessoren bei der Behandlung von Programmunterbrechungen.
Insbesondere betrifft sie einen Mikroprozessor, der einen verringerten
Kontextumschaltungsaufwand zur Behandlung von Programmunterbrechungen
hat, und ein entsprechendes Verfahren zum Reduzieren des Kontextumschaltungsaufwands
in einem Mikroprozessor gemäß dem Oberbegriff
des Anspruchs 1 bzw. 10.
-
In
einem herkömmlichen
Mikroprozessor muss der Zustand des Mikroprozessors beim Ändern des
Kontexts während
der Behandlung einer Programmunterbrechung gesichert werden. Eine
Programmunterbrechung kann wegen einer durch den Mikroprozessor
von einer externen Vorrichtung empfangenen Unterbrechung oder wegen
einer durch den Mikroprozessor erfassten Ausnahme auftreten. Diese Änderung
des Kontexts umfasst das Sichern der von den Arbeitsregistern des
Mikroprozessors gespeicherten Operanden im Hauptspeicher des Mikroprozessors.
Allerdings ist der zum Ausführen
dieser Operation erforderliche Kontextumschaltungsaufwand groß, da er
zeitaufwändig
ist und ein großer
Teil des Hauptspeichers verwendet wird.
-
Es
sind mehrere Lösungen
vorgeschlagen worden, um den großen Kontextumschaltungsaufwand
in einem Mikroprozessor zu verringern. Jede dieser Lösungen erkennt,
dass einige der Arbeitsregister des Mikroprozessors zum Zeitpunkt
einer Kontextumschaltung aktive Operanden (d. h. Operanden, die
von dem Befehlsstrom immer noch benötigt werden) enthalten, während andere
inaktive Operanden (d. h. Operanden, die von dem Befehlsstrom nicht mehr
benötigt
werden) enthalten. Diese Lösungen erfordern
die Verfolgung der aktiven Operanden, so dass sie während der
nächsten
Kontextumschaltung im Hauptspeicher gesichert werden.
-
Eine
Lösung
besteht darin, den Mikroprozessor mit Registerfenstern für die Arbeitsregister
zu versehen. Allerdings ist dies eine komplizierte und hardwareintensive
Art, das Sichern der Operanden im Hauptspeicher zu verschieben,
bis es absolut notwendig ist. Somit ist der Kontextumschaltungsaufwand
für diese
Lösung äußerst groß.
-
Eine
effizientere Lösung
besteht darin, für
jedes Arbeitsregister ein Dirty-Bit-Register
aufzunehmen. Wenn ein neuer Operand in ein besonderes Arbeitsregister
geschrieben wird, wird das von dem entsprechenden Dirty-Bit-Register gespeicherte
Dirty-Bit gesetzt, um anzugeben, dass das Arbeitsregister "dirty" ist (d. h. in es
geschrieben worden ist) und einen aktiven Operanden speichert, der
bei der nächsten
Kontextumschaltung im Speicher gesichert werden muss. Wenn die nächste Kontextumschaltung
stattfindet, wird der Operand im Hauptspeicher gesichert und das
Dirty-Bit gelöscht
(d. h. zurückgesetzt).
-
Das
Problem bei dieser Lösung
ist, dass der Operand lange vor der nächsten Kontextumschaltung inaktiv
geworden sein kann, obgleich das Dirty-Bit immer noch angibt, dass
der Operand aktiv ist. Der Mikroprozessor speichert daraufhin diesen
inaktiven Operanden bei der nächsten
Kontextumschaltung überflüssig im
Hauptspeicher. Dies kann auch für
viele weitere von den Arbeitsregistern gespeicherte Operanden der
Fall sein. Somit wird bei der nächsten
Kontextumschaltung ein Engpass beim Sichern dieser Operanden erzeugt.
Dies macht den Kontextumschaltungsaufwand für diese Lösung unnötig groß.
-
"TECHNIQUE FOR REDuUCING
THE NUMBER OF REGISTERS SAVED AT A CONTEXT SWAP", IBM TECHNICAL DISCLOSURE BULLETIN,
Bd. 33, Nr. 3A, 1. August 1990 (1990-08-01), S. 234–235, XP000123918,
IBM CORP., NEW YORK, USA, ISSN: 0018-8689, beschreibt ein Schema,
das bei einer Kontextumlagerung bestimmt, ob alle oder keine Register
eines Prozessors gesichert werden müssen. Das Schema verwendet
ein Bit pro Register, um zu bestimmen, wann die Inhalte nicht gesichert werden
müssen,
wenn eine Kontextumlagerung auftritt. In jedem Befehl ist ein Bit
pro Registerfeld vorgesehen, das angibt, ob das Register am Ende
der Ausführung
des Befehls tot ist. Das Bit wird während der Programmcompilierung
durch einen Optimierungs-Compiler gesetzt oder wird von Hand gesetzt, wenn
der Befehl in einer Assembler- oder Maschinensprache geschrieben
ist.
-
US-A-5825 674 beschreibt
einen NOP-Befehl mit einem reservierten Feld von Bits, das Informationen
an eine Hardware-Steuereinheit liefert, um geeignete Steuersignale
zu erzeugen, die die Leistung einer mobilen elektronischen Vorrichtung
entweder erhöhen
oder verringern.
-
Zusammengefasst
umfasst die vorliegende Erfindung einen Mikroprozessor mit verringertem Kontextumschaltungsaufwand
und ein entsprechendes Verfahren gemäß den Ansprüchen 1 bzw. 10. Der Mikroprozessor
umfasst ein Arbeits-File, das Dirty-Bit-Register und Arbeitsregister
umfasst. Die Arbeitsregister enthalten für jedes der Dirty-Bit-Register ein
oder mehrere entsprechende Arbeitsregister. Außerdem umfasst der Mikroprozessor
eine Decodiereinheit, die so konfiguriert ist, dass sie einen Befehl decodiert,
der ein Dirty-Bit-Registerfeld besitzt, das ein ausgewähltes der
Dirty-Bit-Register spezifiziert. Die Decodiereinheit ist so konfiguriert,
dass sie in Reaktion darauf Decodiersignale erzeugt. Außerdem ist das
Arbeits-File so konfiguriert, dass es in Reaktion auf die Decodiersignale
veranlasst, dass das ausgewählte
Dirty-Bit-Register ein neues Dirty-Bit speichert. Das neue Dirty-Bit
gibt an, dass jeder Operand, der von dem einem oder von den mehreren
entsprechenden Arbeitsregistern gespeichert wird, inaktiv ist und
nicht mehr im Speicher gesichert werden muss, wenn eine neue Kontextumschaltung
stattfindet.
-
Das
von dem ausgewählten
Dirty-Bit-Register gespeicherte vorausgehende Dirty-Bit kann angegeben
haben, dass wenigstens eines der einen oder mehreren entsprechenden
Arbeitsregister "dirty" ist und einen Operanden
speichert, der aktiv ist und bei der nächsten Kontextumschaltung im
Speicher gesichert werden muss. Allerdings können tatsächlich alle von dem einen oder
den mehreren entsprechenden Arbeitsregistern gespeicherten Operanden
inaktiv sein. In diesem Fall wird der Kontextumschaltungsaufwand
in dem Mikroprozessor dadurch verringert, dass das neue Dirty-Bit
in dem ausgewählten Dirty-Bit-Register
gespeichert wird. Dies erfolgt wegen der Tatsache, dass bei der
nächsten
Kontextumschaltung keiner der Operanden im Speicher gesichert wird.
-
1 ist ein Blockschaltplan
eines Mikroprozessors in Übereinstimmung
mit der vorliegenden Erfindung.
-
2 ist ein Blockschaltplan
einer Ausführungsform
des Arbeits-Files des in 1 gezeigten Mikroprozessors.
-
3 zeigt einen modifizierten
nop-Befehl, der durch den in 1 gezeigten
Mikroprozessor ausgeführt
werden kann.
-
4 zeigt Befehle einschließlich des
in 3 gezeigten nop-Befehls
eines Programms sowie eine Programmunterbrechungs-uBehandlungsroutine,
die durch den Mikroprozessor aus 1 ausgeführt werden.
-
5 ist ein Blockschaltplan
einer weiteren Ausführungsform
des Arbeits-Files
des in 1 gezeigten Mikroprozessors.
-
In 1 ist ein Mikroprozessor 100 mit
verringertem Kontextumschaltungsaufwand für die Behandlung von Programmunterbrechungen
gezeigt. Der Mikroprozessor 100 führt Befehle in einem Befehlsstrom
aus. Die Befehle sind in dem Hauptspeicher 104 des Mikroprozessors 100 gespeichert
und werden durch die Holeinheit 102 des Mikroprozessors 100 aus
dem Hauptspeicher 104 geholt. Die Holeinheit 102 gibt
die Befehle an die Decodiereinheit 106 des Mikroprozessors 100 aus.
Die Decodiereinheit 106 decodiert die Befehle und erzeugt
Decodiersignale, die die Holeinheit 102, den Hauptspeicher 104,
die Ausführungseinheit 108,
das Arbeits-File 110 und das Spezial-File 112 des
Mikroprozessors 100 steuern, um die Befehle auszuführen. Die E/A-Schnittstelle 114 des
Mikroprozessors 100 wird als Schnittstelle mit externen
Vorrichtungen (z. B. sekundärer
Speicher, Graphikkarte, Netzwerkkarte usw.) zum Übertragen von Daten und Befehlen
verwendet.
-
Nunmehr übergehend
zu 2 enthält das Arbeits-File 110N Arbeitsregister
wr0 bis wrN-1 und eine Steuerlogik 116. Die Steuerlogik 116 erzeugt
in Reaktion auf die Decodiersignale von der Decodiereinheit 106 Steuersignale,
die veranlassen, dass die Arbeitsregister wr0 bis wrN-1 die während der
Ausführung
der Befehle verwendeten Operanden speichern und abrufen. Die Steuerlogik 116 lenkt
diese Operanden zwischen (d. h. zu und von) den Arbeitsregistern
wr0 bis wrN-1 und der Ausführungseinheit 108 und
dem Hauptspeicher 104.
-
Außerdem enthält das Arbeits-File 110N Dirty-Bit-Register
dbr0 bis dbrN-1. Für
jedes Arbeitsregister wrn gibt es ein entsprechendes Dirty-Bit-Register
dbrn. Jedes Mal, wenn die Decodiereinheit 106 einen Befehl
mit einem Zielregisterfeld decodiert, das ein ausgewähltes Arbeitsregister
wrn als das Ziel eines neues Operanden spezifiziert, veranlasst
die Steuerlogik 116, dass dieser Operand in dem Arbeitsregister
wrn gespeichert wird. Wie eben erwähnt wurde, erfolgt dies dadurch,
dass in Reaktion auf die durch die Decodiereinheit 106 beim
Decodieren des Befehls erzeugten Decodiersignale ein Steuersignal an
das Arbeitsregister wrn geliefert und der Operand zu ihm gelenkt
wird. Außerdem
veranlasst die Steuerlogik 116, dass das von dem entsprechenden
Dirty-Bit-Register dbrn gespeicherte Dirty-Bit gesetzt wird, um
anzugeben, dass der Operand "dirty" und aktiv ist und
während
der nächsten
Kontextumschaltung im Hauptspeicher 104 gesichert werden
muss. Dies wird dadurch erreicht, dass dem Dirty-Bit-Register dbrn
ein neues Dirty-Bit mit einem entsprechenden binären Wert (z. B. 1 oder 0) bereitgestellt
wird und ein Steuersignal zum Speichern dieses Dirty-Bits an das
Dirty-Bit-Register dbrn ausgegeben wird.
-
Der
von dem Arbeitsregister wrn gespeicherte Operand kann von einem
späteren
Befehl in dem Befehlsstrom benötigt
werden. Dieser Befehl enthält ein
Quellregisterfeld, das das Arbeitsregister wrn als die Quelle des
Operanden spezi fiziert. Die Steuerlogik 116 veranlasst,
dass der Operand aus dem Arbeitsregister wrn ausgelesen wird, indem
ein Steuersignal an das Arbeitsregister wrn geliefert und der Operand
aus dem Arbeitsregister wrn gelenkt wird. Dies erfolgt in Reaktion
auf die Decodiersignale, die beim Decodieren des Befehls durch die
Decodiereinheit 106 erzeugt werden. Obgleich der Operand
jetzt inaktiv ist, gibt das von dem entsprechenden Dirty-Bit-Register
dbrn gespeicherte Dirty-Bit immer noch an, dass er aktiv ist und
bei der nächsten
Kontextumschaltung im Hauptspeicher 104 gesichert werden
muss.
-
Somit
geben die momentan von allen Dirty-Bit-Registern dbr0 bis dbrN-1
gespeicherten Dirty-Bits an, welche der Arbeitsregister wr0 bis
wrN-1 Operanden speichern, die bei der nächsten Kontextumschaltung im
Hauptspeicher 104 gesichert werden müssen. Um die Zusatzbelastung
dabei zu verringern, enthält
der Befehlssatz für
den Mikroprozessor 100 den in 3 gezeigten modifizierten nop-Befehl. Dieser nop-Befehl
besitzt ein Opcode-Feld op, das seinen Opcode spezifiziert, und
eines oder mehrere Dirty-Bit-Registerfelder dbr, die jeweils ein
ausgewähltes
Dirty-Bit-Register dbrn spezifizieren.
-
Der
modifizierte nop-Befehl wird wie bei normalen nop-Befehlen durch
einen Programmierer oder Compiler in einem Programm angeordnet,
um den Befehlsstrom des Programms für die Ausgabe und Ausführung richtig
auszurichten. Außerdem
weiß der
Programmierer oder Compiler, wann von dem Befehlsstrom verwendete
aktive Operanden inaktiv werden. Dies ermöglicht, dass der Programmierer oder
Compiler in jedem der Dirty-Bit-Registerfelder dbr des Befehls für ein ausgewähltes Arbeitsregister wrn,
das einen solchen inaktiven Operanden speichert, ein entsprechendes
Dirty-Bit-Register dbrn spezifiziert.
-
Wie
wieder in 1 gezeigt
ist, ist die Decodiereinheit 106 speziell konfiguriert,
um den modifizierten nop-Befehl zu decodieren. Dabei erzeugt sie die
normalen Decodiersignale zur Ausführung eines normalen nop-Befehls. Übergehend
zu 2 erzeugt sie außerdem Decodiersignale,
die für
jedes Dirty-Bit-Registerfeld dbr des modifizierten nop-Befehls veranlassen,
dass die Steuerlogik 116 das Dirty-Bit, das von dem in
dem Dirty-Bit-Registerfeld dbr spezifizierten Dirty-Bit-Register dbrn gespeichert
ist, löscht.
Im Ergebnis gibt dieses Dirty-Bit daraufhin an, dass der von dem
entsprechenden Arbeitsregister wrn gespeicherte Operand inaktiv
ist und nun während
der nächsten
Kontextumschaltung nicht im Hauptspeicher 104 gesichert
werden muss. Die Arbeitssteuerregisterlogik 116 erledigt
dies dadurch, dass sie dem Dirty-Bit-Register dbrn ein neues Dirty-Bit
mit einem entsprechenden binären
Wert (z. B. 0 oder 1) bereitstellt und Steuersignale zum Speichern
dieses Dirty-Bits an das Dirty-Bit-Register dbrn ausgibt. Daraufhin
wird dieser Operand während
der nächsten
Kontextumschaltung nicht im Hauptspeicher 104 gesichert,
da das von dem Dirty-Bit-Register dbrn gespeicherte Dirty-Bit angibt,
dass er nicht gesichert werden muss.
-
Dadurch,
dass der modifizierte nop-Befehl auf diese Weise verwendet wird,
wird die Anzahl der Operanden verringert, die durch die Dirty-Bit-Register
dbr0 bis dbrN-1 zum Zeitpunkt der nächsten Kontextumschaltung als
aktiv identifiziert werden. Dies verringert die Anzahl der Operanden,
die bei der nächsten
Kontextumschaltung im Hauptspeicher 104 gesichert werden
müssen.
Im Ergebnis wird der Kontextumschaltungsaufwand des Mikroprozessors 100 verringert,
da die Zeit und die Menge des Hauptspeichers 104, die zum
Ausführen
der Kontextumschaltung benötigt
werden, verringert werden.
-
Um
dies wirksamer zu veranschaulichen, gibt 4 ein Beispiel eines Programms und einer Programmunterbrechungs-Behandlungsroutine,
die von dem Mikroprozessor 100 ausgeführt werden. Das Programm enthält, siehe
auch 2, einen Ladebefehl
Id zum Laden des an der Adresse addr1 des Hauptspeichers 104 gespeicherten
Operanden in das Arbeitsregister wr2. Da das Arbeitsregister wr2 als
das Ziel für
den Operanden spezifiziert ist, wird das von dem entsprechenden
Dirty-Bit-Register dbr2 für
das Arbeitsregister wr2 gespeicherte Dirty-Bit gesetzt, um anzugeben,
dass der Operand aktiv ist. Später
veranlasst ein Additionsbefehl add in dem Programm, das die von
den Arbeitsregistern wr2 und wr1 gespeicherten Operanden miteinander
addiert werden, wobei der sich ergebende Operand in dem Arbeitsregister
wr3 gespeichert wird. Der von dem Arbeitsregister wr2 gespeicherte
Operand ist jetzt inaktiv, da er von späteren Befehlen in dem Befehlsstrom
des Programms nicht verwendet wird. Daraufhin wird ein modifizierter
nop-Befehl mnop in dem Programm ausgeführt. Der modifizierte nop-Befehl mnop
spezifiziert das Dirty-Bit-Register dbr2. Er wird nicht nur zum
Ausrichten der Befehle des Programms, sondern auch zum Löschen des
Dirty-Bit-Registers dbr2 verwendet.
-
Nachdem
der modifizierte nop-Befehl ausgeführt worden ist, kann eine Programmunterbrechung auftreten.
In diesem Fall überträgt der Mikroprozessor 100 die
Ausführung
von dem Programm an eine herkömmliche
Programmunterbrechungs-Behandlungsroutine. Der Spezialregister-Schreibbefehl
wrspr in der Programmunterbrechungs-Behandlungsroutine veranlasst,
dass der von dem Arbeitsregister wr1 gespeicherte Operand in einem
Spezialregister sp0 des Spezial-Files 112 gesichert wird.
Daraufhin veranlasst der Dirty-Bit-Register-Schreibbefehl wrdbr, dass die von den
Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits in
dem Arbeitsregister wr1 gespeichert werden. Wenn dies erfolgt ist,
bestimmt der Bit-Test-Befehl btst, ob das von dem Dirty-Bit-Register
dbr0 gespeicherte Dirty-Bit null oder eins ist. Falls das Dirty-Bit
null ist, gibt dies an, dass der von dem Arbeitsregister wr0 gespeicherte
Operand inaktiv ist. In diesem Fall verzweigt die Programmunterbrechungs-Behandlungsroutine
als Ergebnis des Verzweigung-bei-Null-Befehls bz (branch on zero)
zu dem Bit-Test-Befehl btst an der Marke next1. Somit wird der von
dem Arbeitsregister wr0 gespeicherte Operand nicht im Hauptspeicher 104 gesichert,
da er inaktiv geworden ist. Wenn das Dirty-Bit dagegen eins ist,
gibt dies an, dass der Operand aktiv ist. In diesem Fall verzweigt
die Programmunterbrechungs-Behandlungsroutine nicht, und der Speicherbefehl
st veranlasst, dass der in dem Arbeitsregister wr0 gespeicherte
Operand an der Adresse addr2 im Hauptspeicher 104 gesichert
wird.
-
Daraufhin
setzt die Programmunterbrechungs-Behandlungsroutine diesen Prozess
für jedes
der von den Dirty-Bit-Registern dbr1 bis dbrN-1 gespeicherten verbleibenden
Dirty-Bits fort. Dadurch werden die durch die Dirty-Bits in den
Dirty-Bit-Registern
dbr0 bis dbrN-1 identifizierten inaktiven Operanden bei der nächsten Kontextumschaltung
nicht im Hauptspeicher 104 gesichert. Dies verringert die Menge
des Verkehrs im Hauptspeicher 104, der zum Sichern der
durch die Dirty-Bits
identifizierten aktiven Operanden erforderlich ist. Auf diese Weise
wird der Kontextumschaltungsaufwand des Mikroprozessors 100 verringert.
Wenn die Programmunterbrechungs-Behandlungsroutine abgeschlossen
ist, veranlasst der Programmunterbrechungs-Rücksprungbefehl trp rtn (trap
return), dass der Mikroprozessor 100 die Ausführung zurück an das
Programm überträgt, und
veranlasst er außerdem,
dass die von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits
für die
nächste
Kontextumschaltung gelöscht
werden.
-
Wie
aus dem Vorstehenden ersichtlich ist, können nicht alle Dirty-Bits
für die
Operanden, die nach der vorangehenden Kontextumschaltung aktiv werden
und vor der nächsten
Kontextumschaltung inaktiv werden, tatsächlich vor der nächsten Kontextumschaltung
gelöscht
werden. Dies kann an der Tatsache liegen, dass es in dem Befehlsstrom
des Programms wenig Schlitze zum Einfügen des modifizierten nop-Befehls
geben kann. Allerdings werden diese Operanden dennoch durch die
Programmunterbrechungs-Behandlungsroutine konservativ im Hauptspeicher 104 gesichert.
Somit wirkt sich die Aufnahme des modifizierten nop-Befehls nicht
nachteilig auf die Ausführung
des Programms nach der Kontextumschaltung in dem Mikroprozessor 100 aus.
-
Es
ist möglich,
dass ein Programmierer irrtümlich
einen modifizierten nop-Befehl
zum Löschen eines
durch eines der Dirty-Bit-Register dbr0 bis dbrN-1 gespeicherten
Dirty-Bits, das tatsächlich
nicht gelöscht
werden soll, einfügt.
Dies ist ein Software-Fehler und sollte nicht erfolgen. Das Ergebnis
ist, dass eines der Arbeitsregister wr0 bis wrN-1 zufällig den
falschen Operanden empfangen kann, wenn eine Kontextumschaltung
auftritt. Allerdings ist diese Wirkung auf das Programm des Programmierers
beschränkt,
während
ansonsten nichts in dem Mikroprozessor 100 beeinflusst
wird.
-
Außerdem ist
es möglich,
dass der Programmierer einen normalen nop-Befehl ausgeben möchte, ohne irgendwelche von
den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten Dirty-Bits
zu löschen. Um
diese Möglichkeit
zu betrachten, kann der Befehlssatz des Mikroprozessors 100 sowohl
einen normalen nop-Befehl als auch den eben beschriebenen modifizierten
nop-Befehl enthalten. In diesem Fall hätten der normale und der modifizierte
nop-Befehl verschiedene Opcodes. Die Decodiereinheit 106 wäre dann
so konfiguriert, dass sie beide Typen von nop-Befehlen decodiert, um sie richtig zu
unterscheiden und auszuführen.
-
Alternativ
hierzu ist, falls der Mikroprozessor 100 eine SPARC-Architektur
besitzt, das Arbeitsregister wr0 immer festverdrahtet, so dass es
einen Operanden mit einem Nullwert enthält und durch den Wert des von
dem entsprechenden Dirty-Bit-Register dbr0 gespeicherten Dirty-Bits
nicht beeinflusst wird. Somit braucht der Programmierer lediglich
das Dirty-Bit-Register dbr0 in dem Dirty-Bit-Registerfeld dbr des modifizierten nop-Befehls
zu spezifizieren, wenn er mit dem modifizierten nop-Befehl ein normales
nop implementieren möchte.
Im Ergebnis bleiben die von den anderen Dirty-Bit-Registern dbr1
bis dbrN-1 gespeicherten Dirty-Bits ungeändert. Auf diese Weise benötigt der
Befehlssatz für
den Mikroprozessor 100 lediglich einen nop-Befehl.
-
Außerdem können die
Arbeitsregister wr0 bis wrN-1 anhand von 5 und im Gegensatz zu 2 in Sätzen organisiert sein, wobei
jeder Satz mehrere Arbeitsregister wrn bis wrm besitzt. In diesem
Fall gibt es lediglich J Dirty-Bit-Register dbr0 bis dbrJ-1, so
dass es für
jeden Satz von Arbeitsregistern wrn bis wrm ein entsprechendes Dirty-Bit-Register dbrj
gibt. Jedes Mal, wenn in einem der Arbeitsregister wrn bis wrm eines
Satzes ein neuer Operand gespeichert wird, wird das Dirty-Bit des
entsprechenden Dirty-Bit-Registers dbrj gesetzt, um anzugeben, dass wenigstens
einer der von den Arbeitsregistern wrn bis wrm gespeicherten Operanden
des Satzes aktiv ist. Der modifizierte nop-Befehl wird daraufhin
nur dann zum Löschen
dieses Dirty-Bits verwendet, wenn alle Arbeitsregister wrn bis wrm
in dem Satz Operanden speichern, die inaktiv sind. Dagegen werden
alle von den Arbeitsregistern wrn bis wrm in dem Satz gespeicherten
Operanden im Hauptspeicher 104 gesichert, wenn das Dirty-Bit
angibt, dass wenigstens eines von ihnen immer noch aktiv ist. Wie
in dem Fall, in dem es für
jedes Arbeitsregister wrn ein entsprechendes Dirty-Bit-Register
dbrn gibt, bestimmt der Programmierer oder Compiler, wann alle von
den Arbeitsregistern wrn bis wrm in dem Satz gespeicherten Operanden
inaktiv geworden sind. Außerdem
veranlasst die Steuerlogik 116, dass das Setzen und Löschen des
Dirty-Bits für
diese Operanden auf die gleiche Weise wie früher beschrieben ausgeführt wird.
-
In
der vorstehenden Diskussion wird zum Verringern des Kontextumschaltungsaufwands
des Mikroprozessors 100 ein modifizierter nop-Befehl verwendet.
Dies erfolgt wegen der Tatsache, dass der modifizierte nop-Befehl ungenutzte
Bits besitzt, die als das Dirty-Bit-Feld dbr dienen können, sowie wegen
der Tatsache, dass der modifizierte nop-Befehl zweckmäßig in ein
Programm eingefügt
werden kann, ohne die Leistung des Programms zu beeinflussen. Allerdings
können
andere Befehle, die normalerweise in einem Programm verwendet werden und
ungenutzte Bits besitzen, in der Weise modifiziert werden, dass
die ungenutzten Bits als Dirty-Bit-Feld dbr dienen. Auf diese Weise
könnte
ein solcher Befehl auf ähnliche
Weise wie zuvor beschrieben zusätzlich
zu dem modifizierten nop-Befehl oder an seiner Stelle verwendet
werden, um die von den Dirty-Bit-Registern dbr0 bis dbrN-1 gespeicherten
Dirty-Bits zu löschen.