-
GEBIET DER ERFINDUNG
-
Die
Erfindung betrifft allgemein das Gebiet der Computerarchitektur
und insbesondere ein Verfahren und eine Vorrichtung, die es erlauben,
Schattenregistersätze
an bestimmte Interruptvektoren zu binden.
-
HINTERGRUND DER ERFINDUNG
-
Innerhalb
einer Computerverarbeitungsumgebung ist ein Interrupt, wie der Name
sagt, ein Ereignis, das die normale Programmausführung unterbricht. Programme
laufen auf einem Mikroprozessor sequentiell ab, und dieser Ablauf
wird nur von denjenigen Befehlen verändert, die explizit ein Programm
dazu veranlassen, in einer bestimmten Weise von der sequentiellen
Verarbeitung abzuweichen (z. B. Sprungbefehle, Verzweigungsbefehle
usw.). Dagegen geben Interrupts den Systementwicklern einen Mechanismus,
den normalen Programmablauf "einzufrieren", damit ein besonderes
Programm ausgeführt
wird, das Interruptbearbeiter heißt. Anschließend kann
der Prozessor mit dem normalen Programmablauf so fortfahren, als
wäre er
niemals unterbrochen worden. Der Interruptbearbeiter wird nur dann
ausgeführt,
wenn ein gewisses Ereignis (Interrupt) erfolgt. Das Ereignis kann
ein Zeitgeberüberlauf
sein oder die Übertragung
eines Zeichens auf einem seriellen Port. Durch das Bereitstellen
der Fähigkeit,
den normalen Programmablauf zu unterbrechen, lassen sich gewisse
Ereignisse wie die oben genannten viel einfacher und effizienter
abarbeiten, und es ist nicht erforderlich, dass der Mikroprozessor
periodisch besondere Programme ausführt.
-
1 zeigt
ein Blockdiagramm, das die Erläuterung
der Art und Weise unterstützt,
in der eine herkömmliche
Mikroprozessorumgebung Interrupts verarbeitet. Die Umgebung 100 enthält einen
Mikroprozessor 102, der mit einem Interruptcontroller 110 und
einem Speicher 120 verbunden ist. Der Mikroprozessor enthält einen
Kern 104, der Befehle ausführt, die aus dem Speicher 120 geholt
werden. Zusätzlich
erzeugt der Kern 104 eine Anzahl Interrupts 106,
zu denen Softwareinterrupts und Hardwareinterrupts (z. B. Zeitgeberüberlauf) gehören, die
der Mikroprozessor 102 "abarbeiten" muss. Dies wird
im Folgenden anhand von 2 weiter beschrieben. Der Mikroprozessor 102 enthält ein Ursachenregister 108,
das dem Mikroprozessor 102 die Ursache oder Quelle eines
Interrupts anzeigt.
-
Der
Interruptcontroller 110 ist über Interruptleitungen 116 mit
einer Anzahl externer Vorrichtungen 118 und mit anderen
Systeminterrupts 114 verbunden. Der Interruptcontroller 110 ordnet
die Interrupts 110 und liefert sie über Interruptleitungen 112 an
den Mikroprozessor 102. Fachleute wissen, dass frühe Mikroprozessoren 102 mit
einer vor eingestellten Anzahl von Interruptleitungen 112 ausgestattet
waren, die von den Entwicklern auf Systemebene verwendet wurden.
Mit zunehmendem Bedarf an Interrupts hat man keine weiteren Anschlussstifte
am Mikroprozessor hinzugefügt,
sondern Interruptcontroller 110 bereitgestellt, die eine
Schnittstelle zwischen der gewachsenen Anzahl Interrupts 114, 116 und
den vorhandenen Interruptleitungen 112 auf dem Mikroprozessor 102 bilden.
-
Der
Mikroprozessor 102 ist mit dem Speicher 120 verbunden,
damit wie erwähnt
Befehle für
die Ausführung
geholt werden, damit Informationen bezüglich der Interrupts geholt
werden, beispielsweise eine Interruptvektortabelle 122,
und damit die Programme geholt werden, die die Interrupts 124 abarbeiten.
-
2 zeigt
ein Flussdiagramm 200, das den herkömmlichen Programmfluss erläutert, falls
im Mikroprozessor 102 ein Interrupt auftritt. Die Arbeitsweise
des Programmablaufs zum Abarbeiten von Interrupts wird nun mit Hilfe
von 1 und 2 beschrieben.
-
Die
Programmausführung
beginnt im Block 202 und geht zum Block 204 über.
-
Im
Block 204 führt
der Mikroprozessor 102 Befehle aus, die aus dem Speicher 120 geholt
werden. Der Ablauf geht nun zum Entscheidungsblock 206 über.
-
Im
Entscheidungsblock 206 stellt der Mikroprozessor 102 fest,
ob ein Interrupt aufgetreten ist, und ob der Interrupt entweder
aus dem Kern 104 stammt oder über die Interruptleitungen 112 kommt.
Der Mikroprozessor 102 enthält (nicht dargestellte) Logik,
die einen auftretenden Interrupt erkennt und zwischenspeichert und
dadurch den Mikroprozessor 102 von dem Interrupt unterrichtet.
Der Mikroprozessor 102 überprüft in der Regel
den Status der Zwischenspeicher jeweils zwischen zwei Befehlsausführungen.
Ist kein Interrupt aufgetreten, so geht der Fluss zurück zum Block 204,
und der Mikroprozessor 102 fährt damit fort, Befehle auszuführen. Tritt
jedoch ein Interrupt auf, so geht der Ablauf zum Block 208 über.
-
Im
Block 208 beendet der Mikroprozessor 102 das Ausführen der
aktuellen Programmbefehle und sichert seine aktuelle Statusinformation.
Dies erlaubt es dem Mikroprozessor 102, nach der Antwort
auf den Interrupt zu seinem momentanen Status zurückzukehren.
Fachleuten ist geläufig,
dass zu einer derartigen Statusinformation der Wert im Programmzähler, die
Werte im Statusregister, diverse Zeiger usw. gehören. Der Ablauf geht nun zum
Block 210 über.
-
Im
Block 210 springt der Mikroprozessor 102 zu einem
besonderen Programm, das Interruptbearbeiter (oder Ablaufunterbrechungsbearbeiter)
heißt,
beispielsweise zum Interruptbearbeiter Nr. 1 124. Der Ablauf geht
nun zum Block 212 über.
-
Im
Block 212 werden die Inhalte der Allzweckregisterdatei
(GPR) gesichert. In jedem Mikroprozessor bietet die GPR Registerplatz,
in dem Daten gespeichert, untersucht, manipuliert usw. werden. Vor
dem Beginn der Bearbeitung eines Interrupts muss die GPR gesichert
werden, damit der Interruptbearbeiter den Registerplatz nutzen kann.
Dies kann sich nur auf einige Register in der GPR erstrecken oder
auf alle Register in der GPR. Der Fluss geht nun zum Block 214 über.
-
Im
Block 214 bearbeitet die besondere Interruptbearbeitungsroutine 124,
die angesprungen wurde, den Interrupt. Der Fluss geht nun zum Block 216 über.
-
Im
Block 216 werden die Inhalte der GPR wieder hergestellt,
so dass die GPR den Status einnimmt, in dem sie sich befunden hat,
bevor der Mikroprozessor 102 den Interrupt angenommen hat.
Der Ablauf geht nun zum Block 218 über.
-
Im
Block 218 gibt der Interruptbearbeiter 124 den
Programmablauf zurück
an den Block 204, damit mit der Ausführung des Programms fortgefahren
wird, das beim Auftreten des Interrupts ausgeführt wurde. Als Teil des Rückkehrschritts
wird der Status des Mikroprozessors wieder hergestellt.
-
Fachleute
können
erkennen, dass die obige Beschreibung des Mikroprozessorsystems 100 und
des Interruptbearbeitungs-Flussdiagramms 200 sehr allgemein
gehalten ist. In der Beschreibung werden kompliziertere Aspekte
der Interruptverarbeitung ausgespart, beispielsweise das Geschehen,
falls mehrere Interrupts zur gleichen Zeit auftreten oder falls
ein Interrupt während
der Bearbeitung eines anderen Interrupts auftritt oder wie die Priorität bei mehreren
Interrupts zugewiesen wird, usw. Die obigen Angaben reichen jedoch
dazu aus, darzustellen dass beim Auftreten von Interrupts der normale
Programmablauf angehalten wird, der Status des Mikroprozessors gespeichert
wird, und dass die Inhalte der Ressourcen im Mikroprozessor einschließlich der
GPR woanders gesichert werden müssen,
bevor der Interrupt bearbeitet wird.
-
Für Interrupts,
die nicht unmittelbar bearbeitet werden müssen, ist die Zeit unkritisch,
die zum Sichern der Inhalte der GPR erforderlich ist, beispielsweise
der Inhalte, die oben unter Bezug auf Block 212 beschrieben
wurden. Benötigt
man beispielsweise 20 bis 50 Taktzyklen zum Abspeichern der Inhalte
der GPR, bevor Daten von einem Floppydiskcontroller geholt werden,
so hat die Verzögerung
für das
Bestimmen des Interrupttyps keine Folgen.
-
In
zahlreichen Fällen
ist jedoch die Verzögerung
im Zusammenhang mit dem Sichern der Inhalte der GPR (siehe 2)
nicht hinnehmbar.
-
Man
benötigt
also einen Mechanismus, der es einem Systementwickler erlaubt, Interrupts
mit hoher Priorität
zu bearbeiten, ohne dass er zuvor erst die Inhalte der GPR abspeichern
muss.
-
Zudem
benötigt
man ein Verfahren und eine Vorrichtung, die Schattenregister für die GPR
bereitstellen, die für
das Bearbeiten von Interrupts und Unterbrechungen verwendet werden.
-
Zusätzlich benötigt man
ein Verfahren und eine Vorrichtung, die bestimmte Schattenregistersätze an bestimmte
Interrupts oder Interruptvektoren bindet, damit bestimmte Interruptroutinen "effektiv" ihren eigenen Registersatz
haben können.
-
Ferner
benötigt
man ein Verfahren und eine Vorrichtung, die es erlauben, dass Interrupts
mit hoher Priorität
so früh
wie möglich
mit der Nutzung ihrer eigenen zugewiesenen Ressourcen beginnen können und nicht
darauf warten müssen,
dass die Systemressourcen zuerst woanders gesichert werden.
-
US-A-4,217,638
offenbart eine CPU, die zahlreiche Gruppen von Speichereinheiten
umfasst, die als zahlreiche allgemeine Registersätze (Schattenregistersätze) arbeiten
und als allgemeiner Registersatz zu verwenden sind. Ein Interruptvektor-Generator
erzeugt einen Unterbrechungsvektor, der mit einem Interruptbearbeiter
verknüpft
ist, falls das Verarbeitungssystem einen Interrupt empfängt. Die
CPU enthält
auch eine Schattensatz-Abbildungslogik,
die sowohl mit den zahlreichen Gruppen von Speichereinheiten als
auch dem Interruptvektor-Generator verbunden ist und einen der zahlreichen
allgemeinen Registersätze
wählt,
der vom Interruptbearbeiter zu verwenden ist. Ein Statusregister,
das mit der Schattensatz-Abbildungslogik verbunden ist, speichert
Daten entsprechend einer aktuellen Gruppe von Speichereinheiten
und eines vorhergehenden Schattensatzes.
-
ZUSAMMENFASSUNG
-
Die
Erfindung liefert ein Verfahren und eine Vorrichtung, die es einem
Systementwickler erlauben, Schattenregistersätze programmierbar an bestimmte
Interrupts zu binden, und zwar abhängig entweder von der Höhe der Priorität des Interrupts
oder vom Unterbrechungsvektor, der zum Aufruf der Interruptroutine
verwendet wird.
-
Die
Erfindung betrifft ein Verarbeitungssystem, umfassend: eine Anzahl
Schattenregistersätze;
einen Interruptvektor-Generator, der einen Ablaufunterbrechungsvektor
erzeugt, der mit einem Interruptbearbeiter verbunden ist, falls
das Verarbeitungssystem einen Interrupt empfängt; und eine Schattensatz-Abbildungslogik,
die sowohl mit den Schattenregistersätzen als auch dem Interruptvektor-Generator
verbunden ist und einen der Schattenregistersätze wählt, den der Interrupthandler
zu verwenden hat.
-
Einige
Aspekte der Erfindung sind jeweils in den unabhängigen Ansprüchen 1,
12 und 14 bestimmt. Weitere Ausführungsformen
der Erfindung sind in den beigefügten
abhängigen
Ansprüchen
spezifiziert.
-
Gemäß einem
weiteren Aspekt betrifft die Erfindung ein Verfahren innerhalb eines
Verarbeitungssystems, in dem Schattenregistersätze für Ablaufunterbrechungsroutinen
verwendet werden. Das Verfahren umfasst: beim Empfang eines Interrupts,
das Feststellen, welche Ablaufunterbrechungsroutine einer Anzahl
Ablaufunterbrechungsroutinen ausgeführt werden soll; und abhängig vom
empfangenen Interrupt, das Auswählen
eines Registersatzes aus zahlreichen Schattenregistersätzen für die Verwendung
durch die eine Ablaufunterbrechungsroutine aus der Anzahl Ablaufunterbrechungsroutinen,
wobei im Auswahlschritt programmierbare Register verwendet werden,
die Daten enthalten, die angeben, welcher Schattenregistersatz der
zahlreichen Schattenregistersätze
für ihre
Register zu verwenden ist.
-
Gemäß einem
anderen Aspekt betrifft die Erfindung ein Computerprogrammprodukt
zum Gebrauch mit einer Computervorrichtung, wobei das Computerprogrammprodukt
ein von einem Computer nutzbares Medium enthält, und computerlesbarer Programmcode
in dem Medium verkörpert
ist, der einen noch zu beschreibenden Mikroprozessor anleitet. Der
computerlesbare Programmcode enthält: einen ersten Programmcode, der
Schattenregistersätze
bereitstellt; und einen zweiten Programmcode, der eine programmierbare
Schattensatz-Abbildungslogik bereitstellt, mit der Schattenregistersätze ausgewählt werden,
die von den Interruptroutinen verwendet werden, die von den Ablauf unterbrechungsvektoren
adressiert werden, wobei die Abbildungslogik programmierbare Felder
enthält,
die den Ablaufunterbrechungsvektoren zugeordnet sind.
-
Weitere
Merkmale und Vorteile der Erfindung gehen aus dem verbleibenden
Teil der Patentschrift und den Zeichnungen hervor.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm einer herkömmlichen
Mikroprozessorumgebung.
-
2 zeigt
ein Flussdiagramm eines herkömmlichen
Verfahrens zum Bearbeiten von Interrupts.
-
3 zeigt
ein Blockdiagramm eines Mikroprozessors der Erfindung.
-
4 zeigt
eine Tabelle, die die GPR für
einen MIPS® Architecture
Microprocessor erläutert.
-
5 zeigt
ein Blockdiagramm eines Statusregisters innerhalb eines Mikroprozessors
der Erfindung.
-
6a–b eine
Tabelle, die das Statusregister in 5 beschreibt.
-
7 zeigt
ein Blockdiagramm eines ersten Schattenregister-Abbildungsregisters
gemäß der Erfindung.
-
8 zeigt
eine Tabelle, die die Felder innerhalb des Schattenregister-Abbildungsregisters
in 7 beschreibt.
-
9 zeigt
ein Blockdiagramm eines zweiten Schattenregister-Abbildungsregisters
gemäß der Erfindung.
-
10 zeigt
eine Tabelle, die die Felder innerhalb des Schattenregister-Abbildungsregisters
in 9 beschreibt.
-
11 zeigt
ein Blockdiagramm, das die Auswahl eines Schattenregistersatzes
gemäß der Erfindung mit
Hilfe des Interruptvektors erläutert,
der erzeugt wird, wenn ein Interrupt auftritt.
-
12 ein
Flussdiagramm, das das Verfahren zum Auswählen eines Schattenregistersatzes
gemäß der Erfindung
erläutert.
-
13 zeigt
ein Blockdiagramm, das einen Befehl zum Lesen der Inhalte eines
Registers in einem Schattenregister in einen aktuellen Registersatz
beschreibt.
-
14 zeigt
ein Blockdiagramm, das einen Befehl zum Schreiben der Inhalte eines
aktuellen Registers in einen Schattenregistersatz beschreibt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Das
Problem des Bereitstellens von Prozessorressourcen zum Gebrauch
in der Interruptverarbeitung ist in allen Mikroprozessorarchitekturen
anzutreffen. Damit der Leser die neuartige Lösung für die beschriebenen Probleme
besser verstehen kann, wird die Lösung insbesondere anhand von
MIPS®-Prozessoren
beschrieben, die von MIPS Technologies, Inc. in Mountain View, Kalifornien,
entwickelt wurden (siehe www.mips.com).
-
3 zeigt
ein Blockdiagramm eines Mikroprozessor-gestützten Systems 300 der
Erfindung. Das System 300 enthält einen Mikroprozessor 310,
der mit einem Interruptcontroller 302 verbunden ist. Fachleuten ist
bekannt, dass der Mikroprozessor 310 und der Interruptcontroller 302 räumlich getrennt
in eigenen Chips sitzen können
oder dass sie sich wahlweise auf dem gleichen Siliciumstück in einem
System auf einem Chip befinden können
(SOC, SOC = System On Chip). Der Interruptcontroller 302 ist
mit einer Anzahl Systeminterruptleitungen 304 verbunden.
In einer Ausführungsform
sind sechzehn Systeminterruptleitungen 304 im System 300 bereitgestellt.
Man kann leicht zusätzliche
Interruptleitungen unterbringen, indem man mehrere Interruptcontroller 302 in
Kaskade schaltet. Der Interruptcontroller 302 priorisiert
alle seine Interrupts 304 und leitet seine Interruptanforderungen
an den Prozessor 302 auf den Interruptleitungen 306 des
Prozessors 302 weiter. In einer Ausführungsform bietet der Prozessor 310 acht
Interruptleitungen 306. Zusätzlich leitet der Interruptcontroller
auf dem Interruptbus 308 die Interruptanforderungen 304 an
andere Prozessorkerne (nicht dargestellt) weiter.
-
Im
Mikroprozessor 310 befinden sich ein Kern 312,
ein Interruptvektor-Generator 316, ein Statusregister 320,
eine Schattensatz-Abbildungslogik 322, ein Allzweckregistersatz 324,
der einzelne Register aufweist (im Weiteren in 4 beschrieben),
die über
Befehle ansprechbar sind, und eine Anzahl Schattenregistersätze 326.
In einer Ausführungsform
sind die Schattenregistersätze 326 ein
Ersatz für
die normale GPR 324, die in bestimmten Betriebsarten des
Prozessors verwendet werden können – hierzu
gehören
Kernel Mode und Exception Mode – oder
als Antwort auf einen vektorisierten Interrupt oder eine Ablaufunterbrechung.
Ist ein Schattenregistersatz 326 einmal mit einem bestimmten
Modus verbunden, so arbeitet eine Referenz auf adressierbare Register
in der GPR 324 (über
Operanden) genau so wie man es erwartet, sie bezieht sich jedoch
auf Register, die diesem Modus zugewiesen sind.
-
Der
Kern 312 ist verantwortlich für das Ausführen von Befehlen, die ein
Speicher (nicht dargestellt) an den Mikroprozessor 310 liefert.
Zusätzlich
erzeugt der Kern 312 eine Anzahl kernspezifischer Interrupts 314 (oder
intern erzeugter Interrupts) für
den Vektorgenerator 316. Dies wird im Weiteren beschrieben.
Der Vektorgenerator 316 empfängt auch die Interrupts 306,
die der Interruptcontroller 302 liefert (d. h. extern erzeugte Interrupts).
Der Vektorgenerator 316 verbindet die priorisierten Interrupts 306 mit
den Inter rupts 314, die der Kern 312 erzeugt,
und generiert einen Interruptvektor 318, der dem Interrupt
mit der höchsten
Priorität
zugeordnet ist, die der Vektorgenerator 316 bestimmt. Eine
vollständige
Beschreibung der Art, in der der Vektorgenerator 316 die
kerninternen Interrupts und die Interrupts von außerhalb
des Kerns priorisiert und einen Interruptvektor erzeugt, ist im
gleichzeitig anhängigen
US-Patent US-A-2003074508 mit dem Titel "CONFIGURABLE PRIORITIZATION OF CORE
GENERATED INTERRUPTS" zu
finden, das hiermit durch Bezugnahme für alle Zwecke eingeschlossen
ist.
-
Das
Statusregister 320 enthält
ein CSS-Register 321 (CSS = Current Shadow Set, aktueller
Schattensatz) und ein PSS-Register 323 (PSS = Previous
Shadow Set, vorhergehender Schattensatz). Die Schattensatz-Abbildungslogik 322 enthält ebenfalls
zwei Register, nämlich
ein SRSLo-Register 325 und ein SRSHi-Register 327.
Die genannten vier Register werden im Weiteren beschrieben. Um den
Zusammenhang für
die folgende Beschreibung herzustellen wird die Erfindung nun anhand
von 3 im Überblick
kurz beschrieben.
-
Wie
im Abschnitt "Hintergrund
der Erfindung" angegeben
ist es erforderlich, die Zeitspanne zu verkürzen oder zu beseitigen, die
zum Sichern und Wiederherstellen der GPR 324 beim Eintritt
in Interrupts oder Ablaufunterbrechungen mit hoher Priorität erforderlich
ist. Zusätzlich
besteht Bedarf, besondere Prozessorbetriebsarten mit der gleichen
Fähigkeit
bereitzustellen. Dies geschieht durch das Einführen einer Anzahl Schattenregistersätze 326,
die einige oder alle Informationen in der GPR 324 duplizieren.
Die Schattenregistersätze 326 sind über Kernelmode-Software
mit einem Prozessormodus oder einem Interrupt oder Ablaufunterbrechungsvektor
verbunden. Die Anzahl der Schattenregistersätze 326 hängt von
der Implementierung ab. In einer Ausführungsform kann sich der Bereich
von eins bis fünfzehn
erstrecken.
-
Tritt
bei Betrieb ein Interrupt auf (beispielsweise auf den Leitungen 306 oder 316)
oder eine Ablaufunterbrechung, so wählt der Vektorgenerator 316 einen
Ablaufunterbrechungsvektor 318, der den Mikroprozessor 310 veranlasst,
zu dem Ablaufunterbrechungs-Bearbeitungsprogramm zu springen, das
an der Speicheradresse beginnt, die der Ablaufunterbrechungsvektor 318 bestimmt.
Zusätzlich
wird der Vektor 318 an die Schattensatz-Abbildungslogik 322 geliefert.
Die Abbildungslogik 322 wählt einen der Schattensätze 326 (dies wird
im Weiteren genauer beschrieben), der während der Ablaufunterbrechung
zu verwenden ist, und liefert dem Statusregister 320 eine
Angabe über
den gewählten
Schattensatz 326. Die Inhalte des CSS 321 werden verändert, damit
sie den neu gewählten
Schattensatz 326 widerspiegeln. Die früheren Inhalte des CSS wer den im
PSS 323 abgelegt. Beginnt der Mikroprozessor 310 mit
dem Ausführen
des Ablaufunterbrechungs-Bearbeitungsprogramms, so verwendet er
anstelle der GPR 324 für
die Datenmanipulation einen der Schattensätze 326, der von der
Schattensatz-Abbildungslogik 322 gewählt ist. Nach der Rückkehr aus
dem Ablaufunterbrechungs-Bearbeitungsprogramm werden die Inhalte
des PSS 323 im CSS 321 abgelegt, damit die Programmausführung weiter
mit der GPR 324 erfolgt. Somit kann das Ablaufunterbrechungs-Bearbeitungsprogramm sofort
mit der Verwendung eines Registersatzes beginnen und braucht nicht
vorher die Inhalte der GPR 324 in den Speicher zu kopieren.
Zusätzlich
beendet das Ablaufunterbrechungs-Bearbeitungsprogramm seine Aufgabe
rascher, da an deren Ende die Inhalte der GPR 324 nicht
zurückgeholt
werden müssen.
-
4 zeigt
eine Tabelle 400, die die zweiunddreißig Register in der GPR 324 ausführlich darstellt.
Diese Register sind die Register, die die MIPS-Architektur bereitstellt.
Sie werden in Einzelheiten beschrieben, um eine besondere Implementierung
der Erfindung darzustellen. Fachleuten ist bekannt, dass die Erfindung
nicht auf die besondere Registeranordnung der MIPS-Architektur eingeschränkt ist.
-
In
einer Ausführungsform
werden alle zweiunddreißig
in Tabelle 400 dargestellten Register in jeden der Schattenregistersätze 326 dupliziert.
Eine derartige Ausführungsform
vereinfacht die Fertigung. Wahlweise werden in einer anderen Ausführungsform
nur gewisse Register der zweiunddreißig Register in der GPR 324 dupliziert,
um Chipfläche
einzusparen. In dieser Ausführungsform
werden die Register 1 (at), 2–3
(v0–v1), 4–7 (a0–a3), 8–15 (t0–t7), 26–27 (k0–k1), 28
(gp), 29 (sp) und 31 (ra) zum Duplizieren empfohlen.
-
Anhand
von 5 wird nun ein Blockdiagramm 500 angegeben,
das das Format des Statusregisters 320 erläutert. In
der MIPS-Architektur ist ein Statusregister SR in der COPO-Schnittstelle
vorhanden. Das Statusregister 320 unterscheidet sich von
SR, und es wird in den MIPS Version 2.0 Architecture Extensions
als Status1 Register bezeichnet. Das Status1 Register 320 enthält 10 Felder
einschließlich
des PSS-Felds 323 und des CSS-Felds 321, deren
Arbeitsweise im Folgenden anhand von 11 genauer
beschrieben wird.
-
Anhand
von 6a–b
wird nun eine Tabelle 600 gezeigt, die eine ausführliche
Beschreibung eines jeden Felds innerhalb des Status1 Registers 320 liefert.
Für diese
Erfindung sind wiederum die Felder PSS 323 und CSS 321 von
besonderem Interesse.
-
7 zeigt
ein Blockdiagramm 700, das die Felder im SRSLo-Register 325 erläutert. In
einer Ausführungsform
ist das SRSLo-Register 325 ein Zweiunddreißig-Bit-Register,
das acht Vier-Bit-Felder aufweist. Jedes der acht Vier-Bit-Felder
entspricht einem der acht möglichen
Ablaufunterbrechungsvektoren, die der Vektorgenerator 316 erzeugt.
In einer anderen Ausführungsform
entsprechen die acht Vier-Bit-Felder den Höhen der Interruptpriorität (oder
den Höhen
der Ablaufunterbrechungs-Priorität),
die ebenfalls der Vektorgenerator 316 angibt.
-
8 zeigt
eine Tabelle 800, die die acht Vier-Bit-Felder innerhalb
des SRSLo-Registers 325 beschreibt.
Zur besseren Erläuterung
des Gebrauchs der acht Vier-Bit-Felder
nehme man an, dass sechzehn Registersätze vorhanden sind, die die
GPR 324 und fünfzehn
Schattensätze 326 enthalten,
und dass sie als Sätze
0–15 bezeichnet
sind. Für
die acht möglichen
vom Vektorgenerator 316 erzeugten Ablaufunterbrechungsvektor-Höhen (die im SRSLo abgedeckt
sind), kann ein Entwickler entweder acht unterschiedliche Schattensätze verwenden,
die in jeder beliebigen Reihenfolge angeordnet sein können, oder
er kann die Ablaufunterbrechungsvektor-Höhen zu Gruppen zusammenfassen,
die den gleichen Schattensatz verwenden. Sind beispielsweise nur
drei Schattensätze 326 verfügbar (mit
1, 2 und 3 bezeichnet), so könnte
ein Entwickler programmierbar die Werte (0001, 0010 und 0011) in
irgendeinem beliebigen der acht Vier-Bit-Felder speichern, um den
gewünschten
Schattensatz 326 zu bezeichnen, der für die zugehörige Ablaufunterbrechungsvektor-Höhe verwendet
wird.
-
-
Somit
wird für
die Ablaufunterbrechungsvektor-Höhen
1, 3 und 7 der Schattensatz 1 verwendet, für die Höhen 2 und 6 wird der Schattensatz
2 verwendet, und für
die Höhen
0, 4 und 5 wird der Schattensatz 3 verwendet. In einer Ausführungsform
kann man das SRSLo-Register 325 mit einem Kernelmode-Befehl
programmieren. Wahlweise kann man die Werte im SRSLo-Register über Hardware
liefern, und zwar entweder statisch oder konfiguriert über eine
Hardware außerhalb
des Mikroprozessors 310.
-
In 9 ist
ein Blockdiagramm 900 dargestellt, das acht Vier-Bit-Felder
im SRSHi-Register 327 erläutert. Eine
Beschreibung eines jeden dieser acht Vier-Bit-Felder ist in der
Tabelle 1000 in 10 angegeben, die
nun betrachtet wird. Insbesondere definieren die Bits 0–23 Schattensätze für zusätzlich sechs
Ablaufunterbrechungsvektor-Höhen.
Zusätzlich
kann ein Schattensatz auch für
einen nicht vektorisierten Ablaufunterbrechungsmodus definiert werden,
der Feld-EM (Bits 24 ...27) verwendet. Damit bietet in einer Ausführungsform die
Kombination aus dem SRSLo-Register 325 und dem SRSHi-Register 327 eine
Abbildung von vierzehn verschiedenen Ablaufunterbrechungsvektor-Höhen auf
sechzehn unterschiedliche Schattensätze.
-
11 zeigt
ein Blockdiagramm 1100, das die Arbeitsweise des Mikroprozessors 310 beim
Empfang eines Interrupts erläutert.
Im Einzelnen arbeitet ein Satz normaler (d. h. nicht durch einen
Interrupt unterbrochener) Befehle 1102 auf dem Mikroprozessor 310,
wenn ein Interrupt auftritt. Der Vektorgenerator 316 bestimmt
die Priorität
(oder die Ursache) des Interrupts und erzeugt einen Vektor 318 (1118 in 11),
der dem Interrupt zugeordnet ist. Der Vektor 1118 wird
an den Speicher (nicht dargestellt) übergeben, damit eine Interruptbearbeitungsroutine 1106 geholt
wird, die den Interrupt abarbeitet.
-
Zusätzlich wird
der Vektor 1118 an die Schattensatz-Abbildungslogik 1122 geliefert,
um festzustellen, ob die Interruptroutine 1106 einen Schattensatz 1126 verwendet,
und wenn ja, welchen Schattensatz. In diesem Fall ist der Interruptvektor 1118 ein
Level 2 Interrupt. Daher wählt
die Schattensatz-Abbildungslogik 1122 den Inhalt von EVL2
(im SRSLo-Register 325), der an das CSS-Register 1121 geliefert
wird. Werden die Inhalte des CSS-Registers 1121 mit den
Inhalten des EVL2-Felds überschrieben,
so werden die vorhergehenden Inhalte des CSS-Registers 1121 in
das PSS-Register 1123 verschoben. Architekturgemäß wählt der
Wert im CSS-Feld 1121, welcher der Schattensätze 1126 für den folgenden
auszuführenden
Befehl verwendet wird. In dieser Darstellung enthält das Feld
EVL2 einen Wert, der einem Schattensatz "1" der
Schattensätze 1126 entspricht.
Bei der Ausführung
des ersten Befehls der Interruptbearbeitungsroutine 1106 wird
also anstelle der GPR 1124 der Satz "1" des
Schattensatzes 1126 verwendet.
-
Es
sollte nun klar sein, dass die Inhalte der GPR 1124 in
dem Status verbleiben, den sie hatten, als der Mikroprozessor 310 von
dem Interrupt unterbrochen wurde. Da jedoch die Interruptroutine 1106 den
Satz "1" der Schattensätze 1126 verwendet,
ist es nicht nötig,
die Inhalte der GPR 1124 zu sichern, bevor die Dienstroutine 1106 laufen
darf, weil die Dienstroutine 1106 keinen der Inhalte der
GPR 1124 überschreibt.
Statt dessen verwenden Zugriffe der Dienstroutine 1106 auf
Register in der GPR 1124 die duplizierten Register im Satz "1" der Schattensätze 1126.
-
Ist
die Interruptbearbeitungsroutine 1106 abgeschlossen (mit
einem Eret-Befehl), so bewirkt eine Hardware im Prozessor 310,
dass die Inhalte des PSS-Registers 1123 in das CSS-Register 1121 zurückgeschoben
werden (bzw. wieder hergestellt werden). Zusätzlich kehrt die Ausführung zu
den normalen Befehlen 1104 zurück. War also die GPR 1124 der
aktuelle Registersatz vor dem Auftreten des Interrupts, so fährt die Ausführung mit
den Befehlen 1104 fort und verwendet dazu GPR 1124.
Fachleute wissen, dass die Dienstroutine 1106 die Inhalte
der GPR 1124 vor dem Ende nicht wieder herstellen muss,
da die Inhalte der GPR 1124 von der Routine 1106 nicht überschrieben
wurden.
-
Wenngleich
dies nicht dargestellt ist, sollte klar sein, dass der Mikroprozessor 310 während der
Ausführung
der Interruptbearbeitungsroutine 1106 einen zweiten Interrupt
empfangen kann. Abhängig
von der Höhe
der Priorität
des zweiten Interrupts kann es erlaubt oder verboten sein, fortzufahren.
Ist es erlaubt, fortzufahren, so wählt die Schattensatz-Abbildungslogik 1122 den
vordefinierten Schattensatz 1126 für den neuen Interrupt, und
die Ausführung
schreitet wie beschrieben mit dem neuen Schattensatz fort. Sind
also verschachtelte Interrupts erlaubt, so ist es Sache der Ablaufunterbrechung-Software,
die Inhalte von CSS 321 und PSS 323 zu sichern
und später
wieder herzustellen.
-
12 zeigt
ein Flussdiagramm 1200, das der Erläuterung des Verfahrens der
Erfindung dient. Der Ablauf beginnt im Entscheidungsblock 1202,
in dem der Mikroprozessor Befehle ausführt und auf einen Interrupt
wartet. Wird ein Interrupt empfangen (und ist der empfangene Interrupt
freigegeben), so geht der Ablauf zum Block 1204.
-
Im
Block 1204 werden die Inhalte des CSS-Registers (321) 1121 in
das PSS-Register
(323) 1123 kopiert. Der Fluss geht nun zum Block 1206.
-
Im
Block 1206 erzeugt der Vektorgenerator 316 einen
Interruptvektor, der dem empfangenen Interrupt zugeordnet ist. Der
Ablauf geht zum Block 1208 über.
-
Im
Block 1208 wählt
die Schattensatz-Abbildungslogik (322) 1122 einen
vorbestimmten Schattensatz entsprechend dem im Block 1206 erzeugten
Interruptvektor. Der Fluss geht nun zum Block 1210.
-
Block 1210 wird
die Nummer des gewählten
Schattensatzes an das CSS- Register
(321) 1121 geliefert. Der Ablauf geht zum Block 1212 über.
-
Im
Block 1212 veranlasst der neue Inhalt des CSS-Registers
(321) 1121 den Mikroprozessor 310, mit der
Verwendung des Schattensatzes (326) 1126 zu beginnen,
der im CSS-Register (321) 1121 definiert ist.
Der Fluss geht nun zum Entscheidungsblock 1214 über.
-
Im
Entscheidungsblock 1214 wird festgestellt, ob das Ende
der Interruptbearbeitungsroutine (Eret) aufgetreten ist. Trifft
die nicht zu, so bleibt der Ablauf im Entscheidungsblock 1214,
bis ein Eret auftritt. Tritt ein Eret auf, so geht der Ablauf auf
den Block 1216 über.
-
Im
Block 1216 werden die Inhalte des PSS-Registers (323) 1123 in
das CSS-Register
(321) 1121 zurückverschoben
(bzw. dort wieder hergestellt). Dadurch wird der Mikroprozessor 310 veranlasst,
mit der Verwendung des Registersatzes zu beginnen, der durch die
momentanen Inhalte des CSS-Registers (321) 1121 definiert
ist. Zusätzlich
kehrt der Programmablauf zur Programmausführung am Unterbrechungspunkt
zurück.
-
Aus
den obigen Darlegungen geht hervor, dass die Erfindung ein Verfahren
und eine Einrichtung bereitstellt, mit denen man innerhalb eines
Verarbeitungssystems programmierbar Schattenregistersätze an bestimmte
Interrupts zuweisen kann. Die Erfindung macht es überflüssig, die
Inhalte der Allzweckregister vor dem Abarbeiten eines Interrupts
zu sichern. Dadurch wird die Wirksamkeit der Interrupts und die
Reaktionszeit auf die Interrupts verbessert. Die Erfindung ist unter
Verwendung einer Logik beschrieben, die programmierbar Information
bezüglich
empfangener Interrupts (beispielsweise den Interruptvektor) auf
vorbestimmte Schattensätze
abbildet und die Schattensätze
während
der Ausführung
von Interruptserviceroutinen, Ablaufunterbrechungsroutinen oder
auch anderer Routinen verwendet, die an einen bestimmten Verarbeitungsmodus
des Mikroprozessors gebunden sind (beispielsweise Kernel Mode, Exception
Mode usw.).
-
Fachleuten
ist geläufig,
dass ein Programmierer beim Ausführen
seines Programms gelegentlich wünschen
kann, die Inhalte eines weiteren Registersatzes zu verwenden, seien
es die Inhalte von GPR 1124 oder von einem anderen Schattensatz 1126.
Ist der im CSS-Register 1121 definierte aktuelle Satz der
Schattensatz "1", so kann das ablaufende
Programm wünschen,
die Inhalte eines Registers in der GPR 1124 zu holen (im PSS-Register 1123 referenziert).
Daher hat der Erfinder der Erfindung zwei Befehle bereitgestellt,
die einen derartigen Zugriff gestatten.
-
In 13 wird
eine Beschreibung 1300 für einen Befehl "RDSGPR" angegeben, der den
Mikroprozessor anweist, die Inhalte eines Registers in irgendeinen
der Schattensätze 1126 oder
in der GPR 1124 in den aktuellen Registersatz zu verschieben.
Beispielsweise veranlasst ein Befehl der Form: RDSGPR rt, +2(rd)
den Mikroprozessor, den Schattensatz zu wählen, der um "2" größer ist
als der momentane Registersatz, und die Inhalte des durch den Operanden
rd definierten Registers in diesem Registersatz abzulegen, und zwar
im durch den Operanden rt bestimmten Register im aktuellen Registersatz.
-
Anhand
von 14 wird eine Beschreibung 1400 für einen
Befehl "WRSGPR" angegeben, der den Mikroprozessor
anweist, die Inhalte eines Registers im aktuellen Registersatz in
ein Register in irgendeinen der Schattensätze 1126 oder in die
GPR 1124 zu verschieben. Die Syntax bezüglich dieser Beschreibung gleicht
der obigen und ist in 1400 erklärt.
-
In
der obigen Beschreibung werden ein Verfahren und eine Vorrichtung
erläutert,
die die Leistung von Interrupts mit hoher Priorität verbessern,
weil es nicht mehr erforderlich ist, die Inhalte der Allzweckregisterdatei
vor dem Ausführen
einer Ablaufunterbrechungsroutine zu speichern. Die Erfindung erfüllt diese
Aufgabe durch das Bereitstellen von Schattenregistersätzen, die
die Register in der GPR duplizieren, und durch das programmierte
Abbilden dieser Registersätze
auf Interrupts. In einer Ausführungsform
erfolgt das Zuweisen der Interrupts mit Hilfe des Ablaufunterbrechungsvektors,
der zu dem Interrupt gehört.
Einem Fachmann ist klar, dass man auch andere Informationen bezüglich eines
empfangenen Interrupts dazu verwenden kann, den Zusammenhang zwischen
dem Interrupt und dem zu verwendenden Schattenregistersatz herzustellen.
Beispiele hierfür
sind die Höhe
der Priorität
des Interrupts, die dem Interrupt zugeordneten Felder, die dem Prozessor
anzeigen, welcher Interrupt aufgetreten ist (z. B. das Ursachenregister),
die Maskenfelder, die dem Interrupt zugeordnet sind, usw. Die Erfindung
sollte daher nicht auf die Art der verwendeten Korrelation eingeschränkt werden.
-
Zudem
besteht der beschriebene Mechanismus, der die Korrelation zwischen
den Interrupts und einem Schattenregistersatz speichert, aus Statusregistern
im Mikroprozessor. Diese Register sind als Register beschrieben,
die lesbar und durch Kernelmode-Software
programmierbar sind. Fachleuten ist geläufig, dass man andere Mechanismen
dazu verwenden kann, die Korrelation zu definieren und zu speichern.
-
Zusätzlich stellt
die Erfindung zwei Register bereit, nämlich CSS und PSS, die einen
Index für
den aktuellen Schattensatz und den vorhergehenden Schattensatz speichern,
und verbindet diese Register mit den verfügbaren Registersätzen, so
dass man einen davon abhängig
von den Inhalten des CSS auswählen
kann. Fachleuten ist geläufig,
dass man andere Mechanismen zum Indizieren eines gewünschten
Schattenregistersatzes und zum Speichern bereits benutzter Schattensätze verwenden
kann. Anstatt zwei Register zu verwenden kann man beispielsweise
ein FIFO oder einen Stack zum Speichern der Indexinformation verwenden,
die die Schattensatz-Abbildungslogik liefert.
-
Schließlich lässt die
beschriebene Ausführungsform
bis zu sechzehn Registersätze
zu, zu denen fünfzehn
Schattensätze
gehören,
die man für
eine Anzahl unterschiedlicher hoher Prioritäten für Interrupts einsetzen kann.
Der Erfinder geht davon aus, dass die Anzahl der bereitgestellten
Schattenregistersätze
an den Bedürfnissen
der Systementwickler ausgerichtet werden sollte und nicht auf fünfzehn beschränkt sein
sollte, weder nach oben noch nach unten.
-
Die
Erfindung und ihre Aufgaben, Merkmale und Vorzüge sind ausführlich dargestellt.
Die Erfindung schließt
jedoch weitere Ausführungsformen
ein. Zusätzlich
zu Implementierungen der Erfindung mit Hilfe von Hardware kann man
die Erfindung in Software ausführen,
die beispielsweise in einem computernutzbaren (z. B. lesbaren) Medium
untergebracht ist, das dafür
ausgelegt ist, die Software zu speichern (d. h. einen computerlesbaren
Programmcode). Der Programmcode bewirkt die Ermöglichung oder Herstellung der
Funktionen der hier offenbarten Erfindung oder beides. Man kann
dies beispielsweise durch den Gebrauch von allgemeinen Programmiersprachen
(z. B. C, C++ usw.) erreichen, durch Hardware-Beschreibungssprachen
(HDL), zu denen Verflog HDL, VHDL, AHDL (Altera Hardware Description
Language) und weitere gehören,
oder durch andere Programmier- und Schaltungserfassungswerkzeuge
(d. h. für
Schaltpläne),
die verfügbar
sind. Man kann den Programmcode in jedem bekannten computerverwendbaren
Medium unterbringen, etwa Halbleiterspeicher, magnetische Disks,
optische Disks (z. B. CD-ROM, DVD-ROM usw.), und in einem Computerdatensignal,
das in einem computernutzbaren (z. B. lesbaren) Übertragungsmedium (z. B. Trägerwellen
oder irgendein anderes Medium einschließlich digitaler, optischer
oder analoger Medien) ausgeführt
ist. Damit kann der Code über
Kommunikationsnetze überfragen
werden, zu denen das Internet und Intranets gehören. Natürlich kann man die beschriebenen
Funktionen, die durch die Erfindung erreicht werden, und/oder die
von der Erfindung bereitgestellte Struktur in einem Kern darstellen,
der als Programmcode ausgeführt
ist, und man kann sie als Teil der Produktion von integrierten Schaltungen
in Hardware überführen. Die
Erfindung lässt
sich auch als Kombination aus Hardware und Software ausführen.