WO1994014162A1 - Pattern search and refresh logic in dynamic memory - Google Patents

Pattern search and refresh logic in dynamic memory Download PDF

Info

Publication number
WO1994014162A1
WO1994014162A1 PCT/US1993/011820 US9311820W WO9414162A1 WO 1994014162 A1 WO1994014162 A1 WO 1994014162A1 US 9311820 W US9311820 W US 9311820W WO 9414162 A1 WO9414162 A1 WO 9414162A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
bit
word
storage
Prior art date
Application number
PCT/US1993/011820
Other languages
French (fr)
Other versions
WO1994014162B1 (en
Inventor
G. Jack Lipovsky
Original Assignee
Lipovsky G Jack
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lipovsky G Jack filed Critical Lipovsky G Jack
Priority to JP6514306A priority Critical patent/JPH08504992A/en
Priority to EP94903480A priority patent/EP0676081A4/en
Priority to KR1019950702379A priority patent/KR100230767B1/en
Publication of WO1994014162A1 publication Critical patent/WO1994014162A1/en
Publication of WO1994014162B1 publication Critical patent/WO1994014162B1/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/043Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using capacitive charge storage elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/02Indexing scheme relating to groups G06F7/02 - G06F7/026
    • G06F2207/025String search, i.e. pattern matching, e.g. find identical word or best match in a string
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

Definitions

  • the invention relates to refreshable dynamic associative memory storage devices and systems incorporating such devices.
  • Fig. 1 a schematic of a typical construction of a dynamic random access memory (DRAM) is shown.
  • DRAM dynamic random access memory
  • switches S2 and S3 are open, switches SI and S4 are closed, and capacitor C is either charged or discharged according to the status of the input data, and amplified by write amplifier WR.
  • switches SI, S3 and S4 are open, and switch S2 is closed so that the voltage on capacitor C is compared to a reference voltage Vref by read amplifier RE. According to the difference determined by read amplifier RE, either a binary "one” or "zero" is transmitted to the output of the DRAM.
  • a DRAM includes a great number of storage capacitors C arranged in matrix of array form along with row decoder and column decoder circuitry.
  • the storage elements of the array must be periodically refreshed, and are typically refreshed on a row-by-row basis.
  • the row decoder and column decoder circuitry, as well as the read amplifiers and write amplifiers, are typically integrated within the same semiconductor chip with the individual storage elements of the array.
  • Fig. 2 is a block diagram of a type HM 511000 dynamic RAM available from Hitachi America, Ltd., which includes eight 128K memory cell arrays 10 connected through read /write amplifiers 11 to I/O bus 12.
  • SIMD single-instruction-multiple-datastream
  • cyclic operation the same operation is performed in one or more data cells, and within each data cell, the operation is performed identically on one or more data words which are processed sequentially.
  • periodic refreshing of the dynamic RAM is necessary in order to avoid dissipation of the data indicating charge on the storage capacitor.
  • This refreshing is generally interleaved with any logical operations performed on the data, which necessarily limits the speed at which cyclic logical operations can be performed on data stored in a dynamic RAM.
  • the present invention avoids the drawbacks of the prior art by incorporating logic circuitry within the refresh circuitry of a dynamic RAM which allows perfor ⁇ mance of cyclic logical operations on stored volatile data, concurrent with the periodic refresh of the volatile data.
  • all data being refreshed is processed by a simple logical unit in the refresh circuit.
  • This combination of refresh with logical operation eliminates the need for a separate refresh cycle by performing the logical operation during the refresh cycle, and greatly improves the cyclic processing speed of logical operations performed on stored data.
  • the present invention has particular application in data base or associative systems wherein all stored data is accessed and tested, for example, when conduct ⁇ ing data string searches.
  • a data comparator is inserted into the refreshing loop, and is used to compare target data with data being cyclically refreshed in order to simultaneously perform data refresh and target data searching.
  • Figs. 1 and 2 are schematic representations of prior art dynamic random access memories.
  • Fig. 3 is a dynamic random access memory employing logic in refresh circuitry, according to the present invention.
  • Fig.4 is a dynamic random access memory employing search logic in the refresh circuitry, according to the present invention.
  • Fig. 5 is a block diagram of a one-megabit dynamic random access memory employing logic in refresh circuitry according to the present invention.
  • Fig. 6 is another block diagram of a dynamic random access memory employ ⁇ ing logic in refresh circuitry according to another embodiment of the present invention.
  • Fig. 7 is a detailed block diagram of a word cell of Fig. 6.
  • Fig. 8 is a chain priority circuit usable in the present invention.
  • Fig. 9 is a priority tree circuit usable in the present invention.
  • Fig. 10 is a node in a data bus and priority tree usable in the present invention.
  • Fig. 11 is a block diagram of a module of a system according to the present invention that ust » _> several dynamic associative addressable memories as disk buffer.
  • Fig. 12 is an example block diagram of an embodiment of the module of Fig. 11.
  • Fig. 13 is an example timing diagram for the transfer of data from di «k to memory in the embodiment shown in Fig. 12.
  • Fig. 14 is an example block diagram showing the bus contacts of the system in a particular state.
  • Fig. 15 is a block diagram illustrating a portion of the circuitry of Fig. 12, including principally the portion that relates to searching data in the memory of the invention.
  • Figs. 16a and b illustrate three alternative systems, each of which contains several modules that can consist of the embodiment of Fig. 12 or another system in accordance with the invention, arranged with alternative connecting mechanisms.
  • Fig. 17 is a diagram illustrating one possible storage structure within the memory of the invention.
  • Fig. 18 is an example flowchart illustrating a program for implementing a Boolean search using the embodiment of the invention described in Figure 17.
  • Fig. 19 is an example flowchart illustrating a program for implementing a string search using the embodiment of the invention described in Figure 17.
  • Fig. 20 is an example flowchart illustrating a program for implementing a proximity search using the embodiment of the invention described in Figure 17.
  • Fig. 21 is a sample program illustrating an efficient way of performing
  • a one-megabit volatile memory employing logic-in-refresh according to the present invention is disclosed.
  • the memory is organized within the chip as a 512-row, 2048 bit-per-row memory in which an entire 2048-bit row is read, one after another, in each refresh cycle.
  • the refresh row unit length might be different from the length of the associative memory word unit that can be searched or output as a unit.
  • Either the entire 2048-bit row, or a fraction of the 2048-bit row, can be considered a single word in an associative memory. For example, referring to Fig.
  • each cell 19 includes logic circuitry, such as comparator 21, to operate on the data as it is sequentially and cyclically read out, refreshed and written back into memory.
  • a 9-bit counter either external or internal to the chip, provides 512 consecutive row addresses, one address per memory refresh cycle.
  • all words of each cell 19 of the memory are read in 512 memory refresh cycles and are searched during that time.
  • the bottom byte of each cell 19 is logically linked to the top byte of the next cell 19 within a single chip by bus 22.
  • each word as a sequence of 512 bytes, is considered separately.
  • Elements within the dashed line are integrated together in a single semiconductor material integrated circuit chip.
  • a plurality of chips can be cascaded by logically linking the bottom word of the last cell in one chip to the top of the next cell in the neighboring chip by bus 23.
  • each cell 19 The configuration of each cell 19 is shown in more detail in Fig.4.
  • data stored in each byte can be, for example, ASCII characters in text streams, which are each 7 bits wide together with a mark bit, which is the 8th bit. Initially, all mark bits are cleared, and are subsequently set and cleared to mark the results of a search.
  • Each byte is sequentially read by the 8-bit wide read amplifier, RE, and the 7 data bits are applied to comparator 21 where the read 7-bit byte is compared with the 7-bit comparand stored in comparand register 24. A comparand is loaded into comparand register 24 through I/O bus 12.
  • the output of read amplifier, RE is also applied to multiplexer 25 along with data from I/O buffer 18 through I/O bus 12.
  • the output of multiplexer 25 is applied to 8-bit write amplifier, WR, along with the single-bit (mark bit) output of comparator 21.
  • Read amplifier, RE is also connected to I/O bus 12 in a known manner throug 1 "i-state buffers, or the like, to enable outputting of data.
  • comparator 21 and comparand register 24 are added to the preexisting refresh circuitry of a DRAM illustrated schematically in Fig. 1 (note that switches S3 and S4 illustrate the function of multiplexer 25). All compo ⁇ nents are integrated on the same semiconductor material integrated circuit chip.
  • a byte-wide comparand is simultaneous ⁇ ly broadcast to all cells 19, and stored in respective comparand registers 24. Then, the 512 bytes in memory array 20 of each cell 19 are each cyclically read, refreshed and rewritten. The 8th bit of each byte stores the result of any match with the comparand in comparand register 24. The results of the match are stored in 8th bit of the next byte in memory array 20 adjacent and below the one that the comparand matches. This is repeated for all 512 bytes in each cell 19. The result of a search on the last byte of a cell is effectively stored in the first byte of the adjacent cell through bus 22.
  • a variation of this operation is to continue to mark bytes in memory until a match is found.
  • the 8th bit (mark bit) of a byte has been set, as bytes continue to rotate through the refresh circuitry, the 8th bit of all subsequent bytes are set until a match for the next comparand (for example, an end-of-text character) is found.
  • This variation is used to mark the remainder of a target string of characters, once a character within the target string is found, and facilitates output of or rewriting the target string.
  • the output of the result of a search from a single cell can simply be read out as the character into I/O buffer 18 if the 8th bit is set. As a byte passes the refresh logic, if the 8th bit is set, the byte is presented by read amplifier, RE, to I/O buffer 18, and the 8th bit will then be cleared. In a multiple cell system, if two cells have the 8th bit set in the same word in each cell, a priority circuit connected to the cells will prevent all but one of the outputs from feeding I/O buffer 18, and clearing the 8th bit. Only one byte will be output at a time, and remaining bytes will be output in later refresh cycles.
  • a means to fill memory with identical bytes is used to empty the memory.
  • a ripple priority mechanism can be used to modify the basic search and match mechanism so that only the first byte that satisfies the search part is modified, but no other bytes that satisfy the search are altered.
  • a flip-flop is set as the bytes in the cell are being searched, and is cleared after a successful search is detected. The byte is modified in a successful search only if the flop-flop output is "1".
  • One byte can be written in each refresh cycle by this means.
  • a ripple priority circuit is also used between cells.
  • the priority circuit causes all flip-flops except the flip-flop in the prior cell to be cleared.
  • This prioritized context-addressing mechanism is needed to fill memory with different data in each byte.
  • the above-disclosed additional search logic can be easily implemented in existing dynamic random access memories by using preexisting memory cells, row decoders, read amplifiers, write amplifiers and multiplexers but removing the column decoders and inserting search logic including the comparator and comparand register into the read/write circuits. If this is done, for example in the Hitachi HM511000 (a one-megabit DRAM), the entire memory can be read, searched and rewritten in approximately 60 microseconds (the time required to refresh the entire memory). Such a memory is shown in Fig. 5 and illustrates placement of search logic 26. If a system incorporates a number of memory chips, and a string of characters is searched, the time required to search all data in memory will remain 60 microseconds per character searched.
  • the invention thus allows associative searching of a dynamic memory integrated circuit with a redesign of only a small part (removing column decoders, and adding comparators and comparand registers to the refresh circuitry) of a preexisting chip memory. This results in low development cost, little if any increase in manufacturing cost, and utilization of existing DRAM facilities without the need for extensive retooling.
  • Use of the invention will allow associative searching of very large data bases stored entirely in fast dynamic memory with very little increase in cost over an unmodified dynamic random access memory.
  • Figs. 6 and 7 illustrate the organization of a semiconductor chip incorporating another embodiment of the present invention.
  • each column cell in a refresh operation, one column is refreshed sequential ⁇ ly, one bit after another, using one sense amplifier.
  • the data in the column, stored in column cells 27, are collected together in groups of four pairs of column cells each to form word cells 28. Thirty-two word cells are arranged within a pair of existing DRAM subarrays 29, and the chip includes eight pairs 29 of DRAM subarrays.
  • each column cell includes 512 bits.
  • each word cell 28 can be considered as four columns in each of two neighboring DRAM subarrays, thereby forming the four- column, two-row rectangle shown to read or write one byte at a time. Of course, any number of column cells per word cell can be used. Connecting each of the column cells is a data bus 31.
  • Fig. 7 a detailed block diagram of a word cell used in Fig. 6 is shown. In Fig. 7, eight identically configured column cells 27 are presented. For clarity, only the upper left column cell 27 * in Fig. 7 is described.
  • each column cell 27 includes a mask flip-flop 32 including storage capacitor 33 which stores a mask bit for each refresh cycle. Also included in each column cell 27 is a physical 512 bit memory subarray 34 and dedicated sense amplifier 36. In this embodiment, each column cell 27 also includes a four transistor comparator 30. The output of each word cell is commonly connected in a wire-OR configuration to a dual-rank (master slave) set-clear match flip-flop 37 which includes two NOR gates 38 and 39 whose inputs are set and clear inputs of flip-flop 37. Capacitor 41 within flip-flop 37 is the slave of dual-rank flip-flop 37.
  • a refresh cycle is a period of time required to refresh one bit of one column with one sense amplifier, and is performed simultaneously for each column in the memory.
  • a refresh cycle is divided into a row address strobe time (TRAS), where row address strobe is asserted, and a column address strobe time (TCAS), where column address strobe is asserted.
  • TCAS is distinct from and after TRAS.
  • a refresh operation is the period of time required to refresh all bits within a single column.
  • TRAS a mask is sent on data bus 31 and is stored in mask flip-flop 32, and during TCAS, data is sent on data line 31.
  • TCAS data is sent on data line 31.
  • This is directly analogous to the time-multiplexing of row address and column address in a convention DRAM.
  • the large (4096-bit) data and mask values are time-multiplexed on 8-bit data bus 31.
  • the data value is a 4096 hexadecimal bit value of the form, for example, 1234...
  • the mask value is a 4096 hexadecimal bit value, for example, 5678...
  • hexadecimal 56 is sent during TRAS
  • hexadecimal 12 is sent during TCAS
  • hexadecimal 78 is sent during TRAS
  • hexadecimal 34 is sent during TCAS, and so forth.
  • 512 pairs of bytes are sent sequentially as they are used to search or write data as it is being refreshed inside each word cell.
  • the pair of bits sent in the same position in the data and mask bytes during TCAS and TRAS will be “10” when the comparand value is a “0,” “11” when the comparand value is a “1,” and “00” when the comparand value is a “don't care.”
  • the pair of bits sent during TCAS and TRAS will be "01” when the comparand value is a “0,” “10” when the comparand value is a "1,” and “00” when the comparand value is a "don't care.”
  • an associative memory structure is presented that allows the associative searching of data within the memory as it is being refreshed.
  • a No-op instruction which does nothing but refresh the memory for one refresh operation, is accomplished by amplifying data with sense amplifier 36 and writing that data back into the memory cell 34 without modification. No data go to or from data bus 31.
  • a data and mask value bit is used for each column, and each column is searched for all words in all memory chips during one refresh operation.
  • a match bit for a word is set if for each column that the mask bit is 1, the data bit is the same as the bit in the word and column. More specifically, for a Word Compare instruction, match flip-flop 37 is set to "1" at the beginning of the refresh operation.
  • the mask and data are sent, the left bit being sent first during TRAS and stored in mask flip-flop 32 in each bit cell, with the right bit being sent during TCAS. If the word has a" 0" and the first bit is a "1,” then match flip-flop 37 is cleared.
  • match flip-flop 37 is cleared.
  • the control signal Compare is asserted at the end of the refresh cycle when comparator 30 has stabilized, to clear match flip-flop 37 if a mismatch is detected. Data in a cell are refreshed during a Word Compare instruc- tion.
  • a Word Write instruction three-input AND gate 42 is utilized.
  • the mask data stored in mask flip-flop 32 and sensed data are sent during TCAS and are used to rewrite data in the cell. If in a word cell the Mask and Match bits are both high, data are rewritten into the cell. Otherwise, data in the cell are refreshed.
  • a Word Output instruction during TRAS, a high signals is sent on data bus 31 so as to output all bits.
  • the Word Write instruction is asserted and data from sense amplifier 36 are applied to data bus 31 and are also refreshed in the cell.
  • words are considered linearly ordered (top to bottom) and prioritized (higher words are considered to be of higher priority).
  • the first of these instructions take advantage of the word structure men ⁇ tioned earlier wherein the most significant bit in a word is a mark bit distinct from the character bits of a byte.
  • the master of match flip-flop 37 is initially set and the Word Compare instruction is executed on the whole byte to clear match flip-flop 37 if there is a mismatch where the mask bits are "1." Then, the slave of match flip-flop 37 is written into the mark bit (high-order bit) of the next byte using extra transistor 35 (by delaying the signal from the slave match flip-flop 37 in one refresh cycle time), and finally, the master of match flip-flop 37 is copied into the saved flip-flop. Data are refreshed in a Character Compare step.
  • a Word Compare Up instruction the Word Compare instruction is executed during each refresh cycle of a refresh operation. The contents of the match bits are then shifted upward one bit logically at the end of the refresh operation.
  • a Word Compare Down instruction executes the Word Compare instruc- tion during each refresh cycle of a refresh operation, and then, at the end of the refresh operation, the contents of the match bits are shifted downward one bit logically.
  • a Word Compare Prior instruct on executes the Word Compare instruc ⁇ tion during each refresh cycle of a refresh operation, and then clears the match bits downward from the first one that is set at the end of the refresh operation.
  • Word Output instruction For the prior word cell having the match bit set, one refresh operation is used to output one word, and at the end of each refresh operation, the match bit of the word ouputted is cleared. The Word Output instruction is repeated until all match flip-flops are cleared.
  • Word Write instruction for the prior word cell having the match bit set, for each refresh operation, a word is written and the match bit is cleared. The operation is repeated until all match flip-flops are cleared.
  • a typical instruction begins with the transmission of an appropriate instruc- 5 tion code on the data lines during a period of time that the memory executes a No-op cycle. As mentioned above, during each refresh operation, 512 refresh cycles occur, and the instruction is executed during each of the refresh cycles.
  • the memory requires comparand data to be supplied very rapidly. Data to and from the memory could be supplied by a video RAM, or by use of a technique
  • shuttle memory wherein a pair of static RAMs are connected by multiplexers to the associative memory and a conventional host computer so that when one is connected to one the other is connected to the other.
  • a fast counter addresses the other to read or write consecutive words in it to or from the associative memory during one refresh
  • Priority selection can be understood in a chain of OR gates, as illustrated in Fig. 8.
  • Fig. 9 shows a two-level tree. A deny equals "0" is put into its root, and Request and Deny of the leaf nodes are connected to match flip-flops 37 (Fig. 7).
  • the Compare Prior instruction can clear
  • a priority network for data bus 31 is shown in Fig. 10 and is a binary tree of bidirectional bus drivers controlled by the priority tree of Fig. 9. The root of the
  • priority tree of Fig. 10 is connected to an external controller having a shuttle memory, and the leaves are connected to word cells.
  • all leaf- ward directed bus drivers are enabled and all root-ward directed bus drivers are disabled.
  • the match value determines the prior cell, which outputs data. Note that the priority tree of Fig.
  • 35 10 can be used to guide data in data bus 31.
  • a simple error-detection circuit which uses one parity bit for all of the data bits in a word cell. All of the column cell data lines are connected and input to exclusive-OR gate 43.
  • dual-rank flip-flops PI and P3 are initialized to zero, and early in a refresh cycle, flip-flop P3 is loaded with the exclusive-OR of all eight data bits that are read from memory along with the old value of P3. Later in the refresh cycle, flip-flop PI is loaded with the exclusive- OR of all eight data bits that are written into memory along with the old value of flip- flop PI.
  • flip-flop PI contains the parity of all the data bits that have just been stored in the cell's memory.
  • the output of flip-flop PI is stored in flip-flop P2.
  • flip-flop P3 contains the parity of all the data bits that have just been read back from the cell's memory.
  • the parity computed and stored in flip-flop P2 should match the parity computed and stored in flip-flop P3. If the computed parity in P2 differs from the stored parity in P3, there is a parity error in the data.
  • the error signal is applied to the master of match flip-flop 37 when the match bit is stored in the slave of match flip-flop 37 at the end of a refresh operation.
  • a typical DRAM sense amplifier has six transistors, and its column address decoder has four transis ⁇ tors.
  • each word cell has a match flip-flop, parity checking flip-: " tops, and associated logic requiring approximately 35 transistors, and for each word cell there is a node of the priority tree, requiring approximately six transistors. Amortizing this word cell logic over the total number of sense amplifiers in the word cell, on the order of five additional transistors would be required per sense amplifier. Thus, the pres ⁇ ' invention would require approxi ⁇ mately 24 transistors per sense amplifier, there * only slightly increasing the required integrated circuit chip area.
  • a chip embodying the present invention could be packaged in an 18-pin package (VDD, VSS, RAS and CAS clock and a signal to indicate the start of a refresh operation, a write signal to control the data bus direction, two shift pins, request- deny signals, and eight data lines).
  • searching of an associative DRAM is accomplished using circuitry integrated within the refresh circuitry on the same integrated circuit chip as the memory array. That results in highly parallel logical operations being performed on data in memory cell arrays, in addition to using the high-bandwidth data paths that exist in refresh circuitry.
  • the above-described circuit can be used in a storage system as a buffer to facilitate the searching of data that are read from a non-volatile storage device, such as a hard disk.
  • a non-volatile storage device such as a hard disk.
  • Use of such a system permits parallel searching, shortening the time needed to access and locate information that had been read from the disk.
  • Figure 11 illustrates a hard-disk embodiment of the storage system of the
  • Hard disk 51 contains a series of disk surfaces or platters 51a, 51b, through 51n, on which a series of heads 53a, 53b, through 53n record data on, and read data from, tracks and sectors arranged in any known design. Any number can be used for the subscript "n.”
  • Switchable bus 61 connects disk drive 51 to computer 65 and memory banks 73 and 75, which are described in more detail below.
  • a second switchable bus 67 connects computer 65 to memory banks 73 and 75 and is also described below.
  • Heads 53 are controlled by hard disk controller circuitry 55a, 55b, through
  • Controller 55a can comprise a disk controller of known design, which contains read-write logic and head-positioning control, often integrat ⁇ ed onto a single chip. Controller 55a can make DMA requests and can control a stepper motor or other head-positioning device 57, which may also contain an indexing sensor.
  • disk drives of standard design include platters 51, heads 53,
  • the system of the invention also includes additional controllers 55b through 55n, each of which is associated with and controls one of heads 53b through 53n.
  • the additional controllers must be capable only of governing the read and write operations of their associated heads. The positioning and DMA-request
  • Controllers 55b through 55n need not include, therefore, all of the circuitry of master controller 55a, but it may be economically desireable to use mass-produced controllers for each of controllers 55, in which case the control signals outputted by controllers 55b through 55n can be disabled or ignored.
  • the disk portion of the invention utilizes a standard disk drive, modified to contain additional controllers 55b through 55n. Those controllers perform the added function of reading or writing data in parallel from a "cylinder," which for the purpose of this patent means the same track and sector located on the set of all of the platters 51a through 51n.
  • striped fashion, in which adjacent elements, such as a byte, are recorded on adjacent platters within a cylinder. For example, byte number one would be located at a first address on platter one of a cylinder, byte two would be located at the same address on platter two of the same cylinder, byte n would be located at the same address on platter n of the same cylinder, byte n+1 would be located at the next address on platter one of the cylinder, etc.
  • the elements can comprise a single bit, several bits, or several bytes, instead of the single byte of data as described above.
  • Figure 13 is a timing diagram showing an example timing for extracting data from disk 51.
  • controller 55a positions the head and each of controllers 55 read a byte's worth of data and store it in temporary registers
  • computer 65 controls switch 63 to direct the data on bus 61 to one of two memory banks, Bank A shown at numeral 73 or Bank B shown at numeral 75.
  • Two memory banks are used in the embodiment shown to allow the system to fill the second bank with data while computer 65 interrogates the first bank. Although two banks are shown, the invention can be practiced in a simplified version with only a single bank or in a more complex version with more than two banks.
  • computer 65 contains a microcontroller, a DMA controller, a suitable non-volatile program store, and a suitable memory such as a quantity of static RAM. Those elements are integrated in some devices, such as the
  • Computer 65 alternates contact between data bus 67a leading to memory bank A and data bus 67b leading to memory bank B.
  • the arrangement is illustrated in Figure 14, in which the system is illustrated in a particular state. Disk 51 in Figure 14 is shown filling bank B 75 through bus 61b. Meanwhile, computer 65 interrogates bank A 73 through bus 67a.
  • Bus control is accomplished by altering the state of a number of tristate drivers, shown in Figure 12 as small triangles.
  • the following specific parts are suitable: the 244 unidirectional tristate bus driver, the 245 bidirectional tristate bus driver, and the 373 latch or register with tristate output.
  • computer 65 switches buses 67 to contact the filled bank, flips switch 63 to connect controller 55a to the other bank, and switches bus 61 to permit data to begin filling the other bank.
  • Figure 15 reproduces a portion of the circuitry of Figure 12, isolating only one of the memory banks 73 and 75 and its associated bus, namely the bank and bus in contact with computer 65 at a particular time.
  • the example illustrated in Figure 15 shows computer 65 in contact with bank 73 along data bus 67a.
  • the other memory bank and bus, and the disk elements and bus 61 loading it, are omitted in the simplified version of Figure 15.
  • Each bank 73 and 75 contains one or more dynamic associative memory devices ("DAAM”), preferrably as described in detail in connection with Figures 3 through 10, above, or another form of content-addressable memory, in which the data may be searched for a match while in the memory.
  • Figures 12 and 15 show four DAAMs per bank, labeled in Figure 15 with numerals 69 and 71a through 71c.
  • a tree topology connects the DAAM to implement a look-ahead priority circuit, where DAAM 69 serves as the root and acts as one leaf of a tree, with DAAMs 71 as other leaves.
  • the tree structure has the same purpose and benefits as that used inside the DAAM chip, described in connection with the description of Figures 7 through 10, above. Also, the priority circuitry of Figures 12 and 15 serves the same function as the similar circuitry within the chip shown in Figures 7 through 10.
  • DAAMs 69 and 71 in Figures 12 and 15 can be replaced with a single DAAM device, depending on the access rates of disk 51 and DAAM 69 and the number of platters 51a through 51n.
  • one DAAM chip such as that shown at numeral 69 can receive data from at most the number of controllers 55 equal to the integral portion of the ratio of the bandwidths of DAAM chip 69 to controller 55.
  • the one-megabit DAAM described above in connection with Figure 2 which is designed to use the Hitachi chip as its base, has a cycle time of about 120 nanoseconds across an eight-bit bus, which results in a bandwidth of 8.3 Mbytes/sec.
  • the controller on the Maxtor hard disk referred to & ove can read data at a rate of about 2.0 Mbytes /sec.
  • each DAAM chip of the sort identified above can be fed by at most four controllers of the sort used in that kind of disk drive. Therefore, the 19-platter Maxtor drive would require at least five DAAM chips.
  • a preferred system design for the above- referenced Maxtor drive would require enough DAAMs in each bank to store the approximately seven megabits on each of the drive's cylinders, or eight units of a one-megabit DAAM. If those DAAMs operated only as fast as the ones described above using the Hitachi chips, however, the system would be bandwidth constrained.
  • a preferred system design would be neither capacity constrained nor bandwidth constrained, allowing the user to upgrade the disk drive to one having somewhat faster output speed or somewhat larger cylinders, without replacing the DAAMs or associated circuitry.
  • the data on disk 51 can be arranged in a staggered fashion across disk channels, where each disk channel is defined as one DAAM chip, the controllers to which it is connected, and the platters controlled by those controllers.
  • data would be arranged with the first byte at a given position on platter one of a given cylinder, the second byte at the same position on platter five of the same cylinder, etc., where the system was arranged with one DAAM chip 69 or 71 controlling four controllers, such as 55a through 55d.
  • the system of the in ention can constitute one of a number of modules, each ' of which can contain one of the modules as illustrated in Fig. 12 or otherwise in accordance with the system of the invention.
  • Figures 16a and b illustrate several examples of such modular arrangements.
  • system 81 a larger number of banks containing one or more DAAMs are arranged in a parallel structure.
  • system 83 of Figure 16a two computers interrogate one bank of memory each while the disk fills a third bank.
  • An arbitrary one of the microcontrollers, there controller "C,” also acts as a disk controller. Any of the microcontrollers can be dynamically allocated to control the disk, but Figure 16a shows only one possible connection, for clarity. Additional computer-memory pairs can be added, subject to disk access constraints.
  • system 85 of Figure 16b a number of computers, memory banks, and disks use a multistage interconnect network such as a one or more crossbar switches to imple ⁇ ment buses 61 and 67 in Figure 12.
  • the interconnection network can be configured to permit any disk or any computer to access any memory bank.
  • Any of the microcontrollers can control any of the disks by communicating through the bus connecting crossbar 67 to crossbar 61.
  • System 85 can also include a configuration in which the multistage interconnect network is arranged in a hierarchical system.
  • the system of the invention can accomplish standard disk data and housekeep ⁇ ing operations.
  • Data can be altered by computer 65 while located in DAAM 69 or 71 and written back onto disk 51 upon command, using the reverse of the disk-reading operation described above in connection with Figures 12 and 13.
  • New data can be added to free space at the "bottom" of any of DAAM 69 or 71, and written to disk 51 at any free space on a cylinder.
  • Data tagged for deletion can be deleted by sequential ⁇ ly reading and rewriting all of the data on the disk, such as at an off-hour.
  • the garbage items are blocked from being placed into memory by issuing a NOP command to the DAAM when a tagged item is read from the disk.
  • the contents of the DAAM are written back onto the disk, overwriting the old data with only data not tagged for deletion, thereby condensing the data and deleting the garbage.
  • the memory of the invention can be readily used for full-text retrieval operations, particularly although not necessarily in conjunction with the disk-based embodiments shown in Figures 12 or 16. In such uses, it is desireable to arrange the data in a fashion that takes advantage of the parallel search capabilities of the memory.
  • Figure 17 illustrates an example arrangement of sample data within the memory of the invention.
  • each word of memory is divided into a series of atoms, each of which contains one data word, such as an English word, and associated data.
  • each row of memory stores one logical associative memory "word," although as noted above, that assumption is not a necessary one.
  • the number of atoms in each row is predetermined and set so as not to fill the entire row with the data, thus setting aside some additional storage in each row to serve as "scratch" locations at the end of each row.
  • the example in Figure 3 shows three a* . per word, but it is both feasible and desireable to use a greater number of atorr a wider word.
  • Each atom contains a fixed number of bits for storing a data word, called a field, and another fixed number of bits for storing data associated with the data word in another field.
  • the associated data includes only the position of the word in the document, but other data can also be stored, some examples of which are described below.
  • the memory is loaded by placing a unique code representing the data word in the first field of the atom, in which the code is determined from a table that contains all of the English words that are used in the document.
  • the table can be pre-filled with likely words and additional words added when a new word is encountered.
  • binary code words not letter codes such as ASCII codes
  • the memory map in Figure 17 uses letters for ease of display.
  • the device avoids loading common "stop" words, such as "a” and "the.”
  • a counter is incremented, however, for all words, including stop words. For each loaded data word, the contents of the counter is placed in a field of the atom immediately after the loaded data word.
  • the location counter is zeroed at the beginning of each row and copied into a predetermined scratch data field at the end of each row.
  • the second column in the scratch field to the right of the double line indicating the start of the scratch data is reserved for the number of data words in the row.
  • each atom contains both a data word and an indicator of the position of the word in the data. Because the count is restarted in each row, the position indicator specifies the position of the data word relative the beginning of the row.
  • the scratch field contains the total number of words in the row. It is also notable that the position indicator and the counter is different from the memory location, that is the atom number in the row, because of the deletion of stop words.
  • the scratch field containing the total number of words can differ from the position indicator in the last atom storing a data word, if there are "stop words" after the last stored data word. For example, in the second line of Figure 17, the last data word, "song,” is at position four, but the stop word "a” follows it, resulting in the row counter being set at five.
  • Data words are loaded into the atoms of a row, in the example of Figure 17, until the end of the row is reached, the end of the document is reached, or one of the data word codes is repeated, whichever comes first, at which point the device begins filling the next row.
  • the embodiment of Figure 17 prevents a row from containing more than one occurence of any data word, which is useful in searches, as shown below.
  • a "document” can be defined as desired by the user.
  • a new document can be started at the beginning of each English sentence, and that method is illustrated in Figure 17.
  • documents it may be desired to consider documents as actual text blocks, such as a newspaper article, memo, letter, page, or other unit, whether of fixed or variable length.
  • a column of scratch data is reserved for a flag indicating the top of a document, illustrated in Figure 17 as the first column to the right of the double line, which contains a zero for all rows that begin a new document.
  • the invention contains circuitry, which is described above, for comparing an associative memory data word with a comparand during a refresh operation, allowing for parallel searching of all data in a row. That circuitry can be used to match any portion of the contents of the atoms in a row.
  • a related instruction searches for matching data words and, if a match is found, transfers data located an offset number of bits away to a specified location. That Compare and Transfer instruction greatly facilitates searching by locating a data word in a row, and if it is found, transferring the position of the data word in the document, relative to the beginning of the row, to a specified location in scratch.
  • Figures 18 through 20 show several examples of problems common to database manipulation and full-text retrieval, illustrating how the invention permits easier or faster solutions to those problems.
  • Figure 18 illustrates a flowchart describing a sample program implementing a Boolean search using the embodiment of the invention described in Figure 17.
  • the problem is to determine if a series of terms (tl...tn) are located, in a predetermined logical relationship, in a document.
  • the relationship may constitute any combination of Boolean logic, however complex.
  • the user may wish to query the database to find all documents discussing the relationship between music and mathematics but not dealing with computer music, by asking for all documents (whether sentences or memos) that contain the terms "song” or "music” and “mathematics” but not the term "computer.”
  • the top of document flag is transferred to a single flip-flop associated with each row, known as the qualify bit, which is used to prevent data from being shifted across document boundaries.
  • the compare instruction is used to determine if the first search term ("song") is present in each row.
  • Each row in which the term is located is marked by setting another flip-flop located adjacent to each row, known as the match bit "M.”
  • the M bits for all rows are shifted down and combined with the adjacent M bit with a logical "OR" function, except for those rows in which the Q bit has been set to indicate the top of the document.
  • the shift and combine process is reiterated enough times to exceed the maximum possible number of rows in a document, after which the M bit of the last row of each document will contain an indication of whether the term has been found.
  • the last-row M bits are transferred to a first scratch bit in the scratch field.
  • the M bits are cleared, and the process is repeated for each search term, resulting in additional scratch bits being set.
  • the M bits are cleared again, and the scratch bits, including the top-of-document bit, can be searched with a mask to determine if all of the terms are present or not, as specified.
  • the scratch bits including the top-of-document bit
  • Figure 19 illustrates a flowchart describing a sample program implementing a string search using the embodiment of the invention described in Figure 17.
  • a string search represents a database query in which the user wishes to locate a series of search terms in sequence.
  • the program searches each atom, according to the methods and using the instructions described above, and sets the mark bit associated with each atom in which the data word matches the first search term.
  • the program searches for all instances in which a data word matches the second search term and in which the mark bit for the previous atom has been set. That search can be done with a single instruction, because of the device's ability to match any sequence of bits, without regard to whether the bits represent a data word or the associated data.
  • the previous atom's mark bit is cleared, regardless of the outcome, but all instances in which the second search results in a match are marked by setting the mark bit for the atom in which the second search term has been found.
  • the program repeats the process as described in the second search for the third and all remaining search terms, which results in mark bits being set only for the final data words of each instance in which the search string is located.
  • Figure 20 illustrates a flowchart describing a sample program implementing a proximity search using the embodiment of the invention described in Figure 17.
  • a proximity search it is desired to query the database to locate all documents in which search terms are located within a specified distance from each other in the document.
  • the scratch data fields of Figure 17 are filled with numbers generated from the case in which the program in Figure 20 operates on the data in Figure 17 during an example proximity search, which seeks to identify all instances in which the search term "good” is located within two English words of the search term "song.”
  • the program searches the rows of the memory for a match to the first search term, here "good,” and places the positional indicator associated with a match in a scratch field, shown as the third column in the scratch data of Figure 17. If no match is found, the first of a five-bit scratch field, shown in the fifth scratch column in Figure 17, is set. The process is repeated for the second search term, here "song,” and the result placed in another scratch field, shown as the fourth scratch column in Figure 17. If no match is found, the second of the five scratch bits is set.
  • a limit subprocedure is invoked, to do the mathematics of comparing the two addresses to the limit, which is in the example, two words.
  • the two numbers are subtracted, the difference is compared to the limit, and the third of the five scratch bits is set if the difference is greater than the limit.
  • the difference is compared to the negative of the limit, because the two terms can qualify for the search regardless of which one appears first in the document, and the fourth of the five scratch bits is set if the difference is less than the negative of the limit.
  • a fifth bit is set indicating those rows in which the proximity search has been satisfied, rows two and five in Figure 17.
  • the limit test subroutine described above is then repeated, with the outcome shown in the five scratch bits shown in the last column of Figure 17 (although the actual program would reuse column five).
  • the search thus identifies the rows in which the terms are within the desired proximity but one of the terms is at or near the end of the previous row.
  • an example is shown for row three, in which "song" at the end of row two is two words from the word "good” at the beginning of row three.
  • the flowchart of Figure 20 includes a third routine in which the data are shifted up, to attempt to locate instances in which a document row contains the second search term within the desired proximity from the first search term in the previous row.
  • a more complex program could shift the data more than one row in either direction, thus allowing proximity queries to use a larger separation distance.
  • the program could use the knowledge of the number of atoms per line to determine the number of shifts needed in the worst case, and perform exactly that number of shifting operations.
  • the proximity search benefits from the layout rule specified above preventing the same data word from appearing twice on one row. That rule avoids any ambiguities and allows the program to calculate the distance between two words in a row with orily one operation.
  • More complex proximity searches can contain a plurality of search terms, which would require the program to operate on each pair of terms separately.
  • the complexity of a proximity search therefore, increases as the combination of the number of terms.
  • the system of the invention permits more efficient proximity searching by finding the search terms in data more efficiently and transferring the address to memory quickly, which can greatly reduce the search time, even if there were no improvement in the speed of the mathematics needed to calculate and examine the separation distances.
  • Prior proximity searching systems spend most of the search time locating the search terms, rather than verifying that the located terms satisfy the proximity requirements.
  • the ability of the invention to shift data match ⁇ ing a selectable criterion to a fixed non-data-filled memory location within the row allows uniform row-by-row calculation of desired results.
  • the system of the invention can handle combinations of proximity, string, and Boolean searches. For example, one may wish to look for all documents containing (a) "George Bush” and (b) "arms” within three words of "hostages” but (c) not dated after the year 1988 or before the year 1984.
  • the system illustrated in connection with Figure 20 can be adjusted to perform an "inner product” search, in which a weighting factor is assigned to some defined characteristic of the data.
  • each atom may include a field containing a "weight code,” designed to express the frequency or importance of the data word or some characteristic about it, such as its type (e.g., whether it is a verb, a noun, etc.).
  • any of the above-described searches is run, but a "hit" is weighted by some mathematical function of the weight codes of one or more search term. For example, locating word A near word B can result in three points each time, while locating word D at least once in the document results in two points. Then, a search might request retrieval of all documents that score more than a selected number of points (say, ten), or just a selected number of the highest-scoring, that is "most relevant," documents.
  • the above word organization is particularly efficient in databases with . common patterns of data.
  • the first column may contain all last names, the second column, first names, the third column addresses, and the fourth column telephone numbers.
  • the first word of associative memory therefore, contains all last names, but each person remains in a single row of the memory. That sort of column-wise organization is more efficient because the memory can avoid searching columns that are not involved in the search term, in which there are only "don't care" matches. For example, searching a 100-row database for "Smith" requires operation only on one word, not all four columns, and not the 100 searches that would be required in a row-wise organization.
  • the comparator hardware is used only to search data that must be searched and not wasted searching columns that have all "don't cares.” The columns to be skipped can be directly determined by noting which instruction operand's columns have only "don't cares.”
  • DAAM instructions usually scan columns of the associative memory * which are rows of the dynamic memory chip, sequentially (say from left to right), but start the scan at some fixed column number and continue the scan for a fixed number of columns. Some instructions scan in that manner and then jump to another collection of columns to scan them sequentially, and others scan in the reverse direction. It is possible to scan all columns, and it is necessary to do that periodically to refresh all of the memory. The typical instruction refreshes only part of the memory that is actually searched, output, or written.
  • the routines described above include certain arithmetic or Boolean logic operations, particularly within the associative memory word.
  • the proximity search described above in connection with Figures 17 and 20 requires subtraction to determine the distance between located search terms. It is advanta ⁇ geous to implement the following system of arithmetic operations, particularly in DAAMs that have been based on DRAMs.
  • the preferred circuit can utilize the following instructions.
  • the Compare (“C") instruction compares the data, d, with all words in the associative memory, in parallel, in a bitwise fashion.
  • a value, m represents a mask value for conditional comparing. For each bit that m is not set (not masked), the corresponding bit position of d is compared to the corresponding bit position of each associative memory word.
  • a match flip-flop for each associate memory word is set if the compare was true, otherwise the match flip-flop is cleared.
  • the data, d, and the mask, m can be of any bit length up to the maximum word size but must be of equal length.
  • the Multiwrite ("MW") instruction writes the value of d into all associative memory words where the match flip-flop is set and then clears the match flip-flop.
  • m is a mask value that allows conditional bit writing.
  • the terms d and m are as defined as in the Compare instruction. The d and m values can also be collapsed into a single opcode as defined above. )
  • the Compare-Or (“CO”) instruction works as defined for the Com ⁇ pare instruction except that the match flip-flop is set if it was set previously or if the compare is successful. In other words, the match flip-flop is not cleared if the match fails, provided that the match flip-flop was set prior to the execution of the CO instruction. If the compare fails and the match flip-flop was not set, the match flip- flop remains cleared.
  • the device performs arithmetic operations, such as addition, comparison, and shifting for multiplication and division, on numbers obtained from a search such as a proximity query or inner product query, in a manner that is more efficient, but less conventional, than normal binary arithmetic.
  • a typical DRAM has a "page mode" read operation that permits the system to read a whole row from the bit array storage (which is a column of associative memory in the embodiment discussed above) into the sense amplifiers.
  • an associative memory word must have all the bits that will be searched or modified simultaneously available in the sense amplifiers associated with that word. It is preferrable, therefore, to arrange the data so a byte-wide column of the associative memory word is in the eight sense amplifiers. Although eight amplifiers are used for exemplary purposes, it is possible to use any number of amplifiers in each row, as long as there are at least two.
  • a3 is the third least significant bit of the number a.
  • the data are arranged so as to have, in order, a carry bit (c), an unused bit, then a2, al, aO and then b2, bl, bO.
  • the bits are another carry bit, an unused bit, then a5, a4, a3 and then b5, b4, b3.
  • the bits are another carry bit, a carry used during the addition of bit a7 to b7, which is called "mid carry" and is used to indicate a two's complement number overflow, then a8, a7, a6 and then b8, b7, b6.
  • the least significant bit aO is added to bO, and the result is put into carry c and bO, according to the series of operations in the program described in Figure 21, which illustrates the special treatment of the least significant bit and most significant bit.
  • the significance of this organization of data is that four of the instructions shown sequentially above can be executed in the time it takes to execute one such instruction if data are read from a row of the bit array into the sense amplifier, operated on, and then written back into the row of the bit array.
  • Any operation that can be defined in terms of a truth-table can be implement ⁇ ed using operations C, CO, CNA, and MW; the rows of the truth table where the result (number b) or the state (carry c) change are coded into a pair of instructions, a C instruction is used to identify the input pattern, and the MW instruction is used to write the changed pattern.
  • the two instructions C MW and C MW can be replaced by the instruction sequence C CO MW.

Abstract

The invention is a dynamic storage device (Figs. 3-10) requiring periodic refresh, and including logical operation circuitry (e.g., 21 and 24 of Fig.4) within the refresh circuitry (19 of Fig. 4). The individual storage positions of the storage device are periodically read by a refresh amplifier (RE of Fig. 4), and then a logical operation is performed on the refresh data before the data is applied to the write amplifier (WR of Fig. 4). This operation allows implementation of associative data base searching by cyclically executing data compare and other logical operations within the refresh circuitry. Storage systems for use with such devices (e.g., Fig. 12) are also disclosed.

Description

PATTERN SEARCH AND REFRESH LOGIC IN DYNAMIC MEMORY
TECHNICAL FIELD The invention relates to refreshable dynamic associative memory storage devices and systems incorporating such devices.
BACKGROUND ART Referring to Fig. 1, a schematic of a typical construction of a dynamic random access memory (DRAM) is shown. During the write mode, data to be written into the DRAM is applied to the input and amplified by write amplifier WR. Switches S2 and S3 are open, switches SI and S4 are closed, and capacitor C is either charged or discharged according to the status of the input data, and amplified by write amplifier WR. During the read mode, switches SI, S3 and S4 are open, and switch S2 is closed so that the voltage on capacitor C is compared to a reference voltage Vref by read amplifier RE. According to the difference determined by read amplifier RE, either a binary "one" or "zero" is transmitted to the output of the DRAM. When in the data- hold mode, all the switches SI, S2, S3 and S4 remain open so that the stored charged remains in capacitor C. However, due to the unavoidable presence of leakage resistance R, the capacitor charge will gradually dissipate. To compensate for this, a process called refreshing must be periodically used in the DRAM. To achieve refreshing, all three switches SI, S2 and S3 are closed, switch S4 is open, and the binary state detected by read amplifier RE is amplified by write amplifier WR and reapplied to storage capacitor C. Switches S3 and S4 thus form a multiplexer which selects either input data or refresh data for application to write amplifier WR. The dashed line in Fig. 1 represents the boundary of an integrated circuit chip. Elements within the dashed line are typically integrated on a single chip.
In practice, a DRAM includes a great number of storage capacitors C arranged in matrix of array form along with row decoder and column decoder circuitry. The storage elements of the array must be periodically refreshed, and are typically refreshed on a row-by-row basis. The row decoder and column decoder circuitry, as well as the read amplifiers and write amplifiers, are typically integrated within the same semiconductor chip with the individual storage elements of the array. Fig. 2 is a block diagram of a type HM 511000 dynamic RAM available from Hitachi America, Ltd., which includes eight 128K memory cell arrays 10 connected through read /write amplifiers 11 to I/O bus 12. Individual rows and columns of the cell arrays 10 are selected by row decoder 13 and column decoder 14, under control of address data contained on address bus 15 via row address buffer 16 and column address buffer 17, and under control of row access strobe signal RAS, and column access strobe signal, CAS. Reading and writing is controlled by read /write input, WE, and serial input and output data is buffered in I/O buffer 18. Once again, elements within the dashed line in Fig. 2 are integrated together on a single chip.
When logical operations are required to be performed on data stored in a DRAM, data must be read from the desired storage elements of the array and applied to the single-bit serial output of the DRAM for application to logic circuitry external to the integrated circuit chip. After the logic function is performed, the result is applied to the single-bit input of the DRAM for buffering and storage in desired storage elements of the array. Such operation of a dynamic RAM is found, for example, in single-instruction-multiple-datastream (SIMD) computers wherein a single logical operation is performed on a plurality of data elements. Such SIMD operations may be performed cyclically in order to trade off cost for speed. During cyclic operation, the same operation is performed in one or more data cells, and within each data cell, the operation is performed identically on one or more data words which are processed sequentially. However, as mentioned above, periodic refreshing of the dynamic RAM is necessary in order to avoid dissipation of the data indicating charge on the storage capacitor. This refreshing is generally interleaved with any logical operations performed on the data, which necessarily limits the speed at which cyclic logical operations can be performed on data stored in a dynamic RAM.
DISCLOSURE OF THE INVENTION The present invention avoids the drawbacks of the prior art by incorporating logic circuitry within the refresh circuitry of a dynamic RAM which allows perfor¬ mance of cyclic logical operations on stored volatile data, concurrent with the periodic refresh of the volatile data. Thus, all data being refreshed is processed by a simple logical unit in the refresh circuit. This combination of refresh with logical operation eliminates the need for a separate refresh cycle by performing the logical operation during the refresh cycle, and greatly improves the cyclic processing speed of logical operations performed on stored data. The present invention has particular application in data base or associative systems wherein all stored data is accessed and tested, for example, when conduct¬ ing data string searches. In such a data base searching system, a data comparator is inserted into the refreshing loop, and is used to compare target data with data being cyclically refreshed in order to simultaneously perform data refresh and target data searching.
The inventive memory circuit can be used as a buffer for other, non-volatile storage devices, such as hard disks, thereby allowing parallel searching of the stored data. BRIEF DESCRIPTION OF DRAWINGS The novel features of this invention are described with particularity in the claims. The invention, together with its objects and advantages, are better under¬ stood after referring to the following descriptions and accompanying figures. Figs. 1 and 2 are schematic representations of prior art dynamic random access memories.
Fig. 3 is a dynamic random access memory employing logic in refresh circuitry, according to the present invention.
Fig.4 is a dynamic random access memory employing search logic in the refresh circuitry, according to the present invention.
Fig. 5 is a block diagram of a one-megabit dynamic random access memory employing logic in refresh circuitry according to the present invention.
Fig. 6 is another block diagram of a dynamic random access memory employ¬ ing logic in refresh circuitry according to another embodiment of the present invention.
Fig. 7 is a detailed block diagram of a word cell of Fig. 6. Fig. 8 is a chain priority circuit usable in the present invention. Fig. 9 is a priority tree circuit usable in the present invention. Fig. 10 is a node in a data bus and priority tree usable in the present invention. Fig. 11 is a block diagram of a module of a system according to the present invention that ust»_> several dynamic associative addressable memories as disk buffer.
Fig. 12 is an example block diagram of an embodiment of the module of Fig. 11.
Fig. 13 is an example timing diagram for the transfer of data from di«k to memory in the embodiment shown in Fig. 12.
Fig. 14 is an example block diagram showing the bus contacts of the system in a particular state.
Fig. 15 is a block diagram illustrating a portion of the circuitry of Fig. 12, including principally the portion that relates to searching data in the memory of the invention.
Figs. 16a and b illustrate three alternative systems, each of which contains several modules that can consist of the embodiment of Fig. 12 or another system in accordance with the invention, arranged with alternative connecting mechanisms. Fig. 17 is a diagram illustrating one possible storage structure within the memory of the invention.
Fig. 18 is an example flowchart illustrating a program for implementing a Boolean search using the embodiment of the invention described in Figure 17. Fig. 19 is an example flowchart illustrating a program for implementing a string search using the embodiment of the invention described in Figure 17.
Fig. 20 is an example flowchart illustrating a program for implementing a proximity search using the embodiment of the invention described in Figure 17. Fig. 21 is a sample program illustrating an efficient way of performing
Boolean arithmetic in the memory of the invention.
MODES FOR CARRYING OUT THE INVENTION Referring to Fig. 3, a one-megabit volatile memory employing logic-in-refresh according to the present invention is disclosed. The memory is organized within the chip as a 512-row, 2048 bit-per-row memory in which an entire 2048-bit row is read, one after another, in each refresh cycle. The refresh row unit length might be different from the length of the associative memory word unit that can be searched or output as a unit. Either the entire 2048-bit row, or a fraction of the 2048-bit row, can be considered a single word in an associative memory. For example, referring to Fig. 3, if an 8-bit byte is chosen as the length of the associative memory word in a one-megabit memory, 256 cells 19 result, each having a 512-word memory array 20, 8-bits-per-word. Herein, a "word" is a unit of data that is considered by the user as a whole, a "row" refers to a unit of data read or written as a whole, and a "byte" is that portion of a row contained in a word. According to the present invention, each cell 19 includes logic circuitry, such as comparator 21, to operate on the data as it is sequentially and cyclically read out, refreshed and written back into memory. During a refresh operation, a 9-bit counter, either external or internal to the chip, provides 512 consecutive row addresses, one address per memory refresh cycle. Thus, all words of each cell 19 of the memory are read in 512 memory refresh cycles and are searched during that time. For one mode of operation, the bottom byte of each cell 19 is logically linked to the top byte of the next cell 19 within a single chip by bus 22. In another mode of operation, each word, as a sequence of 512 bytes, is considered separately. Elements within the dashed line are integrated together in a single semiconductor material integrated circuit chip. A plurality of chips can be cascaded by logically linking the bottom word of the last cell in one chip to the top of the next cell in the neighboring chip by bus 23.
The configuration of each cell 19 is shown in more detail in Fig.4. Referring to Fig. 4, data stored in each byte can be, for example, ASCII characters in text streams, which are each 7 bits wide together with a mark bit, which is the 8th bit. Initially, all mark bits are cleared, and are subsequently set and cleared to mark the results of a search. Each byte is sequentially read by the 8-bit wide read amplifier, RE, and the 7 data bits are applied to comparator 21 where the read 7-bit byte is compared with the 7-bit comparand stored in comparand register 24. A comparand is loaded into comparand register 24 through I/O bus 12.
The output of read amplifier, RE, is also applied to multiplexer 25 along with data from I/O buffer 18 through I/O bus 12. The output of multiplexer 25 is applied to 8-bit write amplifier, WR, along with the single-bit (mark bit) output of comparator 21. Read amplifier, RE, is also connected to I/O bus 12 in a known manner throug1 "i-state buffers, or the like, to enable outputting of data. Thus, according to th present invention, comparator 21 and comparand register 24 are added to the preexisting refresh circuitry of a DRAM illustrated schematically in Fig. 1 (note that switches S3 and S4 illustrate the function of multiplexer 25). All compo¬ nents are integrated on the same semiconductor material integrated circuit chip.
In operation, to search-and-mark byte, a byte-wide comparand is simultaneous¬ ly broadcast to all cells 19, and stored in respective comparand registers 24. Then, the 512 bytes in memory array 20 of each cell 19 are each cyclically read, refreshed and rewritten. The 8th bit of each byte stores the result of any match with the comparand in comparand register 24. The results of the match are stored in 8th bit of the next byte in memory array 20 adjacent and below the one that the comparand matches. This is repeated for all 512 bytes in each cell 19. The result of a search on the last byte of a cell is effectively stored in the first byte of the adjacent cell through bus 22.
If all mark bits are cleared, and the comparand searches for a 7-bit character and a zero as the 8th bit, an unconstrained search for a character is done. If the comparand searches for a character and a "1" in the 8th bit, a search for the character will then match the comparand only if the previous byte stored in memory array 20 matched the previous comparand searched. Thus, a string of characters can be searched for, one character in each successive refresh operation.
A variation of this operation is to continue to mark bytes in memory until a match is found. In this variation, once the 8th bit (mark bit) of a byte has been set, as bytes continue to rotate through the refresh circuitry, the 8th bit of all subsequent bytes are set until a match for the next comparand (for example, an end-of-text character) is found. This variation is used to mark the remainder of a target string of characters, once a character within the target string is found, and facilitates output of or rewriting the target string.
The output of the result of a search from a single cell can simply be read out as the character into I/O buffer 18 if the 8th bit is set. As a byte passes the refresh logic, if the 8th bit is set, the byte is presented by read amplifier, RE, to I/O buffer 18, and the 8th bit will then be cleared. In a multiple cell system, if two cells have the 8th bit set in the same word in each cell, a priority circuit connected to the cells will prevent all but one of the outputs from feeding I/O buffer 18, and clearing the 8th bit. Only one byte will be output at a time, and remaining bytes will be output in later refresh cycles.
After power is applied, a means to fill memory with identical bytes is used to empty the memory. To fill an empty memory with a string of characters, a ripple priority mechanism can be used to modify the basic search and match mechanism so that only the first byte that satisfies the search part is modified, but no other bytes that satisfy the search are altered. Within a single cell, a flip-flop is set as the bytes in the cell are being searched, and is cleared after a successful search is detected. The byte is modified in a successful search only if the flop-flop output is "1". One byte can be written in each refresh cycle by this means. In a multiple cell system, a ripple priority circuit is also used between cells. The priority circuit causes all flip-flops except the flip-flop in the prior cell to be cleared. This prioritized context-addressing mechanism is needed to fill memory with different data in each byte. The above-disclosed additional search logic can be easily implemented in existing dynamic random access memories by using preexisting memory cells, row decoders, read amplifiers, write amplifiers and multiplexers but removing the column decoders and inserting search logic including the comparator and comparand register into the read/write circuits. If this is done, for example in the Hitachi HM511000 (a one-megabit DRAM), the entire memory can be read, searched and rewritten in approximately 60 microseconds (the time required to refresh the entire memory). Such a memory is shown in Fig. 5 and illustrates placement of search logic 26. If a system incorporates a number of memory chips, and a string of characters is searched, the time required to search all data in memory will remain 60 microseconds per character searched.
Although content search and update, input and output are the logical operations herein disclosed, it will be understood that other logical techniques can also be implemented. For example, the various techniques used for searching and updating a data base, such a relational data base, as disclosed in "Architectural Features of CASSM; A Context Addressed Segment Sequential Memory," Proc. 5th ISCA, pp 31-38, April 1978, authored by the present inventor, and related work on the CASSM system cited in that paper, can be implemented. Other modifications, additions, or deletions can also be made without departing from the scope of the invention. For example, the present invention is equally applicable to memories, only a portion of which is dynamic memory.
The invention thus allows associative searching of a dynamic memory integrated circuit with a redesign of only a small part (removing column decoders, and adding comparators and comparand registers to the refresh circuitry) of a preexisting chip memory. This results in low development cost, little if any increase in manufacturing cost, and utilization of existing DRAM facilities without the need for extensive retooling. Use of the invention will allow associative searching of very large data bases stored entirely in fast dynamic memory with very little increase in cost over an unmodified dynamic random access memory.
Figs. 6 and 7 illustrate the organization of a semiconductor chip incorporating another embodiment of the present invention. As mentioned above, it is important to only slightly modify the architecture of an existing DRAM chip (Fig. 1), keeping the memory array intact, so that the cost of modifying the design of an existing DRAM chip to produce the present invention will be small relative to the cost of designing a full chip.
Referring to Fig. 6, in a refresh operation, one column is refreshed sequential¬ ly, one bit after another, using one sense amplifier. The data in the column, stored in column cells 27, are collected together in groups of four pairs of column cells each to form word cells 28. Thirty-two word cells are arranged within a pair of existing DRAM subarrays 29, and the chip includes eight pairs 29 of DRAM subarrays. Thus, in a one-megabit memory, each column cell includes 512 bits.
As explained above, in a refresh operation, one column is refreshed sequential¬ ly, one bit after another, by one sense amplifier. For simplicity, as shown in Fig. 6, the eight column cells 27 forming each word cell 28 can be considered as four columns in each of two neighboring DRAM subarrays, thereby forming the four- column, two-row rectangle shown to read or write one byte at a time. Of course, any number of column cells per word cell can be used. Connecting each of the column cells is a data bus 31. Referring to Fig. 7, a detailed block diagram of a word cell used in Fig. 6 is shown. In Fig. 7, eight identically configured column cells 27 are presented. For clarity, only the upper left column cell 27* in Fig. 7 is described. However, it is understood that each of the other seven column cells in Fig. 7 are configured identically. Each column cell 27 includes a mask flip-flop 32 including storage capacitor 33 which stores a mask bit for each refresh cycle. Also included in each column cell 27 is a physical 512 bit memory subarray 34 and dedicated sense amplifier 36. In this embodiment, each column cell 27 also includes a four transistor comparator 30. The output of each word cell is commonly connected in a wire-OR configuration to a dual-rank (master slave) set-clear match flip-flop 37 which includes two NOR gates 38 and 39 whose inputs are set and clear inputs of flip-flop 37. Capacitor 41 within flip-flop 37 is the slave of dual-rank flip-flop 37.
As noted earlier, a refresh cycle is a period of time required to refresh one bit of one column with one sense amplifier, and is performed simultaneously for each column in the memory. A refresh cycle is divided into a row address strobe time (TRAS), where row address strobe is asserted, and a column address strobe time (TCAS), where column address strobe is asserted. TCAS is distinct from and after TRAS. Also as noted earlier, a refresh operation is the period of time required to refresh all bits within a single column.
According to the present invention, during TRAS, a mask is sent on data bus 31 and is stored in mask flip-flop 32, and during TCAS, data is sent on data line 31. This is directly analogous to the time-multiplexing of row address and column address in a convention DRAM. In a refresh operation, the large (4096-bit) data and mask values are time-multiplexed on 8-bit data bus 31. For example, if in a refresh operation, the data value is a 4096 hexadecimal bit value of the form, for example, 1234..., and the mask value is a 4096 hexadecimal bit value, for example, 5678..., then in the first refresh cycle in the refresh operation, hexadecimal 56 is sent during TRAS, and hexadecimal 12 is sent during TCAS. In the second refresh cycle of the refresh operation, hexadecimal 78 is sent during TRAS, and hexadecimal 34 is sent during TCAS, and so forth. In all, 512 pairs of bytes are sent sequentially as they are used to search or write data as it is being refreshed inside each word cell. In a write step, the pair of bits sent in the same position in the data and mask bytes during TCAS and TRAS will be "10" when the comparand value is a "0," "11" when the comparand value is a "1," and "00" when the comparand value is a "don't care." In a compare step, however, in order to reduce comparator logic, the pair of bits sent during TCAS and TRAS will be "01" when the comparand value is a "0," "10" when the comparand value is a "1," and "00" when the comparand value is a "don't care."
According to the present invention, when the circuitry of Fig. 7 is added to the refresh circuitry of a DRAM, an associative memory structure is presented that allows the associative searching of data within the memory as it is being refreshed.
Specifically, a No-op instruction, which does nothing but refresh the memory for one refresh operation, is accomplished by amplifying data with sense amplifier 36 and writing that data back into the memory cell 34 without modification. No data go to or from data bus 31.
During a Word Compare instruction, a data and mask value bit is used for each column, and each column is searched for all words in all memory chips during one refresh operation. A match bit for a word is set if for each column that the mask bit is 1, the data bit is the same as the bit in the word and column. More specifically, for a Word Compare instruction, match flip-flop 37 is set to "1" at the beginning of the refresh operation. In each refresh cycle, the mask and data are sent, the left bit being sent first during TRAS and stored in mask flip-flop 32 in each bit cell, with the right bit being sent during TCAS. If the word has a" 0" and the first bit is a "1," then match flip-flop 37 is cleared. If the word has a "1" and the second bit is a "1," then match flip-flop 37 is cleared. The control signal Compare is asserted at the end of the refresh cycle when comparator 30 has stabilized, to clear match flip-flop 37 if a mismatch is detected. Data in a cell are refreshed during a Word Compare instruc- tion.
During a Word Write instruction, three-input AND gate 42 is utilized. The mask data stored in mask flip-flop 32 and sensed data are sent during TCAS and are used to rewrite data in the cell. If in a word cell the Mask and Match bits are both high, data are rewritten into the cell. Otherwise, data in the cell are refreshed. During a Word Output instruction, during TRAS, a high signals is sent on data bus 31 so as to output all bits. During TCAS, the Word Write instruction is asserted and data from sense amplifier 36 are applied to data bus 31 and are also refreshed in the cell.
For the next set of instructions, words are considered linearly ordered (top to bottom) and prioritized (higher words are considered to be of higher priority). In addition, the first of these instructions take advantage of the word structure men¬ tioned earlier wherein the most significant bit in a word is a mark bit distinct from the character bits of a byte.
During a Character Compare instruction, the master of match flip-flop 37 is initially set and the Word Compare instruction is executed on the whole byte to clear match flip-flop 37 if there is a mismatch where the mask bits are "1." Then, the slave of match flip-flop 37 is written into the mark bit (high-order bit) of the next byte using extra transistor 35 (by delaying the signal from the slave match flip-flop 37 in one refresh cycle time), and finally, the master of match flip-flop 37 is copied into the saved flip-flop. Data are refreshed in a Character Compare step.
In a Word Compare Up instruction, the Word Compare instruction is executed during each refresh cycle of a refresh operation. The contents of the match bits are then shifted upward one bit logically at the end of the refresh operation. Similarly, a Word Compare Down instruction executes the Word Compare instruc- tion during each refresh cycle of a refresh operation, and then, at the end of the refresh operation, the contents of the match bits are shifted downward one bit logically. A Word Compare Prior instruct on executes the Word Compare instruc¬ tion during each refresh cycle of a refresh operation, and then clears the match bits downward from the first one that is set at the end of the refresh operation. To execute a Word Output instruction, for the prior word cell having the match bit set, one refresh operation is used to output one word, and at the end of each refresh operation, the match bit of the word ouputted is cleared. The Word Output instruction is repeated until all match flip-flops are cleared. To execute a Word Write instruction, for the prior word cell having the match bit set, for each refresh operation, a word is written and the match bit is cleared. The operation is repeated until all match flip-flops are cleared.
A typical instruction begins with the transmission of an appropriate instruc- 5 tion code on the data lines during a period of time that the memory executes a No-op cycle. As mentioned above, during each refresh operation, 512 refresh cycles occur, and the instruction is executed during each of the refresh cycles.
The memory requires comparand data to be supplied very rapidly. Data to and from the memory could be supplied by a video RAM, or by use of a technique
10 known as "shuttle memory," wherein a pair of static RAMs are connected by multiplexers to the associative memory and a conventional host computer so that when one is connected to one the other is connected to the other. As the computer rewrites data in one static RAM, a fast counter addresses the other to read or write consecutive words in it to or from the associative memory during one refresh
15 operation. At the end of the refresh operation, the pair are exchanged, thus shuttling the static memories to and from the associative memory and computer.
To facilitate multiple cell operations, particularly during execution of the Compare Prior, Write, and Output instructions, a priority line is required. Priority selection can be understood in a chain of OR gates, as illustrated in Fig. 8. A request
20 causes a "1" to ripple through the OR gates leftward, causing any request there to be denied. This priority chain is implemented according to the preferred embodiment using a lookahead binary tree for speed and fault-tolerance. Fig. 9 shows a two-level tree. A deny equals "0" is put into its root, and Request and Deny of the leaf nodes are connected to match flip-flops 37 (Fig. 7). The Compare Prior instruction can clear
25 non-prior (denied) match flip-flops. The effective match value used in Write and Output instructions has to be true in only one cell, the prior cell. Three-input AND gate 42 cancels a match in non-prior cells 'in input Cl is asserted.
A priority network for data bus 31 is shown in Fig. 10 and is a binary tree of bidirectional bus drivers controlled by the priority tree of Fig. 9. The root of the
30 priority tree of Fig. 10 is connected to an external controller having a shuttle memory, and the leaves are connected to word cells. When data is sent to the cells, all leaf- ward directed bus drivers are enabled and all root-ward directed bus drivers are disabled. When data are collected from the cells, the opposite is true. The match value determines the prior cell, which outputs data. Note that the priority tree of Fig.
35 10 can be used to guide data in data bus 31.
Referring once again to the circuit of Fig. 7, appearing in the lower, right-hand corner thereof is a simple error-detection circuit, which uses one parity bit for all of the data bits in a word cell. All of the column cell data lines are connected and input to exclusive-OR gate 43. At the beginning of a refresh operation, dual-rank flip-flops PI and P3 are initialized to zero, and early in a refresh cycle, flip-flop P3 is loaded with the exclusive-OR of all eight data bits that are read from memory along with the old value of P3. Later in the refresh cycle, flip-flop PI is loaded with the exclusive- OR of all eight data bits that are written into memory along with the old value of flip- flop PI. At the end of a refresh operation, flip-flop PI contains the parity of all the data bits that have just been stored in the cell's memory. The output of flip-flop PI is stored in flip-flop P2. At the end of a refresh operation, flip-flop P3 contains the parity of all the data bits that have just been read back from the cell's memory. The parity computed and stored in flip-flop P2 should match the parity computed and stored in flip-flop P3. If the computed parity in P2 differs from the stored parity in P3, there is a parity error in the data. The error signal is applied to the master of match flip-flop 37 when the match bit is stored in the slave of match flip-flop 37 at the end of a refresh operation. Faulty cells can be handled by pruning the trees used for next neighbor connection in the bus. By asserting the fault line (Figs. 9 and 10), data bus 3' = pruned to isolate an error in a sub' e, forcing open both tri-state drivers in > link above the subtree, and the priority iree is pruned in a node above the faulty tree, forcing a request of "0" into the rest of the tree. It is believed that the cost of the modified associative DRAM chip according to the present invention will be similar to the cost of current DRAMs. A typical DRAM sense amplifier has six transistors, and its column address decoder has four transis¬ tors. Removing the column address decoder, as required by the present invention, and adding one bit of mask, a comparator, and a parity checking exclusive-OR gate (together implemented with approximately eleven transistors), slightly increases the sense amplifier size. According to the present invention, each word cell has a match flip-flop, parity checking flip-: "tops, and associated logic requiring approximately 35 transistors, and for each word cell there is a node of the priority tree, requiring approximately six transistors. Amortizing this word cell logic over the total number of sense amplifiers in the word cell, on the order of five additional transistors would be required per sense amplifier. Thus, the pres^ ' invention would require approxi¬ mately 24 transistors per sense amplifier, there* only slightly increasing the required integrated circuit chip area. Moreover, since address pins are omitted, a chip embodying the present invention could be packaged in an 18-pin package (VDD, VSS, RAS and CAS clock and a signal to indicate the start of a refresh operation, a write signal to control the data bus direction, two shift pins, request- deny signals, and eight data lines). Thus, according to the present invention, searching of an associative DRAM is accomplished using circuitry integrated within the refresh circuitry on the same integrated circuit chip as the memory array. That results in highly parallel logical operations being performed on data in memory cell arrays, in addition to using the high-bandwidth data paths that exist in refresh circuitry. 5 The above-described circuit can be used in a storage system as a buffer to facilitate the searching of data that are read from a non-volatile storage device, such as a hard disk. Use of such a system permits parallel searching, shortening the time needed to access and locate information that had been read from the disk. Although the following description refers to one particular kind of hard-disk system, the
10 invention has equal application with any kind of storage system, including tape drives, optical storage, other kinds of hard disks, floppy disks, so-called "flash" memories or any other kind of non-volatile storage device, presently existing or later developed, and whether or not buffered with intermediate volatile storage.
Figure 11 illustrates a hard-disk embodiment of the storage system of the
15 invention. Hard disk 51 contains a series of disk surfaces or platters 51a, 51b, through 51n, on which a series of heads 53a, 53b, through 53n record data on, and read data from, tracks and sectors arranged in any known design. Any number can be used for the subscript "n." One type of high-capacity disk 51 is the 1.5-gigabyte Winchester hard drive manufactured by Maxtor Corp., which has n=19 storage
20 surfaces, but drives with greater or lesser capacity or number of platters and heads are suitable. Switchable bus 61 connects disk drive 51 to computer 65 and memory banks 73 and 75, which are described in more detail below. A second switchable bus 67 connects computer 65 to memory banks 73 and 75 and is also described below. Heads 53 are controlled by hard disk controller circuitry 55a, 55b, through
25 55n, shown in Figure 12. Controller 55a can comprise a disk controller of known design, which contains read-write logic and head-positioning control, often integrat¬ ed onto a single chip. Controller 55a can make DMA requests and can control a stepper motor or other head-positioning device 57, which may also contain an indexing sensor. Thus, disk drives of standard design include platters 51, heads 53,
30 controller 55a, and head motor 57.
By contrast, the system of the invention also includes additional controllers 55b through 55n, each of which is associated with and controls one of heads 53b through 53n. The additional controllers must be capable only of governing the read and write operations of their associated heads. The positioning and DMA-request
35 functions of a standard controller are performed in the system of the invention entirely by controller 55a, and controllers 55b through 55n act as "slaves" to the master controller 55a. Controllers 55b through 55n need not include, therefore, all of the circuitry of master controller 55a, but it may be economically desireable to use mass-produced controllers for each of controllers 55, in which case the control signals outputted by controllers 55b through 55n can be disabled or ignored.
In sum, the disk portion of the invention utilizes a standard disk drive, modified to contain additional controllers 55b through 55n. Those controllers perform the added function of reading or writing data in parallel from a "cylinder," which for the purpose of this patent means the same track and sector located on the set of all of the platters 51a through 51n.
For purpose of the invention, it is preferable to store data on the disk in a
"striped" fashion, in which adjacent elements, such as a byte, are recorded on adjacent platters within a cylinder. For example, byte number one would be located at a first address on platter one of a cylinder, byte two would be located at the same address on platter two of the same cylinder, byte n would be located at the same address on platter n of the same cylinder, byte n+1 would be located at the next address on platter one of the cylinder, etc. The elements can comprise a single bit, several bits, or several bytes, instead of the single byte of data as described above.
Such "striped" data arrangements take full advantage of the parallel capabilities of the system of the invention.
Figure 13 is a timing diagram showing an example timing for extracting data from disk 51. At the beginning of the cycle, controller 55a positions the head and each of controllers 55 read a byte's worth of data and store it in temporary registers
59a through 59n (shown in Figure 12) for an entire cycle. Each byte is then placed on multi-line data bus 61 sequentially from those registers until the cycle is complete.
Other arrangements are contemplated, including systems that utilize staggered reads. The process is simply reversed when the system is used to write data back onto disk 51.
Returning to Figure 12, computer 65 controls switch 63 to direct the data on bus 61 to one of two memory banks, Bank A shown at numeral 73 or Bank B shown at numeral 75. Two memory banks are used in the embodiment shown to allow the system to fill the second bank with data while computer 65 interrogates the first bank. Although two banks are shown, the invention can be practiced in a simplified version with only a single bank or in a more complex version with more than two banks.
In the embodiment shown, computer 65 contains a microcontroller, a DMA controller, a suitable non-volatile program store, and a suitable memory such as a quantity of static RAM. Those elements are integrated in some devices, such as the
"Business Card Computer" sold by Motorola, which contains a Motorola 68340, but other devices or combinations are suitable. Computer 65 alternates contact between data bus 67a leading to memory bank A and data bus 67b leading to memory bank B. The arrangement is illustrated in Figure 14, in which the system is illustrated in a particular state. Disk 51 in Figure 14 is shown filling bank B 75 through bus 61b. Meanwhile, computer 65 interrogates bank A 73 through bus 67a.
Bus control is accomplished by altering the state of a number of tristate drivers, shown in Figure 12 as small triangles. The following specific parts are suitable: the 244 unidirectional tristate bus driver, the 245 bidirectional tristate bus driver, and the 373 latch or register with tristate output. As one memory bank reaches its capacity, computer 65 switches buses 67 to contact the filled bank, flips switch 63 to connect controller 55a to the other bank, and switches bus 61 to permit data to begin filling the other bank.
Figure 15 reproduces a portion of the circuitry of Figure 12, isolating only one of the memory banks 73 and 75 and its associated bus, namely the bank and bus in contact with computer 65 at a particular time. The example illustrated in Figure 15 shows computer 65 in contact with bank 73 along data bus 67a. The other memory bank and bus, and the disk elements and bus 61 loading it, are omitted in the simplified version of Figure 15.
Each bank 73 and 75 contains one or more dynamic associative memory devices ("DAAM"), preferrably as described in detail in connection with Figures 3 through 10, above, or another form of content-addressable memory, in which the data may be searched for a match while in the memory. Figures 12 and 15 show four DAAMs per bank, labeled in Figure 15 with numerals 69 and 71a through 71c. In the sample embodiment of Figure 15, a tree topology connects the DAAM to implement a look-ahead priority circuit, where DAAM 69 serves as the root and acts as one leaf of a tree, with DAAMs 71 as other leaves. The tree structure has the same purpose and benefits as that used inside the DAAM chip, described in connection with the description of Figures 7 through 10, above. Also, the priority circuitry of Figures 12 and 15 serves the same function as the similar circuitry within the chip shown in Figures 7 through 10.
DAAMs 69 and 71 in Figures 12 and 15 can be replaced with a single DAAM device, depending on the access rates of disk 51 and DAAM 69 and the number of platters 51a through 51n. In particular, one DAAM chip such as that shown at numeral 69 can receive data from at most the number of controllers 55 equal to the integral portion of the ratio of the bandwidths of DAAM chip 69 to controller 55. For example, the one-megabit DAAM described above in connection with Figure 2, which is designed to use the Hitachi chip as its base, has a cycle time of about 120 nanoseconds across an eight-bit bus, which results in a bandwidth of 8.3 Mbytes/sec. The controller on the Maxtor hard disk referred to & ove can read data at a rate of about 2.0 Mbytes /sec. Thus, each DAAM chip of the sort identified above can be fed by at most four controllers of the sort used in that kind of disk drive. Therefore, the 19-platter Maxtor drive would require at least five DAAM chips. A DAAM chip that operates 2.3 times as fast and uses a 16-bit bus, however, could be fed by all of the 19 platters on the Maxtor drive, without the need for a second DAAM device in the bank.
There is a second constraint, however, on reducing the number of DAAM chips, namely the desire to avoid slowdown of the system by having sufficient storage capacity. It is most efficient to read entire cylinders from the disk at once, but to do so requires that the bank contain sufficient storage capacity. Even if there is sufficient bandwidth available to fill the DAAMs, unless the DAAMs contain enough capacity, the system designer would likely wish to add extra DAAMs to each bank rather than slowing down the reading operations by reading only part of the cylinder into the bank on each step. For example, a preferred system design for the above- referenced Maxtor drive would require enough DAAMs in each bank to store the approximately seven megabits on each of the drive's cylinders, or eight units of a one-megabit DAAM. If those DAAMs operated only as fast as the ones described above using the Hitachi chips, however, the system would be bandwidth constrained. A preferred system design would be neither capacity constrained nor bandwidth constrained, allowing the user to upgrade the disk drive to one having somewhat faster output speed or somewhat larger cylinders, without replacing the DAAMs or associated circuitry.
If a number of DAAM chips are used in each bank, the data on disk 51 can be arranged in a staggered fashion across disk channels, where each disk channel is defined as one DAAM chip, the controllers to which it is connected, and the platters controlled by those controllers. In that alternative arrangement, data would be arranged with the first byte at a given position on platter one of a given cylinder, the second byte at the same position on platter five of the same cylinder, etc., where the system was arranged with one DAAM chip 69 or 71 controlling four controllers, such as 55a through 55d.
The system of the in ention can constitute one of a number of modules, each ' of which can contain one of the modules as illustrated in Fig. 12 or otherwise in accordance with the system of the invention. Figures 16a and b illustrate several examples of such modular arrangements. In system 81, a larger number of banks containing one or more DAAMs are arranged in a parallel structure. In system 83 of Figure 16a, two computers interrogate one bank of memory each while the disk fills a third bank. An arbitrary one of the microcontrollers, there controller "C," also acts as a disk controller. Any of the microcontrollers can be dynamically allocated to control the disk, but Figure 16a shows only one possible connection, for clarity. Additional computer-memory pairs can be added, subject to disk access constraints. In system 85 of Figure 16b, a number of computers, memory banks, and disks use a multistage interconnect network such as a one or more crossbar switches to imple¬ ment buses 61 and 67 in Figure 12. The interconnection network can be configured to permit any disk or any computer to access any memory bank. Any of the microcontrollers can control any of the disks by communicating through the bus connecting crossbar 67 to crossbar 61. System 85 can also include a configuration in which the multistage interconnect network is arranged in a hierarchical system.
The system of the invention can accomplish standard disk data and housekeep¬ ing operations. Data can be altered by computer 65 while located in DAAM 69 or 71 and written back onto disk 51 upon command, using the reverse of the disk-reading operation described above in connection with Figures 12 and 13. New data can be added to free space at the "bottom" of any of DAAM 69 or 71, and written to disk 51 at any free space on a cylinder. Data tagged for deletion can be deleted by sequential¬ ly reading and rewriting all of the data on the disk, such as at an off-hour. As the data are read, the garbage items are blocked from being placed into memory by issuing a NOP command to the DAAM when a tagged item is read from the disk. Next, the contents of the DAAM are written back onto the disk, overwriting the old data with only data not tagged for deletion, thereby condensing the data and deleting the garbage.
The memory of the invention can be readily used for full-text retrieval operations, particularly although not necessarily in conjunction with the disk-based embodiments shown in Figures 12 or 16. In such uses, it is desireable to arrange the data in a fashion that takes advantage of the parallel search capabilities of the memory.
Although other systems are possible, Figure 17 illustrates an example arrangement of sample data within the memory of the invention. In the illustrative system, each word of memory is divided into a series of atoms, each of which contains one data word, such as an English word, and associated data. For simplicity and avoiding of terminological confusion, it is assumed in connection with the description of Figure 17 that each row of memory stores one logical associative memory "word," although as noted above, that assumption is not a necessary one. The number of atoms in each row is predetermined and set so as not to fill the entire row with the data, thus setting aside some additional storage in each row to serve as "scratch" locations at the end of each row. The example in Figure 3 shows three a* . per word, but it is both feasible and desireable to use a greater number of atorr a wider word.
Each atom contains a fixed number of bits for storing a data word, called a field, and another fixed number of bits for storing data associated with the data word in another field. In the example shown in Figure 17, the associated data includes only the position of the word in the document, but other data can also be stored, some examples of which are described below.
In the coding system illustrated in Figure 17, the memory is loaded by placing a unique code representing the data word in the first field of the atom, in which the code is determined from a table that contains all of the English words that are used in the document. The table can be pre-filled with likely words and additional words added when a new word is encountered. Although binary code words, not letter codes such as ASCII codes, are stored in the memory, the memory map in Figure 17 uses letters for ease of display. As each data word is encountered, the device avoids loading common "stop" words, such as "a" and "the." A counter is incremented, however, for all words, including stop words. For each loaded data word, the contents of the counter is placed in a field of the atom immediately after the loaded data word. The location counter is zeroed at the beginning of each row and copied into a predetermined scratch data field at the end of each row. In Figure 17, the second column in the scratch field to the right of the double line indicating the start of the scratch data, is reserved for the number of data words in the row.
Thus, each atom contains both a data word and an indicator of the position of the word in the data. Because the count is restarted in each row, the position indicator specifies the position of the data word relative the beginning of the row. The scratch field contains the total number of words in the row. It is also notable that the position indicator and the counter is different from the memory location, that is the atom number in the row, because of the deletion of stop words. In addition, the scratch field containing the total number of words can differ from the position indicator in the last atom storing a data word, if there are "stop words" after the last stored data word. For example, in the second line of Figure 17, the last data word, "song," is at position four, but the stop word "a" follows it, resulting in the row counter being set at five.
Data words are loaded into the atoms of a row, in the example of Figure 17, until the end of the row is reached, the end of the document is reached, or one of the data word codes is repeated, whichever comes first, at which point the device begins filling the next row. The embodiment of Figure 17 prevents a row from containing more than one occurence of any data word, which is useful in searches, as shown below.
A "document" can be defined as desired by the user. In one system, for example, a new document can be started at the beginning of each English sentence, and that method is illustrated in Figure 17. In other embodiments, it may be desired to consider documents as actual text blocks, such as a newspaper article, memo, letter, page, or other unit, whether of fixed or variable length. In the embodiment of Figure 17, a column of scratch data is reserved for a flag indicating the top of a document, illustrated in Figure 17 as the first column to the right of the double line, which contains a zero for all rows that begin a new document.
The invention contains circuitry, which is described above, for comparing an associative memory data word with a comparand during a refresh operation, allowing for parallel searching of all data in a row. That circuitry can be used to match any portion of the contents of the atoms in a row. A related instruction searches for matching data words and, if a match is found, transfers data located an offset number of bits away to a specified location. That Compare and Transfer instruction greatly facilitates searching by locating a data word in a row, and if it is found, transferring the position of the data word in the document, relative to the beginning of the row, to a specified location in scratch. Figures 18 through 20 show several examples of problems common to database manipulation and full-text retrieval, illustrating how the invention permits easier or faster solutions to those problems.
Figure 18 illustrates a flowchart describing a sample program implementing a Boolean search using the embodiment of the invention described in Figure 17. The problem is to determine if a series of terms (tl...tn) are located, in a predetermined logical relationship, in a document. The relationship may constitute any combination of Boolean logic, however complex. For example, the user may wish to query the database to find all documents discussing the relationship between music and mathematics but not dealing with computer music, by asking for all documents (whether sentences or memos) that contain the terms "song" or "music" and "mathematics" but not the term "computer."
First, the top of document flag is transferred to a single flip-flop associated with each row, known as the qualify bit, which is used to prevent data from being shifted across document boundaries. Next, the compare instruction is used to determine if the first search term ("song") is present in each row. Each row in which the term is located is marked by setting another flip-flop located adjacent to each row, known as the match bit "M." Next, the M bits for all rows are shifted down and combined with the adjacent M bit with a logical "OR" function, except for those rows in which the Q bit has been set to indicate the top of the document. The shift and combine process is reiterated enough times to exceed the maximum possible number of rows in a document, after which the M bit of the last row of each document will contain an indication of whether the term has been found. The last-row M bits are transferred to a first scratch bit in the scratch field.
The M bits are cleared, and the process is repeated for each search term, resulting in additional scratch bits being set.
Next, the M bits are cleared again, and the scratch bits, including the top-of-document bit, can be searched with a mask to determine if all of the terms are present or not, as specified. In the case of complicated Boolean searches, it may be necessary to break down the search into parts, in which the result of each part is stored in a single scratch bit, and a final comparison is done on the scratch bits set by each of the several parts. The process may be longer but require the use of fewer scratch bits. Because any Boolean comparison can be expressed as the sum of simple Boolean products, the system can be generalized to any Boolean expression, however complex.
Figure 19 illustrates a flowchart describing a sample program implementing a string search using the embodiment of the invention described in Figure 17. A string search represents a database query in which the user wishes to locate a series of search terms in sequence. To accommodate a string search, it is useful to structure the memory so as to have each atom contain, besides the code representing the data word and the position indicator, a mark bit. Such a mark bit would be associated with each data word, therefore, not only with each row.
The program searches each atom, according to the methods and using the instructions described above, and sets the mark bit associated with each atom in which the data word matches the first search term. Next, the program searches for all instances in which a data word matches the second search term and in which the mark bit for the previous atom has been set. That search can be done with a single instruction, because of the device's ability to match any sequence of bits, without regard to whether the bits represent a data word or the associated data. The previous atom's mark bit is cleared, regardless of the outcome, but all instances in which the second search results in a match are marked by setting the mark bit for the atom in which the second search term has been found. Finally, the program repeats the process as described in the second search for the third and all remaining search terms, which results in mark bits being set only for the final data words of each instance in which the search string is located.
Figure 20 illustrates a flowchart describing a sample program implementing a proximity search using the embodiment of the invention described in Figure 17. In a proximity search, it is desired to query the database to locate all documents in which search terms are located within a specified distance from each other in the document.
For illustration, the scratch data fields of Figure 17 are filled with numbers generated from the case in which the program in Figure 20 operates on the data in Figure 17 during an example proximity search, which seeks to identify all instances in which the search term "good" is located within two English words of the search term "song."
First, the program searches the rows of the memory for a match to the first search term, here "good," and places the positional indicator associated with a match in a scratch field, shown as the third column in the scratch data of Figure 17. If no match is found, the first of a five-bit scratch field, shown in the fifth scratch column in Figure 17, is set. The process is repeated for the second search term, here "song," and the result placed in another scratch field, shown as the fourth scratch column in Figure 17. If no match is found, the second of the five scratch bits is set. Next, a limit subprocedure is invoked, to do the mathematics of comparing the two addresses to the limit, which is in the example, two words. The two numbers are subtracted, the difference is compared to the limit, and the third of the five scratch bits is set if the difference is greater than the limit. Next the difference is compared to the negative of the limit, because the two terms can qualify for the search regardless of which one appears first in the document, and the fourth of the five scratch bits is set if the difference is less than the negative of the limit. Finally, if all four scratch bits are unset, a fifth bit is set indicating those rows in which the proximity search has been satisfied, rows two and five in Figure 17.
It is desireable to check for cases in which the two terms are within the desired proximity across a row boimdary, and the program in Figure 20 accomplishes that function also. For all rows other than the top row of a document, which is indicated by a zero in the first scratch column in Figure 17, the following operation is per¬ formed: The number of data words from the row above (col. 2) is added to the location of the first search term (col. 3), and the location of the second search term (col. 4) is shifted from the row above. For clarity, in Figure 17, the results of that operation are shown in columns six and seven of data, although the program would likely reuse columns three and four. The limit test subroutine described above is then repeated, with the outcome shown in the five scratch bits shown in the last column of Figure 17 (although the actual program would reuse column five). The search thus identifies the rows in which the terms are within the desired proximity but one of the terms is at or near the end of the previous row. In Figure 17, an example is shown for row three, in which "song" at the end of row two is two words from the word "good" at the beginning of row three. Finally, the flowchart of Figure 20 includes a third routine in which the data are shifted up, to attempt to locate instances in which a document row contains the second search term within the desired proximity from the first search term in the previous row. A more complex program could shift the data more than one row in either direction, thus allowing proximity queries to use a larger separation distance. The program could use the knowledge of the number of atoms per line to determine the number of shifts needed in the worst case, and perform exactly that number of shifting operations.
The proximity search benefits from the layout rule specified above preventing the same data word from appearing twice on one row. That rule avoids any ambiguities and allows the program to calculate the distance between two words in a row with orily one operation.
More complex proximity searches can contain a plurality of search terms, which would require the program to operate on each pair of terms separately. The complexity of a proximity search, therefore, increases as the combination of the number of terms.
The system of the invention, however, permits more efficient proximity searching by finding the search terms in data more efficiently and transferring the address to memory quickly, which can greatly reduce the search time, even if there were no improvement in the speed of the mathematics needed to calculate and examine the separation distances. Prior proximity searching systems spend most of the search time locating the search terms, rather than verifying that the located terms satisfy the proximity requirements. The ability of the invention to shift data match¬ ing a selectable criterion to a fixed non-data-filled memory location within the row allows uniform row-by-row calculation of desired results.
The system of the invention can handle combinations of proximity, string, and Boolean searches. For example, one may wish to look for all documents containing (a) "George Bush" and (b) "arms" within three words of "hostages" but (c) not dated after the year 1988 or before the year 1984. The system illustrated in connection with Figure 20 can be adjusted to perform an "inner product" search, in which a weighting factor is assigned to some defined characteristic of the data. For example, each atom may include a field containing a "weight code," designed to express the frequency or importance of the data word or some characteristic about it, such as its type (e.g., whether it is a verb, a noun, etc.). Then, any of the above-described searches is run, but a "hit" is weighted by some mathematical function of the weight codes of one or more search term. For example, locating word A near word B can result in three points each time, while locating word D at least once in the document results in two points. Then, a search might request retrieval of all documents that score more than a selected number of points (say, ten), or just a selected number of the highest-scoring, that is "most relevant," documents.
It is useful to store long associative memory words along a column of dynamic memory, which in a database application may constitute a grouping of similar data, rather than along a row of dynamic memory. Row-wise storage, although straight-forward, requires as many pins as there are bits in the associative memory word for the data (and possibly the mask) operand, whereas column-wise organization requires only eight pins for the operand. Much more importantly, the two storage systems differ in the manner in which the associative memory is
"scanned." Only one data row at a time can be read into the refresh amplifiers in the row-wise organization, but each row that has to be searched must be read one after another. To avoid reading all rows requires a "page management" scheduler to read only rows that need to be searched. Column-wise organization, on the other hand, permits associative memory word columns to be read or written and other associative memory word columns to be skipped over selectively, which allows the system to utilize the comparator logic more efficiently on the data. Each atom in the column is in the refresh amplifiers at the time the search term is put on the pins. If the search instruction does not need to reference the other columns, they can be skipped over and not be read into the refresh amplifiers. (Of course, they must be periodically refreshed.) The search instruction can be sped up, if each column is of the same width, by a factor of three.
The above word organization is particularly efficient in databases with . common patterns of data. For example, in a telephone directory database, the first column may contain all last names, the second column, first names, the third column addresses, and the fourth column telephone numbers. The first word of associative memory, therefore, contains all last names, but each person remains in a single row of the memory. That sort of column-wise organization is more efficient because the memory can avoid searching columns that are not involved in the search term, in which there are only "don't care" matches. For example, searching a 100-row database for "Smith" requires operation only on one word, not all four columns, and not the 100 searches that would be required in a row-wise organization. The comparator hardware is used only to search data that must be searched and not wasted searching columns that have all "don't cares." The columns to be skipped can be directly determined by noting which instruction operand's columns have only "don't cares."
DAAM instructions usually scan columns of the associative memory* which are rows of the dynamic memory chip, sequentially (say from left to right), but start the scan at some fixed column number and continue the scan for a fixed number of columns. Some instructions scan in that manner and then jump to another collection of columns to scan them sequentially, and others scan in the reverse direction. It is possible to scan all columns, and it is necessary to do that periodically to refresh all of the memory. The typical instruction refreshes only part of the memory that is actually searched, output, or written.
The routines described above include certain arithmetic or Boolean logic operations, particularly within the associative memory word. For example, the proximity search described above in connection with Figures 17 and 20 requires subtraction to determine the distance between located search terms. It is advanta¬ geous to implement the following system of arithmetic operations, particularly in DAAMs that have been based on DRAMs.
To perform faster arithmetic operations, the preferred circuit can utilize the following instructions. First, the Compare ("C") instruction compares the data, d, with all words in the associative memory, in parallel, in a bitwise fashion. A value, m, represents a mask value for conditional comparing. For each bit that m is not set (not masked), the corresponding bit position of d is compared to the corresponding bit position of each associative memory word. A match flip-flop for each associate memory word is set if the compare was true, otherwise the match flip-flop is cleared. The data, d, and the mask, m, can be of any bit length up to the maximum word size but must be of equal length. Comparing starts from the left of the associative memory words and moves to the right until d (and m) are exhausted. An alternate form of this instruction (as will all instructions that have both data and mask) is to express only one opcode that is a combination of d and m. In this form, the opcode will show 'x' or '?' wherever the mask would be set (masked, and therefore, don't cares). For example, if d=10010110, and m=11000011, the combined opcode would be lOxxxxlO.
Second, the Multiwrite ("MW") instruction writes the value of d into all associative memory words where the match flip-flop is set and then clears the match flip-flop. Again, m is a mask value that allows conditional bit writing. (The terms d and m are as defined as in the Compare instruction. The d and m values can also be collapsed into a single opcode as defined above. )
Third, the Compare-Not-And ("CNA") instruction works as defined for the Compare instruction with the following difference: The match flip-flop is set only if (a) the compare was successful and (b) the value of the match flip-flop was zero prior to the execution of the CNA instruction. In logical terms, Match flip-flop=success of compare AND NOT old Match flip-flop (where NOT means inverse). Again, as with all instruction, the CNA is performed for each associative memory word, in parallel. Fourth, the Compare-Or ("CO") instruction works as defined for the Com¬ pare instruction except that the match flip-flop is set if it was set previously or if the compare is successful. In other words, the match flip-flop is not cleared if the match fails, provided that the match flip-flop was set prior to the execution of the CO instruction. If the compare fails and the match flip-flop was not set, the match flip- flop remains cleared.
The device performs arithmetic operations, such as addition, comparison, and shifting for multiplication and division, on numbers obtained from a search such as a proximity query or inner product query, in a manner that is more efficient, but less conventional, than normal binary arithmetic. A typical DRAM has a "page mode" read operation that permits the system to read a whole row from the bit array storage (which is a column of associative memory in the embodiment discussed above) into the sense amplifiers. Using that function allows the arithmetic operations to be speeded up by about a factor of four by searching and rewriting data while the data are in the sense amplifiers, rather than outputting the same data from the bit array each memory read operation, searching or modifying them, and then rewriting them back into the bit array storage.
However, to efficiently search and modify the data in the sense amplifiers, an associative memory word must have all the bits that will be searched or modified simultaneously available in the sense amplifiers associated with that word. It is preferrable, therefore, to arrange the data so a byte-wide column of the associative memory word is in the eight sense amplifiers. Although eight amplifiers are used for exemplary purposes, it is possible to use any number of amplifiers in each row, as long as there are at least two. Consider adding two numbers, identified here as two nine-bit numbers a8, a7, a6, a5, a4, a3, a2, al, aO and b8, b7, b6, b5, b4, b3, b2, bl, bO, where for instance a3 is the third least significant bit of the number a. In the rightmost byte of scratch memory, the data are arranged so as to have, in order, a carry bit (c), an unused bit, then a2, al, aO and then b2, bl, bO. In the second rightmost byte of scratch memory, the bits are another carry bit, an unused bit, then a5, a4, a3 and then b5, b4, b3. In the third rightmost byte of scratch memory, the bits are another carry bit, a carry used during the addition of bit a7 to b7, which is called "mid carry" and is used to indicate a two's complement number overflow, then a8, a7, a6 and then b8, b7, b6. The least significant bit aO is added to bO, and the result is put into carry c and bO, according to the series of operations in the program described in Figure 21, which illustrates the special treatment of the least significant bit and most significant bit. The significance of this organization of data is that four of the instructions shown sequentially above can be executed in the time it takes to execute one such instruction if data are read from a row of the bit array into the sense amplifier, operated on, and then written back into the row of the bit array.
Any operation that can be defined in terms of a truth-table can be implement¬ ed using operations C, CO, CNA, and MW; the rows of the truth table where the result (number b) or the state (carry c) change are coded into a pair of instructions, a C instruction is used to identify the input pattern, and the MW instruction is used to write the changed pattern. To improve the program's efficiency, if patterns require the same change, the two instructions C MW and C MW can be replaced by the instruction sequence C CO MW. It is understood by those skilled in the art that numerous alternate forms and embodiments of the invention can be devised without departing from its spirit and scope.

Claims

CLAIMS I claim:
1. A data storage and searching apparatus comprising: (a) means for storing data in electronic form; (b) memory means electronically coupled to the storage means for storing a plurality of multiple-bit words in predetermined multiple-bit searchable word storage locations;
(c) means for transferring data stored in the storage means to the memory means; and (d) control means electronically coupled to and controlling the memory means for searching the memory means containing the transferred data for a selected subset of that data.
2. The apparatus of claim 1 wherein the data storage means includes at least one magnetic storage device.
3. The apparatus of claim 1 wherein the data storage means includes at least one optical storage device.
4. The apparatus of claim 1 wherein the data storage means includes at least one multiple-platter storage device.
5. The apparatus of claim 1 wherein the data storage means includes at least one solid state memory device.
6. The apparatus of claim 1 wherein the data storage means includes at least one magnetic tape storage.
7. The apparatus of claim 1 wherein the data storage means includes at least one flash memory device.
8. The apparatus of claim 4 wherein the data storage means includes at least one read head associated with each platter of the multiple-platter storage device.
9. The apparatus of claim 1 wherein the memory means comprises at least one content-addressable memory on an integrated circuit.
10. The apparatus of claim 1 wherein the memory means comprises at least one associative memory on an integrated circuit.
11. The apparatus of claim 1 wherein the data transfer means includes a switchable data bus.
12. The apparatus of claim 1 wherein the control means includes at least an integrated processor circuit and a program store containing at least one sequence of instructions for the processor circuit to control the memory means for locating the selected subset of data.
13. The apparatus of claim 12 wherein the sequence of instructions includes means for generating a comparand.
14. The apparatus of claim 13 wherein the memory means includes means for indicating the memory locations containing a match between the comparand and the data.
15. The apparatus of claim 14 wherein the memory means includes refresh means integrated on a single semiconductor chip for periodically refreshing the data at each location of the memory means, and means for comparing the stored data and the comparand during operation of said refresh means.
16. The apparatus of claim 8 wherein said data transfer means comprises:
(a) means for enabling the read heads of a plurality of the platters at the same time;
(b) means for assembling the data read by the enabled read heads in a predetermined sequence; and (c) means for transferring the assembled data to predetermined locations in the memory means.
17. The apparatus of claim 1 wherein:
(a) the memory means comprises a plurality of banks of solid state memory devices; (b) the data transfer means includes a switchable bus capable of connecting to any selected one of the memory banks; and
(c) the control means includes means for coupling one of the memory banks to the control means and coupling at least one other memory bank to the data storage means.
18. A data storage system comprising:
(a) memory means for storing a plurality of multiple bit words in predetermined multiple-bit word storage locations; and
(b) means for searching the multiple-bit word storage locations for any predetermined pattern of bits of data and for transferring any matching bit pattern to a predetermined location in the memory means relative to its original location.
19. A data storage device comprising:
(a) dynamic data storage means, integrated on a single semiconduc¬ tor chip, for storing a plurality of multiple-bit data words in a plurality of addressable predetermined multiple-bit word storage locations, said locations requiring refreshing to retain data, wherein bits of the words form an array;
(b) addressing circuit means integrated on the chip for periodically addressing each of said locations; (c) refresh circuit means, integrated on the chip and randomly connectable by said addressing circuit means to each of said locations, for periodically refreshing the data stored in each of said locations, wherein said refresh circuit means includes a plurality of sense amplifiers, each of which is associated with one of said locations;
(d) means for reading a plurality of bits of each data word simulta¬ neously into sense amplifiers associated with the data word; and
(e) logic means, integrated on the chip and electrically coupled to the sense amplifiers, for comparing, for each data word, a first subset of bits in the sense amplifiers to at least one predetermined value, and for setting a second subset of bits in the sense amplifiers to a predetermined value.
20. The apparatus of claim 19 wherein the memory means comprises means for storing a plurality of multiple-bit words, each in a row of a bit array, and wherein the refresh circuit means comprises means for refreshing a plurality of columns of the bit array at a time.
21. The apparatus of claim 19 wherein the reading means comprises means for reading a byte of each data word simultaneously.
22. A method of storing and searching on data comprising the steps of: (a) storing electronic data in a data storage device; (b) transferring the data from the data storage device to a plurality of multiple-bit words in predetermined multiple-bit word storage locations of a content-addressable memory; and
(c) searching the content-addressable memory containing the transferred data for a selected subset of that data.
23. The method of claim 22 wherein the storage step includes storing data on at least one magnetic storage device.
24. The method of claim 22 wherein the storage step includes storing data on at least one optical storage device.
25. The method of claim 22 wherein the storage step includes storing data on at least one multiple-platter storage device.
26. The method of claim 22 wherein the storage step includes storing data on at least one solid state memory device.
27. The method of claim 22 wherein the storage step includes storing data on at least one magnetic tape.
28. The method of claim 22 wherein the storage step includes storing data on at least one flash memory device.
29. The method of claim 25 wherein the transferring step includes reading data from a plurality of the platters simultaneously.
30. The method of claim 22 wherein the searching step includes the step of causing the content-addressable memory to compare a comparand with data stored in the memory and indicate the memory locations containing a match between the comparand and the data.
31. The method of claim 22 further comprising the step of periodically refreshing the data at each location of the memory, and wherein the searching step includes the step of comparing the stored data and the comparand during the refresh step.
32. The method of claim 29 wherein the transferring step includes: (a) enabling read heads of a plurality of the platters at the same time;
(b) assembling data read by the enabled read heads in a predeter¬ mined sequence; and
(c) transferring the assembled data to predetermined locations in the data storage device.
33. The method of claim 22 wherein the content-addressable memory includes a plurality of content-addressable memory banks and:
(a) wherein the transferring step includes the step of selecting a first of a plurality of the memory banks as a target for the transferred data; (b) wherein the searching step includes the step of searching a second of the memory banks while the transfer step is being performed; and
(c) further comprising the step of switching the first and second memory banks after a time so that the transferring step uses the second bank as a target and the searching step operates on data in the first bank.
34. A method of storing and manipulating data comprising:
(a) storing a plurality of multiple-bit data words in a plurality of predetermined multiple-bit word storage locations;
(b) periodically accessing each of said locations to refresh the data stored in each of said locations by reading a plurality of bits of each data word simultaneously into sense amplifiers associated with each of said locations;
(c) for each data word, comparing a first subset of bits in the sense amplifiers to a predetermined value; and
(d) setting a second subset of bits in the sense amplifiers to values determined by the results of the comparison.
35. The method of claim 34 wherein steps (c) and (d) are performed a plurality of times, each time with another predetermined value, while the bits remain in the sense amplifiers.
PCT/US1993/011820 1992-12-07 1993-12-06 Pattern search and refresh logic in dynamic memory WO1994014162A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP6514306A JPH08504992A (en) 1992-12-07 1993-12-06 Pattern retrieval and refresh logic in dynamic storage
EP94903480A EP0676081A4 (en) 1992-12-07 1993-12-06 Pattern search and refresh logic in dynamic memory.
KR1019950702379A KR100230767B1 (en) 1992-12-07 1993-12-06 Method of data storage and search for dynamic memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/987,008 US5758148A (en) 1989-03-10 1992-12-07 System and method for searching a data base using a content-searchable memory
US07/987,008 1992-12-07

Publications (2)

Publication Number Publication Date
WO1994014162A1 true WO1994014162A1 (en) 1994-06-23
WO1994014162B1 WO1994014162B1 (en) 1994-08-04

Family

ID=25532983

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1993/011820 WO1994014162A1 (en) 1992-12-07 1993-12-06 Pattern search and refresh logic in dynamic memory

Country Status (6)

Country Link
US (1) US5758148A (en)
EP (1) EP0676081A4 (en)
JP (1) JPH08504992A (en)
KR (1) KR100230767B1 (en)
CA (1) CA2150822A1 (en)
WO (1) WO1994014162A1 (en)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076141A (en) * 1996-01-24 2000-06-13 Sun Microsytems, Inc. Look-up switch accelerator and method of operating same
US5987460A (en) * 1996-07-05 1999-11-16 Hitachi, Ltd. Document retrieval-assisting method and system for the same and document retrieval service using the same with document frequency and term frequency
US6199140B1 (en) * 1997-10-30 2001-03-06 Netlogic Microsystems, Inc. Multiport content addressable memory device and timing signals
US6289490B1 (en) * 1997-10-31 2001-09-11 The Board Of Trustees Of The Leland Stanford Junior University Optimization of integrated circuit properties through constraints using a dominant time constant
US6240485B1 (en) 1998-05-11 2001-05-29 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system
US6219748B1 (en) * 1998-05-11 2001-04-17 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a content addressable memory device
NO309169B1 (en) * 1998-11-13 2000-12-18 Interagon As Sokeprosessor
US6314506B1 (en) * 1998-12-28 2001-11-06 Intel Corporation Method and apparatus for determining a next address within a binary search algorithm
US6308220B1 (en) 1999-01-29 2001-10-23 Neomagic Corp. Circulating parallel-search engine with random inputs for network routing table stored in a wide embedded DRAM
EP1086467B1 (en) * 1999-03-15 2004-10-27 Koninklijke Philips Electronics N.V. A method and system for providing copy-protection on a storage medium and storage medium for use in such a system
CA2291310C (en) * 1999-11-30 2007-04-10 Mosaid Technologies Inc. Generating searchable data entries and applications therefore
US6845369B1 (en) * 2000-01-14 2005-01-18 Relevant Software Inc. System, apparatus and method for using and managing digital information
US6892237B1 (en) * 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6658458B1 (en) 2000-06-22 2003-12-02 Cisco Technology, Inc. Cascading associative memory arrangement
US7051078B1 (en) 2000-07-10 2006-05-23 Cisco Technology, Inc. Hierarchical associative memory-based classification system
WO2003017136A1 (en) * 2001-08-16 2003-02-27 Etagon Israel Ltd. Using associative memory to perform database operations
US7020657B2 (en) * 2001-09-27 2006-03-28 International Business Machines Corporation Scalable hardware scheduler time based calendar search algorithm
US6760881B2 (en) 2001-10-16 2004-07-06 International Business Machines Corporation Method for combining refresh operation with parity validation in a DRAM-based content addressable memory (CAM)
EP1376608A1 (en) * 2002-06-28 2004-01-02 Cp8 Programming method in a nonvolatile memory and system for realisation of such a method
US7426511B2 (en) * 2004-03-08 2008-09-16 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy-update
US7917694B1 (en) 2004-09-23 2011-03-29 Netlogic Microsystems, Inc. Method and system for finding maximal stripes in cache memory with content addressable memory
US7242599B2 (en) * 2005-04-22 2007-07-10 John Robert Burger Self-analyzing memory word
US20070168333A1 (en) * 2006-01-05 2007-07-19 Hung-Chih Yu Data processing method
US20090006785A1 (en) * 2007-06-28 2009-01-01 Qimonda Ag Apparatus, method and system for comparing sample data with comparison data
US8145654B2 (en) 2008-06-20 2012-03-27 Lexisnexis Group Systems and methods for document searching
US8427854B2 (en) * 2010-04-15 2013-04-23 Microsoft Corporation Utilization of memory refresh cycles for pattern matching
KR101882681B1 (en) * 2011-10-27 2018-07-31 삼성전자 주식회사 Memory device and driving method thereof
KR20170005428A (en) * 2014-05-17 2017-01-13 칼리드 오마르 타빗 A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding
US10068645B2 (en) * 2016-05-31 2018-09-04 Qualcomm Incorporated Multiple cycle search content addressable memory

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810108A (en) * 1972-05-30 1974-05-07 Ibm Processor utilizing a holographic array and a content addressable storage unit for high speed searching
US3997882A (en) * 1975-04-01 1976-12-14 Burroughs Corporation Content addressable memory system employing charge coupled device storage and directory registers and N/(1-H) counter refresh synchronization
US4450520A (en) * 1981-03-11 1984-05-22 University Of Illinois Foundation Method and system for matching encoded characters
US4507748A (en) * 1982-08-02 1985-03-26 International Telephone And Telegraph Corporation Associative processor with variable length fast multiply capability
US4701879A (en) * 1984-07-05 1987-10-20 Standard Telephones And Cables Public Limited Co. Associative memory systems
US4799192A (en) * 1986-08-28 1989-01-17 Massachusetts Institute Of Technology Three-transistor content addressable memory
US4831585A (en) * 1985-11-27 1989-05-16 Massachusetts Institute Of Technology Four transistor cross-coupled bitline content addressable memory
US4835733A (en) * 1985-09-30 1989-05-30 Sgs-Thomson Microelectronics, Inc. Programmable access memory
US5214715A (en) * 1991-01-31 1993-05-25 Trustees Of Boston University Predictive self-organizing neural network
US5285411A (en) * 1991-06-17 1994-02-08 Wright State University Method and apparatus for operating a bit-slice keyword access optical memory

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3508220A (en) * 1967-07-31 1970-04-21 Burroughs Corp Fast access content-organized destructive readout memory
US4065756A (en) * 1976-03-15 1977-12-27 Burroughs Corporation Associative memory with neighboring recirculated paths offset by one bit
US4172282A (en) * 1976-10-29 1979-10-23 International Business Machines Corporation Processor controlled memory refresh
DE2961097D1 (en) * 1978-05-08 1982-01-07 British Broadcasting Corp Data receiving apparatus
US4185323A (en) * 1978-07-20 1980-01-22 Honeywell Information Systems Inc. Dynamic memory system which includes apparatus for performing refresh operations in parallel with normal memory operations
US4277833A (en) * 1978-09-05 1981-07-07 Dickey-John Corporation Planter population monitor
US4232376A (en) * 1979-03-15 1980-11-04 Rca Corporation Raster display refresh system
US4590465A (en) * 1982-02-18 1986-05-20 Henry Fuchs Graphics display system using logic-enhanced pixel memory cells
US4783649A (en) * 1982-08-13 1988-11-08 University Of North Carolina VLSI graphics display image buffer using logic enhanced pixel memory cells
JPS59140694A (en) * 1983-01-31 1984-08-13 Sharp Corp Refresh method of dynamic ram
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US4709327A (en) * 1983-05-31 1987-11-24 Hillis W Daniel Parallel processor/memory circuit
JPS60234295A (en) * 1984-05-04 1985-11-20 Fujitsu Ltd Semiconductor memory
JPS615495A (en) * 1984-05-31 1986-01-11 Toshiba Corp Semiconductor memory device
US4794559A (en) * 1984-07-05 1988-12-27 American Telephone And Telegraph Company, At&T Bell Laboratories Content addressable semiconductor memory arrays
GB8427165D0 (en) * 1984-10-26 1984-12-05 British Telecomm Adaptive recognising device
US4646306A (en) * 1984-12-26 1987-02-24 Thomson Components - Mostek Corporation High-speed parity check circuit
US4716552A (en) * 1985-03-29 1987-12-29 Advanced Micro Devices, Inc. Method and apparatus for non-destructive access of volatile and non-volatile data in a shadow memory array
US4748439A (en) * 1985-08-13 1988-05-31 Fairchild Semiconductor Corporation Memory apparatus and method for retrieving sequences of symbols including variable elements
US4747072A (en) * 1985-08-13 1988-05-24 Fairchild Camera And Instrument Corporation Pattern addressable memory
US4718041A (en) * 1986-01-09 1988-01-05 Texas Instruments Incorporated EEPROM memory having extended life
JPS62220028A (en) * 1986-03-20 1987-09-28 Fujitsu Ltd Logic circuit
US4710935A (en) * 1986-04-04 1987-12-01 Unisys Corporation Parity detection system for wide bus circuitry
US5073864A (en) * 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
JPS63200391A (en) * 1987-02-16 1988-08-18 Toshiba Corp Static type semiconductor memory
JPH0673114B2 (en) * 1987-03-31 1994-09-14 日本電気株式会社 Cash controller
US4749887A (en) * 1987-06-22 1988-06-07 Ncr Corporation 3-input Exclusive-OR gate circuit
JPH01196792A (en) * 1988-01-29 1989-08-08 Mitsubishi Electric Corp Semiconductor memory device
US4882699A (en) * 1988-09-19 1989-11-21 International Business Machines Corp. Communications network routing and management system
US4989180A (en) * 1989-03-10 1991-01-29 Board Of Regents, The University Of Texas System Dynamic memory with logic-in-refresh

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810108A (en) * 1972-05-30 1974-05-07 Ibm Processor utilizing a holographic array and a content addressable storage unit for high speed searching
US3997882A (en) * 1975-04-01 1976-12-14 Burroughs Corporation Content addressable memory system employing charge coupled device storage and directory registers and N/(1-H) counter refresh synchronization
US4450520A (en) * 1981-03-11 1984-05-22 University Of Illinois Foundation Method and system for matching encoded characters
US4507748A (en) * 1982-08-02 1985-03-26 International Telephone And Telegraph Corporation Associative processor with variable length fast multiply capability
US4701879A (en) * 1984-07-05 1987-10-20 Standard Telephones And Cables Public Limited Co. Associative memory systems
US4835733A (en) * 1985-09-30 1989-05-30 Sgs-Thomson Microelectronics, Inc. Programmable access memory
US4831585A (en) * 1985-11-27 1989-05-16 Massachusetts Institute Of Technology Four transistor cross-coupled bitline content addressable memory
US4799192A (en) * 1986-08-28 1989-01-17 Massachusetts Institute Of Technology Three-transistor content addressable memory
US5214715A (en) * 1991-01-31 1993-05-25 Trustees Of Boston University Predictive self-organizing neural network
US5285411A (en) * 1991-06-17 1994-02-08 Wright State University Method and apparatus for operating a bit-slice keyword access optical memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP0676081A4 *

Also Published As

Publication number Publication date
US5758148A (en) 1998-05-26
EP0676081A4 (en) 1997-11-05
JPH08504992A (en) 1996-05-28
KR950704788A (en) 1995-11-20
KR100230767B1 (en) 1999-11-15
CA2150822A1 (en) 1994-06-23
EP0676081A1 (en) 1995-10-11

Similar Documents

Publication Publication Date Title
US5758148A (en) System and method for searching a data base using a content-searchable memory
US5694406A (en) Parallel associative processor formed from modified dram
US5777608A (en) Apparatus and method for in-parallel scan-line graphics rendering using content-searchable memories
US20010052062A1 (en) Parallel computer within dynamic random access memory
US6389507B1 (en) Memory device search system and method
Lin et al. The design of a rotating associative memory for relational database applications
Su et al. CASSM: A cellular system for very large data bases
US8004868B2 (en) Method and apparatus for performing variable word width searches in a content addressable memory
Lipovski Dynamic Systolic Associative Memory Chip
US6760821B2 (en) Memory engine for the inspection and manipulation of data
JPH11273365A (en) Content addressable memory(cam)
Robinson Pattern-addressable memory
JPH09167495A (en) Data storage unit and data storage device using the same
WO2004044920A2 (en) Method and apparatus for wide word deletion in content addressable memories
WO1988001411A1 (en) A content-addressable memory system
JPS6120157A (en) Data processing system
Lipovski A four megabit dynamic systolic associative memory chip
Lee et al. HYTREM-a hybrid text-retrieval machine for large databases
JPS62137799A (en) Method and system for memory allowed address contents
Stüttgen A hierarchical associative processing system
Okabayashi et al. A proposed structure of a 4 Mbit content-addressable and sorting memory
JPS6113341A (en) Information sorter
Healy A character-oriented context-addressed segment-sequential storage
Zeidler et al. On the Development of Dedicated Hardware for Searching
Zeidler Content-addressable mass memories

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA JP KR

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2150822

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1994903480

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1994903480

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1994903480

Country of ref document: EP