Patent GB-1169160-A (GB)
Title: Data Processor
IPC: G06F9/42
Filed: 1968-06-20
Abstract: 1,169,160. Data processors. INTERNATIONAL BUSINESS MACHINES CORP. 20 June, 1968 [14 July, 1967], No. 29367/68. Heading G4A. A data processor has storage areas relating to respective levels of interrupt with provision for saving the contents of registers prior to their modification in a given level of interrupt, and means identifying the registers modified in a given level of interrupt, and those modified up to the occurrence of this level. Saving the contents of registers.-Six machine registers each have a respective associated bit in a T-register and in an L-register and in a U-register. When a machine register is modified its T bit is set (to 1). On interrupt, the T- register contents are stored in a "zeroth level" region of a memory, the L-register is loaded from the T-register and the latter is reset. During execution of the subroutine used for handling the interrupt, the first modification of any particular machine register for which the L bit is set is preceded by storing the contents of the machine register in a "first level" region of the memory, and the T bit is set as usual on modification. Further modifications of this machine register are not preceded by storing, in view of the already set state of the T bit. If another interrupt occurs before the subroutine for handling the first has been completed (i.e. a second level of interrupt), the contents of the T and L registers are stored in the "first level" region of memory. Each bit of the L-register is then replaced by the OR of it and the corresponding bit of the T-register, the T-register then being reset. Modification of machine registers during the subroutine for the second interrupt is handled as in the first interrupt except that the contents of machine registers are saved in a "second level" region of memory rather than the "first level" region. Further levels of interrupt before completion of the running subroutines are handled in the same way as the second. On completion of the subroutine handling an interrupt, say an interrupt of Nth level, control is returned to the (N-1)th level, the T-register contents are loaded into the U-register, and the T- and L- registers are then loaded with their previous contents as saved in the "(N-1)th level" region of memory. These operations on return to the (N-1)th level are preceded by reloading from memory those machine registers whose U, T, L bits are 1, 0, 1 respectively, to prevent an unspecified error condition, but most machine registers are reloaded only when necessary prior to use or modification (see below). The U- register now indicates the machine registers whose contents have been saved in memory for the Nth level of interrupt, the T-register indicates the machine registers which had been modified by the (N-1)th level of interrupt before the latter was interrupted by the Nth level, and the L-register indicates the machine registers which had been modified by the (N-2)th to zeroth levels of interrupt inclusive (the zeroth level being the original programme). Use (i.e. reading) or modification of any machine register is now preceded by reloading the register from the Nth level of memory or saving its contents in the (N-1)th level of memory or both, only where necessary for proper functioning as indicated by its T, L and U bits, the T and U bits being updated as necessary. Other registers besides the T-and L-registers may be saved on interrupt, e.g. instruction counter. A special instruction is provided to allow the programmer to prevent unnecessary machine register saving when he is no longer interested in the contents of certain machine registers. This instruction accesses a mask word from memory. Each O bit of the mask word resets (to O) the corresponding bit of the T-register provided the corresponding bit of the L- register is O. If in execution of an "indexing with branch" instruction, a machine register is indexed to a value such that the branch is not taken, the corresponding T-bit may be reset provided the corresponding L-bit is O. The above operations which occur on branching to a subroutine on interrupt may also occur on branching to any subroutine by use of a special instruction. Selecting registers.-An arrangement is described for selecting in turn the machine registers specified by an instruction decoder as required for use and modification, utilizing two flipflops for each register corresponding to use and modification respectively, the flip-flops being sampled and reset in turn.