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

Pattern search and refresh logic in dynamic memory

Info

Publication number
CA2150822A1
CA2150822A1 CA002150822A CA2150822A CA2150822A1 CA 2150822 A1 CA2150822 A1 CA 2150822A1 CA 002150822 A CA002150822 A CA 002150822A CA 2150822 A CA2150822 A CA 2150822A CA 2150822 A1 CA2150822 A1 CA 2150822A1
Authority
CA
Canada
Prior art keywords
data
bit
word
memory
storage device
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
CA002150822A
Other languages
French (fr)
Inventor
G. Jack Lipovsky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CA2150822A1 publication Critical patent/CA2150822A1/en
Abandoned legal-status Critical Current

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

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 FigA) 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 Fg. 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 excecuting 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

2 ~ Z PCT/US93/11820 PAl~ERN 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 0 and S3 are open, switches S1 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 S1, S3 and S4 are open, and switch S2 is closed so that the voltage on capacitor C is compared to a refe~ ce voltage Vref by read amplifier RE. According to the difference determined by read amplifier RE, either a 5 binary "one" or "zero" is tra~mi~te.l to the output of the DRAM. When in the data-hold mode, all the switches S1, 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 20 refreshing, all three switches S1, S2 and S3 are closed, switch S4 is open, and the binary state detected by read ampliffer 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. F.lPmPnts 25 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. Thestorage 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 30 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 ~mPri~, 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 35 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 2 ~ 2 2 - 2 -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 ~l~mPnts of the array and 5 applied to the single-bit serial output of the DRAM for application to logic circuitry extemal 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 10 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, andwithin each data cell, the operation is performed identically on one or more data words which are processed seqll~nti~l1y. However, as mentioned above, periodic 5 refreshing of the dynamic RAM is I~Pc~s~ry 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 necess~rily 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 25 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 i~ roves 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 35 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.

21~822 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 rerel~ g 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 0 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 5 il~vel~lion.
Fig. 7 is a rlet~ block diagram of a word cell of Fig. 6.
Fig. 8 is a chain priority circuit usable in the present invention.
Fi~. 9 is a priority tree circuit usable in the present illv~l~lion.
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 uses 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 disk to 25 memory in the embodiment shown in Fig. 12.
Fig. 14 is an example block diagram showing the bus contacts of the ~y~ell- 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 30 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 35 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.

wo 94/l4162 PcT/usg3/llæo 21~Z2 -4-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 INVENIION
Referring to Fig. 3, a one-megabit volatile memory employing logic-in-refresh according to the present invention is disclosed. The memory is or~ni7.erl within the 0 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, refe~ g to 5 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 25 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. 1~ another mode of operation, each word, as a sequence of 512 bytes, is considered separately. Fl~mPnts within the dashed line are integrated together in a single semiconductor material integrated circuit chip. A
30 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 35 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 WO 94/l4162 21~ 0 8 2 2 PCT/US93/11820 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 5 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 through tri-state buffers, or the like, to enable outputting of data. Thus, according to the present invention, comparator 21 and comparand register 24 are added to the preexisting refresh circuitry of a DRAM illustrated sc~m~tir~lly in Fig.
0 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 5 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 eL~cLively stored in the first byte of the ~ C~nt cell through ~o 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 25 matched the previous comparand searched. Thus, a string of characters can be searched for, one character in each sllcc~sive 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 30 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 35 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 44~ PCT/US93/11820 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 5 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 me( h~nism so that only the first byte that satisffes the search part is modiffed, 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 detecte~l. The 0 byte is modified in a succ.o~ful 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 circ~it 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 ffll 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 ampliffers, write ampliffers 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 20 Hitachi HM511000 (a one-megabit DRAM), the entire memory can be read, searched and rewritten in approximately 60 microseconds (the time required to refresh theentire memory). Such a memory is shown in Fig. 5 and illustrates placement of search logic 26. Lf 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 25 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 30 Features of CASSMi A Context Addressed Segment Sequential Memory," Proc. 5th ISCA, pp 31-38, April 1978, authored by the ~res~-l 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 theinvention. For example, the present invention is equally applicable to memories,35 only a portion of which is dynamic memory.
The invention thus allows associative searching of a dynamic memory integrated circuit with a re~ ign of only a small part (removing column decoders, and adding comparators and comparand registers to the refresh circuitry) of a WO 94/14162 PCTtUS93/11820 preexisting chip memory. This results in low development cost, little if any increase in manllf~ctl~ring cost, and utilization of existing DRAM f~l ilitiPs 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 5 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 rnentioned 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 existing0 DRAM chip to produce the present invention will be small relative to the cost of desigl~ing 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 15 form word cells 28. Thirty-two word cells are arranged within a pair of existing DRAM subarrays 29, ana t}le chip includes eight pairs 29 of DRAM subarrays. Thus, in a one-megabit memor i - ach column cell includes 512 bits.
As explained abo~ -~ m a refresh operation, one column is refreshed sequential-ly, one bit after another, by one sense amplifier. Por simplicity, as shown in Fig. 6, 20 the eight column cells 27 forming each word cell 28 can be considered as fourcolumns in each of two neighboring DRAM subarrays, thereby forming the four-column, two-row rectangle shown to read or write one byte at a tirne. 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 ~1et~ile~1 block diagram of a word cell used in Fig.6 is shown. In Fig. 7, eight identically configured column cells 27 are pr~nterl For clarity, only the upper left colurnn 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 30 capacitor 33 which stores a mask bit for each refresh cycle. Also included in each colllmn cell 27 is a physical 512 bit memory subar~dy 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 35 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 -WO 94/14162 - PCT/US93/11820 ~
2 ~ 8 2 ~
co mn 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 afterTRAS. Also as noted earlier, a refresh operation is the period of time required to 5 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 o mask values are time-multiplexed on 8-bit data bus 31. For example, if in a refresh operation, the data value is a 4096 he~ erimAI 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, hexa-lerimal 56 is sent during TRAS, and hexadecimal 12 is sent during TCAS. In the second refresh cycle of the refresh 5 operation, he~a~lerimal 78 is sent during TRAS, and hex~lerim~l 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 20 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 the25 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.
Sperific~lly, 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 30 to or from data bus 31.
During a Word Co~ ale 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 sperifir~lly, 35 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 I RAS 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 WO 94/14162 21~ 0 ~ 2 2 PCT/US93/11820 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-5 tion.
During a Word Write instruction, three-input AND gate 42 is llhli7e~1. 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.
0 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 .. serted 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 5 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 ~'h~r~cpr Compare instruction, the master of match flip-flop 37 is 20 initially set and the Word Com~ale instruction is execlltef~ 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 25 saved flip-flop. Data are refreshed in a Character Compare step.
In a Word Compare Up instruction, the Word Compale 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.
Sirnilarly, a Word Compare Down instruction executes the Word Compal~ instruc-30 tion during each refresh cycle of a refresh operation, and then, at the end of therefresh opeLalion, the C~ 1Ll~ of the match bits are shifted downward one bit logically. A Word Compare Prior instruction e~ecutes the Word Compare instruc-tion during each refresh cycle of a refresh operailon, 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 =

WO 94/14162 PCT/US93/11820 ~ 2~5~22 -lo-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 a~ru~liate 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 execllferl 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 0 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 5 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, particlll~rly during exe~ltirn 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 t~rer~ d 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 m 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 aredisabled. 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 WO 94/14162 --11-- 21~ ~ 5 2 2 PCTIUS931~820 to exclusive-OR gate 43. At the beginning of a refresh operation, dual-rank flip-flops P1 and P3 are i~ih~ e~ 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 P1 is loaded with the exclusive-5 OR of all eight data bits that are written into memory along with the old value of flip-flop P1. At the end of a refresh operation, flip-flop P1 contains the parity of all the data bits that have just been stored in the cell's memory. The output of flip-flop P1 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 0 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 31 is pruned to isolate an error in a subtree, forcing open both tri-state drivers in the link above the subtree, and the priority tree 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 25 (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-flops, and associated logic requiring approximately 35 transistors, and for each word cell there is a node of the priority tree, requiring ap~roxi,llately six transistors. Amortizing this word cell logic over the total number 30 of sense amplifiers in the word cell, on the order of five additional transistors would be required per sense amplifier. Thus, the present invention would require approxi-mately 24 transistors per sense amplifier, thereby 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 35 (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 215~822 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 refreshcircuitry.
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, the0 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 5 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 surf~c~, but drives with ~,reaLer or lesser capacity or number of platters and heads are suitable. Switchable bus 61 connects disk drive 51 to computer 65 and memorybanks 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 WO 94/14162 --13 _ 215 0 8 2 2 PCT/US93/11820 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 lltili~r~s a standard disk drive, modified to contain additional controllers 55b through 55n. Those controllers 5 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 ~reLeLable to store data on the disk in a "striped" fashion, in which adjacent elements, such as a byte, are recorded on 0 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 sameaddress on platter n of the same cylinder, byte n+1 would be located at the nextaddress on platter one of the cylinder, etc. The elements can co~ ise a single bit, 5 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 il~v~l~lion.
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 20 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 co~ m~lated, including systems that utilize staggered reads. The process is simply reversed when the system is used to write data back25 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 30 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 35 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.

