DE69622785T2 - Prozessorunterbrechungssteuerung - Google Patents
ProzessorunterbrechungssteuerungInfo
- Publication number
- DE69622785T2 DE69622785T2 DE69622785T DE69622785T DE69622785T2 DE 69622785 T2 DE69622785 T2 DE 69622785T2 DE 69622785 T DE69622785 T DE 69622785T DE 69622785 T DE69622785 T DE 69622785T DE 69622785 T2 DE69622785 T2 DE 69622785T2
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- signal
- processor
- circuit
- input
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 89
- 230000004044 response Effects 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Description
- Die vorliegende Erfindung betrifft die Steuerung von Unterbrechungsanforderungen von mehrfacher Priorität an eine CPU eines Mikroprozessors.
- Eine Unterbrechung (Interrupt) ist jeder Vorgang, welcher eine momentane Unterbrechung der Ausführung eines bestimmten Prozesses durch einen Prozessor bewirkt, damit der Prozessor einen Unterbrechungsprozeß ausführen kann. Ein solcher Vorgang wird in der Regel in Prozessorschaltungen durch Peripheriegeräte ausgelöst, welche bei dem Prozessor anfragen, um die Ausführung eines Hauptprozesses zu unterbrechen, mit dem Ziel, einen diesem bestimmten Peripheriegerät zugehörigen Unterbrechungsprozeß auszuführen.
- Der Artikel mit dem Titel "Designing Interrupt Structure for Multiprocessor Systems" in Computer Design, Vol. 17, Nr. 9, September 1978, Seiten 101 bis 110, von Autor R. Jaswa, beschreibt die Entwicklung von Unterbrechungsmechanismen für Mikroprozessor-basierte Systeme, welche ein Identifizieren der Funktionsphasenunterteilung, das Zuweisen von Prioritätensetzungstechniken und das Klassifizieren von Softwarekategorien umfassen, um eine optimale Unterbrechungsstruktur bei vier Betriebssystemniveaus zu entwickeln: im Prozessor, im intelligenten Subsystem, bei der Betriebssystemsausführung und für eine Zwischenprozessorinteraktion.
- Bekannte Prozessoren wurden so entwickelt, daß sie eine feste Anzahl von Unterbrechungsprioritätsniveaus unterstützen können. Es kann aber für einen Prozessor notwendig sein, mehr als eine Unterbrechung zu unterstützen, wenn unterschiedliche Unterbrechungsanforderungen verschiedene Unterbrechungsprozesse benötigen. Es ist nicht nur notwendig, daß Prozessoren in der Lage sind, mehrfache Unterbrechungsanforderungen zu unterstützen, sondern sie müssen auch in der Lage sein, Prioritäten für diese Anforderungen zu setzen, falls diese gleichzeitig auftreten.
- Jedoch ist die Anzahl von Unterbrechungsprioritätsniveaus, welche unterstützt werden können, begrenzt durch den Prozessor selbst. Typischerweise kann ein Prozessor lediglich zwei Unterbrechungsprioritätsniveaus unterstützen. Obwohl Prozessoren ausgebildet sein können, um zusätzliche Unterbrechungsniveaus zu unterstützen, ist eine solche Ausbildung komplex und es kann notwendig sein, den Befehlssatz des Prozessors zu modifizieren und auch zusätzliche Register bereitzustellen.
- Es ist daher ein Ziel der vorliegenden Erfindung, eine Vorrichtung und ein Verfahren zum Betreiben von Unterbrechungsanforderungen von mehrfacher Priorität an einen Prozessor bereitzustellen, wobei das Problem der Veränderung des Prozessors selbst vermieden bzw. verringert wird.
- Nach einem Aspekt der vorliegenden Erfindung wird eine Steuerungsschaltung für Unterbrechungsanforderungen mehrfacher Priorität an einen Mikroprozessor bereitgestellt, aufweisend: eine Eingangsschaltung, welche eine Mehrzahl von parallelen Eingängen zum Empfangen von jeweiligen Unterbrechungssignalen und eine Eingangsspeicherschaltung aufweist, welche anzeigt, welcher der Eingänge ein Unterbrechungssignal empfangen hat und diese Information speichert bis ein dem jeweiligen Unterbrechungssignal zugehöriger Unterbrechungsvorgang beendet wurde; eine Kennzeichenspeicherschaltung zum Speichern einer Mehrzahl von Unterbrechungskennzeichen, wobei jedes Unterbrechungskennzeichen einen Unterbrechungsvorgang für die Ausführung durch den Prozessor und als einem jeweiligen der Unterbrechungssignale entsprechenden kennzeichnet; eine Entscheidungsschaltung, welche mit der Eingangsspeicherschaltung verbunden ist, zum Bestimmen eines Prioritätsstatus für jedes Unterbrechungssignal, für welches die Information durch die Eingangsspeicherschaltung gespeichert wird, und zum Auswählen des einen Unterbrechungssignals mit dem höchsten Prioritätsstatus;
- und eine Ausgangsschaltung, welche nur in Reaktion auf ein Unterbrechungssignal betreibbar ist, welches einen höheren Prioritätsstatus als jeder gegenwärtig ausgeführte Unterbrechungsvorgang aufweist, und welche auf die Entscheidungsschaltung reagiert, um an den Prozessor ein ausgewähltes der Mehrzahl der Unterbrechungskennzeichen, welches dem einen Unterbrechungssignal zugeordnet ist, auszugeben, dadurch gekennzeichnet, daß die Eingangsspeicherschaltung einen ersten Speicher für jeden Eingang, um anzuzeigen, daß das Unterbrechungssignal für diesen Eingang empfangen wurde, und einen zweiten Speicher für jeden Eingang aufweist, um anzuzeigen, daß der Unterbrechungsvorgang von diesem Eingang gegenwärtig ausgeführt wird; und die Steuerungsschaltung ferner eine weitere Eingangsschaltung zum Empfangen eines Unterbrechungsauslösesignals von dem Prozessor aufweist, welches anzeigt, daß der Prozessor mit einem Unterbrechungsvorgang begonnen hat, wobei die Eingangsschaltung operativ mit dem zweiten Speicher verbunden ist, wobei ein Unterbrechungsausführungsflag, welches dem Unterbrechungsvorgang zugeordnet ist, durch das Auslösesignal gesetzt wird.
- Nach einem zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren zum Steuern von Unterbrechungsanforderungen mehrfacher Priorität in einem Mikroprozessorsystem, welches einen Speicher und einen Prozessor aufweist, bereitgestellt, wobei das Verfahren die Schritte umfaßt: Empfangen von wenigstens einem von einer Mehrzahl von parallelen Unterbrechungssignalen; Speichern von einer Information, welches der Unterbrechungssignale empfangen wurde; Halten der Information bis ein dem jeweiligen Unterbrechungssignal zugehöriger Unterbrechungsvorgang beendet wurde; Speichern einer Mehrzahl von Unterbrechungskennzeichen, wobei jedes Unterbrechungskennzeichen einen Unterbrechungsvorgang für die Ausführung durch den Prozessor und als einem jeweiligen der Unterbrechungssignale entsprechenden kennzeichnet; Bestimmen eines Prioritätsstatus für jedes Unterbrechungssignal, für welches eine Information gespeichert ist; Auswählen des einen Unterbrechungssignals mit dem höchsten Prioritätsstatus; Ausgeben eines ausgewählten von der Mehrzahl der Unterbrechungskennzeichen, welches dem einen Unterbrechungssignal zugeordnet ist, an den Prozessor in Abhängigkeit eines Unterbrechungssignals mit einem höheren Prioritätsstatus als jeder gegenwärtig ausgeführte Vorgang; gekennzeichnet durch die weiteren Schritte: Speichern einer Information darüber, ob der einem Unterbrechungssignal, welches empfangen wurde, zugeordnete Unterbrechungsvorgang gegenwärtig ausgeführt wird; und Empfangen eines Unterbrechungsauslösesignals von dem Prozessor, welches anzeigt, daß der Prozessor mit dem Unterbrechungsvorgang begonnen hat, wobei die Information, ob der einem Unterbrechungssignal, welches empfangen wurde, zugeordnete Unterbrechungsvorgang gegenwärtig ausgeführt wird, in Reaktion auf das Unterbrechungsauslösesignal gesetzt wird.
- Eine Ausführung der Erfindung wird nunmehr als Beispiel mit Bezugnahme auf die beigefügte Zeichnung beschrieben, in welcher:
- Fig. 1 schematisch eine Ausführung einer Unterbrechungssteuerung nach einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung darstellt;
- Fig. 2 eine detaillierte Ausführung der Unterbrechungssteuerung von Fig. 1 darstellt; und
- Fig. 3 einen reservierten Speicherplatz in Verbindung mit der Unterbrechungssteuerung gemäß der vorliegenden Erfindung darstellt.
- Fig. 1 veranschaulicht eine Ausführung einer Unterbrechungssteuerung 2 gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung in einer Schaltung, welche auch einen Mikroprozessor 4 und einen Speicher 6 aufweist.
- Die Unterbrechungssteuerung 2 empfängt parallel vier Unterbrechungssignale INT_PEND0 bis INT_PEND3 auf Leitungen 8a bis 8d. Die Unterbrechungssteuerung empfängt auch ein Signal INT_BEG auf einer Leitung 14, welches anzeigt, daß der Prozessor mit einem Unterbrechungsprozeß begonnen hat, ein Signal INT_FIN auf einer Leitung 16, welches anzeigt, daß der Prozessor einen Unterbrechungsprozeß abgeschlossen hat, und eine Gruppe von Signalen CONFIG auf einer Leitung 18, welche verwendet werden, um die Unterbrechungssteuerung zu konfigurieren. Die Unterbrechungssteuerung gibt ein Unterbrechungsanforderungssignal INT_REQ auf einer Leitung 12 und ein Unterbrechungsidentifikationssignal INT_ID auf einer Leitung 10 aus. Das Prozessor 4 empfängt das Signal INT_REQ für die Unterbrechungssteuerung und gibt die Signale INT_BEG, INT_FIN und CONFIG an die Unterbrechungssteuerung aus. Der Speicher 6 empfängt die Signale INT_ID von der Unterbrechungssteuerung. Eine Gruppe von Steuerungssignalen CONTROL auf einer Leitung 20 werden zwischen dem Prozessor 4 und dem Speicher 6 bereitgestellt, um zu ermöglichen, daß der Prozessor 4 den Speicher 6 steuert.
- Die vier Unterbrechungssignale INT_PEND0 bis INT_PEND3 stammen jeweils von einer dedizierten Unterbrechungsquelle. Wenn eine bestimmte Unterbrechungsquelle von dem Prozessor anfordert, einen ihr zugehörigen Unterbrechungsprozeß auszuführen, setzt die Unterbrechungsquelle ihr zugehöriges Unterbrechungssignal, um die Unterbrechungssteuerung darüber zu informieren, daß sie einen Dienst von dem Prozessor benötigt. Die Unterbrechungssteuerung speichert eine Mehrzahl von Unterbrechungskennzeichen (Identifier), in diesem Beispiel vier Unterbrechungskennzeichen, welche eine Unterbrechung, welche einer bestimmten Unterbrechungsquelle zugehört, identifiziert. Die Anzahl von Unterbrechungskennzeichen, welche durch die Unterbrechungssteuerung gespeichert sind, entspricht der Anzahl von Unterbrechungssignalen, welche durch die Unterbrechungssteuerung empfangen werden. Es wird aus der nachfolgenden Beschreibung ersichtlich, daß die Unterbrechungssteuerung angepaßt werden könnte, um parallel jede Anzahl von Unterbrechungssignalen von jeder Anzahl von Unterbrechungsquellen zu empfangen und daher jede Anzahl von Unterbrechungskennzeichen zum Unterstützen von jeder Anzahl von Unterbrechungsprozessen zu speichern.
- Vor Inbetriebnahme der Unterbrechungssteuerung 2 wird diese durch den Prozessor 4 unter Verwendung des Signals CONFIG konfiguriert. Der Prozessor ladet jedes Unterbrechungskennzeichen, welches jedem Unterbrechungsprozeß zugeordnet ist, in die Unterbrechungssteuerung. Das Unterbrechungskennzeichen wird eine einmalige "Markierung" (tag) sein, wie etwa eine Adresse, welche einem bestimmten Unterbrechungsprozeß zugeordnet ist, und welche der Prozessor verwenden kann, um den Unterbrechungsprozeß zu lokalisieren und auszuführen, wie es nachfolgend im Detail beschrieben wird. Das Signal CONFIG von dem Prozessor kann auch verwendet werden, um das Prioritätsniveau zu bestimmen, welches jedem Unterbrechungsprozeß zugeordnet ist, und daher jedem der Unterbrechungssignale INT_PEND0 bis INT_PEND3 zugeordnet ist.
- In Reaktion auf das Setzen von einem der Unterbrechungssignale INT_PEND0 bis INT_PEND3 setzt die Unterbrechungssteuerung 2 das Unterbrechungsanforderungssignal INT_REQ, um den Prozessor 4 anzufordern, eine Unterbrechung bereitzustellen. Gleichzeitig gibt die Unterbrechungssteuerung das Unterbrechungskennzeichen als Unterbrechungsidentifikationssignal INT_ID aus, welches dem der Unterbrechungssignale INT_PEND0 bis INT_PEND3 zugeordnet ist, das gesetzt wurde. In Reaktion auf die Unterbrechungsanforderung unterbricht der Prozessor seinen laufenden Prozeß und beginnt die Ausführung des Unterbrechungsprozesses, welcher dem Unterbrechungsidentifikationssignal INT_ID zugeordnet ist.
- In einem anderen Ausführungsbeispiel der Erfindung kann jedoch das Unterbrechungsidentifikationssignal INT_ID auch das Unterbrechungsanforderungssignal an den Prozessor bilden, wobei ein solches Ausführungsbeispiel auf das Signal INT_REQ verzichtet. In einem solchen Ausführungsbeispiel kann der Prozessor beispielsweise eine Unterbrechungsanforderung durch Identifizieren eines gültigen Unterbrechungsidentifikationssignals auf der Leitung 10 erkennen.
- Wie nachfolgend im Detail beschrieben wird, ist es beim Unterbrechen eines laufenden Prozesses, der durch den Prozessor durchgeführt wird, um einen Unterbrechungsprozeß auszuführen, notwendig, dem unterbrochenen Prozeß zugehörige Information zu speichern, so daß nach Ausführung des Unterbrechungsprozesses der Prozessor zu dem unterbrochenen Prozeß zurückkehren und dessen Ausführung fortsetzen werden kann.
- Bei Beginn der Ausführung des Unterbrechungsprozesses setzt der Prozessor das Signal INT_BEG, um die Unterbrechungssteuerung zu informieren, daß die Unterbrechung bereitgestellt wird, so wie angefragt wurde. Die Unterbrechungssteuerung ist dann darüber informiert, daß die spezielle Unterbrechung, welche zur Ausführung angefordert wurde, ausgeführt wird. Bei Beendigung der Ausführung des Unterbrechungsprozesses setzt der Prozessor das Signal INT_FIN, so daß die Unterbrechungssteuerung darüber informiert ist, daß der Prozessor die Ausführung der Unterbrechung abgeschlossen hat und zurückgekehrt ist, um den unterbrochenen Prozeß auszuführen.
- Da jedes der Unterbrechungssignale INT_PEND0 bis INT_PEND3 von einer dedizierten Unterbrechungsquelle stammt, kann/können jede beliebigen oder alle der Unterbrechungssignale gleichzeitig gesetzt werden. Die Unterbrechungssteuerung ist daher mit einer Entscheidungsschaltung ausgestattet, welche jedem der Unterbrechungssignale INT_PEND0 bis INT_PEND3 und damit jeder der Unterbrechungsquellen eine vorgegebene Priorität zuweist. Die Unterbrechungssteuerung in dem Beispiel von Fig. 1 ist eine Unterbrechungssteuerung mit vier Prioritätsniveaus, jedoch könnte die Unterbrechungssteuerung erweitert werden, um jede Anzahl von Prioritätsniveaus zu betreiben. Falls daher mehr als eines der Unterbrechungssignale INT_PEND0 bis INT_PEND3 gleichzeitig gesetzt werden, gibt die Unterbrechungssteuerung als das Unterbrechungsidentifikationssignal INT_ID dasjenige Unterbrechungskennzeichen aus, welches dem einen der Unterbrechungssignale mit der höchsten Priorität zugeordnet ist. Nach Ausführung dieser Unterbrechung fordert die Unterbrechungssteuerung den Prozessor erneut auf, seinen Prozeß zu unterbrechen, um die Unterbrechung mit der nächst höchsten Priorität auszuführen, welche einem der Unterbrechungssignale mit der nächst höchsten Priorität zugeordnet ist.
- Falls während der Ausführung eines Unterbrechungsprozesses durch den Prozessor ein Unterbrechungssignal, welches einer Unterbrechung mit einer höheren Priorität zugeordnet ist, gesetzt wird, wird sodann die Unterbrechungssteuerung den Prozessor anfragen, diesen Unterbrechungsprozeß zu unterbrechen und den Unterbrechungsprozeß mit höherer Priorität auszuführen, wie im näheren Detail nachfolgend noch beschrieben wird. Nachdem der Unterbrechungsprozeß höherer Priorität ausgeführt ist, wird der Prozessor zu der Ausführung des Unterbrechungsprozesses mit niedrigerer Priorität zurückkehren, und danach zu der Ausführung des unterbrochenen Prozesses zurückkehren.
- Der Betrieb einer Unterbrechungssteuerung nach einem bevorzugten Ausführungsbeispiel der Erfindung wird nunmehr im Detail mit Bezugnahme auf Fig. 2 beschrieben, welche eine Implementierung der Unterbrechungssteuerung von Fig. 1 zeigt. In Fig. 2 wurden die gleichen Bezugsziffern verwendet, um die gleichen Teile wie in Fig. 1, soweit es möglich war, zu kennzeichnen.
- Die Unterbrechungssteuerung 2 von Fig. 2 umfaßt eine Flag- Speicherschaltung 22 für wartende bzw. anstehende Flags (pending flag) mit vier Unterbrechungs(warte)flags (interrupt pending flags) 22a bis 22d, einer Entscheidungsschaltung 24, einer Ausführungsflag-Speicherschaltung 26 mit vier Unterbrechungsausführungsflags 26a bis 26d, eine Unterbrechungskennzeichenspeicherschaltung 28 mit vier Unterbrechungskennzeichen 28a bis 28d, und einen Multiplexer 30. Jedes der Unterbrechungsflags 22a bis 22d empfängt ein jeweiliges der Unterbrechungssignales INT_PEND0 bis INT_PEND3 auf den Leitungen 8a bis 8d und ein jeweiliges von vier anstehenden Unterbrechungslöschsignalen CLR_PEND0 bis CRL_PEND3 auf Leitungen 34a bis 34d, und gibt vier Unterbrechungsstatus(warte)signale STAT_PEND0 bis STAT_PEND3 auf Leitungen 34a bis 34d aus. Die Entscheidungsschaltung 24 empfängt jedes der Unterbrechungsstatussignale STAT_PEND0 bis STAT_PEND3 und gibt jedes der Unterbrechungslöschsignale CRL_PEND0 bis CRL_PEND3 aus. Die Entscheidungsschaltung 24 empfängt auch das Signal INT_BEG auf einer Leitung 14 und das Signal INT_FIN auf einer Leitung 16 und gibt das Signal INT_REQ auf einer Leitung 12 aus. Die Entscheidungsschaltung 24 gibt ferner vier Unterbrechungseinstellausführungssignale SET_EX0 bis SET_EX3 an die jeweiligen der Unterbrechungsausführungsflags 26a bis 26d aus, vier Unterbrechungsausführungslöschsignale CRL_EX0 bis CRL_EX3 an die jeweiligen der Unterbrechungsausführungsflags 26a bis 26d und ein Unterbrechungskennzeichenauswahlsignal SEL_ID auf einer Leitung 44 an den Multiplexer 30 aus, und empfängt vier Unterbrechungsausführungsstatussignale STAT_EX0 bis STAT_EX3 auf Leitungen 40a bis 40d von den jeweiligen der Unterbrechungsausführungsflags 26a bis 26d. Jedes der vier Unterbrechungskennzeichen 28a bis 28d empfängt das Signal CONFIG auf der Leitung 18 und gibt ein jeweiliges Kennzeichensignal ID0 bis ID3 auf den Leitungen 42a bis 42d an den Multiplexer 30 aus. Der Multiplexer 30 wird durch das Signal SEL_ID gesteuert, um eines der Kennzeichensignale ID0 bis ID3 als das Unterbrechungsidentifikationssignal INT_ID auf der Leitung 10 auszugeben.
- Jedes der vier Unterbrechungs(warte)flags 22a bis 22d, der vier Unterbrechungsausführungsflags 26a bis 26d und der vier Unterbrechungskennzeichen 28a bis 28d ist einem der vier Prozeßunterbrechungsprioritätsniveaus zugeordnet.
- Vor dem Betrieb der Unterbrechungssteuerung ladet der Prozessor unter Verwendung des Signals CONFIG in jedes der Unterbrechungskennzeichen 28a bis 28d der Unterbrechungskennzeichenspeicherschaltung ein Kennzeichen, welches jedem der vier Unterbrechungen zugeordnet ist. Dieses Unterbrechungskennzeichen muß eine einmalige "Markierung" (Tag) sein, welche der Prozeß verwenden kann, um jede spezielle Unterbrechung zu identifizieren. Das Unterbrechungskennzeichen kann verwendet werden, um einen Befehlszeiger, einen Zeiger zu einem Bereich eines Speichers für die Verwendung durch die Unterbrechungsroutine oder einem Bereich eines Speichers, in welchem dem unterbrochenen Prozeß zugeordnete Parameter gespeichert sein können, zu identifizieren. Bei dem bevorzugten Ausführungsbeispiel ist das Unterbrechungskennzeichen eine Adresse eines Hauptspeichers, welcher für die Verwendung bei der Unterbrechung reserviert ist. Jedes Unterbrechungsniveau hat einen Bereich des Hauptspeichers, welcher für die Speicherung von Parametern zugewiesen ist, welche dem unterbrochenen Prozeß zugehören, beispielsweise Registerinhalte des Prozessors, welche dem unterbrochenen Prozeß zugeordnet sind und wesentlich für die Rückkehr zu dem unterbrochenen Prozeß sind. Die Verwendung des Speichers auf diese Art und Weise ermöglicht, daß zusätzliche Unterbrechungsniveaus unabhängig vom Prozessor selbst ergänzt werden. Die Zuweisung von Bereichen des Hauptspeichers an Unterbrechungsniveaus wird unter Bezugnahme auf Fig. 3 erläutert.
- Bei einem bevorzugten Ausführungsbeispiel ist der Prozessor 4 ein Transputer, und das Unterbrechungskennzeichen ist eine Arbeitsbereichsadresse in einem Hauptspeicher, welche die Startadresse eines Arbeitsbereiches ist, welche diesem bestimmten Unterbrechungsprozeß zugeordnet ist. Gemäß Fig. 3 ist ein Unterbrechungsbefehlszeiger in einer festen Positionsverschiebung gegenüber der Arbeitsbereichsadresse gespeichert, welcher die Adresse im Hauptspeicher des ersten Befehls angibt, welcher diesem bestimmten Unterbrechungsprozeß zugeordnet ist. Andere Ort in dem Unterbrechungsarbeitsbereich, welche von der Unterbrechungsprozeßarbeitsbereichsadresse versetzt sind, werden verwendet, um dem unterbrochenen Prozeß zugehörige Information zu speichern, so daß der unterbrochene Prozeß in korrekter Weise wiederaufgenommen und nach der Ausführung der Unterbrechung ausgeführt werden kann. Wenn der Prozessor 2 ein Transputer ist, dann ist es notwendig, die Inhalte eines C Register, eines B Registers und eines A Registers zum Zeitpunkt des unterbrochenen Prozesses, den Befehlszeiger des unterbrochenen Prozesses, den Arbeitsbereichszeiger des unterbrochenen Prozesses und den Status des unterbrochenen Prozesses zu speichern, wie es in Fig. 3 gezeigt ist.
- Es wird außerdem angemerkt, daß, wie es vorstehend mit Bezugnahme auf Fig. 1 erläutert wurde, ein Unterbrechungsprozeß selbst durch einen Unterbrechungsprozeß unterbrochen werden kann. Daher ist es möglich, daß der Hauptprozeß durch eine Unterbrechung vom Niveau 0 unterbrochen wurde, die Unterbrechung vom Niveau 0 durch eine Unterbrechung vom Niveau 1 unterbrochen wurde, die Unterbrechung vom Niveau 1 durch eine Unterbrechung vom Niveau 2 unterbrochen wurde, und die Unterbrechung vom Niveau 2 durch eine Unterbrechung vom Niveau 3 unterbrochen wurde. Bei einem solchen Szenario wird die Unterbrechung vom Niveau 3 ausgeführt und nach Beendigung werden die Unterbrechungen vom Niveau 2, Niveau 1 und Niveau 0 nacheinander ausgeführt, vorausgesetzt, daß keine anderen Unterbrechungen höherer Priorität anstehen, bevor zur Ausführung des Hauptprozesses zurückgekehrt wird. Daher ist es notwendig, einen reservierten Arbeitsspeicherbereich bereitzustellen, wie er in Fig. 3 gezeigt ist, für jedes Unterbrechungsniveau, so daß der unterbrochene Prozeß immer wieder nach Beendigung von jedem Unterbrechungsniveau aufgenommen werden kann. Daher hat jede Unterbrechungskennung eine einmalige Arbeitsbereichsadresse und einen reservierten Bereich zum Speichern von Information, welche dem unterbrochenen Prozeß zugeordnet ist. Es versteht sich jedoch, daß das Unterbrechungskennzeichen eine andere Art von Kennzeichnungs-"Markierung" sein kann. Insbesondere könnte die Unterbrechungskennung lediglich die Adresse des ersten Befehls des unterbrochenen Prozesses sein. Wenn der Prozessor eine Standard-CPU und nicht ein Transputer ist, ist es dennoch notwendig, eine dem unterbrochenen Prozeß zugehörige Information vor der Ausführung eines Unterbrechungsprozesses zu speichern.
- Es ist wichtig anzumerken, daß ein Unterbrechungsprozeß nicht durch eine Unterbrechungsanforderung von einer Unterbrechungsquelle mit demselben Prioritätsniveau unterbrochen werden kann, und daß ein Unterbrechungsprozeß beendet werden muß und zu dem unterbrochenen Prozeß zurückgekehrt werden muß, bevor die Ausführung eines anderen Unterbrechungsprozesses von demselben Prioritätsniveau begonnen wird. Da jedes Unterbrechungsprioritätsniveau vorzugsweise mit seinem eigenen Arbeitsbereich ausgestattet ist, um die Identifizierung des unterbrochenen Prozesses bereitzustellen, würden die Details des unterbrochenen Prozesses in dem Unterbrechungsarbeitsbereich überschrieben werden und es wäre möglich, zu dem unterbrochenen Prozeß zurückzukehren, wenn eine andere Unterbrechung vom selben Niveau vor Rückkehr zu einer Unterbrechung von niedrigerem Niveau oder dem Hauptprozeß begonnen worden wäre. Somit muß der Prozessor zu dem unterbrochenen Prozeß in demselben Zyklus wie der letzte Befehl des Unterbrechungsprozesses zurückkehren, um eine solche Möglichkeit zu verhindern.
- Die Betriebsweise der Unterbrechungssteuerung 2 von Fig. 2 wird nun im Detail beschrieben. Jede der Unterbrechungsquellen, welche von dem Prozessor einen Dienst anfordert, setzt das ihr entsprechende Unterbrechungssignal INT_PEND0 bis INT_PEND3, und dies bewirkt, daß die jeweiligen der Unterbrechungsflags bzw. Flags der anstehenden Unterbrechung 22a bis 22b gesetzt werden. Die Entscheidungsschaltung 24 überwacht zyklisch den Status der vier Unterbrechungsflags 22a bis 22b, um zu prüfen, falls eines von diesen gesetzt wurde, indem die Unterbrechungszustandssignale STAT_PEND0 bis STAT_PEND3 überwacht werden. Wenn festgestellt wird, daß eines oder mehrere der Unterbrechungsflags 22a bis 22d gesetzt wurde/wurden, setzt die Entscheidungsschaltung das Unterbrechungsanforderungssignal INT_REQ an den Prozessor 2 und bestimmt, welches der gesetzten Unterbrechungsflags die höchste Priorität hat. Die Entscheidungsschaltung setzt sodann das Signal SEL_ID, um das geeignete der Kennzeichensignale ID1 bis ID3 mit dem Unterbrechungsidentifikationssignal INT_ID zu verbinden.
- Wie es vorstehend unter Bezugnahme auf Fig. 1 beschrieben wurde, unterbricht sodann der Prozessor seinen laufenden Prozeß und beginnt die Ausführung des Unterbrechungsprozesses, welcher durch das Unterbrechungsidentifikationssignal INT_ID identifiziert wird. Der Prozessor setzt das Signal INT_BEG, um anzuzeigen, daß die Ausführung der Unterbrechung begonnen hat. In Reaktion auf das Signal INT_BEG setzt die Entscheidungsschaltung das geeignete der Signale CRL_PEND0 bis CRL_PEND3, um hierbei das anstehende Unterbrechungsflag, welches dem gegenwärtig ausgeführten Unterbrechungsprozeß zugeordnet ist, zu löschen, und sie setzt auch das geeignete der Signale SET_EX0 bis SET_EX3, um das eine der Unterbrechungsausführungsflags 26a bis 26d zu setzen, welches dieser nunmehr durchgeführten Unterbrechung zugeordnet ist.
- Die Entscheidungsschaltung 24 führt sodann die Überwachung des Zustandes der Unterbrechungsflags 22a bis 22d an den Unterbrechungszustandssignalen STAT_PEND0 bis STAT_PEND3 fort, und überwacht auch den Zustand der Unterbrechungsausführungszustandssignale STAT_EX0 bis STAT_EX3, wobei hierdurch geprüft wird, welches der Unterbrechungsausführungsflags 26a bis 26d gesetzt ist. Wenn ein anstehendes Unterbrechungsflag gesetzt ist, welches einem Unterbrechungsprozeß mit einer höheren Priorität zugeordnet ist, wird sodann jeder gegenwärtig ausgeführte Unterbrechungsprozeß, d. h. der gegenwärtig ausgeführte Unterbrechungsprozeß, durch die Unterbrechungssteuerung 2 in derselben Art und Weise unterbrochen, wie es vorstehend beschrieben wurde, damit der Unterbrechungsprozeß höherer Priorität ausgeführt wird. Nach der Ausführung des Unterbrechungsprozesses höherer Priorität kehrt der Prozessor unter Steuerung durch die Unterbrechungssteuerung zurück, um entweder einen unterbrochenen Unterbrechungsprozeß oder eine wartende Unterbrechung auszuführen, je nachdem, was die höhere Priorität hat.
- Die Unterbrechungssteuerung 2 kann auf einem einzigen integrierten Schaltungselement mit einem Prozessor 4 und dem Speicher 6 bereitgestellt werden.
- Obwohl die Unterbrechungssteuerung nach der vorliegenden Erfindung vorstehend mit Bezugnahme auf ein bestimmtes Ausführungsbeispiel beschrieben wurde, ist es für den Fachmann ersichtlich, wie eine solche Unterbrechungssteuerung für die Verwendung mit einer großen Vielfalt von Prozessoren angepaßt werden kann.
Claims (7)
1. Steuerungsschaltung (2) für
Unterbrechungsanforderungen mehrfacher Priorität an einen Mikroprozessor (4),
aufweisend:
eine Eingangsschaltung, welche eine Mehrzahl von
parallelen Eingängen (8) zum Empfangen von jeweiligen
Unterbrechungssignalen und eine
Eingangsspeicherschaltung (22) aufweist, welche anzeigt, welcher der
Eingänge ein Unterbrechungssignal empfangen hat und
diese Information speichert bis ein dem jeweiligen
Unterbrechungssignal zugehöriger
Unterbrechungsvorgang beendet wurde;
eine Kennzeichenspeicherschaltung (28) zum
Speichern einer Mehrzahl von Unterbrechungskennzeichen
(ID0, ID1, ID2, ID3), wobei jedes
Unterbrechungskennzeichen einen Unterbrechungsvorgang für die
Ausführung durch den Prozessor (4) und als einem jeweiligen
der Unterbrechungssignale entsprechenden
kennzeichnet;
eine Entscheidungsschaltung (24), welche mit der
Eingangsspeicherschaltung (22) verbunden ist, zum
Bestimmen eines Prioritätsstatus für jedes
Unterbrechungssignal, für welches die Information durch die
Eingangsspeicherschaltung (22) gespeichert wird, und
zum Auswählen des einen Unterbrechungssignals mit dem
höchsten Prioritätsstatus; und
eine Ausgangsschaltung (28, 30), welche nur in
Reaktion auf ein Unterbrechungssignal betreibbar ist,
welches einen höheren Prioritätsstatus als jeder
gegenwärtig ausgeführte Unterbrechungsvorgang aufweist,
und welche auf die Entscheidungsschaltung (24)
reagiert, um an den Prozessor (4) ein ausgewähltes der
Mehrzahl der Unterbrechungskennzeichen, welches dem
einen Unterbrechungssignal zugeordnet ist, auszugeben
(10), dadurch gekennzeichnet, daß:
die Eingangsspeicherschaltung (22) einen ersten
Speicher (22) für jeden Eingang (8), um anzuzeigen,
daß das Unterbrechungssignal für diesen Eingang
empfangen wurde, und einen zweiten Speicher (26) für
jeden Eingang aufweist, um anzuzeigen, daß der
Unterbrechungsvorgang von diesem Eingang gegenwärtig
ausgeführt wird; und
die Steuerungsschaltung (2) ferner eine weitere
Eingangsschaltung zum Empfangen eines
Unterbrechungsauslösesignals (14) von dem Prozessor (4) aufweist,
welches anzeigt, daß der Prozessor mit einem
Unterbrechungsvorgang begonnen hat, wobei die
Eingangsschaltung operativ mit dem zweiten Speicher (26)
verbunden ist, wobei ein Unterbrechungsausführungsflag
(26a, 26b, 26c, 26d), welches dem
Unterbrechungsvorgang zugeordnet ist, durch das Auslösesignal (14)
gesetzt wird.
2. Steuerungsschaltung nach Anspruch 1, bei welcher die
weitere Eingangsschaltung einen Eingang zum Empfangen
eines Abschlußsignals (16) von dem Prozessor
aufweist, welches anzeigt, daß der Prozessor die
Ausführung des Unterbrechungsvorganges abgeschlossen hat,
wobei das Unterbrechungsausführungsflag (26a, 26b,
26c, 26d), welches dem Unterbrechungsvorgang
zugeordnet ist, durch das Abschlußsignal (16) zurückgesetzt
wird.
3. Steuerungsschaltung nach Anspruch 1 oder 2, bei
welcher die Eingangsspeicherschaltung mit der weiteren
Eingangsschaltung verbunden ist, derart, daß der
erste Speicher (22) durch das Auslösesignal (14)
zurückgesetzt wird.
4. Steuerungsschaltung nach einem der Ansprüche 1 bis 3,
bei welcher die Ausgangsschaltung ferner eine
Multiplexerschaltung (30) aufweist, welche mit einem Ausgang
der Entscheidungsschaltung (24) verbunden ist,
wobei die Multiplexerschaltung gesteuert wird, um den
ausgewählten aus der Mehrzahl der
Unterbrechungskennzeichnen (ID1, ID1, ID2, ID3) auszugeben.
5. Verfahren zum Steuern von Unterbrechungsanforderungen
mehrfacher Priorität in einem Mikroprozessorsystem,
welches einen Speicher (6) und einen Prozessor (4)
aufweist, wobei das Verfahren die Schritte umfaßt:
Empfangen von wenigstens einem von einer Mehrzahl
von parallelen Unterbrechungssignalen (8);
Speichern (22) von einer Information, welches der
Unterbrechungssignale empfangen wurde;
Halten der Information bis ein dem jeweiligen
Unterbrechungssignal zugehöriger Unterbrechungsvorgang
beendet wurde;
Speichern (28) einer Mehrzahl von
Unterbrechungskennzeichen (ID0, ID1, ID2, ID3), wobei jedes
Unterbrechungskennzeichen einen Unterbrechungsvorgang für
die Ausführung durch den Prozessor (4) und als einem
jeweiligen der Unterbrechungssignale (8)
entsprechenden kennzeichnet;
Bestimmen eines Prioritätsstatus für jedes
Unterbrechungssignal, für welches eine Information
gespeichert ist;
Auswählen des einen Unterbrechungssignals mit dem
höchsten Prioritätsstatus;
Ausgeben (10) eines ausgewählten von der Mehrzahl
der Unterbrechungskennzeichen, welches dem einen
Unterbrechungssignal zugeordnet ist, an den Prozessor
(4) in Abhängigkeit eines Unterbrechungssignals mit
einem höheren Prioritätsstatus als jeder gegenwärtig
ausgeführte Vorgang;
gekennzeichnet durch die weiteren Schritte:
Speichern (26) einer Information darüber, ob der
einem Unterbrechungssignal, welches empfangen wurde,
zugeordnete Unterbrechungsvorgang gegenwärtig
ausgeführt wird; und
Empfangen eines Unterbrechungsauslösesignals (14)
von dem Prozessor, welches anzeigt, daß der Prozessor
(4) mit dem Unterbrechungsvorgang begonnen hat, wobei
die Information, ob der einem Unterbrechungssignal,
welches empfangen wurde, zugeordnete
Unterbrechungsvorgang gegenwärtig ausgeführt wird, in Reaktion auf
das Unterbrechungsauslösesignal (14) gesetzt wird.
6. Verfahren nach Anspruch 5, welches ferner den Schritt
umfaßt:
Empfangen eines Abschlußsignals (16) von dem
Prozessor (4), welches anzeigt, daß der Prozessor die
Ausführung des Unterbrechungsvorganges abgeschlossen
hat, wobei die Information, ob der einem
Unterbrechungssignal, welches empfangen wurde, zugeordnete
Unterbrechungsvorgang gegenwärtig ausgeführt wird, in
Reaktion auf das Abschlußsignal (60) zurückgesetzt
wird.
7. Verfahren nach Anspruch 6, bei welchem die
Information, ob ein Unterbrechungssignal empfangen wurde,
durch das Unterbrechungsauslösesignal (14)
zurückgesetzt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9509626.9A GB9509626D0 (en) | 1995-05-12 | 1995-05-12 | Processor interrupt control |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69622785D1 DE69622785D1 (de) | 2002-09-12 |
DE69622785T2 true DE69622785T2 (de) | 2003-04-10 |
Family
ID=10774357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69622785T Expired - Fee Related DE69622785T2 (de) | 1995-05-12 | 1996-04-26 | Prozessorunterbrechungssteuerung |
Country Status (5)
Country | Link |
---|---|
US (1) | US5867687A (de) |
EP (1) | EP0742522B1 (de) |
JP (1) | JPH0926885A (de) |
DE (1) | DE69622785T2 (de) |
GB (1) | GB9509626D0 (de) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100327980B1 (ko) * | 1997-06-28 | 2002-08-14 | 주식회사 하이닉스반도체 | 인터럽트유실보상장치및방법 |
DE19731634A1 (de) * | 1997-07-23 | 1999-01-28 | Nokia Telecommunications Oy | Vorrichtung und Verfahren zum Auffinden einer einer Quelle zugeordneten Unterbrechungsanforderung |
US6163829A (en) * | 1998-04-17 | 2000-12-19 | Intelect Systems Corporation | DSP interrupt control for handling multiple interrupts |
US6393530B1 (en) | 1998-04-17 | 2002-05-21 | Intelect Communications, Inc. | Paging method for DSP |
US6678801B1 (en) | 1998-04-17 | 2004-01-13 | Terraforce Technologies Corp. | DSP with distributed RAM structure |
US6456628B1 (en) | 1998-04-17 | 2002-09-24 | Intelect Communications, Inc. | DSP intercommunication network |
US6112274A (en) * | 1998-06-17 | 2000-08-29 | Intel Corporation | Method and apparatus for processing more than one interrupts without reinitializing the interrupt handler program |
US6212592B1 (en) * | 1998-09-17 | 2001-04-03 | Micron Technology, Inc. | Computer system for processing system management interrupt requests |
KR100313945B1 (ko) * | 1999-03-03 | 2001-11-15 | 김영환 | 다단 인터럽트 제어 장치 |
US6842811B2 (en) * | 2000-02-24 | 2005-01-11 | Pts Corporation | Methods and apparatus for scalable array processor interrupt detection and response |
US7165134B1 (en) | 2000-06-28 | 2007-01-16 | Intel Corporation | System for selectively generating real-time interrupts and selectively processing associated data when it has higher priority than currently executing non-real-time operation |
KR20030004763A (ko) * | 2001-07-06 | 2003-01-15 | 삼성전자 주식회사 | 인터럽트 처리장치 |
US7340547B1 (en) * | 2003-12-02 | 2008-03-04 | Nvidia Corporation | Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system |
US20050262282A1 (en) * | 2004-05-20 | 2005-11-24 | Xue-Jun Liu | Interrupt sharing method for edge triggering |
US7424563B2 (en) * | 2006-02-24 | 2008-09-09 | Qualcomm Incorporated | Two-level interrupt service routine |
TWI676171B (zh) * | 2018-09-18 | 2019-11-01 | 華邦電子股份有限公司 | 記憶體裝置及其中斷處理方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US526109A (en) * | 1894-09-18 | kreitz | ||
GB1397438A (en) * | 1971-10-27 | 1975-06-11 | Ibm | Data processing system |
US4020471A (en) * | 1975-06-30 | 1977-04-26 | Honeywell Information Systems, Inc. | Interrupt scan and processing system for a data processing system |
US4023143A (en) * | 1975-10-28 | 1977-05-10 | Cincinnati Milacron Inc. | Fixed priority interrupt control circuit |
US5083261A (en) * | 1983-11-03 | 1992-01-21 | Motorola, Inc. | Dynamically alterable interrupt priority circuit |
JPS61107456A (ja) * | 1984-10-30 | 1986-05-26 | Toshiba Corp | 割込制御方式 |
US5077662A (en) * | 1986-04-11 | 1991-12-31 | Ampex Corporation | Microprocessor control system having expanded interrupt capabilities |
JPH0268632A (ja) * | 1988-09-05 | 1990-03-08 | Toshiba Corp | 割込み制御装置 |
JPH02224140A (ja) * | 1989-02-27 | 1990-09-06 | Nippon Motoroola Kk | 割込試験装置 |
KR920003152A (ko) * | 1990-07-31 | 1992-02-29 | 이헌조 | 다중 인터럽트 처리회로 |
US5257357A (en) * | 1991-01-22 | 1993-10-26 | Motorola, Inc. | Method and apparatus for implementing a priority adjustment of an interrupt in a data processor |
US5448743A (en) * | 1992-07-21 | 1995-09-05 | Advanced Micro Devices, Inc. | General I/O port interrupt mechanism |
JPH07105175A (ja) * | 1993-10-08 | 1995-04-21 | Nec Corp | マイクロコンピュータ |
JP3242508B2 (ja) * | 1993-11-05 | 2001-12-25 | 松下電器産業株式会社 | マイクロコンピュータ |
US5634112A (en) * | 1994-10-14 | 1997-05-27 | Compaq Computer Corporation | Memory controller having precharge prediction based on processor and PCI bus cycles |
-
1995
- 1995-05-12 GB GBGB9509626.9A patent/GB9509626D0/en active Pending
-
1996
- 1996-04-26 DE DE69622785T patent/DE69622785T2/de not_active Expired - Fee Related
- 1996-04-26 EP EP96302950A patent/EP0742522B1/de not_active Expired - Lifetime
- 1996-05-03 US US08/642,332 patent/US5867687A/en not_active Expired - Lifetime
- 1996-05-13 JP JP8117659A patent/JPH0926885A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69622785D1 (de) | 2002-09-12 |
JPH0926885A (ja) | 1997-01-28 |
EP0742522B1 (de) | 2002-08-07 |
EP0742522A1 (de) | 1996-11-13 |
GB9509626D0 (en) | 1995-07-05 |
US5867687A (en) | 1999-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69622785T2 (de) | Prozessorunterbrechungssteuerung | |
DE69419680T2 (de) | Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem | |
DE69031506T2 (de) | Verfahren und Gerät zur Anwendungsbeschränkung eines asynchronen Bus mit verteilter Zugriffssteuerung | |
DE2657848C2 (de) | ||
DE2856483C2 (de) | ||
DE3224034C2 (de) | ||
DE10110504B4 (de) | Verfahren und Computersystem zur Verwaltung von Threads | |
DE3783370T2 (de) | Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung. | |
DE69023018T2 (de) | Prozessor-Unterbrechungssteuerung. | |
DE3853574T2 (de) | Steuerung von Benutzerantworten in einem Übertragungsbus. | |
DE3685863T2 (de) | Rechnersystem zur steuerung virtueller maschinen. | |
DE69222469T2 (de) | Verfahren zur Verminderung der Restbandbreite eines Busses in einem Rechnersystem | |
DE2944419C2 (de) | ||
DE2744531A1 (de) | Elektronische datenverarbeitungsanlage | |
DE69622832T2 (de) | Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung | |
DE68920929T2 (de) | Zeitgeberkanal mit mehreren Zeitgeberreferenzmerkmalen. | |
EP0006164B1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE3882991T2 (de) | Anordnung und methode zur erzielung von unterbrechungen mit einem "pended bus". | |
DE3942669A1 (de) | Virtuelles maschinensystem | |
DE68915074T2 (de) | Integrierte Zeitgeberschaltung mit mehreren Kanälen und zugeordnetem Bedienungsprozessor. | |
DE3888353T2 (de) | Unterbrechungsknoten zum vorsehen von unterbrechungsanforderungen auf einem anstehenden bus. | |
DE69114321T2 (de) | Zum Durchführen der Unterbrechungsverschachtelungsfunktion geeignetes Unterbrechungssteuerungsgerät. | |
DE69026018T2 (de) | Rechnersystem mit Vorrichtung zur Verbesserung der Wirksamkeit von Übertragungen zwischen einem Hauptprozessor und Peripheriegeräten verbunden durch einen SCSI-Bus | |
DE3500804A1 (de) | Unterbrechungssteuerkreis | |
DE68922545T2 (de) | Zugeordneter Dienstprozessor mit Übertragungsmöglichkeiten zwischen Kanälen. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |