DE69926365T2 - Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system - Google Patents

Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system Download PDF

Info

Publication number
DE69926365T2
DE69926365T2 DE69926365T DE69926365T DE69926365T2 DE 69926365 T2 DE69926365 T2 DE 69926365T2 DE 69926365 T DE69926365 T DE 69926365T DE 69926365 T DE69926365 T DE 69926365T DE 69926365 T2 DE69926365 T2 DE 69926365T2
Authority
DE
Germany
Prior art keywords
registers
interrupt
logical
vector address
signals
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
DE69926365T
Other languages
English (en)
Other versions
DE69926365D1 (de
Inventor
R. Steven COX
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.)
Sony Electronics Inc
Original Assignee
Sony Electronics Inc
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 Sony Electronics Inc filed Critical Sony Electronics Inc
Application granted granted Critical
Publication of DE69926365D1 publication Critical patent/DE69926365D1/de
Publication of DE69926365T2 publication Critical patent/DE69926365T2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Logic Circuits (AREA)
  • Hardware Redundancy (AREA)

Description

  • Die Erfindung betrifft das Gebiet der mikroprozessorbasierten Systeme. Die Erfindung bezieht sich insbesondere auf das Konfigurieren und Priorisieren von Interrupts in mikroprozessorbasierten Systemen.
  • Mikroprozessorbasierte Systeme arbeiten im allgemeinen so, daß Befehle eines Softwareprogramms, die in aufeinanderfolgenden Speicherplätzen gespeichert sind, sequentiell ausgeführt werden. Ein Programmzähler enthält eine Speicheradresse des nächsten gespeicherten Befehls innerhalb der Sequenz. Dieser Programmzähler wird bei jedem ausgeführten Befehl inkrementiert. Das Softwareprogramm kann Verzweigungen enthalten, die nach Maßgabe von in dem Programm spezifizierten Bedingungen beschritten werden. Für eine bedingte Verzweigung wird in dem Programmzähler eine Zweigadresse angeordnet, falls die Bedingung erfüllt ist, und die sequentielle Ausführung wird, beginnend mit der Zweigadresse, wiederaufgenommen.
  • Es ist jedoch typisch, daß das mikroprozessorbasierte System auf das Eintreten von Ereignissen reagieren muß, die mit dem gespeicherten Softwareprogramm nicht synchronisiert sind. So müssen z.B. Daten aus einem peripheren Gerät, wie einem Modem oder einer Tastatur, nach der Erfassung der Daten alsbald verarbeitet werden. Dementsprechend haben Mikroprozessoren üblicherweise die Fähigkeit, ein oder mehrere Interrupt-Signale zu empfangen, die von einem oder mehreren peripheren Geräten aktiviert werden. Als Reaktion auf ein aktiviertes Interrupt-Signal unterbricht der Mikroprozessor die Folge von Befehlen, die gerade ausgeführt wird, und beginnt mit der Ausführung eines anderen Befehlssatzes, der im allgemeinen als eine für den aktivierten Interrupt passende Interrupt-Serviceroutine bezeichnet wird.
  • Um mit der Ausführung der passenden Interrupt-Serviceroutine zu beginnen, wird die Adresse in dem Programmzähler gesichert, und in dem Programmzähler wird eine Vektoradresse angeordnet, die auch als Interrupt-Vektor bezeichnet wird. Im allgemeinen stehen zwei Verfahren zur Festlegung der passenden Vektoradresse für die Ausführung der Interrupt-Serviceroutine zur Verfügung, nämlich ein vektorisiertes und ein autovektorisiertes Verfahren. Wenn ein Interrupt vektorisiert ist, liefert das periphere Gerät die Startadresse der passenden Interrupt-Serviceroutine. Diese Startadresse wird in dem Programmzähler des Mikroprozessors plaziert. Alternativ kann die in dem Programmzähler angeordnete Adresse die Adresse eines Platzes in dem Speicher sein, der die Startadresse der Interrupt-Serviceroutine enthält. Wenn ein Interrupt autovektorisiert ist, zeigt die Vektoradresse auf einen vorbestimmten Platz in dem Speicher unabhängig davon, ob der Interrupt aktiv ist. Dieser vorbestimmte Platz ist üblicherweise die Startadresse einer Softwareroutine, die im allgemeinen als Interrupt-Handler bezeichnet wird. Der Interrupt-Handler initiiert dann eine für das aktive Interrupt-Signal passende Interrupt-Serviceroutine.
  • Sobald der Mikroprozessor die Interrupt-Serviceroutine ausgeführt hat, wird der Programmzähler so restauriert, daß die Ausführung der ursprünglichen Befehlssequenz wieder aufgenommen wird.
  • Wenn zwei oder mehr Interrupt-Signale gleichzeitig anhängig sind, muß der Mikroprozessor mit einer geeigneten Priorität auf die Interrupts antworten. Deshalb ist in mikroprozessorbasierten Systemen im allgemeinen die Möglichkeit vorgesehen, die Interrupt-Signale zu priorisieren. Darüber hinaus ist es unter gewissen Umständen wünschenswert, daß der Mikroprozessor ein oder mehrere Interrupt-Signale ignoriert. So z.B. wenn der Mikroprozessor eine kritische Operation ausführt, die nicht unterbrochen werden darf. Zu diesem Zweck enthalten Mikroprozessoren im allgemeinen eine Einrichtung zum Maskieren von Interrupts.
  • Ein Beispiel für einen in großem Umfang benutzten Mikroprozessor sind die Prozessoren der 68000-Serie von Motorola, Inc.. Die Interrupts für einen Motorola-Prozessor der 68000-Serie werden implementiert, indem von jedem peripheren Gerät eine festverdrahtete Interrupt-Signalleitung mit einem Interrupt-Prioritätskodierer verbunden wird. Der Interrupt-Prioritätskodierer ist eine logische Hardwareschaltung, die jedes aktive Interrupt-Signal aufnimmt und nur das aktive Interrupt-Signal mit der höchsten Priorität an einen von mehreren Interrupt-Eingängen des Motorola-Prozessors der Serie 68000 liefert. Der Prozessor initiiert dann die passende Interrupt-Serviceroutine nach dem vektorisierten oder autovektorisierten Verfahren.
  • Ein Nachteil dieses Verfahrens zum Implementieren der Interrupts in den Motorola-Prozessoren der Serie 68000 besteht darin, daß die Verbindungen der festverdrahteten Interrupt-Signalleitungen zu dem Interrupt-Prioritätskodierer neu gruppiert werden müssen, um die relativen Prioritäten der Interrupt-Signale zu ändern. Das bedeutet, daß die relativen Prioritäten unter den Interrupts praktisch nicht geändert werden können, sobald ein solches System konfiguriert ist.
  • Ein anderes Beispiel für einen allgemein verbreiteten Mikroprozessor sind die RISC-(Reduced Instruction Set Computers)-Prozessoren von MIPS Technologies, Inc., wie z.B. die Prozessoren 82000, 83000, 84000 und 86000. Der MIPS-RISC-Prozessor wird durch das Set zen passender Bits in einem spezialisierten Register, das als Fallregister bezeichnet wird, über anhängige Interrupts informiert. Der Prozessor initiiert dann die passende Interrupt-Serviceroutine, indem er zunächst einen Interrupt-Handler ausführt. Der Interrupt-Handler legt die Priorität unter den anhängigen Interrupts fest.
  • Ein Nachteil dieses Verfahrens zur Implementierung der Interrupts in MIPS-RISC-Prozessoren besteht darin, daß zur Änderung der relativen Prioritäten der Interrupt-Signale der Interrupt-Handler geändert werden muß. Somit können die relativen Prioritäten unter den Interrupts praktisch nicht geändert werden, sobald ein solches System konfiguriert ist. Darüber hinaus wird bei dem Abarbeiten der Interrupts durch die für den Zugriff auf den und die Ausführung des Interrupt-Handlers eine Latenzzeit eingeführt. Diese Latenzzeit kann in einem solchen System unerwünschte Größen erreichen.
  • Man benötigt deshalb wird ein leichter konfigurierbares Verfahren zum Priorisieren von Interrupts in einem mikroprozessorbasierten System.
  • In US-A-5 594 905 ist ein Ausnahme-Handler beschrieben, bei dem eine Prioritätstabelle vorgesehen ist, in der Informationen über die Prioritäten zur Behandlung eines oder mehrerer konkurrierend erzeugter Interrupts gespeichert sind. Der Ausnahme-Handler enthält auch ein Fallregister, das Flag-Bits aufweist, um anzuzeigen, wann ein Interrupt erzeugt wurde, wobei die Bits in dem Fallregister eine indexierende Adresse zu einer Stelle in der Prioritätstabelle definieren, die die Prioritätsinformation für eine gegebene Kombination aus aktiven und nichtaktiven Interrupts enthält. In einer Implementierung speichert die Prioritätstabelle die Adresse von Interrupt-Serviceroutinen (ISRs) für die Behandlung desjenigen aktiven Interrupts, das von allen laufend aktiven Interrupts die höchste Priorität hat. In einer anderen Implementierung speichert die Prioritätstabelle Indexadressen zu einer zweiten ISR-Adressentabelle, die die Interrupts mit den Adressen der entsprechenden ISRs verknüpft, die sie bedienen.
  • Die Aspekte und Merkmale der Erfindung sind in den Ansprüchen definiert.
  • Ein Ausführungsbeispiel der Erfindung liefert ein softwarekonfigurierbares Verfahren zum Priorisieren und Maskieren von Interrupts in einem mikroprozessorbasierten System. Es sind mehrere Interrupt-Konfigurationsregister zum Abbilden eines entsprechenden Exemplars aus einer Mehrzahl von Interrupt-Signalen auf ein geeignetes Exemplar aus einer Mehrzahl von Interrupt-Vektoradressenregistern und zum Maskieren ausgewählter Exemplare der Interrupt-Signale vorgesehen. Jedes einzelne aus der Mehrzahl von Interrupt-Konfigurationsregistern ist softwarekonfigurierbar, so daß es ein Bitmuster enthält, das eines aus der Mehrzahl von Vektoradressenregistern identifiziert oder aber anzeigt, daß das entspre chende Interrupt-Signal maskiert werden soll. Die Mehrzahl von Vektoradressenregistern ist entsprechend einer vorbestimmten Priorität angeordnet, und jedes einzelne aus der Mehrzahl von Vektoradressenregistern ist softwarekonfigurierbar, so daß es die Startadresse einer passenden Interrupt-Serviceroutine für den entsprechenden Interrupt enthält.
  • Jedes der Interrupt-Signale wird einem Eingang eines entsprechenden Exemplars aus einer Mehrzahl von Demultiplexern zugeführt. Jedes einzelne aus der Mehrzahl von Interrupt-Konfigurationsregistern ist mit den Auswahlleitungen eines entsprechenden Exemplars aus der Mehrzahl von Demultiplexern verbunden. Die Ausgänge jedes einzelnen aus der Mehrzahl von Demultiplexern sind entsprechend der logischen "ODER"-Funktion durch eine Mehrzahl von logischen "ODER"-Gliedern mit entsprechenden Ausgängen jedes anderen Demultiplexers verbunden, um an den Ausgängen der logischen "ODER"-Glieder eine Mehrzahl von Aktivierungssignalen auszugeben. Die einzelnen Aktivierungssignale werden entsprechend einer Bedingung des korrespondierenden Interrupt-Signals selektiv aktiviert. Auf diese Weise bilden die Demultiplexer und die logischen "ODER"-Glieder die Interrupt-Signale nach Maßgabe der Inhalte der Interrupt-Konfigurationsregister auf die Ausgänge der logischen "ODER"-Glieder ab.
  • Jedes Aktivierungssignal entspricht einem aus der Mehrzahl von Vektoradressenregistern. Mehrere logische "UND"-Gliedern sind so angeordnet, daß sie die Aktivierungssignale empfangen und nur dem aktivierten Aktivierungssignal mit der höchsten Priorität erlauben, das korrespondierende Exemplar aus der Mehrzahl von Vektoradressenregistern zu aktivieren. Die in dem aktivierten Vektoradressenregister gespeicherte Adresse wird auf einen Vektoradressenbus für den Mikroprozessor gegeben. Der Mikroprozessor ordnet dann die Vektoradresse in seinem Programmzähler an und führt, beginnend an der Vektoradresse, die passende Interrupt-Serviceroutine aus.
  • Sobald der Interrupt mit der höchsten Priorität durch die Ausführung der zugehörigen Interrupt-Serviceroutine abgearbeitet wurde, wird der anhängige Interrupt mit der nächsten höheren Priorität abgearbeitet, bis es keine anhängigen Interrupts mehr gibt. Sobald keine anhängigen Interrupts mehr vorhanden sind, wird der Programmzähler restauriert, so daß der Mikroprozessor die Ausführung seiner ursprünglichen Befehlssequenz wieder aufnimmt.
  • Deshalb sind gemäß vorliegender Erfindung die Interrupts nach Maßgabe der Befehle aus der Mehrzahl von Interrupt-Konfigurationsregistern und nach Maßgabe der Inhalte der Vektoradressenregister konfigurierbar. Diese Inhalte werden relativ leicht geändert, so daß die vorliegende Erfindung im Vergleich zu den Verfahren nach dem Stand der Technik Interrupts zur Verfügung stellt, die leichter konfigurierbar sind. Darüber hinaus reduziert die vorliegende Erfindung die Latenzzeit bei der Abarbeitung der einzelnen Interrupts, indem sie das Eliminieren der Priorität und das Zerlegen (Parsing) der Vektoradresse in einem Interrupt-Handler, wie es bei früheren Verfahren notwendig war, erübrigt. Statt dessen wird gemäß vorliegender Erfindung die Priorisierung der einzelnen Interrupts und die Bereitstellung der passenden Vektoradresse für den Interrupt primär in Hardware ausgeführt mit dem Ergebnis, daß die Latenzzeit kürzer ist als bei früheren Verfahren.
  • 1 zeigt ein funktionales Blockdiagramm eines Ausführungsbeispiels der Erfindung mit einer Mehrzahl von Interrupt-Konfigurationsregistern und einer Mehrzahl von Vektoradressenregistern,
  • 2A–D zeigen Beispiele für die Zuteilung von Prioritäten und das Abbilden von Vektoradressen auf Interrupts nach Ausführungsbeispielen der Erfindung,
  • 3 zeigt ein schematisches Diagramm einer Schaltung zur Implementierung eines Ausführungsbeispiels der Erfindung.
  • In der Anordnung nach 1 sind eine Mehrzahl von Interrupt-Konfigurationsregistern 100 und eine Mehrzahl von Vektoradressenregistern 200 für die Reaktion auf Interrupt-Signale in einem mikroprozessorbasierten System vorgesehen. Jedes Interrupt-Signal INT.A bis INT.n, das von einem peripheren Gerät erzeugt wird, entspricht einem aus der Mehrzahl von Interrupt-Konfigurationsregistern 100. Die Zahl der Interrupt-Signale variiert in Abhängigkeit von der Systemimplementierung. Jedes der Interrupt-Konfigurationsregister 100 ist mittels Software so konfigurierbar, daß es ein Bitmuster enthält, das eines der Vektoradressenregister 200 oder ein Bitmuster identifiziert, welches anzeigt, daß der entsprechende Interrupt maskiert (deaktiviert) werden soll. Dementsprechend werden die Interrupt-Signale INT.A bis INT.n nach Maßgabe der Inhalte der Register 100 jeweils selektiv auf ein passendes Exemplar der Register 200 abgebildet.
  • Jedes Vektoradressenregister aus der Mehrzahl von Vektoradressenregistern 200 enthält die Startadresse einer für das entsprechende Interrupt-Signal geeigneten Interrupt-Serviceroutine. In einem System, das für die Spezifizierung von Speicheradressen 32 Bits benutzt, hält jedes der Register 200 32 Bits, obwohl die Register 200 für andere Adressierungsschemata offensichtlich eine andere Größe haben können. Die Vektoradressenregister 200 sind nach einer vorbestimmten Priorität angeordnet. Dem Vektoradressenregister 202 ist z.B. die niedrigste Priorität zugeordnet, mittlere Register, wie das Register 204, haben aufsteigende Prioritätsniveaus, während dem Vektoradressenregister 206 das höchste Prioritätsniveau zugeordnet ist. Die relative Prioritätsreihenfolge kann jedoch offensichtlich geändert werden.
  • Die Zahl der von jedem der Interrupt-Konfigurationsregister 100 gespeicherten Bits ist groß genug, um für jedes der Vektoradressenregister 200 ein eindeutiges Bitmuster bereitzustel len und ein eindeutiges Bitmuster zur Anzeige eines maskierten Interrupts bereitzustellen. Wenn es bis zu drei Interrupt-Signale gibt, hält somit jedes der Register 100 vorzugsweise zwei Bits. Das Bitmuster 00 zeigt z.B. an, daß der entsprechende Interrupt maskiert ist, während die übrigen Bitmuster 01, 10 und 11 jeweils einem der Vektoradressenregister 200 entsprechen. Wenn es bis zu sieben Interrupt-Signale gibt, speichert jedes aus der Mehrzahl von Interrupt-Konfigurationsregistern 100 vorzugsweise drei Bits. Das Bitmuster 000 zeigt z.B. an, daß der betreffende Interrupt maskiert ist. Jedes der übrigen Bitmuster 001 bis 111 entspricht einem der Vektoradressenregister 200. Für den Fall, daß es bis zu 15 Interrupt-Signale gibt, speichert jedes aus der Mehrzahl von Konfigurationsregistern vorzugsweise vier Bits. In einem System, das noch mehr Interrupts aufweist, werden offensichtlich mehr Bits benötigt.
  • Die folgenden Beispiele veranschaulichen die Arbeitsweise der vorliegenden Erfindung. Es sei angenommen, daß ein mikroprozessorbasiertes System auf fünf verschiedene Interrupt-Signale reagieren soll, die mit INT.A bis INT.E bezeichnet sind. Somit muß es fünf Interrupt-Konfigurationsregister 100 geben, deren jedes drei Bits speichert. Darüber hinaus muß es fünf Vektoradressen geben, die mit A' bis E' bezeichnet sind. In den folgenden Beispielen entsprechen die Vektoradressen A' bis E' jeweils einem Interrupt, das die gleiche Buchstabenbezeichnung hat (z.B. hat die für INT.A passende Interrupt-Serviceroutine eine Startadresse in dem Speicher mit der Adresse A').
  • Ein erstes Beispiel ist in 2A dargestellt. Es sei angenommen, daß den Interrupts A bis E Prioritäten in der folgenden Reihenfolge (von der höchsten Priorität zur niedrigsten Priorität) zugeteilt werden sollen: C, E, A, D, B. Deshalb sind die Interrupt-Konfigurationsregister 100 und die Vektoradressenregister 200 so konfiguriert, wie dies in 2A dargestellt ist: Das Bitmuster 101 ist in dem Interrupt-Konfigurationsregister angeordnet, das dem Interrupt INT.C entspricht, und zeigt an, daß INT.C auf die höchste Priorität der Vektoradressenregister 200 abgebildet werden soll, während die Vektoradresse C' für INT.C in dem Vektoradressenregister mit der höchsten Priorität angeordnet wird. Das Bitmuster 100 ist in dem Interrupt-Konfigurationsregister angeordnet, das dem Interrupt INT.E entspricht, und zeigt an, daß INT.E in dem Vektoradressenregister 200 mit der zweithöchsten Priorität abgebildet werden soll, während die Vektoradresse E' für INT.E in dem Vektoradressenregister mit der zweithöchsten Priorität angeordnet wird. Das Bitmuster 011 ist in dem Interrupt-Konfigurationsregister angeordnet, das dem Interrupt INT.A entspricht, und zeigt an, daß INT.A auf das Vektoradressenregister 200 mit der dritthöchsten Priorität abgebildet werden soll, während die Vektoradresse A' für INT.A in dem Vektoradressenregister mit der dritthöchsten Priorität angeordnet wird. Das Bitmuster 010 ist in dem Interrupt-Konfigurationsregister angeordnet, das dem Interrupt INT.D entspricht, und zeigt an, daß INT.D an der vierthöchsten Priorität des Vektoradressenregisters 200 abgebildet werden soll, während die Vektoradresse D' für INT.D in dem Vektoradressenregister mit der vierthöchsten Priorität angeordnet wird. Das Bitmuster 001 ist in dem Interrupt-Konfigurationsregister angeordnet, das dem Interrupt INT.B entspricht, und zeigt an, daß INT.B an der niedrigsten Priorität des Vektoradressenregisters 200 abgebildet werden soll, während die Vektoradresse B' für INT.B in dem Vektoradressenregister mit der niedrigsten Priorität angeordnet wird.
  • Wenn bei dem in 2A dargestellten Beispiel ein Interrupt auftritt, wird die entsprechende Vektoradresse dem Mikroprozessor zugeführt, um sie in dessen Programmzähler zu laden. Wenn z.B. der Interrupt INT.A auftritt, wird dem Mikroprozessor die entsprechende Vektoradresse A' zugeführt. Wenn mehrere Interrupts, z.B. die Interrupts INT.A und INT.E, anhängig sind, wird nur die Vektoradresse desjenigen der anhängigen Interrupts dem Mikroprozessor zugeführt, der die höchste Priorität hat. Da in diesem Beispiel der Interrupt INT.E eine höhere Priorität hat als der Interrupt INT.A, wird dem Mikroprozessor zuerst die Vektoradresse E' zugeführt. Sobald die Interrupt-Serviceroutine für den Interrupt INT.E ausgeführt ist, wird dem Mikroprozessor die Vektoradresse A' zugeführt, falls der Interrupt INT.A noch anhängig ist,.
  • Es sei angenommen, daß das Bitmuster 000 einem maskierten Interrupt entspricht. Es ist jedoch offensichtlich, daß ein beliebiges Bitmuster als Entsprechung für einen maskierten Interrupt ausgewählt werden kann. Falls einer oder mehrere der Interrupts INT.A bis INT.E maskiert werden soll, werden die Bitmuster in dem Konfigurationsregister, das einem zu maskierenden Interrupt-Signal entspricht, durch das Bitmuster 000 ersetzt. 2B zeigt ein solches Beispiel. Das in 2B dargestellte Beispiel ähnelt dem Beispiel von 2A mit der Ausnahme, daß der Interrupt INT.E maskiert ist. Da der Interrupt INT.E maskiert ist, ist es nicht notwendig, eine entsprechende Vektoradresse E' vorzusehen. Deshalb wird dem Mikroprozessor keine entsprechende Vektoradresse zugeführt, selbst wenn der Interrupt E aktiv ist. Falls einer oder mehrere der übrigen nicht maskierten Interrupts INT.A bis INT.D aktiv ist, wird der Programmfluß jedoch unterbrochen, und die passende Vektoradresse wird dem Mikroprozessor zugeführt. Auf diese Weise können jedes einzelne oder mehrere der Interrupt-Signale A bis E maskiert werden.
  • Die vorliegende Erfindung ermöglicht eine signifikante Flexibilität bei der Konfigurierung der Interrupts und ihrer relativen Prioritäten. Die Vektoradresse, die Maskierung und die relative Priorität für jeden Interrupt können durch einfache Änderung der Inhalte der entsprechenden Exemplare der Konfigurationsregister 100 oder der Vektoradressenregister 200 oder beider geändert werden.
  • Es sei noch einmal auf 2A Bezug genommen, und als Beispiel für diese Flexibilität sei angenommen, daß bei dem Abarbeiten des Interrupts mit der höchsten Priorität die relati ven Prioritäten so geändert werden sollen, daß der Interrupt mit der höchsten Priorität zu dem Interrupt mit der niedrigsten Priorität wird und daß die Priorität der übrigen Interrupts inkrementiert wird. Dies wird erfindungsgemäß dadurch erreicht, daß die Einträge in den Interrupt-Konfigurationsregistern 100 und den Vektoradressenregistern 200 so geändert werden, wie dies in 2C dargestellt ist. Man erkennt, daß in 2A der Interrupt INT.C an der Stelle mit der höchsten Priorität in den Vektoradressenregistern 200 abgebildet ist, während in 2C der Interrupt INT.C in den Vektoradressenregistern 200 an der Stelle mit der niedrigsten Priorität abgebildet ist. Zusätzlich wurde in 2C die Priorität der einzelnen Interrupts INT.A, INT.B, INT.D und INT.E gegenüber ihren Positionen in 2A inkrementiert.
  • Bei den obigen Beispielen wird angenommen, daß jedes Interrupt-Signal auf eine eindeutige Interrupt-Serviceroutine abgebildet wird, es ist jedoch offensichtlich, daß mehrere Interrupts gemäß vorliegender Erfindung in einer einzigen Interrupt-Serviceroutine (oder in einem einzigen Interrupt-Handler) abgebildet werden können. 2B zeigt zwei Interrupt-Signale, die an einer einzigen Vektoradresse abgebildet sind. Im speziellen Fall sind dies das Interrupt-Signal INT.A und das Interrupt-Signal INT.E, die beide auf der Vektoradresse A' abgebildet sind.
  • 3 zeigt ein schematisches Blockdiagramm einer Schaltung 300 zum Implementieren der vorliegenden Erfindung. Zur Vereinfachung der Erläuterung ist die in 3 dargestellte Schaltung 300 für ein System mit fünf Interrupts INT.A bis INT.E ausgelegt, obwohl es offensichtlich ist, daß die hier offenbarten Prinzipien auch zum Aufbau einer Schaltung gemäß der Erfindung für ein System mit mehr oder weniger Interrupts angewendet werden können. Das Interrupt-Signal INT.A ist mit dem Eingang eines Eins-zu-Acht-Multiplexers 302 verknüpft. Ein Konfigurationsregister 102 für das Interrupt-Signal INT.A speichert drei Bits. Die drei Bits des Registers 102 sind jeweils mit einer von drei Auswahlleitungen des Demultiplexers 302 verknüpft. Das Interrupt-Signal INT.B ist mit dem Eingang eines Eins-zu-Acht-Demultiplexers 304 verknüpft. Ein Konfigurationsregisters 104 für das Interrupt-Signal INT.B speichert drei Bits. Die drei Bits des Registers 104 sind jeweils mit einer von drei Auswahlleitungen des Eins-zu-Acht-Demultiplexers 304 verknüpft.
  • Das Interrupt-Signal INT.C ist mit dem Eingang eines Eins-zu-Acht-Demultiplexers 306 verknüpft. Ein Konfigurationsregister 106 für das Interrupt-Signal INT.C speichert drei Bits. Die drei Bits des Registers 106 sind mit jeweils einer der drei Auswahlleitungen des Demultiplexers 306 verknüpft. Das Interrupt-Signal INT.D ist mit dem Eingang eines Eins-zu-Acht-Demultiplexers 308 verknüpft. Ein Konfigurationsregister 108 für das Interrupt-Signal INT.D speichert drei Bits. Die drei Bits des Registers 108 sind mit jeweils einer der drei Auswahlleitungen des Demultiplexers 308 verknüpft. Das Interrupt-Signal INT.E ist mit dem Eingang eines Eins-zu-Acht-Demultiplexers 310 verknüpft. Ein Konfigurationsregister 110 für das Interrupt-Signal INT.E speichert drei Bits. Die drei Bits des Registers 110 sind mit jeweils einer der drei Auswahlleitungen des Demultiplexers 310 verknüpft.
  • Der Ausgang "1" des Demultiplexers 302 ist mit dem ersten Eingang eines logischen "ODER"-Glieds 312 verbunden. Der Ausgang "2" des Demultiplexers 302 ist mit dem ersten Eingang eines logischen "ODER"-Glieds 314 verbunden. Der Ausgang "3" des Demultiplexers 302 ist mit dem ersten Eingang eines logischen "ODER"-Glieds 316 verbunden. Der Ausgang "4" des Demultiplexers 302 ist mit dem ersten Eingang eines logischen "ODER"-Glieds 318 verbunden. Der Ausgang "5" des Demultiplexers 302 ist mit dem ersten Eingang eines logischen "ODER"-Glieds 320 verbunden. Die Ausgänge "0", "6" und "7" des Demultiplexers 302 haben keine Verbindung.
  • Der Ausgang "1 " des Demultiplexers 304 ist mit dem zweiten Eingang des logischen "ODER"-Glieds 312 verbunden. Der Ausgang "2" des Demultiplexers 304 ist mit dem zweiten Eingang des logischen "ODER"-Glieds 314 verbunden. Der Ausgang "3" des Demultiplexers 304 ist mit dem zweiten Eingang des logischen "ODER"-Glieds 316 verbunden. Der Ausgang "4" des Demultiplexers 304 ist mit dem zweiten Eingang des logischen "ODER"-Glieds 318 verbunden. Der Ausgang "5" des Demultiplexers 304 ist mit dem zweiten Eingang des logischen "ODER"-Glieds 320 verbunden. Die Ausgänge "0", "6" und "7" des Demultiplexers 304 haben keine Verbindung.
  • Der Ausgang "1" des Demultiplexers 306 ist mit dem dritten Eingang des logischen "ODER"-Glieds 312 verbunden. Der Ausgang "2" des Demultiplexers 306 ist mit dem dritten Eingang des logischen "ODER"-Glieds 314 verbunden. Der Ausgang "3" des Demultiplexers 306 ist mit dem dritten Eingang des logischen "ODER"-Glieds 316 verbunden. Der Ausgang "4" des Demultiplexers 306 ist mit dem dritten Eingang des logischen "ODER"-Glieds 318 verbunden. Der Ausgang "5" des Demultiplexers 306 ist mit dem dritten Eingang des logischen "ODER"-Glieds 320 verbunden. Die Ausgänge "0", "6" und "7" des Demultiplexers 306 haben keine Verbindung.
  • Der Ausgang "1" des Demultiplexers 308 ist mit dem vierten Eingang des logischen "ODER"-Glieds 312 verbunden. Der Ausgang "2" des Demultiplexers 308 ist mit dem vierten Eingang des logischen "ODER"-Glieds 314 verbunden. Der Ausgang "3" des Demultiplexers 308 ist mit dem vierten Eingang des logischen "ODER"-Glieds 316 verbunden. Der Ausgang "4" des Demultiplexers 308 ist mit dem vierten Eingang des logischen "ODER"-Glieds 318 verbunden. Der Ausgang "5" des Demultiplexers 308 ist mit dem vierten Eingang des logischen "ODER"-Glieds 320 verbunden. Die Ausgänge "0", "6" und "7" des Demultiplexers 308 haben keine Verbindung.
  • Der Ausgang "1" des Demultiplexers 310 ist mit dem fünften Eingang des logischen "ODER"-Glieds 312 verbunden. Der Ausgang "2" des Demultiplexers 310 ist mit dem fünften Eingang des logischen "ODER"-Glieds 314 verbunden. Der Ausgang "3" des Demultiplexers 310 ist mit dem fünften Eingang des logischen "ODER"-Glieds 316 verbunden. Der Ausgang "4" des Demultiplexers 310 ist mit dem fünften Eingang des logischen "ODER"-Glieds 318 verbunden. Der Ausgang "5" des Demultiplexers 310 ist mit dem fünften Eingang des logischen "ODER"-Glieds 320 verbunden. Die Ausgänge "0", "6" und "7" des Demultiplexers 310 haben keine Verbindung.
  • Der Ausgang des logischen "ODER"-Glieds 312 ist mit einem ersten nichtinvertierenden Eingang eines logischen "UND"-Glieds 322 verbunden. Der Ausgang des logischen "ODER"-Glieds 314 ist mit einem zweiten invertierenden Eingang des logischen "UND"-Glieds 322 und mit einem ersten nichtinvertierenden Eingang eines logischen "UND"-Glieds 324 verbunden. Der Ausgang des logischen "ODER"-Glieds 316 ist mit einem dritten invertierenden Eingang des logischen "UND"-Glieds 322, mit einem zweiten invertierenden Eingang des logischen "UND"-Glieds 324 und mit einem ersten nichtinvertierenden Eingang eines logischen "UND"-Glieds 326 verbunden. Der Ausgang des logischen "ODER"-Glieds 318 ist mit einem vierten invertierenden Eingang des logischen "UND"-Glieds 322, mit einem dritten invertierenden Eingang des logischen "UND"-Glieds 324, mit einem zweiten invertierenden Eingang des logischen "UND"-Glieds 328 und mit dem ersten nichtinvertierenden Eingang eines logischen "UND"-Glieds 328 verbunden.
  • Der Ausgang des logischen "ODER"-Glieds 320 ist mit einem invertierenden fünften Eingang des logischen "UND-Glieds 322, mit einem invertierenden vierten Eingang des logischen "UND"-Glieds 324, mit einem invertierenden dritten Eingang des logischen "UND"-Glieds 326 und mit einem invertierenden zweiten Eingang des logischen "UND"-Glieds 328 verbunden und so angeordnet, daß er ein Adressenregister 212 aktiviert. Der Ausgang des logischen "UND"-Glieds 322 ist so angeordnet, daß er ein Vektoradressenregister 202 aktiviert. Der Ausgang des logischen "UND"-Glieds 324 ist so angeordnet, daß er ein Vektoradressenregister 204 aktiviert. Der Ausgang des logischen "UND"-Glieds 326 ist so angeordnet, daß er ein Vektoradressenregister 208 aktiviert. Der Ausgang des logischen "UND"-Glieds 328 ist so angeordnet, daß er ein Vektoradressenregister 210 aktiviert.
  • Die Inhalte des Vektoradressenregisters 202 werden in Abhängigkeit von dem Pegel am Ausgang des logischen "UND"-Glied 322 selektiv einem Vektoradressenbus 330 zugeführt. Die Breite des Vektoradressenbusses 330 entspricht vorzugsweise der Bitzahl, die der Mikroprozessor für die Speicheradressierung benutzt (z.B. 32 Bits), obwohl auch andere Adressierungsschemata benutzt werden können. Die Inhalte des Vektoradressenregisters 204 werden in Abhängigkeit von dem Pegel am Ausgang des logischen "UND"-Glieds 324 selektiv dem Vektoradressenbus 330 zugeführt. Die Inhalte des Vektoradressenregisters 208 werden in Abhängigkeit von dem Pegel am Ausgang des logischen "UND"-Glieds 326 selektiv dem Vektoradressenbus 330 zugeführt.
  • Die Inhalte des Vektoradressenregisters 210 werden in Abhängigkeit von dem Pegel am Ausgang des logischen "UND"-Glieds 328 selektiv dem Vektoradressenbus 330 zugeführt. Die Inhalte des Vektoradressenregisters 212 werden in Abhängigkeit von dem Pegel am Ausgang des logischen "ODER"-Glieds 320 selektiv dem Vektoradressenbus 330 zugeführt. Der Vektoradressenbus 330 ist mit einem Mikroprozessor 332 für das System verbunden und liefert geeignete Interrupt-Vektoradressen an die Logik in dem Mikroprozessor 332, um einen Programmzähler für den Mikroprozessor 332 zu implementieren.
  • Für den Betrieb der Schaltung 300 werden die Konfigurationsregister 102 bis 110 und die Vektoradressenregister 202 bis 212 passend konfiguriert. Die Register 102 bis 110 und 202 bis 212 sind für den Mikroprozessor 332 zugänglich und werden beim Hochfahren des mikroprozessorbasierten Systems z.B. durch eine Start-Softwareroutine, einer Anfangskonfiguration unterzogen. Sobald das System arbeitet, können die Inhalte der Register 102 bis 110 und 202 bis 212 durch Softwarebefehle oder durch eine Benutzer-Eingabe geändert werden. Alternativ werden die Register 102 bis 110 und 202 bis 212 von logischen Schaltungen konfiguriert, die außerhalb des Mikroprozessors 332 angeordnet sind.
  • Es sei z.B. angenommen, daß die Register 102 bis 110 und 202 bis 212 entsprechend dem in 2B dargestellten Beispiel konfiguriert sind. Deshalb enthält das Interrupt-Konfigurationsregister 102 das Bitmuster 001, das Interrupt-Konfigurationsregister 104 enthält das Bitmuster 001, das Interrupt-Konfigurationsregister 106 enthält das Bitmuster 101, das Interrupt-Konfigurationsregister 108 enthält das Bitmuster 010, und das Interrupt-Konfigurationsregister 110 enthält das Bitmuster 000. Außerdem enthält das Vektoradressenregister 202 die Vektoradresse B', das Vektoradressenregister 204 enthält die Vektoradresse D', und das Vektoradressenregister 208 enthält die Vektoradresse A'. Die Inhalte des Vektoradressenregisters 210 sind ohne Bedeutung, da keines der Interrupt-Signale auf dem Register 210 abgebildet ist. Das Vektoradressenregister 212 ist mit der Vektoradresse C' konfiguriert.
  • Deshalb führt der Ausgang "3" des Demultiplexers 302 jedesmal, wenn das Interrupt-Signal INT.A aktiv ist, hohe logische Spannung, so daß auch am Ausgang des logischen "ODER"-Glieds 316 hohe logische Spannung auftritt. Jedesmal, wenn das Interrupt-Signal INT.B aktiv ist, führt der Ausgang "1" des Demultiplexers 304 hohe logische Spannung, so daß auch an dem Ausgang des logischen "ODER"-Glieds 312 hohe logische Spannung auftritt. Jedesmal, wenn das Interrupt-Signal INT.C aktiv ist, führt der Ausgang "5" des Demultiplexers 306 hohe logische Spannung, so daß am Ausgang des logischen "ODER"-Glieds 320 hohe logische Spannung auftritt. Jedesmal, wenn das Interrupt-Signal INT.D aktiv ist, führt der Ausgang "2" des Demultiplexers 308 hohe logische Spannung, so daß an dem Ausgang des logischen "ODER"-Glieds 314 hohe logische Spannung auftritt. Jedesmal, wenn das Interrupt-Signal INT.E aktiv ist, führt der Ausgang "0" des Demultiplexers 310 hohe logische Spannung. Weil der Ausgang "0" keine Verbindung hat, ist das Interrupt-Signal INT.E maskiert. Deshalb wirkt die Konfiguration der Demultiplexer 302 bis 310 und der logischen "ODER"-Glieder 312 bis 320 als Mapping-Schaltung für das richtige Abbilden der Interrupt-Signale INT.A bis INT.E auf die Ausgänge der logischen "ODER"-Glieder 312 bis 320 nach Maßgabe der Inhalte der Konfigurationsregister 102 bis 110.
  • Bei dem obigen Beispiel wird unterstellt, daß die Interrupt-Signale INT.A bis INT.E aktive Hochpegel-Signale sind. Wenn sie aktive Niedrigpegel-Signale sind, ist für jedes Interrupt-Signal ein Inverter vorgesehen, um die aktiven Niedrigpegel-Signale in aktive Hochpegel-Signale umzuwandeln. Falls die Interrupt-Signale flankensensitiv sind, ist für jedes Interrupt-Signal ein Verriegelungsglied vorgesehen, um die flankensensitiven Signale in pegelsensitive Signale umzuwandeln.
  • Die Konfiguration der logischen "UND"-Glieder 322 bis 328 fungiert als Prioritätskodiererschaltung zur Priorisierung der Interrupt-Signale. Der auf das Vektoradressenregister 212 abgebildete Interrupt hat die höchste Priorität, Während der auf das Vektoradressenregister 202 abgebildete Interrupt die niedrigste Priorität hat. Jedesmal, wenn ein auf den Ausgang des logischen "ODER"-Glieds 320 abgebildetes Interrupt-Signal (in dem Beispiel das Interrupt-Signal INT.C) aktiv ist, blockiert der Ausgang des logischen "ODER"-Glied 320 über die logischen "UND"-Glieder 322 bis 328 alle anderen Interrupt-Signale und bewirkt, daß die in dem Register 212 enthaltene Vektoradresse (im Beispiel die Vektoradresse C') auf dem Vektoradressenbus 330 plaziert wird.
  • Wenn man annimmt, daß keines der Interrupt-Signale mit höherer Priorität aktiv ist, wenn ein auf einen der Ausgänge der "ODER"-Glieder 312 bis 318 abgebildetes Interrupt-Signal aktiv ist, blockiert das "ODER"-Ausgangssignal des betreffenden "ODER"-Glieds alle Interrupt-Signale mit niedrigerer Priorität über die logischen "UND"-Glieder, die den Interrupt-Signalen mit niedrigerer Priorität zugeteilt sind, und bewirkt, daß die Vektoradresse, die dem aktiven Interrupt-Signal mit der höchsten Priorität entspricht, auf dem Vektoradressenbus 330 plaziert wird.
  • Sobald der Interrupt mit der höchsten Priorität durch Ausführen der passenden Interrupt-Serviceroutine abgearbeitet ist, wird das Interrupt-Signal deaktiviert, und der anhängige Interrupt mit der nächsten höheren Priorität wird abgearbeitet, bis es keine anhängigen Inter rupts mehr gibt. Sobald es keine anhängigen Interrupts mehr gibt, wird der Programmzähler zurückgesetzt, so daß der Mikroprozessor die Ausführung des Softwareprogramms wieder aufnimmt.
  • Gemäß vorliegender Erfindung sind die Interrupt-Signale nach Maßgabe der Inhalte in der Mehrzahl von Interrupt-Konfigurationsregister 102 bis 110 und nach Maßgabe der Inhalte der Vektoradressenregister 202 bis 212 konfigurierbar. Diese Inhalte werden relativ leicht geändert, so daß die vorliegende Erfindung Interrupts zur Verfügung stellt, die im Vergleich zu früheren Verfahren leichter konfigurierbar sind.
  • Die vorliegende Erfindung wurde anhand spezifischer Ausführungsbeispiele beschrieben, die Details enthalten, um das Verständnis der Konstruktions- und Funktionsprinzipien der Erfindung zu erleichtern. Die Bezugnahme auf spezifische Ausführungsbeispiele und deren Details soll den Rahmen der anliegenden Ansprüche nicht einschränken. Es ist für den einschlägigen Fachmann offensichtlich, daß an dem für die Erläuterung ausgewählten Ausführungsbeispiel Modifikationen vorgenommen werden können, ohne daß dadurch der Rahmen der Erfindung verlassen wird, wie sie beansprucht wird. Insbesondere ist es für den einschlägigen Fachmann offensichtlich, daß die Vorrichtung gemäß vorliegender Erfindung auch in anderer Weise implementiert werden könnten und das oben offenbarte Gerät lediglich das bevorzugte Ausführungsbeispiel der Erfindung veranschaulicht und keinesfalls eine Beschränkung darstellt. Es ist z.B. offensichtlich, daß das in 3 dargestellte Gerät modifiziert oder durch Hinzufügungen ergänzt werden kann. Es können insbesondere logische Schaltungen enthalten sein, die die Interrupt-Signale INT.A, INT.B, INT.C, INT.D und INT.E verriegeln und die prüfen, ob die einzelnen Interrupt-Signale vorderflanken-, hinterflanken- oder pegelsensitiv sind. Weiterhin können auch alternative Verfahren zum Maskieren der Interrupts implementiert werden, z.B. durch selektive Steuerung eines Chip-Selekt-Anschlusses für jeden der Demultiplexer 302, 304, 306, 308 und 310.

Claims (13)

  1. Verfahren zum Antworten auf aktive Exemplare aus einer Mehrzahl von Interrupt-Signalen in einem mikroprozessorbasierten System, wobei das Verfahren die Verfahrensschritte umfaßt: a. Empfangen der aktiven Exemplare aus der Mehrzahl von Interrupt-Signalen, b. Abbilden jedes der aktiven Exemplare aus der Mehrzahl von Interrupt-Signalen entsprechend den Inhalten eines entsprechenden Exemplars aus einer ersten Mehrzahl von Registern (100) auf eines aus einer zweiten Mehrzahl von Registern (200), wobei jedes Register der zweiten Mehrzahl von Registern eine entsprechende, durch das betreffende Exemplar der ersten Mehrzahl von Registern spezifierte relative Priorität hat und eine Vektoradresse für das entsprechende Interrupt-Signal enthält, und c. Liefern der Vektoradresse für jedes der aktiven Exemplare der Interrupt-Signale an den Mikroprozessor nach Maßgabe der relativen Priorität jedes der aktiven Exemplare der Interrupt-Signale.
  2. Verfahren nach Anspruch 1 mit dem weiteren Verfahrensschritt des Änderns der relativen Priorität der Interrupt-Signale durch Ändern der Inhalte der ersten und der zweiten Mehrzahl von Registern.
  3. Verfahren nach Anspruch 1 mit dem weiteren Verfahrensschritt des Maskierens eines ausgewählten Exemplars aus der Mehrzahl von Interrupts nach Maßgabe der Inhalte der betreffenden Exemplare aus der ersten Mehrzahl von Registern.
  4. Verfahren nach Anspruch 1, bei dem eine Vektoradresse mehr als einem Interrupt-Signal entspricht.
  5. Gerät zum Antworten auf aktive Exemplare aus einer Mehrzahl von Interrupt-Signalen in einem mikroprozessorbasierten System, wobei das Gerät aufweist: a. eine erste Mehrzahl von Registern (100), b. eine mit der ersten Mehrzahl von Registern verbundene Mapping-Schaltung (302, 304, 306, 308, 310, 312, 314, 316, 318, 320) zum Abbilden jedes der aktiven Exemplare aus der Mehrzahl von Interrupt-Signalen auf eines aus einer Mehrzahl von Aktivierungssignalen auf Prioritätsbasis nach Maßgabe der Inhalte eines entsprechenden Exemplars aus der ersten Mehrzahl von Registern. c. eine mit der Mapping-Schaltung verbundene Prioritätskodierschaltung (322, 324, 326, 328) zum Blockieren aller aus der Mehrzahl von Aktivierungssignalen mit Ausnahme des Aktivierungssignals mit der höchsten Priorität und d. eine zweite Mehrzahl von Registern (200), die so angeordnet sind, daß sie die Mehrzahl von Aktivierungssignalen aufnehmen, wobei jedes Register aus der zweiten Mehrzahl von Registern eine Vektoradresse für das entsprechende Aktivierungssignal enthält und die zweite Mehrzahl von Registern dazu dient, die dem Aktivierungssignal mit der höchsten Priorität entsprechende Vektoradresse an den Mikroprozessor zu liefern.
  6. Gerät nach Anspruch 5, bei dem die relative Priorität der Interrupt-Signale durch Ändern der Inhalte der ersten und der zweiten Mehrzahl von Registern geändert wird.
  7. Gerät nach Anspruch 5, bei dem ausgewählte Exemplare aus der Mehrzahl von Interrupts durch die Mapping-Schaltung nach Maßgabe der Inhalte des betreffenden Exemplars aus der ersten Mehrzahl von Registern maskiert werden.
  8. Gerät nach Anspruch 5, bei dem eine Vektoradresse mehr als einem Interrupt-Signal entspricht.
  9. Gerät nach Anspruch 5, bei dem die Prioritätskodierschaltung eine Mehrzahl von logischen UND-Gliedern (322, 324, 326, 328) aufweist und jedes logische UND-Glied einem der Aktivierungssignale entspricht, welches nicht das Aktivierungssignal mit der höchsten Priorität ist, wobei jedes logische UND-Glied so angeordnet ist, daß eine logische UND-Funktion an einem logischen Pegel des entsprechenden Exemplars der Aktivierungssignale und an einem invertierten logischen Pegel jedes Aktivierungssignals ausführt, das eine höhere Priorität hat als das entsprechende Exemplar der Aktivierungssignale, und wobei das Ausgangssignal jedes logischen UND-Glieds und die höchste Priorität der Aktivierungssignale jeweils so gekoppelt sind, daß sie ein entsprechendes Exemplar aus der zweiten Mehrzahl von Registern in die Lage versetzen, seine Vektoradresse an den Mikroprozessor liefern.
  10. Gerät nach Anspruch 5, bei dem die erste Mehrzahl von Registern einen relativen Prioritätswert speichern und jedes Register aus der ersten Mehrzahl von Registern einem aus der Mehrzahl von Interrupt-Signalen entspricht.
  11. Gerät nach Anspruch 5, bei dem die Mapping-Schaltung ferner eine Mehrzahl von Demultiplexern (302, 304, 306, 308, 310) aufweist und jeder Demultiplexer eine Mehrzahl von Auswahlleitungen besitzt, die mit einem entsprechenden Exemplar aus der ersten Mehrzahl von Registern verbunden sind, um einen relativen Prioritätswert zu empfangen, ferner einen Eingang, der so angeordnet ist, daß er das entsprechende Exemplar der Interrupt-Signale aufnimmt, sowie eine Mehrzahl von Ausgängen.
  12. Gerät nach Anspruch 11, bei dem die Mapping-Schaltung ferner eine Mehrzahl von logischen ODER-Gliedern (312, 314, 316, 318, 320) aufweist und jedes logische ODER-Glied eine Mehrzahl von Eingängen und einen Ausgang besitzt, wobei jeder Eingang jedes logischen ODER-Glieds mit einem aus der Mehrzahl von Ausgängen jedes Demultiplexers verbunden ist und wobei die Ausgänge der logischen ODER-Glieder die Mehrzahl von Aktivierungssignalen erzeugen.
  13. Gerät nach Anspruch 12, bei dem ausgewählte Exemplare aus der Mehrzahl von Interrupts durch geeignetes Konfigurieren der Inhalte des betreffenden Exemplars aus der ersten Mehrzahl von Registern maskiert werden, um einen Ausgang des entsprechenden Demultiplexers auszuwählen, der nicht mit einem aus der Mehrzahl von logischen ODER-Gliedern verbunden ist.
DE69926365T 1998-05-20 1999-05-10 Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system Expired - Fee Related DE69926365T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/082,432 US6081867A (en) 1998-05-20 1998-05-20 Software configurable technique for prioritizing interrupts in a microprocessor-based system
US82432 1998-05-20
PCT/US1999/010171 WO1999060488A1 (en) 1998-05-20 1999-05-10 Software configurable technique for prioritizing interrupts in a microprocessor-based system

Publications (2)

Publication Number Publication Date
DE69926365D1 DE69926365D1 (de) 2005-09-01
DE69926365T2 true DE69926365T2 (de) 2006-05-24

Family

ID=22171186

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69926365T Expired - Fee Related DE69926365T2 (de) 1998-05-20 1999-05-10 Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system

Country Status (7)

Country Link
US (1) US6081867A (de)
EP (1) EP1080422B1 (de)
JP (1) JP2002516433A (de)
AT (1) ATE300764T1 (de)
AU (1) AU4072899A (de)
DE (1) DE69926365T2 (de)
WO (1) WO1999060488A1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553443B1 (en) * 1999-09-28 2003-04-22 Legerity, Inc. Method and apparatus for prioritizing interrupts in a communication system
US6842811B2 (en) * 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
DE10062996B4 (de) * 2000-12-16 2005-09-29 Micronas Gmbh Unterbrecher-Steuereinrichtung mit Prioritätsvorgabe
DE10062995A1 (de) * 2000-12-16 2002-07-11 Micronas Gmbh Unterbrecher-Steuereinrichtung
US6813666B2 (en) * 2001-02-12 2004-11-02 Freescale Semiconductor, Inc. Scaleable arbitration and prioritization of multiple interrupts
US6857036B2 (en) * 2001-07-17 2005-02-15 Hewlett Packard Development Company, L.P. Hardware method for implementing atomic semaphore operations using code macros
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
GB2381891B (en) * 2001-11-12 2003-10-29 Mentor Graphics Testing the interrupt priority levels in a microprocessor
GB2381890B (en) * 2001-11-12 2003-10-29 Mentor Graphics Testing the interrupt sources of a microprocessor
CN1428710A (zh) * 2001-12-28 2003-07-09 希旺科技股份有限公司 多功能电子周边卡
US6993685B2 (en) * 2002-09-12 2006-01-31 Hewlett-Packard Development Company, L.P. Technique for testing processor interrupt logic
US7039771B1 (en) 2003-03-10 2006-05-02 Marvell International Ltd. Method and system for supporting multiple external serial port devices using a serial port controller in embedded disk controllers
US7870346B2 (en) 2003-03-10 2011-01-11 Marvell International Ltd. Servo controller interface module for embedded disk controllers
US7080188B2 (en) 2003-03-10 2006-07-18 Marvell International Ltd. Method and system for embedded disk controllers
US7492545B1 (en) 2003-03-10 2009-02-17 Marvell International Ltd. Method and system for automatic time base adjustment for disk drive servo controllers
WO2004114132A1 (ja) * 2003-06-20 2004-12-29 Fujitsu Limited 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム
US7206884B2 (en) * 2004-02-11 2007-04-17 Arm Limited Interrupt priority control within a nested interrupt system
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control
US7516252B2 (en) * 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US7415557B2 (en) * 2006-06-06 2008-08-19 Honeywell International Inc. Methods and system for providing low latency and scalable interrupt collection
US9946668B1 (en) * 2007-01-10 2018-04-17 The Mathworks, Inc. Automatic prioritization of interrupts in a modeling environment
US7617345B2 (en) * 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US7613860B2 (en) * 2007-07-02 2009-11-03 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US7685347B2 (en) * 2007-12-11 2010-03-23 Xilinx, Inc. Interrupt controller for invoking service routines with associated priorities
US8504750B1 (en) * 2009-06-23 2013-08-06 Qlogic, Corporation System and method to process event reporting in an adapter
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US9189283B2 (en) 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
US8738830B2 (en) 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US8661177B2 (en) * 2011-12-19 2014-02-25 Advanced Micro Devices, Inc. Method and apparatus for controlling system interrupts

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905898A (en) * 1994-05-31 1999-05-18 Advanced Micro Devices, Inc. Apparatus and method for storing interrupt source information in an interrupt controller based upon interrupt priority
US5768599A (en) * 1995-02-28 1998-06-16 Nec Corporation Interrupt managing system for real-time operating system
US5619706A (en) * 1995-03-02 1997-04-08 Intel Corporation Method and apparatus for switching between interrupt delivery mechanisms within a multi-processor system
US5594905A (en) * 1995-04-12 1997-01-14 Microsoft Corporation Exception handler and method for handling interrupts
US5805929A (en) * 1996-01-29 1998-09-08 International Business Machines Corporation Multiple independent I/O functions on a PCMCIA card share a single interrupt request signal using an AND gate for triggering a delayed RESET signal
US5778236A (en) * 1996-05-17 1998-07-07 Advanced Micro Devices, Inc. Multiprocessing interrupt controller on I/O bus
US5787290A (en) * 1996-12-20 1998-07-28 International Business Machines Corporation Adapter with an onboard interrupt controller for controlling a computer system
US5819095A (en) * 1996-12-20 1998-10-06 International Business Machines Corporation Method and apparatus for allowing an interrupt controller on an adapter to control a computer system
US5918057A (en) * 1997-03-20 1999-06-29 Industrial Technology Research Institute Method and apparatus for dispatching multiple interrupt requests simultaneously

Also Published As

Publication number Publication date
US6081867A (en) 2000-06-27
EP1080422A4 (de) 2002-07-17
JP2002516433A (ja) 2002-06-04
ATE300764T1 (de) 2005-08-15
AU4072899A (en) 1999-12-06
WO1999060488A1 (en) 1999-11-25
DE69926365D1 (de) 2005-09-01
EP1080422B1 (de) 2005-07-27
EP1080422A1 (de) 2001-03-07

Similar Documents

Publication Publication Date Title
DE69926365T2 (de) Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE3689696T2 (de) Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln.
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE69717369T2 (de) Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom
DE2714805C2 (de)
DE2722099C2 (de)
DE19983476B4 (de) Verfahren und Schaltungsanordnung zur Einplanung von Operationen unter Verwendung einer Abhängigkeitsmatrix
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE2629459C2 (de)
DE3587213T2 (de) Verarbeitungseinheit mit der faehigkeit ein oder mehrere programme auszufuehren mit einer mehrzahl von funktionseinheiten.
DE2744531A1 (de) Elektronische datenverarbeitungsanlage
DE4011745A1 (de) Taskverfolgungseinrichtung
DE3228405A1 (de) Emulator zur erzeugung einer folge von steuersignalen
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE69322554T2 (de) Unterbrechungsfreigabeschaltungen und -verfahren
DE69233282T2 (de) Datenverarbeitungsvorrichtung
DE19955776C1 (de) Multitasking-Prozessorsystem
EP0799441B1 (de) Verfahren zur steuerung von technischen vorgängen
DE68926266T2 (de) Datenprozessor mit der Fähigkeit, Unterbrechungen mit hoher Geschwindigkeit zu verarbeiten
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE3850906T2 (de) Gastmaschinenablaufsteuerungssystem für virtuelles Maschinensystem.
EP0590175B1 (de) Prozesssteuerungssystem
DE69424387T2 (de) Verfahren und Gerät zum Modifizieren des Inhalts eines Registers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee