DE69031558T2 - Verfahren und Vorrichtung zur Verarbeitung von verschachtelten Unterbrechungen - Google Patents
Verfahren und Vorrichtung zur Verarbeitung von verschachtelten UnterbrechungenInfo
- Publication number
- DE69031558T2 DE69031558T2 DE69031558T DE69031558T DE69031558T2 DE 69031558 T2 DE69031558 T2 DE 69031558T2 DE 69031558 T DE69031558 T DE 69031558T DE 69031558 T DE69031558 T DE 69031558T DE 69031558 T2 DE69031558 T2 DE 69031558T2
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- type
- registers
- register
- interrupt request
- 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
Links
- 238000000034 method Methods 0.000 title claims description 17
- 239000004020 conductor Substances 0.000 claims 4
- 230000001419 dependent effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 7
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Bus Control (AREA)
Description
- Die vorliegende Erfindung betrifft im allgemeinen ein Verfahren und eine Vorrichtung zum Verhindern von Rekursionsgefahr. Insbesondere betrifft die Erfindung ein Verfahren und eine Vorrichtung zur Behandlung einer Ausnahmeverarbeitung, wie z.B. Unterbrechungen bzw. Interrupts, und zum Verhindern einer Rekurs ionsge fahr bei Mikroprozessoren.
- In Vorrichtungen, wie z.B. Mikroprozessoren und anderen digitalen Prozessoren, wird eine zentrale Verarbeitungseinheit (CPU) für die Verarbeitungsoperationen benutzt. Die CPU enthält einen auf einem Chip befindlichen Registersatz, der durch die CPU sowohl während des normalen Betriebs als auch während der Ausnahmeverarbeitung benutzt wird, und zwar auf eine Art und Weise, die den Fachleuten wohlbekannt ist. Immer dann, wenn irgendeine vorherige Operation durch einen Ausnahmeprozeß unterbrochen wird, wie z.B. einen Unterbrechungsbetrieb, gibt es ein Rekursionsgefahrproblem, da das Unterbrechungsverarbeitungsprogramm dieselben Register benutzt und einige der darin befindlichen Werte ändern kann. Die übliche Lösung für dieses Problem besteht darin, in einem Speicher (ebenfalls als "Speichern" bezeichnet) die momentanen Werte von einigen oder allen Registern vor dem Beginn der Verarbeitung der Unterbrechung zu sichern und diese gesicherten Werte zurück in die Register aus dem Speicher zu lesen (ebenfalls als "Auslesen" bezeichnet), wenn die Unterbrechungsverarbeitung vervollständigt ist. Diese Lösung ist zeitaufwendig und erfordert eine relativ umfangreiche Softwareunterstützung. Jedoch ist diese Lösung theoretisch imstande, eine unbegrenzte Anzahl "verschachtelter" Unterbrechungen (d.h. Unterbrechungen, welche andere Unterbrechungsprogramme unterbrechen) handzuhaben.
- Einige Mikroprozessoren bieten einige alternative, auf einem Chip befindliche Registersätze (ebenfalls als Registerbänke bekannt) zur Benutzung während der Unterbrechungsverarbeitung. Ein Unterbrechungsprogramm benutzt einfach einen unterschiedlichen Satz an Registern im Vergleich zu dem, der durch das unterbrochene Programm benutzt wurde, um somit die Notwendigkeit des Speicherns des Registerinhalts zu vermeiden. Dieser Ansatz ist sehr kostenträchtig im Hinblick auf die Siliziumfläche, wenn das Problem verschachtelter Unterbrechungen behandelt wird. Die Verdoppelung aller notwendigen Register, um eine vernünftige Anzahl verschachtelter Unterbrechungen zuzulassen, kann eine unvernünftige Anzahl an Registern erfordern.
- Weiterhin muß ein Mechanismus vorgesehen werden, und zwar sogar in einer Maschine mit mehreren Registerbänken, zur Bestimmung, wann alle Bänke in Benutzung sind (wann die Rekursionsgefahr existiert), und zur Bereitstellung einer Lösung für dieses Problem.
- Das US-Patent Nr. 4,434,461 beschreibt einen Mikroprozessor, der auf einen doppelten Programmzähler, doppelte Allgemeinzweckregister und doppelte Null- und Übertragbits während Unterbrechungen schaltet. Daraus resultierend werden Unterbrechungen durch Hin- und Herschalten zwischen dem Programmzählerregister, den Allgemeinzweckregistern und Null- und Übertragbits und ihren Duplikaten verarbeitet.
- In Übereinstimmung mit einem ersten Aspekt der Erfindung ist ein digitaler Datenprozessor, wie in Anspruch 1 definiert, geschaffen.
- In Übereinstimmung mit einem zweiten Aspekt der Erfindung ist ein digitaler Datenprozessor, wie in Anspruch 5 definiert, geschaffen.
- In Übereinstimmung mit einem dritten Aspekt der Erfindung ist ein Verfahren zum Betreiben eines digitalen Datenprozessors, wie in Anspruch 6 definiert, geschaffen.
- Es zeigen:
- Fig. 1A ein vereinfachtes funktionelles Blockdiagramm eines digitalen Datenprozessorsystens, welches eine bestimmte Ausführungsform der vorliegenden Erfindung aufweist,
- Fig. 1B ein Diagramm von Registern, die innerhalb des digitalen Datenprozessorsystems von Fig. 1A enthalten sind;
- Fig. 1C ein Diagramm von Bits, die innerhalb zweier besonderer Register, die in Fig. 1B gezeigt sind, enthalten sind;
- Fig. 2 einen Flußplan zum Illustrieren eines Beispiels für eine Unterbrechungsverschachtelung unter Benutzung der vorliegenden Vorrichtung und des vorliegenden Verfahrens; und
- Fig. 3A und 3B Zustandsdiagramme unter Benutzung von Statusbits zur Unterscheidung der verschiedenen Zustände und zur Darstellung zweier möglicher Weisen, auf die der digitale Datenprozessor eine Unterbrechungsverarbeitung handhaben und eine Rekursionsgefahr vermeiden kann.
- Die Ausdrücke "Setzen" und "Löschen" werden in bezug auf die Einstellung eines Statusbits oder einer ähnlichen Vorrichtung in ihren logischen Wahrzustand oder in ihren logischen Falschzustand benutzt.
- Mit Bezug auf Fig. 1A ist ein digitales Datenprozessorsystem 10 illustriert, welches in dieser vereinfachten Form einen Halbleiterchip 12 mit einer CPU 14 aufweist, die einen normalen Registersatz 16, einen alternativen Registersatz 18, Nebenregister 20, Hauptregister 22 und weitere Register 24 enthält. Die CPU ist mit einem Bus 40 verbunden, welcher ebenfalls mit einem außerhalb des Chips befindlichen Stapelspeicher bzw. Memory Stack 50 verbunden ist. Man wird selbstverständlich verstehen, daß bei einigen speziellen Prozessorsystemen der Stapelspeicher 50 und der Bus 40 auf dem Chip enthalten sein können und der außerhalb des Chips befindliche Stapelspeicher nur beispielshalber dargestellt ist. Man wird ebenfalls verstehen, daß der Stapelspeicher 50 für einen Zugriff den Betrieb des Busses 40 erfordert und daß der Zugriff auf die Registersätze ein Hochgeschwindigkeitsbetrieb ist, während der Zugriff auf den Stapelspeicher über den Bus 40 ein relativ langsamer Betrieb ist. Deshalb ist es wünschenswert, die Registersätze soviel wie möglich während der Verarbeitung zu benutzen, und den Stapelspeicher nur dann zu benutzen, wenn es wesentlich ist.
- In einem digitalen Datenprozessorsystem 10 gibt es mehrere Unterbrechungspegel, welche bestimmen, ob eine vorgegebene Unterbrechung Priorität über irgendeine andere Unterbrechung hat. Somit wird eine Unterbrechung mit einer höheren Priorität schneller verarbeitet als eine Unterbrechung mit einer geringeren Priorität, welche auf ihre Verarbeitung warten muß. Das Konzept der Unterbrechungspriorität ist den Fachleuten wohlbekannt. Obwohl diese besondere Ausführungsform mit der Rekursionsgefahr zu tun hat, die auftreten kann, wenn mehrere Unterbrechungen dieselben Registerressourcen zu benutzen versuchen, sollte man verstehen, daß die offenbarte Erfindung benutzt werden könnte, um eine Rekursionsgefahr in einer beliebigen Speichereinrichtung auf einem beliebigen Typ integrierter Schaltung zu verhindern.
- Das digitale Datenprozessorsystem 10 benutzt zwei Arten von Unterbrechungen: übliche Unterbrechungen und schnelle Unterbrechungen. Der Typ von Unterbrechung bestimmt, ob die Unterbrechungsverarbeitungsroutine vorgabeweise den normalen Registersatz 16 oder den alternativen Registersatz 18 benutzt. Übliche Unterbrechungen benutzen vorgabeweise den normalen Registersatz 16, und schnelle Unterbrechungen benutzen vorgabeweise den alternativen Registersatz 18. Der Unterbrechungstyp beeinflußt nicht das Prioritätsschema. Eine übliche Unterbrechung unterbricht den normalen Betrieb oder irgendeine andere Unterbrechung, die einen geringeren Prioritätsgrad aufweist. Ebenso unterbricht eine schnelle Unterbrechung den normalen Betrieb oder irgendeine andere Unterbrechung, die einen geringeren Prioritätsgrad aufweist.
- Mit Bezug auf Fig. iB besteht der normale Registersatz 16 aus acht Datenregistern (D0-D7) und acht Adreßregistern (A0-A7), wobei das letzte Adreßregister A7 ebenfalls als Benutzerstapelzeiger dient. Der alternative Registersatz 18 dupliziert die Register im normalen Registersatz 16. Die CPU greift entweder auf den normalen Registersatz 16 oder auf den alternativen Registersatz 18 zu und benutzt diese, aber niemals auf beide Registersätze zur gleichen Zeit. Vom Standpunkt eines Benutzers ist das Schreiben von Software für die CPU hinsichtlich dessen, welcher Registersatz benutzt wird, relativ transparent. D.h. der Benutzer kann einfach vorgeben, daß eine bestimmte Anweisung das Datenregister D2 als Quelle eines Operanden oder als Ziel einer Operation benutzt. Die Hardware bestimmt, ob auf das D2-Register des normalen Satzes 16 oder das D2-Register des alternativen Satzes 18 zugegriffen wird. Wie den Benutzern von irgendeinem der Mikroprozessoren der Familie Motorola 68000 (z.B. MC68000, MC68010, MC68020 und MC68030, die alle von Motorola Inc. aus Austin, Texas erhältlich sind) bekannt ist, arbeitet die CPU entweder in einem Benutzermodus oder in einem Überwachungsmodus. Der Betriebsmodus wird durch ein Bit gesteuert, das im Statusregister SR liegt.
- Wiederum mit Bezug auf Fig. 1B bestehen die Nebenregister 20 aus einem Statusregister (SR), einem Kontextschaltsteuerregister (CSC) 31 und einem Programmzähler (PC). Mit Bezug auf Fig. lC duplizieren die Hauptregister 22 die Nebenregister 20 mit Ausnahme des FO(Auftreten einer schnellen Unterbrechung)- Statusbit 26, des FF(erste schnelle Unterbrechung)-Statusbit 28 und des CF(laufende schnelle Unterbrechung)-Statusbit 30 im CSC-Register 31. Das FO-Statusbit 26, das FF-Statusbit 28 und das CF-Statusbit werden nicht dupliziert. Die CPU greift entweder auf die Nebenregister 20 oder auf die Hauptregister 22 zu und benutzt diese, aber niemals auf beide Registersätze zur selben Zeit. Ein Zugriff auf entweder das CSC-Register 31 oder das CSC'-Register 32 resultiert auf einen Zugriff auf dasselbe FO-Statusbit 26, FF-Statusbit 28 und CF-Statusbit 30. Das A/N-Bit 34 wird jedoch dupliziert. Die Identität und die Benutzung dieser verschiedenen Bits wird nachstehend beschrieben.
- Mit Bezug auf Fig.1C liegt das A/N-Bit 34 im CSC-Register 31. Ein doppeltes A/N'-Bit 36 liegt im CSC¹-Register 32. Wenn die CPU 14 die Nebenregister 20 benutzt, kann nur auf das A/N-Bit 34 zugegriffen werden. In ähnlicher Weise kann, wenn die CPU die Hauptregister 22 benutzt, nur auf das A/N'-Bit 36 zugegriffen werden. Weder auf das A/N-Bit 34 noch auf das A/N'-Bit 36 kann durch die Software im Benutzermodus zugegriffen werden. Jedoch die Hardware der CPU 14 kann stets den Status dieser Bits lesen. Bei dieser besonderen Ausführungsform kann entweder auf das A/N-Bit 34 oder das A/N'-Bit 36 als Steuerbit im Überwachungsmodus zugegriffen werden, um die CPU zu zwingen, den entsprechenden Satz von normalen Registern 16 oder alternativen Registern 18 zu benutzen. Dies ist ein zusätzliches Merkmal, das nicht zur Ausführung der Erfindung erforderlich ist. Somit wird aus Gründen der Klarheit in der folgenden Beschreibung angenommen&sub1; daß das A/N-Bit 34 und das A/N'-Bit 36 als Nurlese-Statusbits durch die Hardware der CPU 14 benutzt werden.
- Entweder das A/N-Bit 34 oder das A/N'-Bit 36 zeigt, ob die CPU 14 gegenwärtig den normalen Registersatz 16 oder den alternativen Registersatz 18 benutzt. Ein "Null"-Wert zeigt, daß der alternative Registersatz 18 benutzt wird, und ein "Ein"-Wert zeigt, daß der normale Registersatz 16 benutzt wird. Falls das A/N-Bit 34 oder das A/N'-Bit 36 mit Information von entweder dem normalen Registersatz 16 oder dem alternativen Registersatz 18 gespeichert wird, kann die Hardware der CPU 14 oder einer Softwareroutine das A/N-Bit 34 oder das A/N'-Bit 36 benutzen, wenn aus dem Speicher gelesen wird, um zu bestimmen, ob die Information im normalen Registersatz 16 oder im alternativen Registersatz 18 umgespeichert werden sollte.
- Die Nebenregister 20 werden nur benutzt, wenn keine schnelle Unterbrechung zu verarbeiten begonnen worden ist. Wenn eine schnelle Unterbrechung empfangen wird und eine Verarbeitung beginnt, werden die Hauptregister 22 ausschließlich für die erste schnelle Unterbrechung und jegliche neue eintretende schnelle oder übliche Unterbrechung benutzt. Die CPU 14 kehrt nicht zur Benutzung der Nebenregister 20 zurück, bis die erste schnelle Unterbrechung vervollständigt ist und es keine schnellen Unterbrechungen mehr zu verarbeiten gibt. Ebenfalls werden jedesmal, wenn eine Unterbrechung mit höherer Priorität die Verarbeitung einer Unterbrechung mit geringerer Priorität unterbricht, die Hauptregister 22, welche das A/N'-Bit 36, das FO-Statusbit 26, das FF-Statusbit 28 und das CF-Statusbit 30 enthalten, automatisch in den Stapelspeicher 50 durch die Hardware der CPU 14 gespeichert. Diese Speicherung ist stets erforderlich, da die Hauptregister 22 Information enthalten, die zur Vervollständigung der Verarbeitung der Unterbrechung geringerer Priorität notwendig ist.
- Bei dieser bestimmten Ausführungsform gibt es einen bedeutenden Unterschied zwischen den Nebenregistern 20 und den Hauptregistern 22 im Vergleich zu dem normalen Registersatz 16 und dem alternativen Registersatz 18. Die CPU 14 benutzt die Hauptregister 22 während der gesamten Unterbrechungsverarbeitung, wenn eine schnelle Unterbrechung empfangen worden ist, wohingegen die CPU 14 abhängig vom Typ der Unterbrechung entweder den normalen Registersatz 16 oder den alternativen Registersatz 18 während der Unterbrechungsverarbeitung benutzen kann. Diese Unterscheidung wurde bequemlichkeitshalber bei dieser besonderen Ausführungsform getroffen. Da die Register mit den Nebenregistern 20 und den Hauptregistern 22 Register sind, die Information enthalten, die jedesmal dann gespeichert werden müssen, wenn eine neue Unterbrechung mit höherer Priorität empfangen wird, stapelt die CPU 14 bei dieser besonderen Ausführungsform automatisch diese Register, wenn es eine Rekursionsgefahr gibt, um Softwareverabeitungszeit zu sparen. Der normale Registersatz 16 und der alternative Registersatz 18 andererseits sind Daten- und Adreßregister, die nur erfordern, daß ein bestimmtes Register gespeichert wird, falls die neue Unterbrechung mit höherer Priorität die Information in diesem besonderen Register ändern wird. Somit wird das Speichern irgendwelcher Register im normalen Registersatz 16 und alternativen Registersatz 18 dem Programmierer unter Benutzung von Softwaresteuerung überlassen, so daß keine Verarbeitungszeit mit unnötigem Speichern verschwendet wird.
- Mit Bezug auf Fig. iB bestehen die weiteren Register 24 aus Registern, welche nicht dupliziert sind und durch die CPU 14 jederzeit benutzt werden können, und zwar unabhängig davon, ob die CPU 14 normale Operationen oder eine Unterbrechungsverarbeitung ausführt oder nicht. Da es keine Verdoppelung gibt, muß jedesmal dann, wenn eine Unterbrechungsroutine die Daten in irgendeinem dieser weiteren Register 24 beeinflussen wird, die Unterbrechungsroutine diese Register speichern, die sie beeinflussen wird. Falls es die Möglichkeit gibt, daß eine Softwareroutine, die eines oder mehrere der weiteren Register 24 benutzt, eine weitere Softwareroutine unterbrechen kann, die eines oder mehrere der weiteren Register 24 unterbrechen kann, gibt es stets die Möglichkeit der Rekursionsgefahr. Es gibt keine Statusbits oder eine Steuerschaltung zur Unterstützung der Behandlung von Rekursionsgefahrproblemen für die weiteren Register 24. Da es keine Möglichkeit zur Bestimmung gibt, ob die Rekursionsgefahr tatsächlich existiert oder nicht, muß jede Softwareroutine, die die weiteren Register 24 benutzt, stets annehmen, daß es eine Rekursionsgefahr gibt, und muß jedes der weiteren Register 24 speichern, das die unterbrechende Softwareroutine beeinflussen wird. Bei dieser besonderen Ausführungsform sind die weiteren Register 24 solche, die nur benutzt werden, wenn die CPU 14 im Überwachungsmodus ist. Weitere Register 24 sind Register, die in den meisten Anwendungen kaum gespeichert werden müssen, und somit gab es keinen Grund, Siliziumfläche zur Duplizierung der Register zu verschwenden, und keinen Grund, Verarbeitungszeit zu verschwenden, während der die CPU automatisch diese Register speichert.
- Es erscheint klar, daß es drei "Klassen" beschriebener Register gibt: diejenigen, welche dupliziert sind und stets automatisch gespeichert werden (die Neben- und Hauptregister), diejenigen, welche dupliziert sind, aber nur, wenn nötig, und unter Softwaresteuerung gespeichert werden (die normalen und alternativen Register), und diejenigen, welche nicht dupliziert sind und nur, wenn nötig, und unter Softwaresteuerung gespeichert werden (die weiteren Register) . Es sollte verstanden werden, daß es viele verschiedene Registerkonfigurationen gibt, welche die vorliegende Erfindung verwenden könnten. Die in dieser Beschreibung beschriebene Registerkonfiguration ist nur eine Konfiguration von vielen möglichen Registerkonfigurationen, welche benutzt werden könnten. Beispielsweise könnte die obige Beschreibung leicht auf den Fall mehrerer Registerbänke ausgeweitet werden. In diesem Fall könnten verschiedene verschachtelte Unterbrechungen auftreten, bevor die Rekursionsgefahr auftritt. Die Grundlagen bleiben jedoch die gleichen. Es sollte ebenfalls bemerkt werden, daß es möglich ist, entweder Softwareanweisungen oder Hardware der CPU 14 zu benutzen, um Information vom Stapelspeicher 50 zu speichern oder abzurufen.
- Mit Bezug auf Fig. 1C sind das FO-Statusbit 26, das FF-Statusbit 28 und das CF-Statusbit 30 alle Nurlese-Statusbits, welche automatisch durch den Betrieb der CPU 14 eingestellt werden.
- Ein erstes der drei Statusbits, das FO (Auftreten einer schnellen Unterbrechung) 26, wird gesetzt, falls eine oder mehrere schnelle Unterbrechungen initiiert worden sind, aber noch nicht vervollständigt worden sind. Dieses Bit zeigt eine Rekursionsgefahr beim vorliegenden System und bleibt gesetzt, bis es bei Vervollständigung aller laufender Verarbeitung schneller Unterbrechungen gelöscht wird. Ein zweites der drei Statusbits, das FF (erste schnelle Unterbrechung) 28, wird gesetzt, wenn eine schnelle Unterbrechung auftritt und es keine weiteren schnellen Unterbrechungen gibt, die verarbeitet werden (d.h. es ist die erste schnelle Unterbrechung). Es wird für alle folgenden Unterbrechungen nach der ersten schnellen Unterbrechung gelöscht. Ein drittes der drei Statusbits, das CF (laufende schnelle Unterbrechung) 30, wird nur gesetzt, wenn die CPU 14 im Betriebsmodus der schnellen Unterbrechung ist. Das CF-Statusbit 30 kann sowohl durch Hardware als auch durch Software benutzt werden, um zu bestimmen, ob die verarbeitete Unterbrechung eine übliche Unterbrechung oder eine schnelle Unterbrechung ist. Somit erzeugen die drei Statusbits, das FO-Statusbit 26, das FF-Statusbit 28 und das CF-Statusbit 30 Information über den Zustand der Rekursionsgefahr des normalen Registersatzes 16, des alternativen Registersatzes 18, der Nebenregister 20 und der Hauptregister 22 und erhalten sie. Die Statusbits können durch die CPU 14 überwacht werden und während des Programmierens benutzt werden, um eine optimale Benutzung des normalen Registersatzes 16, des alternativen Registersatzes 18, der Nebenregister 20, der Hauptregister 22 und des Stapelspeichers 50 zu bieten.
- Bei der vorliegenden Ausführungsform, bei der der normale Registersatz 16 für den normalen Betrieb und übliche Unterbrechungen benutzt wird und der alternative Registersatz 18 für schnelle Unterbrechungen benutzt wird, kann eine Rekursionsgefahr existieren, falls eine Unterbrechung durch eine weitere Unterbrechung unterbrochen wird, da die zweite Unterbrechung versuchen kann, denselben Registersatz wie die erste Unterbrechung zu benutzen, ohne die Information in den Registern zu sichern. Durch Bereitstellen des Status bezüglich der Unterbrechungen kann Software geschrieben werden. (1) zur Erfassung, daß die in einem Teil oder allen Registern eines Registersatzes gespeicherte Information in den Stapelspeicher 50 gesichert werden muß; (2) zur Erfassung, daß die zuvor gespeicherte Information ausgelesen werden muß und in eines oder mehrere Register umgespeichert werden muß; und (3) zur Erfassung, welcher Typ von Unterbrechung momentan verarbeitet wird. Es gibt ebenfalls eine Rekursionsgefahr, wenn eine übliche Unterbrechung während eines normalen Betriebs empfangen wird, da die Verarbeitung der üblichen Unterbrechung den gleichen normalen Registersatz 16 und dieselben Hauptregister 22 benutzen wird. Es gibt keine Rekursionsgefahr, wenn eine erste schnelle Unterbrechung empfangen wird, da die erste schnelle Unterbrechung die CPU 14 veranlaßt, von der Benutzung des normalen Registersatzes 16 zur Benutzung des alternativen Registersatzes 18 zu schalten und von der Benutzung der Nebenregister 20 zur Benutzung der Hauptregister 22 zum ersten Mal zu schalten.
- Bei dieser besonderen Ausführungsform benutzt die Hardware der CPU 14 das FO-Statusbit 26, das FF-Statusbit 28 und das CF- Statusbit 30 zusammen mit der Unterbrechungsart einer anhängigen Unterbrechung zur Bestimmung, ob zwischen den Nebenregistern 20 und den Hauptregistern 22 umzuschalten ist oder ob die Hauptregister 22 zu speichern sind und dann die Hauptregister 22 zu benutzen sind. Diese Bestimmung könnte ebenfalls durch Software bewerkstelligt werden. Bei dieser besonderen Ausführungsform schaltet die CPU 14 zur Benutzung der Hauptregister 22, wenn die erste schnelle Unterbrechung empfangen wird. Falls irgendwelche zusätzlichen schnellen oder üblichen Unterbrechungen empfangen werden, bevor die erste schnelle Unterbrechung fertig verarbeitet ist, fährt die CPU fort, die Hauptregister 22 zu benutzen. Die CPU 14 schaltet nicht zurück zur Benutzung der Nebenregister 20, bis alle anhängigen Routinen schneller Unterbrechung fertig verarbeitet sind.
- Die Hardware der CPU 14 speichert niemals irgendeines der Register im normalen Registersatz 16 oder im alternativen Registersatz 18. Jegliches Speichern der Register, das erforderlich ist, wird dem Benutzer zur Durchführung in der Software überlassen. Die Hardwareroutine der CPU 14 bestimmt jedoch, ob zwischen den Nebenregistern 20 und den Hauptregistern 22 umzuschalten ist, und zwar auf Grundlage dessen, ob die CPU 14 im normalen Betrieb ist, eine übliche Unterbrechung verarbeitet oder eine schnelle Unterbrechung verarbeitet. Wiederum könnte die Entscheidung, ob ein Satz der Register zu speichern ist oder ob auf einen anderen Satz von Registern umzuschalten ist, ebenfalls unter Benutzung von entweder der Software oder der Hardware der CPU 14 bewerkstelligt werden.
- Da der normale Registersatz 16 zum Normalbetrieb sowie für übliche Unterbrechungen benutzt wird, muß die Information, die zerstört werden könnte, von dem normalen Registersatz 16 als erste Operation der Handhabungsroutine für die übliche Unterbrechung gespeichert werden. Doch da der alternative Registersatz 18 nur für schnelle Unterbrechungen benutzt wird, muß Information nicht vom alternativen Registersatz 18 für die erste schnelle Unterbrechung, die verarbeitet wird, gespeichert werden. Wenn jedoch eine schnelle Unterbrechung unter Benutzung des alternativen Registersatzes 18 verarbeitet wird, gibt es eine Rekursionsgefahr, da eine schnelle Unterbrechung mit einer höheren Priorität die vorliegende schnelle Unterbrechung unterbrechen könnte und somit die Benutzung desselben Registersatzes versuchen könnte. Deshalb muß die Information, die zerstört werden könnte, stets von dem alternativen Registersatz 18 gespeichert werden, falls eine schnelle Unterbrechung mit höherer Priorität empfangen wird und es bereits eine oder mehrere schnelle Unterbrechungen gibt, für die die Verarbeitung nicht vervollständigt ist.
- Wie zuvor erwähnt, zeigt das FO-Statusbit 26, ob die Verarbeitung von einer oder mehreren schnellen Unterbrechungen initiiert worden ist, aber noch nicht vervollständigt worden ist. Das FO-Statusbit 26 bleibt gesetzt und wird nicht gelöscht, bis die Verarbeitung aller schneller Unterbrechungen vervollständigt ist. Das FO-Statusbit 26 kann somit zur Bestimmung benutzt werden, ob es eine Rekursionsgefahr für den alternativen Registersatz 18 und die Hauptregister 22 gibt oder nicht. Das Speichern des alternativen Registersatzes 18 und der Hauptregister 22 ist erforderlich, wenn es sowohl eine Rekursionsgefahr gibt als auch die eintretende Unterbrechung eine schnelle Unterbrechung ist. Es ist beliebig, ob die CPU-Schaltungsanordnung selbst die gesamten oder einen Teil der Registerinformation speichert, oder ob das Speichern dem Benutzer zur Durchführung mit Softwareanweisungen überlassen wird.
- Das FF-Statusbit 28 wird nur für die "erste" schnelle Unterbrechung gesetzt, welche nur auftritt, wenn der vorherige Zustand des FO-Statusbits 26 ein gelöschter Zustand ist, der anzeigt, daß keine schnellen Unterbrechungen gegenwärtig anhängig waren. Da das FO-Statusbit 26 ebenfalls durch die erste schnelle Unterbrechung gesetzt wird, welche das FF-Statusbit 28 setzt, wird irgendeine schnelle Unterbrechung mit einem höheren Prioritätsgrad, welche initiiert wird, bevor die erste schnelle Unterbrechung vervollständigt ist, eine Rekursionsgefahrsituation verursachen, welche es erfordert, daß Information von der ersten schnellen Unterbrechung, die im alternativen Registersatz 18 gelegen ist, gespeichert wird (d.h. zum Stapelspeicher 50 transferiert wird) als erste Operation der Handhabungsroutine für die Unterbrechung. Information in den Hauptregistern 22, welche das FO-Statusbit 26, das FF-Statusbit 28, das CF-Statusbit 30 und das A/N'-Bit 36 umfaßt, wird ebenfalls gespeichert. Bei Beendigung der Operation der zweiten schnellen Unterbrechung werden die Register- und Statusbit-Informationen für die Operation der ersten schnellen Unterbrechung ausgelesen (d.h. vom Stapelspeicher 50 geholt), und die Operation der ersten schnellen Unterbrechung wird wiederaufgenommen. Die erste schnelle Unterbrechung wird die einzige schnelle Unterbrechung, für die das FF-Statusbit 28 gesetzt wird. Während der Verarbeitung aller weiterer schneller Unterbrechungen wird das FF-Statusbit 28 gelöscht. Deshalb kann das FF-Statusbit 28 benutzt werden, um zu bestimmen, ob es irgendwelche weiteren schnellen Unterbrechungen gibt oder nicht, welche anhängig sind, und ob es Information von einer oder mehreren schnellen Unterbrechungen gibt, die im Speicher bleiben oder nicht. Es ist beliebig, ob die Schaltungsanordnung der CPU 14 selbst die gesamte oder einen Teil der Registerinformation ausliest oder ob das Abrufen dem Benutzer zur Durchführung mit Softwareanweisungen überlassen wird.
- Das CF-Statusbit 30 wird benutzt, um zu zeigen, daß eine schnelle Unterbrechung momentan verarbeitet wird. Das CF-Statusbit 30 wird gesetzt, wenn die CPU 14 momentan eine schnelle Unterbrechung verarbeitet, und wird gelöscht, wenn die schnelle Unterbrechung vervollständigt ist oder wenn eine übliche Unterbrechung mit höherem Prioritätsgrad eine schnelle Unterbrechung unterbrochen hat und momentan verarbeitet wird.
- Die Fachleute werden selbstverständlich verstehen, daß zusätzliche Registersätze auf einem Halbleiterchip 10 vorgesehen werden können, um das Erfordernis des Sicherns von Operationen auf dem Stapelspeicher 50 zu reduzieren. Jedoch besteht das Problem darin, daß unabhängig von der Anzahl vorgesehener Registersätze stets ein weiterer Grad verschachtelter Unterbrechungen vorliegen kann, als die außerordentlichen Registersätze ohne Speichern aufnehmen können. Es ist selten effizient, so viele Registersätze vorzusehen, daß Speichern nicht erforderlich ist. Falls hohe Grade von Verschachtelungen selten auftreten, ist es im allgemeinen effizienter, die zwei offenbarten auf dem Chip befindlichen Registersätze bereitzustellen und den Stapelspeicher 50 während der Verschachtelung zu benutzen. In diesem Fall werden die meisten Unkosten, die mit dem Speichern oder Umspeichern vom Stapelspeicher 50 während der Unterbrechungsoperationen verbunden sind, eliminiert, da die Information im normalen Registersatz 16 und/oder alternativen Registersatz 18 nicht im Stapelspeicher 50 gespeichert werden müßte, falls keine Verschachtelung auftritt.
- Bei Erstreckung dieser Idee auf einen "N"-tiefen Satz an Registern tritt die Rekursionsgefahr auf, wenn es eine "N"-tiefe Verschachtelung von Unterbrechungen gegeben hat, so daß eine "N+1"-te Unterbrechung in der Verschachtelung erfordern würde, daß die vorherige Unterbrechungsoperation in einem Stapelspeicher gespeichert würde. In diesem Fall würde das erste Statusbit anzeigen "zumindest N-tief verschachtelte Unterbrechungen in Verarbeitung" (oder eine Rekursionsgefahr) und würde ebenfalls anzeigen, ob die CPU auf eine weitere Registerbank schalten sollte oder ob alle Register in Benutzung sind und die CPU eine zeitaufwendigere Speicherprozedur ausführen müßte, bevor eine Registerbank benutzt wird. Das zweite Statusbit würde anzeigen, welche Unterbrechung die "erste Unterbrechung" war, so daß die CPU wissen würde, wann es keine anhängigen Unterbrechungen mehr gibt. Zusätzliche Statusbits könnten optionell benutzt werden, falls es mehrere Typen von Unterbrechungen gäbe. Beispielsweise könnte ein drittes Statusbit benutzt werden, um zu zeigen, ob die CPU momentan eine übliche oder eine schnelle Unterbrechung verarbeitete. Die Manipulation dieser Bits wird die gleiche bleiben wie die für die erste Unterbrechung, das Statusbit der "ersten Unterbrechung" wird gesetzt, und bei der N-ten Verschachtelung wird das Statusbit für die "Rekursionsgefahr" gesetzt werden. Das Statusbit für die "Rekursionsgefahr" wird fortlaufend gesetzt bleiben, solange es zumindest "N"-tiefe verschachtelte Unterbrechungen in Verarbeitung gibt. Das Statusbit der "ersten Unterbrechung" wird durch jegliche folgenden Unterbrechungen oder durch Vervollständigung der ersten Unterbrechung, welche das Setzen des Statusbits für die "erste Unterbrechung" verursacht, gelöscht.
- Mit Bezug auf Fig. 2 ist ein Flußplan für ein Unterbrechungsverschachtelungsbeispiel illustriert. Bei diesem Beispiel wird der normale Betrieb durch eine schnelle Unterbrechung mit einem Prioritätsgrad "w" unterbrochen. Da dies die erste schnelle Unterbrechung ist, schaltet die CPU 14 von der Benutzung der Nebenregister 20 auf die Benutzung der Hauptregister 22. Da der alternative Registersatz 18 für die Operationen der schnellen Unterbrechung benutzt wird und da momentan keine Rekursionsgefahr vorliegt, speichert die CPU 14 nicht, sondern schaltet anstatt dessen die Registerbänke und wählt den alternativen Registersatz 18 vor dem Start der schnellen Unterbrechung mit dem Grad "w". Da dies ebenfalls die erste schnelle Unterbrechung ist und da die CPU 14 momentan im Modus der schnellen Unterbrechung ist, sind das FO-Statusbit 26, das FF- Statusbit 28 und das CF-Statusbit 30 alle gesetzt.
- Bevor die Operation der schnellen Unterbrechung mit dem Grad "w" vervollständigt werden kann&sub1; wird eine schnelle Unterbrechung mit einem Prioritätsgrad "x" (welcher größer als der Prioritätsgrad w ist) angefordert und darauf folgend initiiert. Der alternative Registersatz 18 bleibt aktiviert, da die eintretende Unterbrechung eine schnelle Unterbrechung ist. Die Hardware der CPU 14 speichert die Information, die der Unterbrechung mit dem Grad "w" zugeordnet ist, von den Hauptregistern 22 auf den Stapelspeicher 50. Der Benutzer hat in seiner Software die Option des Speicherns jeglicher Information, die der Unterbrechung mit dem Grad "w" verbunden ist und die durch die neue Unterbrechung "x" zerstört werden könnte, vom Registersatz 18 auf den Stapelspeicher 50. Die CPU 14 kann dann die Operation der schnellen Unterbrechung mit dem Grad "x" starten. Das FF-Statusbit 28 wird gelöscht, da die CPU 14 die "erste schnelle Unterbrechung" nicht mehr verarbeitet. Das FO- Statusbit 26 und das CF-Statusbit 30 bleiben jedoch gesetzt, da eine schnelle Unterbrechung initiiert, aber nicht vervollständigt ist und die CPU 14 momentan eine schnelle Unterbrechung verarbeitet.
- Bevor die Operation der schnellen Unterbrechung mit dem Grad "x" vervollständigt werden kann, wird eine übliche Unterbrechung mit einem Prioritätsgrad "y" (der größer als der Prioritätsgrad x ist) angefordert. Die Hardware der CPU 14 stapelt die Information, die mit der Unterbrechung mit dem Grad "x" verbunden ist, von den Hauptregistern 22 auf den Stapelspeicher 50. Die CPU schaltet von der Benutzung des alternativen Registersatzes 18 auf die Benutzung des normalen Registersatzes 16, da der normale Registersatz 16 für alle üblichen Unterbrechungen benutzt wird. Der Benutzer hat softwaremäßig die Option des Speicherns jeglicher Information, die mit dem Normalbetrieb verbunden ist und die durch die neue Unterbrechung "y" zerstört werden könnte, vom normalen Registersatz 18 auf den Stapelspeicher 50. Mit der Initiierung der üblichen Unterbrechung mit dem Grad "y" wird das CF-Statusbit 30 gelöscht, da die CPU 14 momentan eine übliche Unterbrechung verarbeitet.
- Bevor die Operation der üblichen Unterbrechung mit dem Pegel "y" vervollständigt werden kann, wird eine schnelle Unterbrechung mit einem Prioritätsgrad "z" (der größer als der Prioritätsgrad y ist) angefordert. Die Hardware der CPU 14 speichert die Information, die mit der Unterbrechung mit dem Grad "y" verbunden ist, von den Hauptregistern 22 auf den Stapelspeicher 50. Die CPU 14 schaltet von der Benutzung des normalen Registersatzes 16 auf die Benutzung des alternativen Registersatzes 18, da der alternative Registersatz 18 für alle schnellen Unterbrechungen benutzt wird. Der Benutzer hat softwaremäßig die Option des Stapelns jeglicher Information, die mit der Unterbrechung mit dem Grad "x" verbunden ist und die durch die neue Unterbrechung "z" zerstört werden könnten, vom alternativen Registersatz 18 auf den Stapelspeicher 50. Die CPU 14 initiiert den Betrieb der schnellen Unterbrechung mit dem Pegel "z", und das CF-Statusbit 30 wird wiederum gesetzt, da die CPU 14 momentan eine schnelle Unterbrechung verarbeitet.
- Keine zusätzlichen Unterbrechungen werden angefordert, und die CPU 14 kann den Betrieb der schnellen Unterbrechung mit dem Grad "z" vervollständigen. Es sei bemerkt, daß, falls der Benutzer softwaremäßig irgendwelche Information, die den Betrieb der schnellen Unterbrechung mit dem Grad "x" zugeordnet ist, am Beginn der Unterbrechungsverarbeitung mit dem Grad "z" speichert, die Information, die mit dem Betrieb der schnellen Unterbrechung mit dem Grad "x" verbunden ist, am Ende der Unterbrechungsverarbeitung mit dem Grad "z" ausgelesen und umgespeichert werden muß. Wenn der Betrieb der schnellen Unterbrechung mit dem Grad "z" vervollständigt ist, wird die Information, die mit dem Betrieb der üblichen Unterbrechung mit dem Grad "y" verbunden ist, vom Stapelspeicher 50 ausgelesen und in die Hauptregister 22 geladen. Das CF-Statusbit 30 kann benutzt werden, um zu bestimmen, ob eine verbleibende Unterbrechung eine übliche Unterbrechung ist und den normalen Registersatz 16 benutzen sollte, oder ob sie eine schnelle Unterbrechung ist und den alternativen Registersatz 18 benutzen sollte. Da das ausgelesene CF-Statusbit anzeigt, daß die nächste Unterbrechung eine übliche Unterbrechung (Grad "y") ist und da die Information für diesen Betrieb noch im normalen Registersatz 16 ist, aktiviert die CPU 14 den normalen Registersatz 16 und fährt fort mit der Operation der üblichen Unterbrechung mit dem Grad "y".
- Vor Vervollständigung der üblichen Unterbrechung mit dem Grad "y" muß der Benutzer softwaremäßig jegliche Information, die dem normalen Betrieb zugeordnet ist und vorher gespeichert worden ist, vom Stapelspeicher 50 in den normalen Registersatz 16 auslesen. Wenn die übliche Unterbrechung mit dem Grad "y" vervollständigt ist, wird die Information, die im Stapelspeicher 50 gespeichert ist und mit dem Betrieb der schnellen Unterbrechung mit dem Grad "x" verbunden ist, zurück in die Hauptregister 22 transferiert. Da der entladene Wert des CF- Statusbits 30 anzeigt, daß diese verbleibende Unterbrechung eine schnelle Unterbrechung ist, wird der alternative Registersatz 18, der die Information enthält, welche mit dem Betrieb der schnellen Unterbrechung mit dem Grad "x" verbunden ist, aktiviert, und der Betrieb der schnellen Unterbrechung mit dem Grad "x" wird fortgeführt.
- Am Ende der Unterbrechungsroutine mit dem Grad "x" muß der Benutzer softwaremäßig jegliche Information, die dem Betrieb der schnellen Unterbrechung mit dem Grad "w" verbunden ist und die zuvor gespeichert worden ist, vom Stapelspeicher 50 in den alternativen Registersatz 18 umladen. Wenn der Betrieb der schnellen Unterbrechung mit dem Grad "x" vervollständigt ist, wird die Information, die mit dem Betrieb der schnellen Unterbrechung mit dem Grad "w" verbunden ist, vom Stapelspeicher 50 ausgelesen und in die Hauptregister 22 geladen. Da das ausgelesene CF-Statusbit 30 anzeigt, daß die nächste Unterbrechung eine schnelle Unterbrechung (Grad "w") ist und da die Information für diesen Betrieb bereits im alternativen Registersatz 18 liegt, hält die CPU 14 den alternativen Registersatz 18 aktiviert und führt den Betrieb der schnellen Unterbrechung mit dem Grad "w" fort. Da das FF-Statusbit 28 für die schnelle Unterbrechung mit dem Grad "w" gesetzt ist, ist bekannt, daß diese Unterbrechung die letzte verbleibende schnelle Unterbrechung in Verarbeitung ist.
- Wenn die Verarbeitung der ersten schnellen Unterbrechung mit dem Grad "w" vervollständigt ist, schaltet die CPU 14 zurück auf die Benutzung der Nebenregister 20. Der Betrieb der ersten schnellen Unterbrechung muß kein Speichern durchführen, da es stets der erste Prozeß ist, der sowohl den alternativen Registersatz 18 als auch die Hauptregister 22 benutzt. Mit Vervollständigung des Betriebs der ersten schnellen Unterbrechung kann die CPU 14 auf den normalen Betrieb zurückkehren. Der normale Registersatz 16 enthält bereits die Information, die mit dem normalen Betrieb verbunden ist, und wird einfach aktiviert, wenn die CPU 14 den normalen Betrieb wiederaufnimmt.
- Es sollte bemerkt werden, daß während der oben beschriebenen Verschachtelungsprozedur die Statusbits FO 26, FF 28 und CF 30 benutzt wurden, um den augenblicklichen Status der CPU 14 und den Verlauf der Verschachtelungsprozedur zu zeigen. Zusätzlich können die Korrelation zwischen den drei Statusbits, die Verschachtelungsprozedur und der Inhalt des normalen Registersatzes 16, des alternativen Registersatzes 18, der Nebenregister 20, der Hauptregister 22 und des Stapelspeichers 50 überwacht werden. Somit erscheint den Fachleuten klar, daß der Inhalt und der Betrieb des normalen Registersatzes 16, der alternativen Registersatzes 18, der Nebenregister 20, der Hauptregister 22 und des Stapelspeichers 50 einfach und effizient durch Benutzung der Statusbits FO 26, FF 28 und CF 30 gesteuert werden können.
- Mit Bezug auf Fig. 3A und 3B sind diese Figuren zwei mögliche Zustandsdiagrammdarstellungen für die Statusbits, welche zur Behandlung von Rekursionsgefahr benutzt werden können. Fig. 3A ist ein Zustandsdiagramm 40 der bevorzugten Ausführungsform, welche ein FO-Statusbit 26, ein FF-Statusbit 28 und ein CF- Statusbit 30 benutzt, wie in dieser Beschreibung beschrieben. Ein Pfeil repräsentiert das Auftreten einer Unterbrechung. Wenn die Verarbeitung dieser besonderen Unterbrechung vervollständigt ist, werden die Statusbits für die vorherige Unterbrechung wiederhergestellt, und somit kehrt die CPU 14 in ihren vorherigen Zustand zurück.
- Der Zustand "000" repräsentiert den Zustand, in dem keine schnellen Unterbrechungen ablaufen. Der Zustand "111" repräsentiert den Zustand, in dem nur eine schnelle Unterbrechung aufgetreten ist und in dem die jüngste Unterbrechung, die auftrat, eine schnelle Unterbrechung war. Der Zustand "101" repräsentiert den Zustand, in dem mehr als eine schnelle Unterbrechung aufgetreten ist und in dem die jüngste Unterbrechung, die auftrat, eine schnelle Unterbrechung war. Der Zustand "110" repräsentiert den Zustand, in dem nur eine schnelle Unterbrechung auftrat und in dem die jüngste Unterbrechung, die auftrat, eine übliche Unterbrechung war. Der Zustand "100" repräsentiert den Zustand, in dem mehr als eine schnelle Unterbrechung auftrat und in dem die jüngste Unterbrechung, die auftrat, eine übliche Unterbrechung war. Diese besonderen Zustände und die entsprechenden Bitdarstellungen wurden zur Erleichterung der Softwareprogrammierung gewählt, aber andere Zustände und andere Bitdarstellungen sind ebenfalls möglich.
- Mit Bezug auf Fig. 3B illustriert das Zustandsdiagramm 50, daß es ebenfalls möglich wäre, Rekursionsgefahr unter Benutzung von nur zwei Statusbits zu handhaben. Hervortretend aus dem Rücksetzzustand würden die zwei Statusbits im Zustand "00" starten. Übliche Unterbrechungen würden keine Anderung der Statusbits verursachen, jedoch eine schnelle Unterbrechung würde den Wert der Statusbits auf "01" ändern. Wenn im Zustand "01", würde eine schnelle Unterbrechung den Wert der Statusbits auf "10" ändern, wohingegen eine übliche Unterbrechung den Wert der Statusbits auf "11" ändern würde. Im Zustand "10" würde eine schnelle Unterbrechung den Wert der Statusbits nicht ändern, aber eine übliche Unterbrechung würde den Wert der Statusbits auf "11" ändern. Im Zustand "11" würde eine übliche Unterbrechung den Wert der Statusbits nicht ändern, aber eine schnelle Unterbrechung würde den Wert der Statusbits auf "10" ändern. Die Hardware der CPU 14 oder der Softwareprogrammierer würde stets in der Lage sein, anzugeben, ob es eine Rekursiongefahr gab oder nicht, ob eine Unterbrechung die erste schnelle Unterbrechung war und ob die jüngste Unterbrechung eine schnelle Unterbrechung oder eine übliche Unterbrechung war, nämlich durch Berücksichtigung des Wertes der zwei Statusbits. Der Zustand "00" ist der einzige Zustand, in dem es keine Rekursionsgefahr für eine schnelle Unterbrechung gibt. Der Zustand "01" zeigt, daß die gegenwärtige Unterbrechung die erste schnelle Unterbrechung ist. Die Zustände "01" und "10" sind nur für schnelle Unterbrechungen, während der Zustand "00" und "11" nur für übliche Unterbrechungen sind.
- Die Erfindung ermöglicht die Implementierung und die Benutzung von Ressourcen, welche Rekursionsgefahr unterliegen, durch Bereitstellung eines Mechanismus zur Beurteilung: (1) wann die Rekursionsprobleme auftreten, so daß irgendwelche weiteren Anstrengungen zur Benutzung der Ressource auf eine ähnliche Ressource gerichtet werden können, die den Rekursionsbeschränkungen nicht unterliegt; und (2) wann es eine Erholung von der Gefahr eines unmittelbaren Rekursionsproblems gibt, so daß die Ressource, welche die Möglichkeit der Rekursionsprobleme aufwies, wieder benutzt werden kann. Dies erlaubt die Implementierung von Ressourcen, welche, obwohl sie einer Rekursionsgefahr unterliegen, eine höhere Funktionslösung bieten als die sekundäre Ressource, welche nicht die Rekursionsgefahr aufweist. Weiterhin kann, gemäß der vorliegenden Erfindung, die Vorrichtung so strukturiert werden, daß die Ressource mit der hohen Funktionstüchtigkeit eine genügende Tiefe aufweist, daß sie eine Verbesserung der Funktionstüchtigkeit des Gesamtsystems bietet, während sie noch den außergewöhnlicheren Fall einer Rekursionsgefahr löst.
Claims (10)
1. Digitaler Datenprozessor mit:
einem Bus;
einem ersten Registersatz (16, 20), der mit dem Bus
verbunden ist;
einem zweiten Registersatz (18, 22), der mit dem Bus
verbunden ist;
einem ersten Statusbit (26), das mit dem Bus verbunden
ist;
einem zweiten Statusbit (28), das mit dem Bus verbunden
ist;
einer zentralen Verabeitungseinheit, die mit dem Bus
verbunden ist, zum Benutzen des ersten und zweiten
Registersatzes zu jeweiligen Zeiten;
einer ersten Unterbrechungsempfangseinrichtung, die mit
der zentralen Verarbeitungseinheit und mit einem ersten
Unterbrechungsanforderungssignalleiter verbunden ist, zum
Empfangen von Unterbrechungsanforderungen eines ersten
Typs;
gekennzeichnet durch:
eine zweite Unterbrechungsempfangseinrichtung, die mit
der zentralen Verarbeitungseinheit und mit einem zweiten
Unterbrechungsanforderungssignalleiter verbunden ist, zum
Empfangen von Unterbrechungsanforderungen eines zweiten
Typs;
einer Zustandsbestimmungseinrichtung, die mit dem ersten
und zweiten Statusbit und der ersten und zweiten
Unterbrechungsempfangseinrichtung verbunden ist, zum
Bestimmen, ob die Unterbrechungsanforderung vom ersten
Typ oder vom zweiten Typ ist, ob das erste Statusbit in
einem ersten Zustand oder einem zweiten Zustand ist, und
ob das zweite Statusbit in dem ersten Zustand oder dem
zweiten Zustand ist, als Reaktion auf den Empfang einer
Unterbrechungsanforderung durch entweder die erste oder
zweite Unterbrechungsempfangseinrichtung; und
einer Registersatz-Auswahleinrichtung, die mit der
Zustandsbestimmungseinrichtung und der zentralen
Verarbeitungseinheit verbunden ist, zum Auswählen eines des
ersten und zweiten Registersatzes zur Benutzung durch die
zentrale Verarbeitungseinheit als Reaktion auf den
Empfang einer Unterbrechungsanforderung durch entweder
die erste oder zweite Unterbrechungsempfangseinrichtung,
wobei die Auswahl durch die
Registersatz-Auswahleinrichtung von den Bestimmungen der
Zustandsbestimmungseinrichtung abhängig ist.
2. Digitaler Datenprozessor nach Anspruch 1, gekennzeichnet
durch:
eine Folgezustands-Bestimmungseinrichtung, die mit dem
ersten und zweiten Statusbit und der ersten und zweiten
Unterbrechungsempfangseinrichtung verbunden ist, zum
Bestimmen neuer Werte des ersten und zweiten Statusbits als
Reaktion auf den Empfang einer Unterbrechungsanforderung
durch entweder die erste oder zweite
Unterbrechungsempfangseinrichtung.
3. Digitaler Datenprozessor nach Anspruch 2, gekennzeichnet
durch:
ein erstes Steuerbit, das mit dem Bus und der
Registersatz-Auswahleinrichtung
verbunden ist, wobei der Zustand
des ersten Steuerbits anzeigt, welcher des ersten und
zweiten Registersatzes momentan durch die zentrale
Verarbeitungseinheit benutzt wird, und die zentrale
Verarbeitungseinheit in der Lage ist, den Zustand des
ersten Steuerbits unabhängig von der Registersatz-
Auswahleinrichtung zu bestimmen.
4. Digitaler Datenprozessor nach Anspruch 2, gekennzeichnet
durch:
ein drittes Statusbit, das mit dem Bus verbunden ist; und
wobei das erste, zweite und dritte Statusbit
zusammengenommen eine der folgenden Anzeigen bilden:
daß keine Unterbrechungsanforderung des zweiten Typs
empfangen wurde, die nicht vervollständigt ist;
daß nur eine Unterbrechungsanforderung des zweiten Typs
empfangen wurde und daß eine jüngste empfangene
Unterbrechungsanforderung vom zweiten Typ war;
daß mehr als eine Unterbrechungsanforderung des zweiten
Typs empfangen wurde und daß eine jüngste empfangene
Unterbrechungsanforderung vom zweiten Typ war; und
daß zumindest eine Unterbrechungsanforderung vom zweiten
Typ empfangen wurde und daß eine jüngste empfangene
Unterbrechungsanforderung vom ersten Typ war.
5. Digitaler Datenprozessor mit:
einem Bus;
einem ersten Registersatz, der mit dem Bus verbunden ist,
wobei der erste Registersatz weiterhin aufweist:
einen ersten Registeruntersatz (20); und
einen zweiten Registeruntersatz (16);
einem zweiten Registersatz, der mit dem Bus verbunden
ist, wobei der zweite Registersatz weiterhin aufweist:
einen dritten Registeruntersatz (22); und
einen vierten Registeruntersatz (18);
einem ersten Statusbit, das mit dem Bus verbunden ist;
einem zweiten Statusbit, das mit dem Bus verbunden ist;
einer zentralen Verarbeitungseinheit, die mit dem Bus
verbunden ist, zum Benutzen des ersten und zweiten
Registersatzes zu jeweiligen Zeiten;
einer ersten Unterbrechungsempfangseinrichtung, die mit
der zentralen Verarbeitungseinheit und mit einem ersten
Unterbrechungsanforderungssignalleiter verbunden ist, zum
Empfangen der Unterbrechungsanforderungen eines ersten
Typs;
gekennzeichnet durch:
eine zweite Unterbrechungsempfangseinrichtung, die mit
der zentralen Verarbeitungseinheit und mit einem zweiten
Unterbrechungsanforderungssignalleiter verbunden ist, zum
Empfangen von Unterbrechungsanforderungen eines zweiten
Typs;
eine Zustandsbestimmungseinrichtung, die mit dem ersten
und zweiten Statusbit und der ersten und zweiten
Unterbrechungsempfangseinrichtung verbunden ist, zum
Bestimmen, ob die Unterbrechungsanforderung vom ersten
Typ oder vom zweiten Typ ist, ob das erste Statusbit in
einem ersten Zustand oder einem zweiten Zustand ist, und
ob das zweite Statusbit im ersten Zustand oder im zweiten
Zustand ist, als Reaktion auf den Empfang einer
Unterbrechungsanforderung durch entweder die erste oder
die zweite Unterbrechungsempfangseinrichtung; und
eine Registersatz-Auswahleinrichtung, die mit der
Zustandsbestimmungseinrichtung und mit der zentralen
Verarbeitungseinheit verbunden ist, zum Auswählen, eines des
ersten und dritten Registeruntersatzes und eines des
zweiten und vierten Registersuntersatzes zur Benutzung
durch die zentrale Verarbeitungseinheit als Reaktion auf
den Empfang einer Unterbrechungsanforderung durch
entweder die erste oder die zweite
Unterbrechungsempfangseinrichtung, wobei die Auswahl durch die
Registersatz-Auswahleinrichtung von den Bestimmungen der
Zustandsbestimmungseinrichtung abhängig ist.
6. Verfahren zum Betreiben eines digitalen Datenprozessors
mit den Schritten:
Durchführen einer Nicht-Unterbrechungs-Verarbeitung unter
Benutzung eines ersten Registersatzes;
Empfangen von Unterbrechungsanforderungen eines ersten
Typs;
bedingtes Unterbrechen der
Nicht-Unterbrechungs-Verarbeitung und Beginnen einer Unterbrechungsverarbeitung beim
Empfang einer Unterbrechungsanforderung des ersten Typs;
wobei das Verfahren durch folgende weitere Schritte
gekennzeichnet ist:
Empfangen von Unterbrechungsanforderungen eines zweiten
Typs;
bedingtes Unterbrechen der
Nicht-Unterbrechungs-Verarbeitung
und Beginnen der Unterbrechungsverarbeitung beim
Empfang einer Unterbrechungsanforderung des zweiten Typs;
Setzen und Löschen eines ersten und zweiten Statusbits
abhängig davon,
ob eine Unterbrechungsanforderung des zweiten Typs
empfangen wurde und nicht vervollständigt ist;
ob eine Unterbrechungsanforderung des zweiten Typs
momentan verarbeitet wird; und
Auswählen von einem des Registersatzes und eines
alternativen Registersatzes beim Beginn der
Unterbrechungsverarbeitung, wobei ein Resultat des Auswahlschritts davon
abhängt, ob der Beginn der Unterbrechungsverarbeitung
durch eine Unterbrechungsanforderung des ersten Typs oder
des zweiten Typs bewirkt wurde, und von Zuständen des
ersten und zweiten Statusbits.
7. Verfahren nach Anspruch 6, gekennzeichnet durch folgende
Schritte:
Setzen und Löschen des ersten und zweiten Statusbits
abhängig davon,
ob eine Unterbrechung, die momentan verarbeitet wird, vom
zweiten Typ ist und die einzige solche
Unterbrechungsanforderung des zweiten Typs ist, die empfangen wurde und
nicht vervollständigt wurde.
8. Verfahren nach Anspruch 71 dadurch gekennzeichnet, daß
der Schritt des Auswählens von einem des ersten
Registersatzes und des zweiten Registersatzes weiterhin
folgende Schritte aufweist:
Auswählen von einem eines ersten und eines dritten
Registeruntersatzes und von einem eines zweiten und vierten
Registeruntersatzes.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
der Schritt des Auswählens des ersten Registersatzes und
des zweiten Registersatzes weiterhin folgenden Schritt
aufweist:
stets Auswählen des dritten Registeruntersatzes, nachdem
eine erste Unterbrechungsanforderung des zweiten Typs
empfangen wurde und bevor die erste
Unterbrechungsanforderung des zweiten Typs vervollständigt wurde.
10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß
der Schritt des Auswählens von einem des ersten
Registersatzes und des zweiten Registersatzes weiterhin
folgenden Schritt aufweist:
stets Auswählen des vierten Registeruntersatzes, während
die zentrale Verarbeitungseinheit eine
Unterbrechungsanforderung des zweiten Typs verarbeitet.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/461,587 US5115506A (en) | 1990-01-05 | 1990-01-05 | Method and apparatus for preventing recursion jeopardy |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69031558D1 DE69031558D1 (de) | 1997-11-13 |
DE69031558T2 true DE69031558T2 (de) | 1998-03-26 |
Family
ID=23833181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69031558T Expired - Lifetime DE69031558T2 (de) | 1990-01-05 | 1990-12-20 | Verfahren und Vorrichtung zur Verarbeitung von verschachtelten Unterbrechungen |
Country Status (6)
Country | Link |
---|---|
US (1) | US5115506A (de) |
EP (1) | EP0441054B1 (de) |
JP (1) | JP2972355B2 (de) |
KR (1) | KR0185979B1 (de) |
DE (1) | DE69031558T2 (de) |
HK (1) | HK1003604A1 (de) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR940001878B1 (ko) * | 1990-03-08 | 1994-03-10 | 가부시끼가이샤 히다찌세이사꾸쇼 | 멀티 프로세서시스템 및 인터럽션 제어장치 |
JP2507833B2 (ja) * | 1990-12-25 | 1996-06-19 | 三菱電機株式会社 | マイクロコンピュ−タ |
JP3110866B2 (ja) * | 1992-06-01 | 2000-11-20 | 株式会社東芝 | マイクロプロセッサ |
US5313640A (en) * | 1992-09-23 | 1994-05-17 | International Business Machines Corporation | Method and system for the efficient response to multiple different types of interrupts |
US5388226A (en) * | 1992-10-05 | 1995-02-07 | Motorola, Inc. | Method and apparatus for accessing a register in a data processing system |
US5386563A (en) * | 1992-10-13 | 1995-01-31 | Advanced Risc Machines Limited | Register substitution during exception processing |
JPH0713772A (ja) * | 1993-06-29 | 1995-01-17 | Mitsubishi Electric Corp | データ処理装置 |
US5642516A (en) * | 1994-10-14 | 1997-06-24 | Cirrus Logic, Inc. | Selective shadowing of registers for interrupt processing |
US5812868A (en) * | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US5903919A (en) * | 1997-10-07 | 1999-05-11 | Motorola, Inc. | Method and apparatus for selecting a register bank |
US5901309A (en) * | 1997-10-07 | 1999-05-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for improved interrupt handling within a microprocessor |
US6493781B1 (en) * | 1999-08-19 | 2002-12-10 | Koninklijke Philips Electronics N.V. | Servicing of interrupts with stored and restored flags |
US7133951B1 (en) * | 2000-02-29 | 2006-11-07 | Bourekas Philip A | Alternate set of registers to service critical interrupts and operating system traps |
WO2002033570A2 (en) | 2000-10-18 | 2002-04-25 | Koninklijke Philips Electronics N.V. | Digital signal processing apparatus |
US7487339B2 (en) * | 2001-10-12 | 2009-02-03 | Mips Technologies, Inc. | Method and apparatus for binding shadow registers to vectored interrupts |
US7552261B2 (en) * | 2001-10-12 | 2009-06-23 | Mips Technologies, Inc. | Configurable prioritization of core generated interrupts |
WO2003091972A1 (en) * | 2002-04-26 | 2003-11-06 | Telefonaktiebolaget Lm Ericsson | Memory access register file |
AU2003259443A1 (en) * | 2002-09-03 | 2004-03-29 | Koninklijke Philips Electronics N.V. | Method and apparatus for handling nested interrupts |
US7493478B2 (en) * | 2002-12-05 | 2009-02-17 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
US7680990B2 (en) * | 2003-05-30 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Superword memory-access instructions for data processor |
TW200511111A (en) | 2003-07-30 | 2005-03-16 | Koninkl Philips Electronics Nv | Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set |
CN101075219B (zh) * | 2007-06-19 | 2010-08-11 | 北京中星微电子有限公司 | 一种中断处理方法及系统 |
US8151095B1 (en) * | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US9195497B2 (en) | 2012-03-21 | 2015-11-24 | Microchip Technology Incorporated | Microcontroller with context switch |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3858182A (en) * | 1972-10-10 | 1974-12-31 | Digital Equipment Corp | Computer program protection means |
US4217638A (en) * | 1977-05-19 | 1980-08-12 | Tokyo Shibaura Electric Co., Ltd. | Data-processing apparatus and method |
JPS5616248A (en) * | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
US4434461A (en) * | 1980-09-15 | 1984-02-28 | Motorola, Inc. | Microprocessor with duplicate registers for processing interrupts |
JPS58129658A (ja) * | 1982-01-29 | 1983-08-02 | Nec Corp | マイクロプログラム制御装置 |
JPS60214044A (ja) * | 1984-04-09 | 1985-10-26 | Nec Corp | マイクロコンピュ−タ |
DE3566314D1 (en) * | 1984-04-26 | 1988-12-22 | Bbc Brown Boveri & Cie | Apparatus for saving a calculator status |
JPS6177936A (ja) * | 1984-09-26 | 1986-04-21 | Nec Corp | 情報処理装置 |
JPS61206043A (ja) * | 1985-03-11 | 1986-09-12 | Hitachi Ltd | 仮想計算機システムにおける割込制御方法 |
JPS63245529A (ja) * | 1987-03-31 | 1988-10-12 | Toshiba Corp | レジスタ退避復元装置 |
JP2594600B2 (ja) * | 1988-02-23 | 1997-03-26 | 日本電気株式会社 | シングルチップマイクロコンピュータ |
-
1990
- 1990-01-05 US US07/461,587 patent/US5115506A/en not_active Expired - Lifetime
- 1990-12-12 KR KR1019900020364A patent/KR0185979B1/ko not_active IP Right Cessation
- 1990-12-20 EP EP90314038A patent/EP0441054B1/de not_active Expired - Lifetime
- 1990-12-20 DE DE69031558T patent/DE69031558T2/de not_active Expired - Lifetime
-
1991
- 1991-01-04 JP JP3010338A patent/JP2972355B2/ja not_active Expired - Lifetime
-
1998
- 1998-03-28 HK HK98102661A patent/HK1003604A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR910014802A (ko) | 1991-08-31 |
EP0441054A1 (de) | 1991-08-14 |
KR0185979B1 (ko) | 1999-05-15 |
EP0441054B1 (de) | 1997-10-08 |
HK1003604A1 (en) | 1998-10-30 |
JPH04211838A (ja) | 1992-08-03 |
DE69031558D1 (de) | 1997-11-13 |
US5115506A (en) | 1992-05-19 |
JP2972355B2 (ja) | 1999-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69031558T2 (de) | Verfahren und Vorrichtung zur Verarbeitung von verschachtelten Unterbrechungen | |
DE3889578T2 (de) | Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation. | |
DE3751164T2 (de) | Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten. | |
DE69231957T2 (de) | Hochgeschwindigkeitsprozessor zum fähiger Abhandeln mehrerer Unterbrechungen | |
DE69429226T2 (de) | Absendung von Befehlen an mehrere Verarbeitungseinheiten | |
DE69024753T2 (de) | Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt | |
DE3853529T2 (de) | Dynamische Mehrbefehle-Mehrdaten-Mehrpipeline-Gleitpunkteinheit. | |
DE69803304T2 (de) | Hardwareunterstütztes verfahren zum kontextwechsel | |
DE3687866T2 (de) | System zur verwaltung einer mehrzahl gemeinsamer unterbrechungsbehandlungsroutinen in einer datenstruktur mit verknuepften listen. | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE69732020T2 (de) | Wiedereinordnung von Speicheranforderungen in einem Datenverarbeitungssystem | |
DE2629459C2 (de) | ||
DE3686018T2 (de) | Betriebsfuehrung von hardwaremitteln. | |
DE1499182C3 (de) | Datenspeichersystem | |
DE2750721A1 (de) | Ein/ausgabe-system | |
DE2612139A1 (de) | Ein/ausgang-steuerungssystem | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3726168C2 (de) | ||
DE2164793A1 (de) | Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit | |
EP1079307B1 (de) | Verfahren zum Betrieb eines Speichersystems sowie Speichersystem | |
DE69326705T2 (de) | Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem | |
DE68923992T2 (de) | Datenverarbeitungssubsystem-Betriebsverfahren. | |
DE68925376T2 (de) | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas | |
DE69807412T2 (de) | Prozessorarchitekturschema und Befehlssatz zur Maximierung verfügbarer Opcodes und zum Einsetzen verschiedener Adressierungsmodi | |
DE112010005951T5 (de) | Unterbrechungssignal-Annahmevorrichtung und Computervorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: SCHUMACHER & WILLSAU, PATENTANWALTSSOZIETAET, 80335 MUENCHEN |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US |