WO 94/14162 ~ PCTtUS93tll820 ~5~ ~2~2 --14--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 5 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 aresuitable: 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 lo 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 oneof the memory banks 73 and 75 and its associated bus, namely the bank and bus in15 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 omitte~ in the simplified version of Figure 15.
Each bank 73 and 75 contains one or more dynamic associative memory 20 devices ("DAAM"), ~rer~lldbly 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 25 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 thedescription of Figures 7 through 10, above. Also, the priority circuitry of Figures 12 and 15 serves the same function as the similar circuitry wi~hin the chip shown in 30 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 35 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.

WO s4tl4162 15 2 15 a ~ 2 ~ PCTNS93/11820 The controller on the Maxtor hard disk referred to above 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 that5 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 sllffi~ iPnt 0 storage capacity. It is most efficient to read entire cylinders from the disk at once, but to do so requires that the bank col-lail- 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 ~ref~lled system design for the above-re[~,el,ced Maxtor drive would require enough DAAMs in each bank to store the apE~loxi,llately 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 20 constrained. A ~rer~lled system design would be neither capacity constrained nor bandwidth constrained, allowing the user to upgrade the disk drive to one havingsomewhat faster output speed or somewhat larger cylinders, without replacing theDAAMs or associated circuitry.
If a number of DAAM chips are used in each bank, the data on disk 51 can be 25 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 pla~ters 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 30 system was arranged with one DAAM chip 69 or 71 controlling four controllers, such as 55a through 55d.
The system of the invention 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 35 examples of such modular arrangements. In system 81, a larger number of bankscontaining 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 215~22 -16-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 a5 multistage interconnect network such as a one or more crossbar switches to imple-ment buses 61 and 67 in Figure 12. The in~elco~ ection 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 0 which the multistage ~ IlL~rcolLllect 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 5 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.
20 Next~ the contents of the DAAM are written back onto the disk, overwriting the old data with only da~a 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, partic~ rly although not necP~s~rily in conjunction with the disk-based 25 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 mPmory of the invention. In the illustrative 30 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 WO 94/14162 --17 _ 21 5 0 8 2 2 PCT/US93/11820 three atoms per word, but it is both feasible and desireable to use a greater number of atoms in 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 5 in another field. In the example shown in Figure 17, the associated data incl1l-1es 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 0 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 wordsadded 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 17uses letters for ease of display.
As each data word is encountered, th- 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 dat~ word, the contents of the counter is placed in a field of the atom imm~1iately after the loaded data word. The location counter is zeroed at the beginning of each row and copied into a predet~rrnine.l20 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 pc- tion of the word in the data. Because the count is restarted in each row, the position 25 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 ~at the position indicator and the counter is different from the memory location, that is the atom number in the row, because of the ~lelehc)n of stop words. In addition, the scratch field containing the total number of words can differ from the position 30 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 - colmter being set at five.
Data words are loaded into the atoms of a row, in the example of Figure 17, 35 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 W O 94/14162 . ,. . PCT~US93/11820 215~22 - 18 -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 beginr~ing of each Fngli~h sentence, 5 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 colurnn 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, 0 which contains a zero for all rows that begin a new document.
The mvellLion 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 cornmon 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. The25 problem is to ~etPrmine 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 ~ cll~sing the relationship between music and math~matil ~ but not dealing with computer music, by asking for all documents 30 (whether sentences or memos) that contain the terms "song" or "music" and "math~mati( s" 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 3s 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 WO 94/14162 --19 _ 21 S ~ ~ 2 2 PCT/US93/11820 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 numberof 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 litional 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 rlet~rmine if all of the terms are 0 present or not, as spel ifie~. In the case of complicated Boolean searches, it may be nec~sAry 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 5 Boolean products, the system can be generalized to any Boolean ~ression, however complex.
Figure 19 illustrates a flowchart describing a sample program implementing a string search using the embodiment of the illv~nLion described in Figure 17. A string search represents a database query in which the user wishes to locate a series of 20 search terms in sequence. To Accomrnodate a string search, it is useful to structure the memory so as to have each atom contain, besides the code r~resel~Lil~g the data word and the position indicator, a mark bit. Such a mark bit would be associatedwith each data word, thereLole, not only with each row.
The program searches each atom, according to the methods and using the 25 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 30 regard to whether the bits represent a data word or the associated data. The previous atom's mark b* 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 35 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 2 ~ 2 - 20 -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 docllrnPnt 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 5 Figure 17 during an example proxilnity search, which seeks to identify all instances in which the search term "good" is located within two F.ngli~h 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 o 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 m~thPm~tics 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 greaLer than the limit. Next the difference is compared to the negative of the limit, because the two terms can qualify for the20 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 negaLive of the limit. Finally, if all four scratch bits are unset, a fifth bit is set indicating those rows in which the yroxilnity search has been s~ti~fie~, rows two and five in Figure 17.
It is desireable to check for cases in which the two terms are within the desired 2s proximity across a row boundary, 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 30 (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 wouldlikely 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 lastcolumn of Figure 17 (although the actual program would reuse column five). The 35 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, anexample 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.

WO 94/14162 21 ~ ~ 8 2 2 PCT/US93/11820 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 5 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 determinethe 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 pLe~vt~ g lo 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 only 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. The5 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 20 were no il~yrovelnent in the speed of the mathPmah~ 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 ~ ritPrion to a fixed non-data-filled memory location within the row 25 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.).
35 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 locatingword D at least once in the document results in two points. Then, a search might 2~ S~22 -22-request retrieval of all documents that score more than a selected number of points (say, ten), or just a sPlecte~ number of the highest-scoring, that is "most relevant,"
documents.
It is useful to store long associative memory words along a column of 5 dynamic memory, which in a database application may constitute a grouping of simil~r 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 10 two storage systems differ in the manner in which the associative m~mory 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 colllmns tobe 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 20 rerel~,.ce the other columns, they can be skipped over and not be read into the refresh amplifiers. (Of course, they must be periodically refreshed.) The searchinstruction can be sped up, if each column is of the same width, by a factor of three.
The above word organization is particularly efflcient in databases with common patterns of data. For example, in a telephone directory database, the first 25 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 30 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 35 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 WO 94/14162 --23-- 2 1 S 13 ~ 2 2 PCT/US93/11820 the scan at some fixed column number and continue the scan for a fixed number ofcoltlmns. 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 nec~ss~ry to do that periodically to refresh all 5 of the memory. The typical instruction refreshes only part of the memory that is aciually searched, output, or written.
The routines described above include certain arithmetic or Boolean logic operations, particularly within the associative memory word. Por example, the proximity search described above in connection with Figures 17 and 20 requires 0 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 ~rerelled circuit can utilize the following instructions. First, the Compare ("C") instruction compares the data, d, 15 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 colle~onding bit position of d is compared to the colles~onding bit position of each associative memory word. A match flip-flop for each associate memory word is set if the npare was true, otherwise the match flip-flop is cleared.
20 The data, d, and the mask, rn, 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 25 will show 'x' or '?' wherever the mask would be set (masked, and thererore, don't cares). For exam~le, if d=10010110, and m=11000011, the combined opcode would be lOxxxxlO.
Second, Ine 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 30 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 ~he (~o...p~re instruction with the following difference: The match flip-flop is set only if 35 (a) the compare was sllcc~sful 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.

21~ 8~ -24-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
5 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 lo 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) intothe sense amplifiers. Using that function allows the arithmetic operations to bespeeded up by about a factor of four by searching and rewriting data while the data 5 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 themback 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 modified20 ~imt1lt~neously available in the sense amplifiers associated with that word. It is ~refelldble, 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, 30 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 35 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 ~! WO 94/14162 215 0 ~ 2 ~ PCT/US93/11820 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 5 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.
o 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

AMENDED CLAIMS
Ireceived by the International Bureau on 23 June 1994 (23.06.94);
original claims 1-12, 15-17 and 22-33 amended; original claims 13 and 14 cancelled;
new claims 36 and 37 added; remaining claims unchanged (5 pages)]

