Patent GB-1236177-A (GB)
Title: Improvements in data processing systems
IPC: G06F9/48
Filed: 1970-01-09
Abstract: 1,236,177. Data processing. INTERNATIONAL BUSINESS MACHINES CORP. 9 Jan., 1970 [15 Jan., 1969], No. 1063/70. Heading G4A. In a data processing having a central memory and a plurality of processors, each of the processors has means for decoding a " send message " instruction and, in response, storing message information in a portion of the central memory respective to the destination processor to which the message is to be sent, this processor being specified by the instruction. The memory has storage locations for a lock bit, a conventional timer count, an alternative timer count, and a message indication (the first address of a sequence of instructions or data constituting the message) for each processor at respective address predetermined relative to a base address held in a register. On decoding a " send message " instruction, a processor examines the lock bit of the destination processor, if necessary waits until it is reset by another processor, then sets it to lock out other processors and examines the timer count of the destination processor. If this is non-zero, it is stored as the alternative timer count, the timer count location is set to zero (to indicate a message indication is present), the message indication is stored, the lock bit is reset, and the processor returns to normal instruction sequencing. If, however, the timer count was zero (indicating a previous message indication has still to be transferred to the processor), an override bit in the instruction is examined. If itis 0, the lock bit is reset and the processor returns to normal instruction sequencing, but if it is 1, these events are preceded by storing of the message indication, i.e. the previous message indication is overwritten (the timer and alternative timer counts are still correct from the previous message operations so do not require modification). Periodically, each processor examines its lock bit, if necessary waits until this is reset by another processor, sets it to lock out other processors, and examines its own timer count. If this count is non-zero, it is decremented by one. If it is then zero, a timer interrupt flip-flop is set and all ones are placed in the timer count memory location, but if the decremented count was not zero it is simply stored in the timer count memory location, and in either case the lock bit is reset. On the other hand, if the timer count (before decrementing) was zero, an EXECUTE flip-flop is set, the message indication is fetched into the instruction register, and the alternative timer count is fetched and then operations proceed as in the previous case but using the alternative time count in place of the timer count, i.e. decrementing it, examining it for zero &c. Finally, following the reset of the lock bit in either case, normal instruction sequencing resumes, but first executing the message indication in the instruction register if the EXECUTE flip-flop was set, this flip-flop being reset in this case. As an alternative to overwriting of message indications (see above), in the case of multiple messages, these could be chained together or a block of message indication memory locations be provided for each processor, one location per other processor.