318 Part 4 The instruction-set processor level: special-function processors
Section 2 Processors for array data
Further observation shows not only that it is possible to obtain the nearest neighbors easily by shifting the columns of variables with respect to one another, but that any neighbor relationship can be obtained. In general, for an operation with a neighbor +n rows away and +m columns away, the lists are offset by +n + m . K, where K is the number of rows in the array.
Many problems (for example, payroll and inventory records) are essentially list-structured but do not require offsetting of variables. Clearly the NOVA structure is well suited for the solutions of these problems also.
Structure
The most difficult problem to be solved in the proposed computer is to synchronize movement of the columns of data that require offset. Buffers of various types could be used to solve this problem; they could range all the way from rotating memory devices or delay lines to core memories. The former are simple, direct, and low in cost but are limited in their general capabilities. On the other hand, a number of small random access buffer memories could be used for offsetting lists of variables and for facilitating special functions such as boundary calculations but at a higher equipment cost.
Figure 3 shows a block diagram of the organization of NOVA. The rotating memory, which might be a disc or drum, would be
Fig. 3. Block diagram of NOVA computer.
Fig. 4. Buffering in arithmetic unit.
composed of several hundred tracks, each storing several thousand words, with a total capacity between one and two million words. Each track would have an individual read-write head. The heads would be organized in such a way as to attain a high word-transfer rate, perhaps as high as one million words per second. With this in mind an ideal execution time for one addition would be the time required to move two operands from the disc to the arithmetic unit; i.e., 1-2 microseconds. The disc synchronizer would be capable of simultaneously reading two lists of operands, writing one list of results, and reading one list and writing one list of conditional control information. In addition, instructions would be read from another channel in small blocks.
The bit string of conditions coming from the memory is used to control individual operations on pairs of operands in the lists, and in essence each bit (or bits) is a subordinate part of the individual operations. Conditions going to the memory are the subsidiary result of the operation of one list upon another. These bit strings may be used later as control during another list operation. They want also to contain information on the occurrence of an overflow or underflow, or on the presence of an illegal operand, etc.
Figure 4 shows a suggested organization for the arithmetic unit that incorporates five sets of alternating buffers. Two sets are for lists of operands coming from the memory, one set for lists of results going to the memory, and two sets for "conditions" (conditional control information) coming from and going to the memory.