1. An information storage and searching apparatus comprising:
(a) an information-storage device;
(b) at least one electronic memory device, which device is integrated on a semiconductor chip, electronically coupled to the storage device, and having a plurality of multiple-bit word storage locations, wherein each word storage location consists of a plurality of uniform-length subunits;
(c) said memory device having associated with each of the word storage locations: (i) a comparator circuit coupled to compare a comparand having length equal to the subunits with information stored in each of the subunits, and (ii) a single-bit storage element coupled to the comparison circuit so as to indicate a match between the comparand and information in at least one of the subunits;
(d) said memory device being controllable to output in sequence information stored in at least a selected portion of each word storage location having a subunit matching the comparand; and (e) a control device configured (i) to control the couplings between the storage device and the memory device to transfer information stored in the storage device to the memory device, (ii) to pass a comparand to the memory device, and (iii) to cause the memory device to perform said output sequence.
2. The apparatus of claim 1 wherein the information storage device at least one magnetic storage device.
3. The apparatus of claim 1 wherein the information storage device includes at least one optical storage device.
4. The apparatus of claim 1 wherein the information storage device includes at least one multiple-platter storage device.
5. The apparatus of claim 1 wherein the information storage device includes at least one solid state memory device.
6. The apparatus of claim 1 wherein the information storage device includes at least one magnetic tape storage.
7. The apparatus of claim 1 wherein the information storage device includes at least one flash memory device.
8. The apparatus of claim 4 wherein the information storage device 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 device comprises:
(a) a multitude of bit-storage cells on a single semiconductor chip distributed among a plurality of logical word cells;
(b) wherein the bit cells of each word cell are arranged in at least one column comprised of a plurality of bit cells;
(c) a plurality of amplifiers on the chip, each column associated with one of said amplifiers;
(d) wherein each of the amplifiers may be electrically coupled to any bit cell in any column with which that amplifier is associated;
(e) an addressing circuit configured to control the couplings, respectively, between each of the amplifiers associated with columns of at least one word cell and each bit cell in a row of each of the associated columns;
(f) wherein the addressing circuit is coupled to permit coupling of the amplifiers to bit cells in any row of the associated columns; and (g) a comparison circuit on the chip, coupled to the amplifiers in at least one word cell and having an output line, which circuit is configured to compare a selected comparand with bits amplified by said amplifiers and to generate an electrical signal on said output line when the comparand matches the bits amplified from the bit cells in at least one row of the columns.
10. The apparatus of claim 1 wherein the memory device comprises at least one associative memory on an integrated circuit.
11. The apparatus of claim 1 wherein the control device switches a switchable data bus.
12. The apparatus of claim 1 wherein the control device includes at least an integrated processor circuit and a program store containing at least one sequence of instructions.
15. The apparatus of claim 1 wherein the comparison circuit is electrically connected to a refresh circuit connected to periodically refresh information at each word storage location.
16. The apparatus of claim 8 wherein said control device comprises:
(a) means for enabling the read heads of a plurality of the platters at the same time;
(b) means for assembling the information read by the enabled read heads in a predetermined sequence; and (c) means for transferring the assembled information to predeter-mined locations in the memory device.
17. The apparatus of claim 1 wherein:

