Patent GB-1245601-A (GB)
Title: Data storage apparatus
IPC: G06F12/02
Filed: 1968-12-13
Abstract: 1,245,601. Data storage. INTERNATIONAL BUSINESS MACHINES CORP. 13 Dec., 1968 [20 Dec., 1967], No. 59282/68. Heading G4C. Data storage apparatus comprises a first storage means, a second larger slower storage means from which blocks of data can be transferred to the first storage means, and a storage manager having an immediate access portion for storing an identification of some of the blocks of data stored in the first storage means and providing address translations for them and an immediate reference portion for storing identifications of all the blocks of data stored in the first storage means and providing address translations for them when the immediate access portion cannot. A high-speed store (core) can hold 32 blocks of data and a bulk store (drum, disc or tape) can hold the rest of the 2<SP>12</SP> blocks of data in the system. An apparent address supplied by a processor has 12 high-order bits to select a block and 12 low-order bits to select a word (which is an 8-bit byte) within it. The highorder bits are compared in an "immediate access" subsystem with the contents of first registers identifying the most recently accessed blocks in the high-speed store. If one of the first registers gives equality, a corresponding second register is gated to give the high-order portion of a physical address. The low-order portion of the apparent address forms the loworder portion of the physical address, and the whole physical address is used for addressing the high-speed store. If none of the comparisons gives equality, an "immediate reference" subsystem determines if the required block is in the high speed store by using the high-order portion of the apparent address to select a row of a map store (core) using a randomizing address generating algorithm, block addresses stored in the selected row being compared with the high-order portion of the apparent address (identifying the desired block), equality causing an address stored with the block address giving equality to be decoded and used as the physical address high-order portion as before. Each row of the map store has an overflow field specifying a further row to be selected next for comparisons, if necessary, and also "occupied" and "reserved" bits for respective block address locations in the row, and an "overflow" bit for the row. If none of the comparisons in the "immediate reference" subsystem gives equality, the processor is interrupted and the required block is transferred from the bulk store to the high-speed store after which the processor is interrupted again so that it can repeat its access request. Selection of a block location in high-speed store to receive the block is done by a "core block controller" subsystem which has a map store (core) with a row for each block location in high-speed store. The row specifies the apparent address high-order portion of the block, if any, currently in its associated location, and includes "reserved", "busy", "free" and "next" bits. The rows are examined in turn to find the first with a "free" bit set, this identifying the block location to be used for the block from bulk store. If no "free" bit is set, the row (there is only one) with its "next" bit set is located in the same way and the block associated with this row is transferred to bulk store from the high-speed store to make room for the required block. The "next" bit is reset and that in the following row is set. Block transfer from (and if necessary to) bulk store is done with the aid of a "page turn controller" subsystem and a "storage control unit" subsystem (which includes a core buffer for the bulk store), utilizing control and address information stored in segments of block location O of the high-speed store, there being one segment corresponding to each block location in the high-speed store, the segments being accessed in turn to determine what sort of operations, if any, are required. The segments are used to save the contents of control register, in the "immediate reference" and "core block controller" subsystems and are used as a means of communicating control information between the subsystems. Inter-subsystem interlocks are provided. The system is operable with more than one processor, there being one "immediate access" subsystem per processor, but all the other subsystems being in common. The first and second registers in the "immediate access" subsystem, and the map stores are updated as appropriate.