DE60217157T2 - Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts - Google Patents

Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts Download PDF

Info

Publication number
DE60217157T2
DE60217157T2 DE60217157T DE60217157T DE60217157T2 DE 60217157 T2 DE60217157 T2 DE 60217157T2 DE 60217157 T DE60217157 T DE 60217157T DE 60217157 T DE60217157 T DE 60217157T DE 60217157 T2 DE60217157 T2 DE 60217157T2
Authority
DE
Germany
Prior art keywords
interrupt
shadow
register
processing system
sets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60217157T
Other languages
English (en)
Other versions
DE60217157D1 (de
Inventor
G. Michael Menlo Park UHLER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MIPS Tech LLC
Original Assignee
MIPS Technologies Inc
MIPS Tech LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MIPS Technologies Inc, MIPS Tech LLC filed Critical MIPS Technologies Inc
Application granted granted Critical
Publication of DE60217157D1 publication Critical patent/DE60217157D1/de
Publication of DE60217157T2 publication Critical patent/DE60217157T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

  • 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.
  • Figure 00100001
  • 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.

Claims (16)

  1. Verarbeitungssystem, umfassend: eine Anzahl Schattenregistersätze (324); einen Interruptvektor-Generator (316), der einen Ablaufunterbrechungsvektor (318) erzeugt, der mit einem Interruptbearbeiter verbunden ist, falls das Verarbeitungssystem (300) einen Interrupt (304) empfängt; eine Schattensatz-Abbildungslogik (322), die sowohl mit der Anzahl Schattenregistersätze als auch dem Interruptvektor-Generator verbunden ist und einen Registersatz (326) aus der Anzahl Schattenregistersätze wählt, den der Interruptbearbeiter zu verwenden hat, ein Statusregister (320), das mit der Schattensatz-Abbildungslogik gekoppelt ist und Daten speichert, die einem aktuellen Schattensatz (321) zugeordnet sind sowie einem vorhergehenden Schattensatz (323), wobei die Schattensatz-Abbildungslogik durch programmierbare Registervorrichtungen (325, 327) gekennzeichnet ist, die in zahlreiche programmierbare Felder unterteilt sind, die jeweils einem der zahlreichen Ablaufunterbrechungsvektoren zugeordnet sind, und jedes der zahlreichen Felder Daten enthält, die einen der zahlreichen Schattenregistersätze referenzieren, wobei die Schattensatz-Abbildungslogik programmierbar mit einer Korrelation zwischen dem Ablaufunterbrechungsvektor und dem gewählten Schattenregistersatz der Anzahl Schattenregistersätze versehen ist.
  2. Verarbeitungssystem nach Anspruch 1, wobei jeder der zahlreichen Schattenregistersätze eine Anzahl Register umfasst, die Register in einem Allzweck-Registersatz (GPR) duplizieren.
  3. Verarbeitungssystem nach Anspruch 1, wobei die Korrelation ein Abbildungsregister umfasst, das den Ablaufunterbrechungsvektor dem gewählten Schattenregistersatz der Anzahl Schattenregistersätze zuordnet.
  4. Verarbeitungssystem nach Anspruch 1, worin der Interruptvektor-Generator eine bestimmte Interruptroutine aus der Anzahl Interruptroutinen wählt, die dazu verwendet wird, den Interrupt zu bearbeiten.
  5. Verarbeitungssystem nach Anspruch 4, worin die gewählte bestimmte Interruptroutine aus der Anzahl Interruptroutinen in einem Speicher beim Ablaufunterbrechungsvektor angeordnet ist.
  6. Verarbeitungssystem nach Anspruch 1, worin der Interruptvektor-Generator eine bestimmte Interruptroutine aus der Anzahl Interruptroutinen wählt, die dazu verwendet wird, den Interrupt zu bearbeiten, und zwar abhängig von der Höhe der Priorität des Interrupts.
  7. Verarbeitungssystem nach Anspruch 1, worin jedes Feld der zahlreichen programmierbaren Felder ein Vier-Bit-Feld enthält.
  8. Verarbeitungssystem nach Anspruch 1, worin die Daten in jedem der zahlreichen Felder einem Registersatz der Anzahl Schattenregistersätze entsprechen.
  9. Verarbeitungssystem nach Anspruch 1, wobei das Statusregister umfasst: einen aktuellen Satz Datenregister; und einen vorhergehenden Satz Datenregister.
  10. Verarbeitungssystem nach Anspruch 9, wobei, wenn das Verarbeitungssystem den Interrupt empfängt, die Inhalte des aktuellen Satzes Datenregister in den vorhergehenden Satz Datenregister verschoben werden.
  11. Verarbeitungssystem nach Anspruch 10, wobei, wenn der Interrupt abgearbeitet ist, die Inhalte des vorhergehenden Satzes Datenregister im aktuellen Satz Datenregister wieder hergestellt werden.
  12. Verfahren innerhalb eines Verarbeitungssystems, in dem Schattenregistersätze des Verarbeitungssystems für Ablaufunterbrechungsroutinen verwendet werden, umfassend: beim Empfang eines Interrupts, das Feststellen, welche Ablaufunterbrechungsroutine der 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, dadurch gekennzeichnet, dass im Auswahlschritt programmierbare Register verwendet werden, die in dem Verarbeitungssystem enthalten sind und in zahlreiche programmierbare Felder unterteilt sind, die jeweils einer der zahlreichen Ablaufunterbrechungsroutinen zugeordnet sind, und dass jedes der zahlreichen Felder Daten enthält, die angeben, welcher Schattenregistersatz der zahlreichen Schattenregistersätze für ihre Register zu verwenden ist.
  13. Verfahren nach Anspruch 12, wobei jedes der programmierbaren Register einer der Ablaufunterbrechungsroutinen zugeordnet ist.
  14. Computerprogrammprodukt zum Gebrauch mit einer Computervorrichtung, wobei das Computerprogrammprodukt umfasst: ein von einem Computer nutzbares Medium, wobei computerlesbarer Programmcode in dem Medium verkörpert ist, der ein Verarbeitungssystem nach Anspruch 1 veranlasst, die Schritte des Verfahrens nach Anspruch 12 auszuführen.
  15. Computerprogrammprodukt nach Anspruch 14, zudem umfassend: einen dritten Programmcode, der ein Statusregister bereitstellt, wobei das Statusregister eine aktuelle Schattensatzreferenz besitzt und eine vorhergehende Schattensatzreferenz, wobei, wenn eine Interruptroutine die Verwendung ihres Schattenregistersatzes abschließt, die Inhalte der vorhergehenden Schattensatzreferenz in der aktuellen Schattensatzreferenz angeordnet werden.
  16. Computerprogrammprodukt nach Anspruch 14, zudem umfassend: einen vierten Programmcode, der einen Vektorgenerator bereitstellt, der dem Empfang von Interrupts und dem Erzeugen der Ablaufunterbrechungsvektoren dient.
DE60217157T 2001-10-12 2002-09-10 Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts Expired - Lifetime DE60217157T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US977084 2001-10-12
US09/977,084 US7487339B2 (en) 2001-10-12 2001-10-12 Method and apparatus for binding shadow registers to vectored interrupts
PCT/US2002/028893 WO2003048946A2 (en) 2001-10-12 2002-09-10 Method and apparatus for binding shadow registers to vectored interrupts

Publications (2)

Publication Number Publication Date
DE60217157D1 DE60217157D1 (de) 2007-02-08
DE60217157T2 true DE60217157T2 (de) 2007-10-04

Family

ID=25524795

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60217157T Expired - Lifetime DE60217157T2 (de) 2001-10-12 2002-09-10 Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts

Country Status (5)

Country Link
US (4) US7487339B2 (de)
EP (2) EP1772807A1 (de)
DE (1) DE60217157T2 (de)
HK (1) HK1070147A1 (de)
WO (1) WO2003048946A2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487339B2 (en) * 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
US20030135720A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
US7065631B2 (en) * 2002-04-09 2006-06-20 Sun Microsystems, Inc. Software controllable register map
EP1563376B1 (de) * 2002-11-18 2006-04-12 ARM Limited Ausnahmearten innerhalb eines sicheren verarbeitungssystems
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
EP1660993B1 (de) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrierter mechanismus zum suspendieren und endzuteilen rechnerischer threads der ausführung in einem prozessor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
JP2006039874A (ja) * 2004-07-26 2006-02-09 Fujitsu Ltd 情報処理装置
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US8312452B2 (en) * 2005-06-30 2012-11-13 Intel Corporation Method and apparatus for a guest to access a privileged register
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
US7627705B2 (en) * 2005-12-30 2009-12-01 Stmicroelectronics Pvt. Ltd. Method and apparatus for handling interrupts in embedded systems
KR100812346B1 (ko) * 2006-02-06 2008-03-11 삼성전자주식회사 재구성 어레이에서의 인터럽트 처리 방법 및 장치
US7415557B2 (en) * 2006-06-06 2008-08-19 Honeywell International Inc. Methods and system for providing low latency and scalable interrupt collection
US10073797B2 (en) * 2008-02-22 2018-09-11 Nxp Usa, Inc. Data processor device supporting selectable exceptions and method thereof
US8417924B2 (en) * 2008-02-22 2013-04-09 Freescale Semiconductor, Inc. Data processing device and method of halting exception processing
CN101788901B (zh) * 2009-01-24 2013-09-25 世意法(北京)半导体研发有限责任公司 使用影子寄存器的高效硬件实现的设备及其方法
US8825926B2 (en) * 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
US8392640B2 (en) * 2009-12-03 2013-03-05 Advanced Micro Devices, Inc. Pre-memory resource contention resolution
US8392644B2 (en) * 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
CN103294544B (zh) * 2012-02-27 2016-08-17 展讯通信(上海)有限公司 嵌入式系统及其中断处理方法与装置
GB2549774B (en) 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
CN111080009B (zh) * 2019-12-13 2021-04-16 北京瑞莱智慧科技有限公司 基于时间序列的数据预测及补全方法、装置、介质和设备

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1059639A (en) 1975-03-26 1979-07-31 Garvin W. Patterson Instruction look ahead having prefetch concurrency and pipe line features
US4056847A (en) 1976-08-04 1977-11-01 Rca Corporation Priority vector interrupt system
US4218739A (en) 1976-10-28 1980-08-19 Honeywell Information Systems Inc. Data processing interrupt apparatus having selective suppression control
US4217638A (en) 1977-05-19 1980-08-12 Tokyo Shibaura Electric Co., Ltd. Data-processing apparatus and method
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
US4402042A (en) 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
US4626985A (en) 1982-12-30 1986-12-02 Thomson Components - Mostek Corporation Single-chip microcomputer with internal time-multiplexed address/data/interrupt bus
CA1242803A (en) 1984-12-27 1988-10-04 Nobuhisa Watanabe Microprocessor with option area facilitating interfacing with peripheral devices
US4826985A (en) * 1986-04-25 1989-05-02 Abbott Laboratories Intermediates for preparation of racemate and optically active ofloxacin and related derivatives
US5148544A (en) 1987-07-01 1992-09-15 Digital Equipment Corporation Apparatus and method for control of asynchronous program interrupt events in a data processing system
JPH0795277B2 (ja) 1988-11-25 1995-10-11 日本電気株式会社 データ処理装置
US5115506A (en) * 1990-01-05 1992-05-19 Motorola, Inc. Method and apparatus for preventing recursion jeopardy
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
FR2680591B1 (fr) * 1991-08-22 1996-01-26 Telemecanique Controleur d'interruption programmable, systeme interruptif et procede de controle d'interruption.
US5404535A (en) 1991-10-22 1995-04-04 Bull Hn Information Systems Inc. Apparatus and method for providing more effective reiterations of processing task requests in a multiprocessor system
US5371872A (en) 1991-10-28 1994-12-06 International Business Machines Corporation Method and apparatus for controlling operation of a cache memory during an interrupt
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
US5868500A (en) * 1992-11-05 1999-02-09 Imi Marston Limited Slide bearing
JP2883784B2 (ja) * 1993-04-27 1999-04-19 株式会社東芝 マイクロコンピュータ
US5681255A (en) * 1993-05-21 1997-10-28 Ranpak Corp. Dispensing table and guide system for a cushioning conversion machine
US5481725A (en) 1993-08-03 1996-01-02 Intel Corporation Method for providing programmable interrupts for embedded hardware used with programmable interrupt controllers
JPH07114498A (ja) * 1993-10-15 1995-05-02 Toshiba Corp マイクロプロセッサ
DE69518145T2 (de) * 1994-02-10 2001-03-22 Elonex Technologies Inc Verzeichnis für ein-/ausgangsdecoder
WO1995032466A1 (en) 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme
EP0689141A3 (de) 1994-06-20 1997-10-15 At & T Corp Unterbrechungsbasierte hardwaremässige Unterstützung für Systemleistungsprofilierung
US5481719A (en) 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
WO1996012228A1 (en) 1994-10-14 1996-04-25 Silicon Graphics, Inc. Redundant mapping tables
US5594905A (en) 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US6148321A (en) 1995-05-05 2000-11-14 Intel Corporation Processor event recognition
US5701493A (en) 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
US5758096A (en) 1995-08-09 1998-05-26 Barsky; Howard System and method for personalized medication treatment management
US5822595A (en) 1995-12-29 1998-10-13 Intel Corporation Method and apparatus for providing an interrupt handler employing a token window scheme
US6094730A (en) 1997-10-27 2000-07-25 Hewlett-Packard Company Hardware-assisted firmware tracing method and apparatus
US6178482B1 (en) 1997-11-03 2001-01-23 Brecis Communications Virtual register sets
US5940587A (en) 1997-12-12 1999-08-17 Intel Corporation System and method for trap address mapping for fault isolation
US6332181B1 (en) 1998-05-04 2001-12-18 International Business Machines Corporation Recovery mechanism for L1 data cache parity errors
US6081867A (en) 1998-05-20 2000-06-27 Sony Corporation Software configurable technique for prioritizing interrupts in a microprocessor-based system
US6243804B1 (en) 1998-07-22 2001-06-05 Scenix Semiconductor, Inc. Single cycle transition pipeline processing using shadow registers
US6154832A (en) 1998-12-04 2000-11-28 Advanced Micro Devices, Inc. Processor employing multiple register sets to eliminate interrupts
US7020879B1 (en) 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
GB9909626D0 (en) 1999-04-27 1999-06-23 Hewlett Packard Ltd Loop prevention in networks
US6499078B1 (en) 1999-07-19 2002-12-24 Microsoft Corporation Interrupt handler with prioritized interrupt vector generator
US6574693B1 (en) 1999-10-11 2003-06-03 Ati International Srl Method and apparatus for gating interrupts in a computing system
US6651126B1 (en) 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US7165257B2 (en) 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US6539448B1 (en) * 2000-05-26 2003-03-25 Texas Instruments Incorporated Priority first come first serve interrupt controller
US6822959B2 (en) 2000-07-31 2004-11-23 Mindspeed Technologies, Inc. Enhancing performance by pre-fetching and caching data directly in a communication processor's register set
US6889279B2 (en) * 2000-12-11 2005-05-03 Cadence Design Systems, Inc. Pre-stored vector interrupt handling system and method
US6470435B2 (en) * 2000-12-28 2002-10-22 Intel Corporation Dual state rename recovery using register usage
KR20030004763A (ko) 2001-07-06 2003-01-15 삼성전자 주식회사 인터럽트 처리장치
US7552261B2 (en) 2001-10-12 2009-06-23 Mips Technologies, Inc. Configurable prioritization of core generated interrupts
US7487339B2 (en) 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
US20030088723A1 (en) 2001-11-08 2003-05-08 Mackey Richard P. System and method for processing interrupts

Also Published As

Publication number Publication date
HK1070147A1 (en) 2005-06-10
US20030074545A1 (en) 2003-04-17
US20060253635A1 (en) 2006-11-09
US20070124569A1 (en) 2007-05-31
US7925864B2 (en) 2011-04-12
WO2003048946A3 (en) 2004-01-22
EP1442375A2 (de) 2004-08-04
US20090119434A1 (en) 2009-05-07
US7487332B2 (en) 2009-02-03
EP1442375B1 (de) 2006-12-27
DE60217157D1 (de) 2007-02-08
WO2003048946A2 (en) 2003-06-12
US7487339B2 (en) 2009-02-03
EP1772807A1 (de) 2007-04-11
US8181000B2 (en) 2012-05-15

Similar Documents

Publication Publication Date Title
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE2722099C2 (de)
DE2714805C2 (de)
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
EP0048767B1 (de) Prioritätsstufengesteuerte Unterbrechungseinrichtung
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE2224537C2 (de) Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2718051A1 (de) Datenverarbeitungsanlage mit einrichtungen zur wechselnden bearbeitung mehrerer aufgaben
EP0333123A2 (de) Modular strukturiertes ISDN-Kommunikationssystem
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE112020005987T5 (de) Setzen von prüfpunkten in akkumulatorregister-ergebnissen in einem mikroprozessor
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE2458096A1 (de) Mikroprogramm-ladeeinrichtung fuer die ladezeit-festlegung
EP0799441B1 (de) Verfahren zur steuerung von technischen vorgängen
DE10063915B4 (de) Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
DE10303053A1 (de) Registerumbenennung zum Reduzieren einer Umgehung und Erhöhen einer scheinbaren physischen Registergröße
DE60005830T2 (de) Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition