Patent GB-1278103-A (GB)
Title: Improvements relating to digital data processors
Inventor: WATSON WILLIAM JOSEPH
IPC: G06F15/80
Filed: 1969-07-14
Abstract: 1278103 Digital computer TEXAS INSTRUMENTS Inc 14 July 1969 [30 Aug 1968] 35358/69 Heading G4A Multi-program multi-processor digital data processor has a peripheral processing unit containing a plurality of virtual processors and an arithmetic unit, there being means for connecting the virtual processors to the arithmetic unit for varying time periods. A central processor CPU10 is coupled via a control unit to a stack of thin film storage modules, to magnetic discs and drums and to a peripheral processor PPU11 also coupled to a card reader, a card punch, a line printer and several magnetic tape units. The CPU10 executes user programs on a multi-program basis and the PPU11 services requests by the programs being executed for input and output services. A service request is either a System Call and Proceed SCP or a System Call and Wait SCW. For the first call the CPU can proceed with its program without waiting for the data and for the second it is not possible to proceed without the data. The PPU analyses the programs in the CPU that are not being executed to determine which is the next to be executed and sets a switch flag flip-flop which enables a gate allowing an instruction Proceed with Switch to be sent from the PPU to the CPU and the control unit and so eliminates the time required for dialogue between the two processors. The PPU contains a plurality of virtual processors which can be separately connected to an arithmetic unit under the control of clock pulses. The clock pulses feed a sequencer which sequentially enables e.g. 16 sets of AND gates each set being supplied with differing signals from a register. The AND gates feed a register and a decoder and cause connections to be completed between the virtual processor defined by the portion of the register feeding the enabled AND gates and the arithmetic unit so that virtual processors can be coupled to the arithmetic unit as required e.g. sequentially or with only one psrmanently coupled or any desired combination. The arithmetic unit (Fig. 8) is formed of specialized units arranged in two parallel crosscoupled columns or pipelines so arranged that a plurality of calculations may be proceeding in the pipeline at the same time, so that one set of numbers may be post-normalized while another set is undergoing addition, another undergoing alignment and a fourth being subjected to exponent subtraction. The arithmetic unit is particularly used for matrix multiplication [a ij ].[b ij ] wherein digits in a row of one matrix are successively multiplied by the digits in a column of the other matrix. The matrices are stored with the digitsof one matrix stored serially in row order and the digits of the other matrix stored serially in column order, the resulting matrix being stored serially in row order. The matrix multiplication is performed in loops with one row of the first matrix multiplied by the successive columns of the other matrix to produce the first row of the result the remaining rows of the first matrix being successively multiplied by the columns of the second to produce the remaining rows of the result. The multiplication is controlled by counters defining the current addresses of the digits of each matrix, the vector count, which causes each address to be incremented by one, the inner loop count causing each row or column to be repeated the necessary number of times and an outer loop count indicating when the calculation is complete. A memory buffer unit (Fig. 7) is used during high speed communication to and from the arithmetic unit and contains a portion receiving the addresses and counter values required during multiplication. The buffer unit has three channels each containing two buffers between a memory gating unit and the arithmetic unit. Two of the channels receive the operands, the third returns the result. Each buffer receives and stores 8 words at a time each word being entered by a separate clock pulse. The words are transmitted from one buffer to the rest in synchronization and pass to the arithmetic unit one word per clock pulse. The buffer unit is also pipelined e.g. when the arithmetic unit is performing one operation the fetch 126 and control 127 units are preparing for the next operation the index 126a and buffer 127a units are preparing for the following operation and the instruction fetch unit is fetching the next succeeding instruction.