Patent GB-1373985-A (GB)
Title: Index system
IPC: G11C15/04
Filed: 1972-08-10
Abstract: 1373985 Information retrieval INTERNATIONAL BUSINESS MACHINES CORP 10 Aug 1972 37262/72 Heading G4A An index system in which addresses are identified by binary key words stored at the terminal vertices of a notional binary tree includes an associative index store 10 (Fig. 5), each record location of which represents a vertex, locations corresponding to non-terminal vertices containing data pointing to the next vertex in the tree and data indicating which bit of the key word should be examined. In the embodiment described a terminal address is found by examining bits of the key word in turn and moving on to the next right-hand or left-hand vertex in accordance with whether the examined bit is an "1" or a "0". The system also includes an associative key store 20, mask store 30 and translation store 40. Index store.-This comprises registers having a plurality of cells, each cell consisting of two bi-stable transistor circuits, data relating to right-hand vertices being stored in one bi-stable circuit and data relating to left-hand vertices being stored in the other. Each register is divided into fields F, A. B, C, D and E, where F is a one bit register indicating whether or not the vertex represented by the contents of the register is a terminal vertex, A holds the vertex number, B indicates whether the contents represent a right or left-hand vertex, if F is "0", C and D indicate respectively the number of the next lower vertex and the bit offset number (that is the bit to be examined) together with the key word number to which the offset relates and if F is "1", E indicates the terminal address. Operations.-The index system may perform three operations, find, insert and delete under the control of a store 50 holding sequences of micro-programme words. In a find operation, the key words of the search argument are entered into a key field 21, the identifying number of each word being used to ensure it is stored at the appropriated location. The associative store 10 is first searched to find the root node of the first word. If this results in a terminal address being found (that is if the F field of the selected register is "1"), the operation is terminated by reading out the required address from the E field. Otherwise the C and D fields are used to read respectively from store 20 the vertex number indicated and to select from masking store 30 a "1" bit in the offset bit position indicated by the D field so that the key word in store 20 is examined to see if the selected bit is "1" or "0" and consequently derive for a decoder G a read-right or read-left signal for the selected vertex. The key word to be examined is determined by the higher bits of register D which are transferred unchanged via register fields H and I to register K in the key store 20. This process is repeated until a terminal address is found.  In an insert operation the new key to be inserted is first used as a search argument in a find operation to retrieve the nearest key. If the retrieved and new key differ in bit offset position "i" the new key in truncated at bit "i" and used in a find operation to determine the vertex to be changed. A new vertex number is then allotted to an unused register in store 10 and the number is also stored in translation store 40 together with the bit offset position "i". The old number is read from store 40 into field A of store 10 and to decoder input G and store 10 is searched to read out to register fields E, F. The new vertex number is then read from store 40 into both fields A and M and the decoder input is complemented before store 10 is searched again, writing being effected from fields E and F. The address to be associated with the new vertex is placed in register field E and index store A is again searched (but with the decoder input not complemented), the record address being read from the field E. The data in fields C and D associated with the old vertex number is then altered to the new vertex number and the offset bit "i" by entering the old vertex number into register field A, searching the store 10 and reading the contents of register field M (that is the new vertex number) into field C. The store 10 is then searched a second time and the offset bit position "i" transferred from the translation store 40 to the register field D. In a delete operation a find operation is again first performed to determine the vertex number to be deleted. The contents of fields A and B are then entered into the translation store and the contents of field A are fed to field C. The store 10 is searched using the contents of field C to find the number of the previous vertex which is read to fields A and B and then into store 40. The vertex number to be deleted is then read to fields A, B and the index store is again searched, with the input G complemented, to read to register fields E, F. The previous vertex number is then read from the store 40 to fields A, B and to decode input G, the index store being again searched with the data in fields E, F being written in.