Electrical computers and digital data processing systems: input/ – Interrupt processing
Reexamination Certificate
1999-08-19
2002-12-10
Dharia, Rupal (Department: 2181)
Electrical computers and digital data processing systems: input/
Interrupt processing
C710S267000
Reexamination Certificate
active
06493781
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention relates to the servicing of interrupts and, in particular to the servicing of interrupts in connection with nested subroutines.
2. Description of Related Art
In processing systems, it is common to utilize interrupt servicing subroutines to facilitate the processing of multiple demands for shared resources, e.g. memories. These subroutines typically include instructions for disabling further interrupts, until completion of the current interrupt, and then re-enabling interrupts. The primary purpose of this disable/enable feature is to ensure that conflicting demands for the same resources are serviced without corrupting already-existing information.
In some situations, the simple acts of disabling and then re-enabling interrupts in beginning and end portions, respectively, of each interrupt subroutine are inadequate to prevent the corruption of information. For example, it is sometimes desirable to permit nesting of a second subroutine within a first, each of which includes its own disable and enable interrupt instructions. The end of the nested second subroutine can include an enable interrupt instruction followed by a return instruction to effect return to and completion of the first subroutine. However, if a request for servicing another interrupt is pending when the nested second subroutine issues its enable interrupt instruction, the other interrupt could be serviced by a third subroutine before completion of the first. If the third subroutine is sharing memory locations still being used by the first subroutine, the third subroutine could modify and inadvertently corrupt information in these shared memory locations. Alternatively, these memory locations could contain incorrect information, e.g. memory addresses which had not yet been updated by the first subroutine. In this case the third subroutine could either read or store information at an incorrect address.
A known solution to this problem is to first store pertinent data (e.g. a processor status word) relating to the status of a processor performing the nested subroutines, disable interrupts to facilitate performance of one of the subroutines, and then to read the stored data and restoring the processor to its earlier status before reenabling interrupts. This solution is both time and memory consuming.
European Patent 441054 discusses this problem generally and proposes as a solution a combination of register banks, status bits and interrupt logic for servicing interrupts. It is desirable to provide a simpler solution.
SUMMARY OF THE INVENTION
It is an object of the invention to provide a simple method for servicing interrupts that effectively avoids the problem of corrupting information stored in memory.
Note that the word “memory”, as used herein, is intended to be interpreted as generally as is consistent with the manner in which it is used and includes, without limitation, volatile and non-volatile devices of various types, such as registers, RAMs, DRAMs, ROMs, LiFOs, FlFOs, etc.
In accordance with the invention, in the operation of a processor having the capability of performing nested subroutines in response to requested interrupts, a method of servicing such interrupts includes:
providing an indicator representing a current interrupt enable status;
saving status data including the indicator;
placing the current interrupt enable status in a disabled state;
at least beginning performance of an action designated by the requested interrupt;
before accepting another interrupt request:
reading the indicator from the saved status data;
placing the current interrupt enable status in the state indicated by the indicator.
REFERENCES:
patent: 4930068 (1990-05-01), Katayose et al.
patent: 5070447 (1991-12-01), Koyama
patent: 5161228 (1992-11-01), Yasui et al.
patent: 5410708 (1995-04-01), Miyamori
patent: 5471595 (1995-11-01), Yagi et al.
patent: 5530597 (1996-06-01), Bowles et al.
patent: 5542076 (1996-07-01), Benson et al.
patent: 5615375 (1997-03-01), Ibusuki et al.
patent: 5619704 (1997-04-01), Yagi et al.
patent: 5659760 (1997-08-01), Enami
patent: 6038607 (2000-03-01), Hamilton et al.
patent: 6061787 (2000-05-01), Seshan
patent: 6112260 (2000-08-01), Colterjohn et al.
patent: 6112274 (2000-08-01), Goe et al.
patent: 6212593 (2001-04-01), Pham et al.
patent: 0441054 (1991-08-01), None
patent: 0652514 (1994-11-01), None
patent: 0827084 (1996-03-01), None
patent: WO9744732 (1997-11-01), None
Intel: “Microprocessor and Peripheral Handbook vol. 1” 1988, Intel, Santa Clara, US XP002152077 p. 2-11.
Philips: “8051 Based 8 Bit Microcontrollers, Data Handbook Integrated Circuits, Book IC20” 1991, Philips, Netherlands XP00215078, p. 18-19 Figure 18.
Ross Kevin
Saville Winthrop L.
LandOfFree
Servicing of interrupts with stored and restored flags does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Servicing of interrupts with stored and restored flags, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Servicing of interrupts with stored and restored flags will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2996772