Patent GB-1077845-A (GB)
Title: Improvements in data processing systems
IPC: G06F9/46
Filed: 1964-10-26
Abstract: 1,077,845. Data processors. INTERNATIONAL BUSINESS MACHINES CORPORATION. Oct. 26, 1964 [Nov. 7, 1963], No. 43507/64. Heading G4A. In a data processor, data can be transmitted from computer modules to selected memory modules and from memory modules to selected computer modules, in each case under the control of the source modules. Referring to Figs. 2A, 2B (not shown), computer modules can transmit signals via a computer module output multiplexer to an output device, to associative memory modules (via respective memory input queues), and to an input device. Signals from the input device and memory modules reach the computer modules via a memory output multiplexer. In transmitting to a memory module, a computer module supplies to the computer module output multiplexer a word comprising the basic word format of the system (see below) together with control fields including: (a) a memory address, i.e. the identity of the destination memory module, (b) bits to control the memory module, (c) a computer address specifying the source computer module, an operand or instruction buffer register in it, and if the operand buffer register (rather than the instruction buffer register) is thus specified, also either a left or a right operand register in the computer module. In the computer module output multiplexer (Figs. 9A-9C, not shown), the computer modules presenting outputs are assigned respective channels on the basis that the lowestnumbered computer modules are given priority in getting the lowest-numbered available channels. The memory address field on a channel is decoded in a decoder, respective to the channel, to gate the word to the queue preceding the destination memory module, providing this queue is " vacant " (meaning not full). Each queue (Fig. 11, not shown) has a plurality of word registers selected cyclically for input and output by an input ring and an output ring which are stepped on read-in of a word and on read-out of a word respectively, the latter occurring when the memory module is free. Each memory module (Figs. 8, 12, not shown) comprises a conventional associative memory with a vacancy bit and a marker bit for each word position, masking means &c. (conventional operations being described). The module supplies to the memory output multiplexer a word consisting of a basic word from the memory and control fields including: (a) the address of the memory, (b) the computer address originally supplied to the memory module, (c) a field indicating the result of the matching (e.g. " one match " or more). The memory output multiplexer gates the words presented to it to channels according to the same priority scheme the other multiplexer used (see above) and gates the basic word portion on each channel to the operand buffer register or instruction buffer register in the computer module, under control of the computer address portion, any word placed in the operand buffer register being then passed to the left or right operand register, also under control of the computer address portion. Each problem (programme) present in the system is notionally represented as a binary tree with a basic word at each node. In general, the word at a given node represents an operation, the operands for which are given by the words at the two nodes which branch down to it and usually as the result of operations specified by those words although a word may represent a programme constant. A one-operand operation node has one branch missing. The basic word format consists of the following fields:- (a) problem number; (b) one or more of the following statuses for the word, viz. I (instruction), C (more-than-oneuse, so read non-destructively), R (ready-forcomputation), T (temporarily - available - for - computation), PC (programme-constant), B (unconditional branch); (c) tag (representing the tree) with subscripts, the latter being bits which specify the position of the word in the tree, only bits to the left of the rightmost "1" being significant and representing the path through the tree to the word's node from the lowest node, successive bits indicating successive branches to the left (bit "0") or right (bit " 1 ")-alternatively if the word is used for storing data (see below) the tag identifies this data; (d) data, if the word is used for storing data, or if not, a code and (sometimes blank) item with subscripts-the code may specify an arithmetic operation or be D (meaning the data having the tag specified in the item field should be obtained), L (meaning the result of the instruction word whose tag is specified in the item field should be obtained), or IF (meaning conditional branch, viz. if the result of the right-hand word in the next higher level of the tree "connected" to the "IF " word is positive, operation proceeds down the tree employing the result of the left-hand word in said higher level, but if said right-hand word gives a negative result, operation proceeds at the word or words having the same item field as the " IF " word, again employing the result of said left-hand word). During operation, any computer module which is free interrogates the input device and stores any words available, then obtains a stored status-R (ready-for-computation) word by interrogating on the status field. The tag of this word is placed in the instruction register, left operand register and right operand register of the computer module and is also fed to a tag generator (Fig. 15, not shown) which detects whether the word is a left operand or right operand and corrects the tags in the registers so that they are those of the given operand, the related operation and the other operand (if any) for this operation. The words for the operation and said other operand are now retrieved using the tags for associative search in the appropriate memories. The latter are specified by a memory address generator (Fig. 13, not shown), which utilizes the fact that the loading instructions, when compiled, ensured that coming down a tree to a node from the left node above, the memory address is increased by one, and coming down from the right node above it is decreased by one, increasing the highest memory address (M) by one giving the lowest memory address (1) and decreasing the lowest by one giving the highest. This scheme enables retrieval of operation and operand to overlap. The operation is performed if possible, the first operand being re-stored if not. This operation performance can be overlapped with the fetching of the next operation. The tag generator also produces an error signal if a tag with no " 1 " is fed to it, and an " end of tree " signal if there are no bits to the left of the rightmost " 1 " in the tag. This latter signal passes the result of the operation to the output device (except in the case of an unconditional branch instruction, status B). The Specification gives the rules governing the loading and running operation in detail, including appropriate alteration of status fields. Punch cards, magnetic tapes, discs and manual keys are mentioned as input means. Punch cards, magnetic tape, printed forms and indicator lights are mentioned as output means.