EP1417579A2 - Unterbrecher-steuereinrichtung - Google Patents
Unterbrecher-steuereinrichtungInfo
- Publication number
- EP1417579A2 EP1417579A2 EP01990568A EP01990568A EP1417579A2 EP 1417579 A2 EP1417579 A2 EP 1417579A2 EP 01990568 A EP01990568 A EP 01990568A EP 01990568 A EP01990568 A EP 01990568A EP 1417579 A2 EP1417579 A2 EP 1417579A2
- Authority
- EP
- European Patent Office
- Prior art keywords
- interrupt
- processor
- address
- control device
- branch
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Definitions
- the invention relates to an interrupter control device, with which the access of a plurality of interrupter sources to a processor is controlled, which there corresponds to the active one
- Interrupt source should switch the current program.
- a processor in a motor vehicle that is currently in a relatively insignificant program mode, e.g. Regulation of heating and ventilation. If a temperature sensor in the motor reports overheating during this time, the processor must be quickly switched to an engine control program so that there is no damage.
- the conflict in which two or more interrupter sources simultaneously send signals for changing the program is solved in that the interrupter control device only switches through the individual interrupter sources one after the other according to predetermined priorities to the interrupter input of the processor.
- each breaker source is connected to its own breaker interface, which is individualized by an address and a predetermined, in particular programmable, priority value.
- All interrupt interfaces are coupled to a selector that selects the one with the highest priority from the incoming interrupt requests.
- interrupt routine which are assigned to the respective priority of the interrupt interface to be switched through, but which always also contain a context-saving routine.
- the following operations are usually carried out during the context-saving routine: the program running in the processor is stopped, the contents of the registers present in the processor core are loaded into separate memory areas, the
- the time of data backup in the processor is not negligible but, depending on the interrupt routine, requires a large number of cycles, for example between 10 and 30 cycles.
- new interrupt requests can only be detected by setting the corresponding flags in the associated interrupt interface. These set flags can only be evaluated again when the interrupt routine in the processor has expired and this is indicated by corresponding signals from the branch logic.
- the lockout time for new interrupt requests during the context backup makes up part of the total lockout time, which is also referred to as latency and is usually assigned to the entire interrupt routine.
- a shortening of the interrupt routine by a parallelization of the context protection and the other operations intervenes strongly in the architecture of the processor and increases its switching effort. For example, in the data sheet of the company "Micronas Intermetall" from September 29, 1999 with the
- the object of the invention is to provide an interrupter control device which, in cooperation with conventional processors, has a relatively low latency.
- the object is achieved with an interrupter control device according to the preamble of claim 1 in that the branching address is delayed by the branching logic, in particular is only released or can be called up towards the end of the context-saving routine triggered by the interrupt signals.
- FIG. 1 shows the block diagram of an interrupter control device according to the invention
- FIG. 2 shows a branching diagram according to the prior art
- Figure 3 shows the corresponding branching scheme according to the invention and Figure 4 shows in the timing diagram a branching example according to the invention.
- FIG. 1 shows the functional blocks of an interrupter control device, which is generally designed as a monolithically integrated circuit.
- the interrupt sources can be processors, transmitter devices or sensors that generate data or analog signals sl, s2, s3, s4 that serve as switchover signals for the processor 100.
- Figure 1 shows only four interrupt sources; as a rule, however, 16 or more interrupter sources can be connected to an interrupter control device.
- Each breaker source 11, 12, 13, 14 is assigned an breaker interface 21, 22, 23, 24, which represents the respective input circuit of the breaker control device.
- the interrupter interfaces can be designed the same or different depending on the type of connectable interrupter sources. Each contains for identification
- Interrupt interface has its own address Adi and an associated priority value Pi, which is advantageously also programmable via a bus line (not shown).
- a selection device 30 determines from the current interrupt requests the one with the highest priority Pmax together with the associated address Adm.
- a priority comparator 40 compares this priority value Pmax with a currently valid priority value Px and generates an interrupt request signal IR if the priority value Pmax is higher than the current priority value Px.
- the new priority value Pmax is now stored as the new current priority value Px, for example in a register 35, in order to be available again for the current priority comparison at the next interrupt request. If the priority value Pmax is less than the current priority value Px, then this value need not be saved.
- the processing first triggers a context backup I (see FIG. 3) of the current program Rx, which is uniform for all priority cases, the context backup not only storing the data Dx but also storing the
- Return address Ax is included in the interrupted program. Only after the context has been saved can the processor core be prepared for the new program, for which it must of course be informed which of the stored programs it should now process.
- the processor 100 notifies the branching logic 60 via control signals Vs, possibly also via a "handshake" method, that it now wants to get the required information about the program to be controlled or that it asks from the interrupt control device this information from the branch logic 60 or a register 55 which has previously been loaded accordingly by the branch logic. With this information, the processor triggers the branch internally by jumping the program pointer to the start address of the associated processing program.
- the branching diagram of FIG. 2 shows the sequence of previous interrupt routines in which the branch addresses are formed at the beginning of the interrupt routine.
- a signal processing Rx is running in the processor 100, which is assigned the priority Px.
- an interrupter source with the priority Pi becomes active, which for example is greater than the previous priority Px. If the priority Pi were lower than the previous Px, then nothing would change in the signal processing of the processor 100 and the program Rx would continue, compare the arrow pointing to the right, which indicates the program Rx.
- the branch logic 60 with the possible branch addresses Vi is first activated.
- V0, V2, V3, V4 and V6 are given as possible branch addresses, the smaller number indicating the higher priority.
- the first called branch address V6 triggers an interrupt routine 16 in the processor 100, which contains a data backup Dx of the signal processing Rx currently running and a return address Ax in this program.
- the required time duration of the interrupt routine is shown by the adjacent time arrow t. No new interrupt command can be processed during the interrupt routine.
- the associated time is referred to as latency, cf. arrows L6, L4, L3.
- the processor 100 runs in the program R6. An interruption request received in the meantime with priority P4 can only be processed now.
- the branch logic 60 generates a branch instruction V4 depending on this interrupt request
- Interrupt routine 14 with data backup D6 and return address A6 is triggered.
- a relatively early interrupt request with the higher priority P3 can only be processed after the time interval t3 when the interrupt routine 14 has been completed.
- the processor 100 is then in the signal processing program R4. By the end of t3, the processor has signaled that it is in an uninterruptible interrupt routine. If the processor releases this blocking signal, the branch logic 60 triggers the interrupt program 13 with the data backup D4 and the return address A4 via the branch instruction V3, which ends after the latency period L3.
- Processor 100 is now in program sequence R3. This program is either processed or interrupted by an interrupt request with a higher priority, i.e. PO, PI or P2.
- FIG. 3 the branching diagram of an interrupter control device according to the invention is shown in comparison to FIG.
- the starting point is current signal processing Rx in the connected processor 100, to which a priority Px is assigned.
- An interrupt request Pi with the assumed higher priority value P6 triggers a uniform context backup I of the current program Rx with data backup Dx and return address Ax via the priority comparator 40 in accordance with the interrupt request IR it issues.
- FIG. 3 the branching diagram of an interrupter control device according to the invention is shown in comparison to FIG.
- the starting point is current signal processing Rx in the connected processor 100, to which a priority Px is assigned.
- An interrupt request Pi with the assumed higher priority value P6 triggers a uniform context backup I of the current program Rx with data backup Dx and return address Ax via the priority comparator 40 in accordance with the interrupt request IR it issues.
- FIG. 3 the branching diagram of an interrupter control device according to the invention is shown in comparison to FIG.
- the starting point is current signal processing Rx in
- the branch logic is only queried for the context save I, which thereby has the possibility of updating the last valid branch address Vi up to the end of the context save I.
- the programs are only branched after the context has been saved. 3 shows the possible branch addresses V6, V4, V3 with the associated programs R6, R4, R3. After jumping into the new program, this program is now considered the current program Rx with priority Px. For a new incoming interrupt request from an interrupter source, the functional sequence starts again at the top, this is shown in FIG. 3 by the dashed line from R6 to the beginning of the branching scheme.
- FIG. 4 shows in the time diagram, using an assumed example, some branching processes taking place according to the invention.
- the duration of the individual context backups I is no longer linked to the respective priority Pi, as in FIG. 2, but rather it is a matter of uniform routines because the processor 100 only receives the corresponding branch information Vi at the end of the context backup.
- the blocking times L required for context saving I are therefore all of the same size in FIG. 3, because the most unfavorable number of registers to be saved must now be taken into account for uniform context saving I.
- a data backup Dx, D4, D4 'of the currently running program Rx, R4, R4 with the backup of the associated return address Ax, A4, A4' takes place.
- a preparation phase for the new program is not possible during the blocking period L or only if it is uniform for all priorities.
- the blocking times for the individual preparation phases follow the blocking time L of the associated context protection I, but are not indicated in FIG. 4.
- the time saved in the case of interruption requests is clear from the time diagram in FIG. 4.
- the running program Rx is interrupted by an interrupt request with priority P6.
- the associated first context protection Ii requires time L.
- An interruption request with priority P4 initially has no effect, because I) continues to run during time L.
- branch logic 60 Only immediately before completion is the branch logic 60 queried, which determines as branch address V4, which corresponds to the interrupt request with the priority P4 which is received later.
- the processor 100 works with the program R4.
- the required blocking time until the requested program R4 becomes active is shown by the arrow t4. With a branching scheme according to FIG. 2, at least the full blocking time L would have been added at time t4.
- the branch logic 60 determines the branch address V3.
- the branching logic 60 again triggers a context backup routine I 2 , third context backup I, with a data backup D4 'and a return address A4' of the again interrupted program R4.
- branch address VI is therefore determined by branch logic 60.
- the processor therefore continues to work in program R1 and not in program R2.
- the associated blocking time tl is very short.
- This register the content of which is an address, is queried by the processor 100 at the end of the context save I, and the processor then learns which program address to retrieve from the modified content, which still contains the original address and the additional information at previously unused locations is.
- branch address Vi can also reach the processor directly via suitable data connections and not only indirectly via an address or data modification of a register controlled by the processor.
- a security device is also expedient, which recognizes, for example, by checking the data width or the type of access, that the data on the data bus have nothing to do with a possible program branching.
- data on the bus which can also be interpreted as branch information, can be recognized, blocked or rendered ineffective.
- Information about the type of access can be signaled, for example, by means of corresponding flags.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
Unterbrecher-Steuereinrichtung zur Zugangssteuerung von Unterbrecherquellen (11, 12, 13, 14) an einen Prozessor (100) und zur Steuerung der zugehörigen Programmverzweigung der aktuell ablaufenden Signalverarbeitung (Rx) mit einer aktuellen Priorität (Px) im Prozessor. Eingangsseitig enthält die die Unterbrecher-Steuereinrichtung eine vorgegebene Anzahl von Unterbrecherschnittstellen (21, 22, 23,24) zum Anschluß der Unterbrecherquellen, wobei jeder Unterbrecherschnittstelle (21, 22, 23, 24) ein Prioritätswert (Pi) und eine Adresse (Adi) zugeordnet ist. Eine Auswahleinrichtung (30) bestimmt aus den aktivierten Unterbrecherschnittstellen diejenige mit dem höchsten Prioritätswert (Pmax). Die Durchschaltung der einzelnen Unterbrecherschnittstellen (21, 22, 23, 24) auf den Prozessor (100) als Interrupt-Request (IR) ist von einem Prioritätsvergleicher (40) und einer Verzweigungslogik (60) abhängig, die in Abhängigkeit von dem ermittelten Prioritätswert (Pmax) und dem aktuellen Prioritätswert (Px) das Auslösung einer Kontextsicherung (I) im Prozessor (100) steuern, wobei die Verzweigungslogik die zugehörigen Verzweigungsadressen (Vi) möglichst erst am Ende der ablaufenden Kontextsicherung (I) bestimmt, um während der Kontextsicherung I noch eingehende Unterbrechungsanforderungen zu berücksichtigen.
Description
Unterbrecher-Steuereinrichtung
Die Erfindung betrifft eine Unterbrecher-Steuereinrichtung, mit der der Zugang einer Vielzahl von Unterbrecherquellen zu einem Prozessor gesteuert wird, die dort entsprechend der aktiven
Unterbrecherquelle das laufende Progamm umschalten soll. Als Beispiel sei hier ein Prozessor in einem Kraftfahrzeug angegeben, der sich gerade in einem relativ unbedeutenden Programmbetrieb befindet, z.B. Regelung der Heizung und Lüftung. Meldet während dieser Zeit ein Temperatursensor im Motor eine Überhitzung, dann muß der Prozessor rasch auf ein Motorsteuerungsprogramm umschaltet werden, damit dort kein Schaden entsteht. Der Konfliktfall, bei dem zwei oder mehrere Unterbrecherquellen gleichzeitig Signale zum Programmwechsel senden, wird dadurch gelöst, daß die Unterbrecher-Steuereinrichtung die einzelnen Unterbrecherquellen erst nacheinander nach vorgegebenen Prioritäten an den Unterbrecherreingang des Prozessors durchschaltet. Hierzu ist jede Unterbrecherquelle an eine eigene Unterbrecherschnittstelle angeschlossen, die durch eine Adresse und einen vorgegebenen, insbesondere programmierbaren Prioritätswert individualisiert ist. Jeder Unterbrecherschnittstelle sind zudem in der Regel mindestens zwei setzbare Zustandsregister (=Flag) zugeordnet, aus denen die Unterbrecher-Steuereinrichtung einen von der Unterbrecherquelle ausgelösten Unterbrechungswunsch erkennt und andererseits der Unterbrecherquelle die Freigabe oder Sperrung der jeweiligen Unterbrecherschnittstelle anzeigt.
Alle Unterbrecherschnittstellen sind mit einer Auswahleinrichtung verkoppelt, die von den eingehenden Unterbrechungsanforderungen, diejenige mit der höchsten Priorität heraussucht. Im Anschluß daran vergleicht ein Prioritätsvergleicher die von der Auswahleinrichtung ermittelte höchste Priorität mit der Priorität des aktuell ablaufenden Programms und gibt dann ein Unterbrechungsanforderungssignal (=Interrupt Request) an den Unterbrechereingang des Prozessors ab, wenn die angeforderte Priorität höher ist als die Priorität des laufenden Programms. Wenn die Priorität geringer ist, läuft das aktuelle Programm ungestört weiter. Da der Prozessor auch bei einer hohen Priorität der Unterbrechungsanforderung in der Regel nicht sofort in das prioritätshöhere Programm wechseln kann, findet zwischen ihm und der Unterbrecher-Steuereinrichtung ein Austausch von Anforderungs- und Freigabesignalen statt, das üblicherweise als "handshake"-Verfahren bezeichnet wird. Eine Verzweigungslogik in der Unterbrecher-Steuerschaltung ist mit der Priorität oder Adresse der prioritätshöchsten Unterbrecherschnittstelle gespeist, die für die
Programmverzweigung vom Prozessor abgefragt wird. Die Verzweigungslogik steuert in der Regel auch das „handshake"-Verfahren und liefert die zugehörigen Signale.
Die von der Verzweigungslogik abgegebenen Verzweigungsbefehle lösen im Prozessor unterschiedliche Unterbrecherroutinen aus (= Interrupt Routine), die der jeweiligen Priorität der durchzuschaltenden Unterbrecherschnittstelle zugeordnet sind, die jedoch immer auch eine Kontextsicherungsroutine enthalten. Während der Kontextsicherungsroutine werden in der Regel folgende Operationen durchgeführt: das im Prozessor laufende Programm wird angehalten, der Inhalt der im Prozessorkern vorhandenen Register wird in separate Speicherbereiche geladen, die
Rücksprungadresse in das unterbrochene Programm wird bestimmt und gespeichert und einige Zustandssignale (=Flags) werden gesetzt oder gelöscht. In dem individuellen Teil der jeweiligen Unterbrecherroutinen werden beispielsweise in einige Register des Prozessorkerns neue Inhalte eingelesen, beispielsweise feste Koeffizienten usw.. Durch den bereits erwähnten Austausch von Anforderungs-, Bereitschafts- und Sperrsignalen zwischen der Unterbrecher-Steuereinrichtung und dem Prozessor wird sichergestellt, daß das laufende Programm nur an den dafür zulässigen Stellen unterbrochen werden kann.
Die Zeit der Datensicherung im Prozessor ist dabei nicht vernachläßigbar sondern erfordert je nach Unterbrecherroutine eine Vielzahl von Takten, beispielsweise zwischen 10 und 30 Takten. Während des Ablaufs der individuellen Unterbrecherroutine können neue Unterbrechungsanforderungen nur über das Setzen der entsprechenden Flags in der zugehörigen Unterbrecherschnittstelle erfaßt werden. Das Auswerten dieser gesetzten Flags kann erst wieder erfolgen, wenn die Unterbrecherroutine im Prozessor abgelaufen und dies durch entsprechende Signale der Verzweigungslogik angezeigt ist. Die Sperrzeit für neue Unterbrechungsanforderungen während der Kontextsicherung macht einen Teil der gesammten Sperrzeit, die auch als Latenzzeit bezeichnet wird und in der Regel der gesamten Interruptroutine zugeordnet wird, aus. Eine Verkürzung der Unterbrecherroutine durch eine Parallelisierung der Kontextsicherung und der anderen Operationen greift indessen stark in die Architektur des Prozessers ein und vergrößert dessen Schaltungsaufwand. Beispielsweise ist im Datenblatt der Firma "Micronas Intermetall" vom 29. Sept. 1999 mit der
Bezeichnung "CEVF-3 V3.2 Dashboard Controller-Emulator", Bestellnummer: 6251-479-3PD, Teil 9: "9. Interrupt Controller (IR) V1.5" auf den Seiten 71 bis 79 eine Unterbrecher-Steuereinrichtung
beschrieben, die diese Funktionseinheiten enthält, vergleiche das auf Seite 72, in Fig. 9-1: "Block Diagramm" angegebene Blockschaltbild.
Aufgabe der Erfindung ist es, eine Unterbrecher-Steuereinrichtung anzugeben, die in Zusammenarbeit mit üblichen Prozessoren eine relativ geringe Latenzzeit aufweist.
Die Aufgabe wird erfindungsgemäß mit einer Unterbrecher-Steuereinrichtung nach dem Oberbegriff des Anspruchs 1 dadurch gelöst, daß von der Verzweigungslogik die Verzweigungsadresse verzögert, insbesondere erst gegen Ende der von den Unterbrechungssignalen ausgelösten Kontextsicherungsroutine abgegeben wird oder abrufbar ist.
Die Erfindung und vorteilhafte Ausbildung werden anhand der Figuren der Zeichnung näher erläutert: Figur 1 zeigt das Blockschaltbild einer Unterbrecher-Steuereinrichtung nach der Erfindung, Figur 2 zeigt ein Verzweigungsschema nach dem Stand der Technik,
Figur 3 zeigt das entsprechende Verzweigunsschema nach der Erfindung und Figur 4 zeigt im Zeitdiagramm ein Verzweigungsbeispiel nach der Erfindung.
Das Blockschaltbild nach Figur 1 zeigt die Funktionsblöcke einer Unterbrecher-Steuereinrichtung, die in der Regel als monolithisch integrierte Schaltung ausgebildet ist. Figur 1 zeigt ferner vier externe Unterbrecherquellen 11, 12, 13, 14 und einen externen Prozessor 100 (=CPU). Die Unterbrecherquellen können dabei Prozessoren, Gebereinrichtungen oder Sensoren sein, die Daten oder analoge Signale sl, s2, s3, s4 erzeugen, die als Umschaltsignale für den Prozessor 100 dienen. Figur 1 zeigt lediglich vier Unterbrecherquellen; im Regelfall können jedoch 16 oder mehr Unterbrecherquellen an eine Unterbrecher-Steuereinrichtung angeschlossen werden.
Jeder Unterbrecherquelle 11, 12, 13, 14 ist eine Unterbrecherschnittstelle 21, 22, 23, 24 zugeordnet, die die jeweilige Eingangsschaltung der Unterbrecher-Steuereinrichtung darstellt. Die Unterbrecherschnittstellen können dabei gleich oder je nach der Art der anschließbaren Unterbrecherquellen unterschiedlich ausgebildet sein. Zur Identifizierung enthält jede
Unterbrecherschnittstelle eine eigene Adresse Adi und einen zugehörigen Prioritätswert Pi, der vorteilhafterweise über eine nicht dargestellte Busleitung auch programmierbar ist. Jeder Unterbrecherschnittstelle ist ferner ein Zustandsregisterbereich (= Flag-Bereich) zugeordnet, um
durch Setzen der entsprechenden Zustandssignale (=Flag) einen externen Unterbrechungswunsch, die Annahmebereitschaft zum Empfang der von der Unterbrecherquelle gesendeten Signale oder andere Zustände anzuzeigen.
Eine Auswahleinrichtung 30 bestimmt aus den aktuellen Unterbrechungsanforderungen diejenige mit der höchsten Priorität Pmax zusammen mit der zugehörigen Adresse Adm. Ein Prioritätsvergleicher 40 vergleicht diesen Prioritätswert Pmax mit einem aktuell gültigen Prioritätswert Px und erzeugt ein Unterbrechungs-Anforderungssignal IR, wenn der Prioritätswert Pmax höher als der aktuelle Prioritätswert Px ist. Der neue Prioritätswert Pmax wird nun als neuer aktueller Prioritätswert Px abgespeichert, beispielsweise in einem Register 35, um bei der nächsten Unterbrechungsanforderung wieder für den aktuellen Prioritätsvergleich zur Verfügung zu stehen. Wenn der Prioritätswert Pmax kleiner als der aktuelle Prioritätswert Px ist, dann braucht dieser Wert nicht abgespeichert zu werden.
Wenn der Prioritätsvergleicher 40 aus dem zugeführten Prioritätswert Pmax einen höheren
Prioritätswert als den aktuellen Prioritätswert Px erkennt, dann meldet er über ein Unterbrecher- Anforderungssignal IR beim Prozessor 100 einen Unterbrechungswunsch an, der dort, sobald das laufende Programm' Rx dies ermöglicht, bearbeitet wird. Die Bearbeitung löst zunächst eine für alle Prioritäsfälle einheitliche Kontextsicherung I (vergl. Fig. 3) des laufenden Programms Rx aus, wobei in der Kontextsicherung außer der Speicherung der Daten Dx auch die Speicherung der
Rücksprungadresse Ax in das unterbrochene Programm enthalten ist. Erst nach der Kontextsicherung kann der Prozessorkern auf das neue Programm vorbereitet werden, wozu er natürlich mitgeteilt bekommen muß, welches der gespeicherten Programm er nun bearbeiten soll. Wenn die Kontextsicherung I beendet ist, teilt der Prozessor 100 der Verzweigungslogik 60 über Steuersignale Vs, eventuell ebenfalls über eine "handshake"-Verfahren, mit, daß er von der Unterbrecher- Steuereinrichtung nun die erforderliche Information über das anzusteuernde Programm bekommen will oder er fragt diese Informationen aus der Verzweigungslogik 60 oder einem Register 55, das zuvor von der Verzweigungslogik entsprechend geladen worden ist. Der Prozessor löst mit dieser Information intern die Verzweigung aus, indem der Programmzeiger auf die Startadresse des zugehörigen Verarbeitungsprogramms springt.
Das Verzweigungsschema von Figur 2 zeigt den Ablauf bisheriger Unterbrecherroutinen, bei denen die Verzweigungsadressen zu Beginn der Unterbrecherroutine gebildet werden. Zunächst wird davon
ausgegangen, daß im Prozessor 100 eine Signalverarbeitung Rx abläuft, der die Priorität Px zugeordnet ist. Während der laufenden Signalverarbeitung Rx wird eine Unterbrecherquelle mit der Priorität Pi aktiv, die beispielsweise größer als die bisherige Priorität Px ist. Wenn die Priorität Pi kleiner als die bisherige Px wäre, dann würde sich in der Signalverarbeitung des Prozessors 100 nichts ändern und das Programm Rx weiterlaufen, vergleiche den Pfeil nach rechts, der auf das Programm Rx hinweist.
Im angenommen Fall mit Pi > Px wird zunächst die Verzweigungslogik 60 mit den möglichen Verzweigungsadressen Vi aktiviert. Als mögliche Verzweigungsadressen sind angegebenen V0, V2, V3, V4 und V6, wobei die kleinere Zahl die größere Priorität angibt. Die zuerst aufgerufene Verzweigungsadresse V6 löst im Prozessor 100 eine Unterbrecherroutine 16 aus, die eine Datensicherung Dx der aktuell laufenden Signalverarbeitung Rx und eine Rücksprungadresse Ax in dieses Programm enthält. Die erforderliche Zeitdauer der Unterbrecherroutine ist durch den nebenstehenden Zeitpfeil t dargestellt. Während der Unterbrecherroutine kann kein neuer Unterbrechungsbefehl bearbeitet werden. Die zugehörige Zeit wird, wie bereits erwähnt, als Latenzzeit bezeichnet, vgl. die Pfeile L6, L4, L3. Nachdem die Unterbrecherroutine 16 abgelaufen ist, läuft der Prozessor 100 im Programm R6. Ein zwischenzeitlich eingegangener Unterbrechungs wünsch mit der Priorität P4 kann erst jetzt bearbeitet werden. Die Verzweigungslogik 60 generiert in Abhängigkeit von diesem Unterbrechungswunsch einen Verzweigungsbefehl V4, der die
Unterbrecherroutine 14 mit Datensicherung D6 und Rücksprungadresse A6 auslöst. Ein relativ früh eingegangener Unterbrechungswunsch mit der höheren Priorität P3 kann erst nach dem Zeitinterval t3 bearbeitet werden, wenn die Unterbrecherroutine 14 abgeschlossen ist. Der Prozessor 100 befindet sich dann im Signalverarbeitungsprogramm R4. Bis zum Ende von t3 hat der Prozessor signalisiert, daß er sich in einer nicht unterbrechbaren Unterbrecherroutine befindert. Wenn der Prozessor dieses Sperrsignal aufhebt, löst die Verzweigungslogik 60 über den Verzweigungsbefehl V3 das Unterbrechungsprogramm 13 mit der Datensicherung D4 und der Rücksprungadresse A4 aus, das nach der Latenzzeit L3 beendet ist. Der Prozessor 100 befindet sich nun im Programmablauf R3. Dieses Programm wird entweder abgearbeitet oder durch einen Unterbrechungswunsch mit höherer Priorität, also PO, PI oder P2, unterbrochen. Wenn die Anzahl der Prioritätsstufen geringer als die Anzahl der anschließbaren Unterbrecherquellen ist, dann kann über die Auswahleinrichtung 30 bestimmt werden, daß bei prioritätsgleichen Unterbrechungsanforderungen diejenige sich durchsetzen soll, die die kleinere oder die größere Adresse Adi aufweist.
In Figur 3 ist im Vergleich zu Figur 2 das Verzweigungsschema einer Unterbrecher-Steuereinrichtung nach der Erfindung dargestellt. Ausgangspunkt ist wie bei dem Verzweigungsschema von Figur 2 eine aktuelle Signalverarbeitung Rx im angeschlossenen Prozessor 100, der eine Priorität Px zugeordnet ist. Eine Unterbrechungsanforderung Pi mit dem angenommenen höheren Prioritätswert P6 löst über den Prioritätsvergleicher 40 entsprechend der von ihm abgegebenen Unterbrechungs-Anforderung IR eine einheitliche Kontextsicherung I des laufenden Programms Rx mit Datensicherung Dx und Rücksprungadresse Ax aus. Im Gegensatz zu Figur 2 wird die Verzweigungslogik erst nach der Kontextsicherung I abgefragt, die dadurch die Möglichkeit hat, die letztgültige Verzweigungsadresse Vi noch bis zum zeitlichen Ende der Kontextssicherung I zu aktualisieren. Die Verzweigung der Programme findet also erst nach der Kontextsicherung statt. In Fig. 3 sind hierbei die möglichen Verzweigungsadressen V6, V4, V3 mit den zugehörigen Programmen R6, R4, R3 angegeben. Nach dem Sprung in das neue Programm gilt dieses Programm nun als aktuelles Programm Rx mit der Priorität Px. Für einen neu eingehenden Unterbrechungswunsch einer Unterbrecherquelle beginnt der Funktionsablauf wieder oben, dies ist in Fig. 3 durch die gestrichelte Linie von R6 zum Anfang des Verzweigungsschemas dargestellt.
Fig. 4 zeigt im Zeitdiagramm anhand eines angenommenen Beispieles einige nach der Erfindung ablaufenden Verzweigungsvorgänge. Die Dauer der einzelnen Kontextsicherungen I ist dabei nicht mehr wie in Fig. 2 an die jeweilige Priorität Pi gekoppelt, sondern es handelt sich um einheitliche Routinen, weil der Prozessor 100 erst am Ende der Kontextsicherung die entsprechende Verzweigungsinformation Vi erhält. Die für die Kontextsicherung I erforderlichen Sperrzeiten L sind in Figur 3 daher alle gleich groß, denn die ungünstigste Anzahl von zu sichernden Registern muß nun für die einheitliche Kontextsicherung I berücksichtigt werden. Während der Sperrzeit L jeder Kontextsicherung I findet eine Datensicherung Dx, D4, D4' des jeweils aktuell laufenden Programms Rx, R4, R4 mit der Sicherung der zugehörigen Rücksprungadresse Ax, A4, A4' statt. Eine Vorbereitungsphase auf das neue Programm ist während der Sperrzeit L nicht möglich oder nur, wenn sie für alle Prioritäten einheitlich ist. Die Sperrzeiten für die einzelnen Vorbereitungsphasen schließen sich an die Sperrzeit L der zugehörigen Kontextsicherung I an, sind jedoch in Fig. 4 nicht angegeben. Der Zeitgewinn bei Unterbrechungsanfragen wird aus dem Zeitdiagramm von Figur 4 deutlich.
Zunächst wird das laufende Programm Rx durch eine Unterbrechungsanforderung mit der Priorität P6 unterbrochen. Die zugehörige erste Kontextsicherung Ii erfordert die Zeit L. Ein Unterbrechungswunsch mit der Priorität P4 hat zunächst keine Auswirkungen, denn die I) läuft während der Zeit L weiter. Erst unmittelbar vor dem Abschluß wird die Verzweigungslogik 60 abgefragt, die als Verzweigungsadresse V4 bestimmt, die dem zeitlich später eingehenden Unterbrechungswunsch mit der Priorität P4 entspricht. Nach Abschluß dieser ersten Kontextsicherung Ii arbeitet der Prozessor 100 mit dem Programm R4. Die erforderliche Sperrzeit bis das angeforderte Programm R4 aktiv wird, ist durch den Pfeil t4 dargestellt. Bei einem Verzweigungsschema entsprechend Figur 2 wäre mindestens die volle Sperrzeit L zur Zeit t4 hinzugekommen.
Während des Programmablaufs R4 tritt ein Unterbrechungswunsch mit der Priorität P3 auf. Die Kontextsicherungsroutine, zweite Kontextsicherung I2 wird daher von dem Prioritätsvergleicher 40 erneut gestartet und darin die Daten D4 des aktuell laufenden Programms R4 mit der Rücksprungadresse A4 gesichert. Während der Kontextsicherung I2 meldet sich ein weiterer
Unterbrechungswunsch mit der Priorität P5, also ein nachgeordneter Prioritätswert, an. Nachdem die Kontextsicherung I2 abgelaufen ist, bestimmt die Verzweigungslogik 60, die Verzweigungsadresse V3. Der Prozessor 100 läuft nun im Programm R3, da kein Unterbrechungswunsch mit höherer Priorität vorliegt. Da dem Programm R3 eine Verzweigung voraus ging, nimmt der Prozessor nach Beendigung dieses Programms (= End) das unterbrochene Programm R4 wieder auf und springt dazu in die festgehaltene Rücksprungadresse A4 der zweiten Kontextsicherung I2. Das Programm R4 kann jedoch nicht zu Ende geführt werden, weil zwischenzeitlich eine Unterbrechungsanforderung mit dem Prioritätswert P2 eingeht. Die Verzweigungslogik 60 löst hierzu wieder eine Kontextsicherungsroutine I2, dritte Kontextsicherung I , mit einer Datensicherung D4' und einer Rücksprungadresse A4' des nochmals unterbrochenen Programms R4 aus. Kurz vor Ende dieser Routine I3 wird ein neu eingegangener Unterbrechungswunsch mit der höheren Priorität PI erkannt. Am Ende der Kontextsicherung I3 wird daher die Verzweigungsadresse VI von der Verzweigungslogik 60 bestimmt. Der Prozessor arbeitet daher im Programm Rl und nicht im Programm R2 weiter. Die zugehörige Sperrzeit tl ist sehr kurz.
Die späte Ausgabe der Verzweigungsadressen Vi wird auf besonders vorteilhafte Weise über die Modifikation des Inhalts eines in der Unterbrecher-Steuereinrichtung enthaltenen Registers erreicht, das als „Vector-Table-Base"-Register (= VTB) verwendet wird und als Inhalt eine Adresse enthält.
Dieses Register, dessen Inhalt eine Adresse ist, wird am Ende der Kontextsicherung I vom Prozessor 100 abgefragt und aus dem modifizierten Inhalt, der nach wie vor die ursprüngliche Adresse und an vorher nicht verwendeten Stellen die zusätzliche Information enthält, erfährt dann der Prozessor welche Programmadresse abzurufen ist.
Selbstverständlich kann eine Information über die Verzweigungsadresse Vi auch direkt über geeignete Datenverbindungen zum Prozessor gelangen und nicht nur indirekt über eine Adress- oder Datenmodifikation eines vom Prozessor angesteuerten Registers. Darüber hinaus ist auch eine Sicherungseinrichtung zweckmäßig, die beispielsweise über eine Übeφrüfung der Datenbreite oder der Zugriffsart erkennt, daß die auf dem Datenbus vorhandene Daten gar nichts mit einer möglichen Programmverzweigung zu tun haben. Hierdurch können Daten auf dem Bus, die zufälligerweise auch als Verzweigungsinformation interpretierbar sind, erkannt, gesperrt oder unwirksam macht werden. Informationen über die Zugriffsart können beispielsweise über entsprechende Flags signalisiert werden..
Ob die einzelnen Funktionseinheiten der Unterbrecher-Steuereinrichtung ganz oder teilweise in Hard- oder Software-Teclmik ausgeführt sind, ist für die Realisierung der Erfindung unwesentlich. Die spezielle Ausführungsart orientiert sich an der Optimierung folgender Kriterien: erforderliche Chipfläche, Anzahl der Anschlußbeine, Verarbeitungsgeschwindigkeit, Flexibilität usw.
Claims
1. Unterbrecher-Steuereinrichtung zur Zugangssteuerung von Unterbrecherquellen (11, 12, 13, 14) zu einem Signal eingang eines Prozessors (100) und zur Verzweigung eines im Prozessor aktuell ablaufenden Programms (Rx), wobei
- die Unterbrecher-Steuereinrichtung eingangsseitig eine vorgegebene Anzahl von
Unterbrecherschnittstellen (21, 22, 23, 24) zum Anschluß der Unterbrecherquellen enthält,
-jeder Unterbrecherschnittstelle (21, 22, 23, 24) ein, insbesondere ein programmierbarer Prioritätswert (Pi) und eine Adresse (Adi) zugeordnet ist,
- eine Auswahleinrichtung (30) aus den von den Unterbrecherquellen aktivierten Unterbrecherschnittstellen diejenige mit dem höchsten Prioritätswert (Pmax)und der zugehörigen Adresse (Adm) heraussucht,
- ein Prioritätsvergleicher (40), ein Unterbrecher-Anforderungssignal (IR) in Abhängigkeit von dem von der Auswahleinrichtung bestimmten höchsten Prioritätswert (Pmax) und einem aktuellen Prioritätswert (Px) erzeugt, daß im Prozessor (100) eine Kontextsicherung (I) auslöst, und
- eine Verzweigungslogik (60) entsprechend dem von der Auswauhleinrichtung (30) bestimmten höchsten Prioritätswert (Pmax) und eine Verzweigungsadresse (Vi) erzeugt,
dadurch gekennzeichnet, daß
- die Bestimmung der Verzweigungsadresse (Vi) in der Verzweigungslogik (60) erst gegen Ende der Kontextsicherung durch die Verzweigungslogik (60) erfolgt und an den Prozessor (100) abgegeben wird oder von diesem abrufbar ist, wobei der aktuelle höchste Prioritätswert (Pmax) berücksichtigt wird.
2. Unterbrecher-Steuereinrichtung nach Anspruch 1, dadurch gekennzeichnet, daß bei gleichen Prioritätswerten (Pi) der aktivierten Unterbrecherschnittstellen (21, 22, 23, 24) die Auswahleinrichtung (30) nach einem vorgegebenen Hilfskriterium, insbesondere einer den Adressen (Adi) entsprechenden Wertigkeit, durchführt.
3. Unterbrecher-Steuereinrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Verzweigungsadresse (Vi) den Inhalt eines "Vector-Tabel-Base"-Registers (55), mit dessen Adressierung durch den Prozessor (100) der Unterbrecher-Steuereinrichtung insbesondere die Bereitschaft zur Verzweigung signalisiert wird, derart modifiziert, daß der
Prozessor daraus die für den Programmablauf erforderliche eigene Verzweigungsadresse erkennt.
4. Unterbrecher-Steuereinrichtung nach Anspruch 1 oder 3, dadurch gekennzeichnet, daß Verzweigungsadresse (Vi) als Adressenmodifikationen ausgebildet ist.
5. Unterbrecher-Steuereinrichtung nach Anspruch 1 oder 3, dadurch gekennzeichnet, daß die Verzweigungsadresse (Vi) als Datenmodifikation auf einer bestimmten Adresse ausgebildet ist.
6. Unterbrecher-Steuereinrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß eine Sicherungseinrichtung die irrtümliche Ausgabe einer Unterbrechungs- Anforderung (IR) oder einer Verzweigungsadresse (Vi) vor der Weitergabe an den Prozessor (100) erkennen, sperren oder unwirksam machen.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE10062995 | 2000-12-16 | ||
| DE10062995A DE10062995A1 (de) | 2000-12-16 | 2000-12-16 | Unterbrecher-Steuereinrichtung |
| PCT/EP2001/014792 WO2002048880A2 (de) | 2000-12-16 | 2001-12-14 | Unterbrecher-steuereinrichtung |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP1417579A2 true EP1417579A2 (de) | 2004-05-12 |
Family
ID=7667591
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP01990568A Withdrawn EP1417579A2 (de) | 2000-12-16 | 2001-12-14 | Unterbrecher-steuereinrichtung |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20030172215A1 (de) |
| EP (1) | EP1417579A2 (de) |
| JP (1) | JP2004516547A (de) |
| DE (1) | DE10062995A1 (de) |
| WO (1) | WO2002048880A2 (de) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20030004763A (ko) * | 2001-07-06 | 2003-01-15 | 삼성전자 주식회사 | 인터럽트 처리장치 |
| CN100382017C (zh) * | 2002-07-09 | 2008-04-16 | 徐肇昌 | 子序网模块及其调用方法 |
| WO2004114132A1 (ja) * | 2003-06-20 | 2004-12-29 | Fujitsu Limited | 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム |
| EP1531395A1 (de) * | 2003-11-17 | 2005-05-18 | Infineon Technologies AG | Verfahren zum Ermitteln von Informationen über Prozesse bei der Ausführung eines Programms in einer programmgesteuerten Einheit |
| US7769937B2 (en) * | 2005-02-28 | 2010-08-03 | Koninklijke Philips Electronics N.V. | Data processing system with interrupt controller and interrupt controlling method |
| GB2433794B (en) | 2005-12-21 | 2010-08-18 | Advanced Risc Mach Ltd | Interrupt controller utiilising programmable priority values |
| FR2896934A1 (fr) * | 2006-02-01 | 2007-08-03 | Parrot Sa | Composant integre comprenant des circuits de gestion de l'alimentation et de gestion des etats d'urgence |
| JP5308383B2 (ja) * | 2010-03-18 | 2013-10-09 | パナソニック株式会社 | 仮想マルチプロセッサシステム |
| JP7249968B2 (ja) * | 2020-03-09 | 2023-03-31 | 株式会社東芝 | 情報処理装置およびストレージ |
| CN113138949A (zh) * | 2021-04-29 | 2021-07-20 | 上海阵量智能科技有限公司 | 中断控制器、中断控制方法、芯片、计算机设备以及介质 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3984820A (en) * | 1975-06-30 | 1976-10-05 | Honeywell Information Systems, Inc. | Apparatus for changing the interrupt level of a process executing in a data processing system |
| US4972342A (en) * | 1988-10-07 | 1990-11-20 | International Business Machines Corporation | Programmable priority branch circuit |
| US5287523A (en) * | 1990-10-09 | 1994-02-15 | Motorola, Inc. | Method for servicing a peripheral interrupt request in a microcontroller |
| JPH0721035A (ja) * | 1993-07-02 | 1995-01-24 | Mitsubishi Denki Eng Kk | データ処理装置 |
| US5850555A (en) * | 1995-12-19 | 1998-12-15 | Advanced Micro Devices, Inc. | System and method for validating interrupts before presentation to a CPU |
| US6298410B1 (en) * | 1997-12-31 | 2001-10-02 | Intel Corporation | Apparatus and method for initiating hardware priority management by software controlled register access |
| US6021458A (en) * | 1998-01-21 | 2000-02-01 | Intel Corporation | Method and apparatus for handling multiple level-triggered and edge-triggered interrupts |
| JP3097648B2 (ja) * | 1998-02-04 | 2000-10-10 | 日本電気株式会社 | 情報処理装置及び情報処理方法 |
| US6081867A (en) * | 1998-05-20 | 2000-06-27 | Sony Corporation | Software configurable technique for prioritizing interrupts in a microprocessor-based system |
| KR100317237B1 (ko) * | 1999-10-01 | 2001-12-22 | 윤종용 | 유사 벡터 방식의 인터럽트 컨트롤러 및 그것의 인터럽트 처리 방법 |
-
2000
- 2000-12-16 DE DE10062995A patent/DE10062995A1/de not_active Ceased
-
2001
- 2001-12-14 JP JP2002550524A patent/JP2004516547A/ja active Pending
- 2001-12-14 US US10/204,122 patent/US20030172215A1/en not_active Abandoned
- 2001-12-14 EP EP01990568A patent/EP1417579A2/de not_active Withdrawn
- 2001-12-14 WO PCT/EP2001/014792 patent/WO2002048880A2/de not_active Ceased
Non-Patent Citations (1)
| Title |
|---|
| See references of WO0248880A3 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20030172215A1 (en) | 2003-09-11 |
| JP2004516547A (ja) | 2004-06-03 |
| WO2002048880A3 (de) | 2004-02-26 |
| DE10062995A1 (de) | 2002-07-11 |
| WO2002048880A2 (de) | 2002-06-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE1913059C2 (de) | Programmunterbrechungseinrichtung für eine Datenverarbeitungsanlage | |
| DE3687866T2 (de) | System zur verwaltung einer mehrzahl gemeinsamer unterbrechungsbehandlungsroutinen in einer datenstruktur mit verknuepften listen. | |
| DE69114321T2 (de) | Zum Durchführen der Unterbrechungsverschachtelungsfunktion geeignetes Unterbrechungssteuerungsgerät. | |
| DE2210704A1 (de) | Verfahren und Vorrichtung zur Datenverarbeitung | |
| DE2350884A1 (de) | Datenverarbeitungssystem | |
| DE2657848A1 (de) | Steuereinheit fuer ein datenverarbeitungssystem | |
| DE69130414T2 (de) | Prozessor und Verfahren zur parallelen Verarbeitung | |
| EP1417579A2 (de) | Unterbrecher-steuereinrichtung | |
| EP0764906A2 (de) | Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems | |
| DE19955776C1 (de) | Multitasking-Prozessorsystem | |
| DE2429067A1 (de) | 8speicherschaltung | |
| EP0799441B1 (de) | Verfahren zur steuerung von technischen vorgängen | |
| DE4340551A1 (de) | Programmspeichererweiterung für einen Mikroprozessor | |
| DE2759120A1 (de) | Prozessor fuer datenverarbeitungssysteme | |
| EP1417578A2 (de) | Unterbrecher-steuereinrichtung mit prioritätsvorgabe | |
| DE2633155B2 (de) | Einrichtung zur Erzeugung zeitdefinierter Funktionssteuersignale | |
| DE3854859T2 (de) | Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem | |
| DE2838887C2 (de) | Datenverarbeitungsanlage mit einer Schaltung für Unterbrechungsanforderungen zur Übernahme des gemeinsamen Busses | |
| EP2018604B1 (de) | Verfahren zum betreiben eines steuergeräts | |
| DE10027845B4 (de) | Submodul für die Kontrolle einer Datenwarteschlange | |
| DE2632561B2 (de) | Steuereinrichtung fuer eine echtzeitsteuerung, insbesondere fuer fernsprechvermittlungsanlagen | |
| DE69520885T2 (de) | System und verfahren zur datenverarbeitung mit verteilter last und kommunikationssystem mit lastverteilung | |
| DE102009009730B4 (de) | Lokale Timer-Zelle deren Verwendung und Verfahren zum Betreiben eines Moduls | |
| DE2612316C3 (de) | Anordnung zur Steuerung des Multiplexbetriebes zwischen mehreren Kanälen und einer zentralen Steuerschaltung eines Ein-/Ausgabewerkes in einem Datenverarbeitungssystem | |
| DE2462728C2 (de) | Einrichtung zur Einstellung sowie zur Steuerung der Abarbeitung von verschiedenen Betriebszuständen einer Datenverarbeitungseinrichtung |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
| 17P | Request for examination filed |
Effective date: 20040826 |
|
| 17Q | First examination report despatched |
Effective date: 20050128 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20050908 |