(a) the memory device comprises a plurality of banks of solid state memory devices;
(b) the control device switches a switchable bus capable of connect-ing the storage device to any selected one of the memory banks; and (c) the control device is coupled to control one of the memory banks while at least one other memory bank is coupled to the storage device.
18. A data storage system comprising:
(a) memory means for storing a plurality of multiple bit words in predetermined multiple-bit word sto,age 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 bil 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 tne 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 isassociated 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:

(a) storing electronic data in a data storage device;
(b) transferring the data from the data storage device to a plurality of multiple-bit storage storage locations of a content-addressable memory circuit; and (c) searching every bit of each word storage location containing the transferred data for a selected subset of that data.
23. The method of claim 22 wherein storing data includes storing data on at least one magnetic storage device.
24. The method of claim 22 wherein storing data includes storing data on at least one optical storage device.
25. The method of claim 22 wherein storing data includes storing data on at least one multiple-platter storage device.
26. The method of claim 22 wherein storing data includes storing data on at least one solid state memory device.
27. The method of claim 22 wherein storing data includes storing data on at least one magnetic tape.
28. The method of claim 22 wherein storing data includes storing data on at least one flash memory device.
29. The method of claim 25 wherein transferring data includes reading data from a plurality of the platters simultaneously.
30. The method of claim 22 wherein searching includes causing the content-addressable memory to compare a comparand with data stored in the memory and indicate all word storage locations containing a match between the comparand and data stored in at least one subset of such word storage locations.31. The method of claim 22 further comprising periodically refreshing data stored at each location of the memory, and wherein searching includes comparing the stored data and the comparand during refreshing.
32. The method of claim 29 wherein transferring 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 transferring includes selecting a first of a plurality of the memory banks as a target for the transferred data;

