EP0933705B1

Data processor with robust interrupt branching and method of operation

Abstract

This record has no abstract on file.

EP0933705B1, drawing sheet 1
Sheet 1 of 5

Term

Term ended

Expired 2 February 2019, 7.6 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

5 claims: 5 independent, 0 dependent

  1. 1
    A data processor comprising a register, the data processor operable to fetch instructions at an address specified by the register in an event of one of a plurality of selectably enabled interrupts, the register comprising:a first field, user programmable to store most significant bits of an address;anda second field storing a representation of a highest priority interrupt of the plurality of interrupts asserted and enabled during a predetermined time interval;an interrupt flag register having a plurality of bits each corresponding to one of the plurality of interrupts, the bits disposed in order of the priority of the plurality of interrupts from highest priority to lowest priority, each bit set to a first digital state upon assertion of the corresponding interrupt;an interrupt enable register having a plurality of bits each corresponding to one of the plurality of interrupts, each bit set to a first digital state indicating the corresponding interrupt is enabled or set to a second digital state opposite to the first digital state indicating the corresponding interrupt is disabled;an interrupt service table pointer further comprising;an interrupt service table base field, user programmable to store most significant bits of an address;a highest priority interrupt field;characterised byan interrupt field logic coupled to the interrupt flag register, the interrupt enable register and the highest priority interrupt field, the interrupt field logic comprising;a bit wise AND gate (1304) coupled to the interrupt flag register and the interrupt enable register forming the AND of each bit of the interrupt flag register with a bit ofthe interrupt enable register corresponding to the same interrupt;a find first block (1306) coupled to an output of the bit wise AND gate determining the bit in the first digital state corresponding to the highest priority interrupt;an encoder (1308) coupled to the find first block generating a binary weighted indication of the right most bit in the first digital state determined by the find first block;the interrupt field logic thereby storing a representation of a highest priority interrupt of the plurality of interrupts asserted and enabled during a predetermined time interval. Datenprozessor, der ein Register aufweist, wobei der Datenprozessor betreibbar ist, um Befehle an einer durch das Register spezifizierten Adresse zu holen, wenn einer von mehreren auswählbaren freigegebenen Interrupts auftritt, wobei das Register umfasst: ein erstes Feld, das vom Anwender programmierbar ist, um höchstwertige Bits einer Adresse zu speichern;undein zweites Feld zum Speichern einer Darstellung eines Interrupts mit höchster Priorität der mehreren Interrupts, die während eines vorgegebenen Zeitintervalls bestätigt und freigegeben werden;ein Interrupt-Flag-Register, das mehrere Bits besitzt, wovon jedes einem der mehreren Interrupts entspricht, wobei die Bits in der Reihenfolge der Priorität der mehreren Interrupts von der höchsten Priorität zu der niedrigsten Priorität angeordnet sind, wobei jedes Bit bei Bestätigung des entsprechenden Interrupts in einen ersten digitalen Zustand versetzt wird;ein Interrupt-Freigaberegister, das mehrere Bits besitzt, wovon jedes einem der mehreren Interrupts entspricht, wobei jedes Bit in einen ersten digitalen Zustand versetzt ist, der angibt, dass der entsprechende Interrupt freigegeben ist, oder in einen zweiten digitalen Zustand versetzt ist, der zu dem ersten digitalen Zustand entgegengesetzt ist und angibt, dass der entsprechende Interrupt gesperrt ist;einen Interrupt-Diensttabellen-Zeiger, der ferner umfasst: ein Interrupt-Diensttabellen-Basisfeld, das vom Anwender programmierbar ist, um höchstwertige Bits einer Adresse zu speichern;ein Feld für den Interrupt mit der höchsten Priorität;gekennzeichnet durcheine Interrupt-Feldlogik, die mit dem Interrupt-Flag-Register, dem Interrupt-Freigaberegister und dem Feld für den Interrupt mit der höchsten Priorität gekoppelt ist, wobei die Interrupt-Feldlogik umfasst: ein Gatter (1304) für bitweise UND-Verknüpfung, das mit dem Interrupt-Flag-Register und mit dem Interrupt-Freigaberegister gekoppelt ist und eine UND-Verknüpfung zwischen jedem Bit des Interrupt-Flag-Registers und einem Bit des Interrupt-Freigaberegisters, das demselben Interrupt entspricht, bildet;einen Finde-Ersten-Block (1306), der mit einem Ausgang des bitweisen UND-Gatters gekoppelt ist und das Bit in dem ersten digitalen Zustand, das dem Interrupt mit höchster Priorität entspricht, bestimmt;einen Codierer (1308), der mit dem Finde-Ersten-Block gekoppelt ist und eine binär gewichtete Angabe des am weitesten rechts stehenden Bits in dem ersten digitalen Zustand, das durch den Finde-Ersten-Block bestimmt wird, erzeugt;wodurch die Interrupt-Feldlogik eine Darstellung des Interrupts mit der höchsten Priorität der mehreren Interrupts, die während eines vorgegebenen Zeitintervalls bestätigt und freigegeben werden, speichert. Processeur de données comprenant un registre, le processeur de données étant utilisable pour extraire des instructions à une adresse spécifiée par le registre dans le cas de l'une d'une pluralité d'interruptions activées de manière sélectionnable, le registre comprenant : un premier champ, programmable par l'utilisateur pour stocker les bits de poids fort d'une adresse;etun deuxième champ stockant une représentation d'une interruption de plus forte priorité de la pluralité d'interruptions imposées et activées pendant un intervalle de temps prédéterminé ;un registre d'indicateurs d'interruption ayant une pluralité de bits, chacun correspondant à l'une de la pluralité d'interruptions, les bits étant disposés dans l'ordre de la priorité de la pluralité d'interruptions depuis la plus forte priorité jusqu'à la plus faible priorité, chaque bit étant mis à un premier état numérique suite à l'imposition de l'interruption correspondante ;un registre d'activations d'interruption ayant une pluralité de bits, chacun correspondant à l'une de la pluralité d'interruptions, chaque bit étant mis à un premier état numérique indiquant que l'interruption correspondante est activée ou étant mis à un deuxième état numérique, opposé au premier état numérique, indiquant que l'interruption correspondante est désactivée;un pointeur de tableau de prises en charge d'interruption comprenant en outre: un champ de base de tableau de prises en charge d'interruption, programmable par l'utilisateur pour stocker les bits de poids fort d'une adresse;un champ d'interruption de plus forte priorité;caractérisé parune logique de champ d'interruption couplée au registre d'indicateur d'interruption, au registre d'activations d'interruption et au champ d'interruption de plus forte priorité, la logique de champ d'interruption comprenant : une porte ET opérant au niveau du bit (1304), couplée au registre d'indicateurs d'interruption, et le registre de validations d'interruption formant le ET de chaque bit du registre d'indicateurs d'interruption avec un bit du registre d'activations d'interruptions correspondant à la même interruption;un bloc de recherche du premier (1306), couplé à une sortie de la porte ET opérant au niveau du bit, déterminant le bit dans le premier état numérique correspondant à l'interruption de plus forte priorité ;un encodeur (1308), couplé au bloc de recherche du premier générant une indication pondérée binaire du bit le plus à droite dans le premier état numérique déterminé par le bloc de recherche du premier ;la logique de champ d'interruption stockant de ce fait une représentation d'une interruption de plus forte priorité, de la pluralité d'interruptions imposées et activées pendant un intervalle de temps prédéterminé.
  2. 2
    Datenprozessor nach Anspruch 1, wobei das vorgegebene Zeitintervall ein Einzeltaktzyklus des Datenprozessors ist. Processeur de données selon la revendication 1, dans lequel l'intervalle de temps prédéterminé est un seul cycle d'horloge du processeur de données. The data processor of claim 1 wherein the predetermined time interval is a single clock cycle of the data processor.
  3. 3
    Datenprozessor nach Anspruch 1, der ferner umfasst:eine Hol-Logik zum Holen von auszuführenden Befehlen;eine Datenpfad-Logik, die mit der Hol-Logik gekoppelt ist, wobei die Datenpfad-Logik die Befehle ausführt;undeine Steuerlogik, die mit der Hol-Logik und mit dem Interrupt-Diensttabellen-Zeiger gekoppelt ist, wobei die Steuerlogik in Reaktion auf eine Bestätigung eines Interrupts eine Adresse einer Interrupt-Dienstroutine an die Hol-Logik liefert, wobei die Adresse mit den Inhalten des Interrupt-Diensttabellen-Zeigers logisch äquivalent ist. Processeur de données selon la revendication 1, comprenant en outre : une logique d'extraction destinée à extraire des instructions à exécuter ;une logique de chemin de données couplée à la logique d'extraction, la logique de chemin de données exécutant les instructions ;etune logique de contrôle, couplée à la logique d'extraction et au pointeur de tableau de prises en charge d'interruption, la logique de contrôle fournissant une adresse d'une routine de prise en charge d'interruption à la logique d'extraction fonctionnant en réponse à une imposition d'une interruption, l'équivalent logique adresse du contenu du pointeur de tableau de prises en charge d'interruption. The data processor of claim 1 further comprising: fetch logic for fetching instructions to execute;data path logic coupled to the fetch logic, the data path logic executing the instructions;andcontrol logic coupled to the fetch logic and to the interrupt service table pointer, the control logic supplying an address of an interrupt service routine to the fetch logic responsive to an assertion of an interrupt, the address logical equivalent to the contents of the interrupt service table pointer.
  4. 4
    A method of operating a data processor comprising the steps of:during a first time interval, storing most significant bits of an address into a first field of a register;storing an indication of enablement of each of a plurality of interrupts;during a second time interval, receiving assertion of the plurality of interrupts in the data processor;characterised in that during the second time interval, determining a highest priority interrupt of the plurality of interrupts asserted and enabled according to the stored indication by storing an indication of assertion of each of the plurality of interrupts in an order from a highest priority interrupt to a lowest priority interrupt;forming a bit wise AND of the indication of assertion of each of the plurality of interrupts with the corresponding indication of enablement of the interrupt;determining the order of a bit in the bit wise AND corresponding to the highest priority interrupt asserted and enabled;encoding a binary weighted indication of the determined order of the highest priority interrupt asserted and enabled;storing a representation of the highest priority asserted and enabled interrupt into a second field of the register;andexecuting an instruction addressed by a concatenation of the first field and the second field. Procédé de mise en fonctionnement d'un processeur de données, comprenant les étapes consistant à : pendant un premier intervalle de temps, - stocker les bits de poids fort d'une adresse dans un premier champ d'un registre;- stocker une indication d'activation de chacune d'une pluralité d'interruptions;pendant un deuxième intervalle de temps,- recevoir une imposition de la pluralité d'interruptions dans le processeur de données ;caractérisé en ce que, pendant le deuxième intervalle de temps, il est déterminé une interruption de plus forte priorité de la pluralité d'interruptions imposées et activées selon l'indication stockée, en stockant une indication d'imposition de chacune de la pluralité d'interruptions dans un ordre allant d'une interruption de plus forte priorité à une interruption de plus faible priorité ;formant une opération ET, au niveau du bit, de l'indication d'imposition de chacune de la pluralité d'interruptions avec l'indication correspondante d'activation de l'interruption;déterminant l'ordre d'un bit, dans l'opération ET au niveau du bit, correspondant à l'interruption imposée et activée de plus forte priorité;et en codant une indication pondérée binaire de l'ordre déterminé de l'interruption imposée et activée de plus forte priorité ;il est stocké une représentation de l'interruption imposée et activée de plus forte priorité dans un deuxième champ du registre;etil est exécuté une instruction adressée par une concaténation du premier champ et du deuxième champ. Verfahren zum Betreiben eines Datenprozessors, das die folgenden Schritte umfasst: während eines ersten Zeitintervalls Speichern höchstwertiger Bits einer Adresse in einem ersten Feld eines Registers;Speichern einer Angabe der Freigabe jedes von mehreren Interrupts;während eines zweiten Zeitintervalls Empfangen einer Bestätigung der mehreren Interrupts in dem Datenprozessor;dadurch gekennzeichnet, dass während des zweiten Zeitintervalls ein Interrupt mit der höchsten Priorität der mehreren Interrupts, die in Übereinstimmung mit der gespeicherten Angabe bestätigt und freigegeben sind, bestimmt wird, indem eine Angabe der Bestätigung jedes der mehreren Interrupts in einer Reihenfolge von einem Interrupt mit höchster Priorität zu einem Interrupt mit niedrigster Priorität gespeichert wird;eine bitweise UND-Verknüpfung der Angabe der Bestätigung jedes der mehreren Interrupts und der entsprechenden Angabe einer Freigabe des Interrupts gebildet wird;die Reihenfolge eines Bits in der bitweisen UND-Verknüpfung, das dem bestätigten und freigegebenen Interrupt mit der höchsten Priorität entspricht, bestimmt wird;undeine binär gewichtete Angabe der bestimmten Reihenfolge des bestätigten und freigegebenen Interrupts mit der höchsten Priorität codiert wird;eine Darstellung des bestätigten und freigegebenen Interrupts mit der höchsten Priorität in einem zweiten Feld des Registers gespeichert wird;undein durch eine Verknüpfung des ersten Feldes und des zweiten Feldes adressierter Befehl ausgeführt wird.
  5. 5
    Procédé selon la revendication 4, dans lequel le premier intervalle de temps est un seul cycle d'horloge du processeur de données. The method of claim 4 wherein the first time interval is a single clock cycle of the data processor. Verfahren nach Anspruch 4, wobei das erste Zeitintervall ein Einzeltaktzyklus des Datenprozessors ist.