DE69622785T2 - Prozessorunterbrechungssteuerung - Google Patents

Prozessorunterbrechungssteuerung

Info

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
Application number
DE69622785T
Other languages
English (en)
Other versions
DE69622785D1 (de
Inventor
Robert John Simpson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Ltd Great Britain
Original Assignee
STMicroelectronics Ltd Great Britain
SGS Thomson Microelectronics Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Ltd Great Britain, SGS Thomson Microelectronics Ltd filed Critical STMicroelectronics Ltd Great Britain
Publication of DE69622785D1 publication Critical patent/DE69622785D1/de
Application granted granted Critical
Publication of DE69622785T2 publication Critical patent/DE69622785T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling 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.
DE69622785T 1995-05-12 1996-04-26 Prozessorunterbrechungssteuerung Expired - Fee Related DE69622785T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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