(b) wherein searching includes searching a second of the memory banks while transferring; and (c) further comprising switching the first and second memory banks after a time so that transferring uses the second bank as a target and searchingoperates 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.
36. The apparatus of claim 1 wherein each of said subunits comprises a byte.
37. The method of claim 22 further comprising outputting in sequence data stored in at least a selected portion of each word storage location containing said selected data subset.

The relationship of the attached claims to the original claims are as follows:
Claims 13 and 14 have been canceled. Claims 36 and 37 are new claims. Claims 18-21 and 34-35 have not been changed. All of the remaining claims, claims 1-12, 15-17, and 22-33 have been substantially amended. Each claim attached corresponds to the correspondingly numbered claims of the original application.
Because of the word limit of Section 205 of the PCT Administrative Instructions, it is not possible to point out with specificity all of the amendments to the claims. However, the claims have been substantially revised to better define the invention. Specifically, applicant has amended the claims to clarify that the claimed invention contains a system of searching any subset of multi-bit words for a comparand, in some instances while refreshing the circuit if it is a dynamic one.
Each bit is stored in a single storage location.
Claim 18 refers to a system for comparing a subset of multi-bit words to a comparand and transferring matching patterns to another bit location. Claims 19-21 and 34-35 refer to a system for comparing a subset of multi-bit words to a comparand and writing the result of the comparison at another bit location.
CA002150822A 1992-12-07 1993-12-06 Pattern search and refresh logic in dynamic memory Abandoned CA2150822A1 (en)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
CA2150822A1 true CA2150822A1 (en) 1994-06-23

Family

ID=25532983

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002150822A Abandoned CA2150822A1 (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
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
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
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
JP4698840B2 (en) * 1999-03-15 2011-06-08 ユーキューイー,エルエルシー Method and system for providing copy protection on a storage medium and storage medium used 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

Family Cites Families (40)

* 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
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
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
GB2020514B (en) * 1978-05-08 1982-04-28 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
US4450520A (en) * 1981-03-11 1984-05-22 University Of Illinois Foundation Method and system for matching encoded characters
US4590465A (en) * 1982-02-18 1986-05-20 Henry Fuchs Graphics display system using logic-enhanced pixel memory cells
US4507748A (en) * 1982-08-02 1985-03-26 International Telephone And Telegraph Corporation Associative processor with variable length fast multiply capability
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
US4709327A (en) * 1983-05-31 1987-11-24 Hillis W Daniel Parallel processor/memory circuit
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
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
GB2161263B (en) * 1984-07-05 1988-03-30 Stc Plc Associative memory systems
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
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
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
US4799192A (en) * 1986-08-28 1989-01-17 Massachusetts Institute Of Technology Three-transistor content addressable memory
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
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

Also Published As

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

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
Su et al. CASSM: A cellular system for very large data bases
US6473846B1 (en) Content addressable memory (CAM) engine
US6389507B1 (en) Memory device search system and method
JP2511435B2 (en) Rule-based data retrieval method and apparatus
US6760821B2 (en) Memory engine for the inspection and manipulation of data
EP0341896B1 (en) Content addressable memory array
JPH08502609A (en) Non-numeric coprocessor
JP3786993B2 (en) Data storage unit and data storage device using the unit
Robinson Pattern-addressable memory
EP1568042A2 (en) Method and apparatus for wide word deletion in content addressable memories
US7260675B1 (en) CAM-based search engines that support pipelined multi-database search operations using encoded multi-database identifiers
EP0232376B1 (en) Circulating context addressable memory
US5873126A (en) Memory array based data reorganizer
Lipovski A four megabit dynamic systolic associative memory chip
JPS62137799A (en) Method and system for memory allowed address contents
JPS6113341A (en) Information sorter
US5485588A (en) Memory array based data reorganizer
EP1155415B1 (en) Content addressed memories
Healy A character-oriented context-addressed segment-sequential storage
Zeidler et al. On the Development of Dedicated Hardware for Searching
JP3348279B2 (en) Price lookup data search circuit, search method therefor, and recording medium storing control program therefor

Legal Events

Date Code Title Description
EEER Examination request
FZDE Discontinued