Associative memory system
AssigneeNCR Corporation
InventorsJohn W. Stewart, Darrell W. Woelk, Marvin R. DeForest
Life of this patent
Estimating the term…
Abstract
An associative memory system including a plurality of associative data controllers (ADCs) which operate in parallel upon a mass storage including a storage array for each ADC. A primitive function processor (PFP) couples the ADCs to a control unit which provides user access to the system. Hardware instructions are issued by the PFP to the ADCs to enable them to operate in parallel. The ADCs have circuits for performing simultaneous read/write operations with their related storage arrays, and for performing tagging operations, minimum/maximum operations, and logical operations.
Claims31
An associative memory system, comprising:
- storing means having at least first and second units for storing data therein, wherein a first predetermined number of bytes of data are obtained serially from said first unit followed by a second predetermined number of bytes of data obtained serially from said second unit to provide a stream of bytes of data;
- first means and second means for simultaneously receiving at least a portion of said stream of said bytes of data as they are read serially from said storing means;
- said first means also including a loop buffer for receiving and storing serially at least a portion of said stream of bytes of data from said storing means;
- said second means also having means for performing at least one operation on at least a portion of said stream of said bytes of data as they are obtained serially from said storing means;
- and
- said first means also having means for writing bytes of data from said loop buffer into said storing means simultaneously as said bytes of data are read therefrom whereby a write address for writing a said byte of data into said storing means is obtained by subtracting a third predetermined number from a current address of a byte of data being read from said storing means.
An associative memory system, comprising:
- storing means having at least first and second units for storing data therein, wherein K bytes of data are obtained serially from said first unit followed by K bytes of data obtained serially from said second unit, wherein K is a whole number;
- first means and second means for simultaneously receiving said bytes of data as they are read serially from said storing means;
- said first means also including a loop buffer for receiving and storing serially K bytes of data from said storing means;
- said second means also having means for performing at least one operation on said bytes of data as they are obtained serially from said storing means;
- and
- said first means also having means for writing bytes of data from said loop buffer into said storing means simultaneously as said bytes of data are read therefrom whereby a write address for writing a said byte of data into said storing means is obtained by subtracting K from a current address of a byte of data being read from said storing means.
An associative memory system, comprising:
- storing means having at least first and second units for storing data therein, wherein K bytes of data are obtained serially from said first unit followed by K bytes of data obtained serially from said second unit, wherein K is a whole number;
- first means and second means for simultaneously receiving said bytes of data as they are read serially from said storing means;
- said first means also including a loop buffer for receiving and storing serially K bytes of data from said storing means;
- said second means also having means for performing at least one operation on said bytes of data as they are obtained serially from said storing means;
- and
- said first means also having means for writing bytes of data from said loop buffer into said storing means simultaneously as said bytes of data are read therefrom whereby a write address for writing a said byte of data into said storing means is obtained by subtracting K from a current address of a byte of data being read from said storing means;
- said second means also having means for controlling the transfer of said bytes of data from said first means to said storing means and
- said means for controlling being operatively coupled to said first means and said storing means.
A data handling system comprising:
- means for providing user access to said system;
- processor means for receiving user requests from said providing means and also generating a plurality of instructions in accordance with said user requests;
- means for storing data, and at least one associative data controller (ADC) which is operatively coupled to said processor means and said storing means to enable said ADC to receive said data from said storing means and also to perform at least one operation with regard to said data in accordance with said instructions;
- said storing means having at least first and second units for storing bytes of data therein wherein K bytes of data are obtained serially from said first unit followed by K bytes of data obtained serially from said second unit, and wherein K is a whole number;
- said ADC comprising first means and second means for simultaneously receiving said bytes of data as they are obtained serially from said storing means;
- said first means also including a loop buffer for receiving and storing serially K bytes of data from said storing means;
- said second means also having means for performing at least one operation on said bytes of data as they are obtained serially from said storing means;
- and
- said first means also having means for writing bytes of data from said loop buffer into said storing means whereby a write address for writing a byte of data into said storing means is obtained by subtracting K from a current address of a byte of data being read from said storing means.
A data handling system comprising:
- an access control unit for providing user access to said system;
- a function processor for receiving user requests from said access control unit and also for generating a plurality of instructions in accordance with said user requests;
- means for storing data;
- and
- a plurality of associative data controllers (ADCs) which are operatively coupled to said function processor and said storing means to enable said ADCs to operate in parallel on said storing means in accordance with said instructions;
- said storing means including a storage array for each said ADC;
- each said storage array being organized as an associative memory having tuples and domains therein in which each domain is comprised of at least one byte of data and in which each said tuple is comprised of at least one said domain;
- each said ADC comprising:
- a min/max module;
- a qualify module;
- a tag module;
- a read/write module;
- a loop control module;
- a first bus for simultaneously and serially presenting bytes of data from the associated said storage array to each of said min/max, qualify, tag read/write, and loop control modules;
- a data interchange unit including control logic for coupling the associated said ADC with said function processor;
- said qualify module having means for selecting bytes of data from the associated storage array based upon a predetermined number of said domains to identify qualified data;
- said read/write module having means for selectively reading said qualified data and forwarding it via the associated said data interchange unit to said function processor, and also having means for selectively writing said qualified data into the associated said storage array via the associated said loop control module;
- said min/max module having buffer means for storing a most recent minimum or maximum from the associated said storage array which is used as criteria with regard to selecting the minimum or maximum, respectively, from the associated said storage array;
- said loop control module having a loop buffer for receiving and storing a predetermined number of bytes of data from the associated said storage array, and also for receiving bytes of data from the associated said rear/write module for bytes of data which are to be written into the associated said storage array;
- and
- said tag module having means for marking selected tuples within the associated said storage array.
A method of handling data comprising the steps of:
- (a) storing bytes of data in at least first and second storing units in a storage array, wherein K bytes of data are obtained serially from said first unit followed by K bytes of data obtained serially from said second unit, wherein K is a whole number;
- (b) simultaneously receiving said bytes of data in first and second circuits as they are read from said storage array;
- said first circuit including a loop buffer for storing serially K bytes of data from said storage array;
- (c) performing at least one operation on said bytes of data as they are received serially by said second circuit;
- and
- (d) writing bytes of data into said storage array via said loop buffer whereby a write address for writing a byte of data into said storage array is obtained by subtracting K from a current address of a byte of data being simultaneously read from said storage array.
Dependencies are inferred from the claim text.