Publication number | US20050187898 A1 |

Publication type | Application |

Application number | US 10/909,901 |

Publication date | Aug 25, 2005 |

Filing date | Aug 2, 2004 |

Priority date | Feb 5, 2004 |

Publication number | 10909901, 909901, US 2005/0187898 A1, US 2005/187898 A1, US 20050187898 A1, US 20050187898A1, US 2005187898 A1, US 2005187898A1, US-A1-20050187898, US-A1-2005187898, US2005/0187898A1, US2005/187898A1, US20050187898 A1, US20050187898A1, US2005187898 A1, US2005187898A1 |

Inventors | Bernard Chazelle, Joseph Kilian, Ronitt Rubinfeld, Ayellet Tal |

Original Assignee | Nec Laboratories America, Inc. |

Export Citation | BiBTeX, EndNote, RefMan |

Patent Citations (10), Referenced by (32), Classifications (5), Legal Events (1) | |

External Links: USPTO, USPTO Assignment, Espacenet | |

US 20050187898 A1

Abstract

A lookup architecture is herein disclosed that can support constant time queries within modest space requirements while encoding arbitrary functions and supporting dynamic updates.

Claims(16)

a hashing module that receives an input value and generates a plurality of hashed values from the input value;

a table storing a plurality of encoded values, each hashed value generated from the input value corresponding to a location in the table of an encoded value, the table constructed so that the encoded values obtained from the input value encode an output value such that the output value cannot be recovered from any single encoded value.

a second table storing lookup values so that the output value associated with the input value is also associated with a location in the second table where the lookup value associated with the input value is stored.

receiving an input value;

hashing the input value to generate a plurality of hashed values from the input value;

retrieving a plurality of encoded values stored at locations in a table corresponding to the plurality of hashed values and recovering an output value from the encoded values where the encoded values encode the output value such that the output value cannot be recovered from any single encoded value.

receiving an input value;

hashing the input value to generate a plurality of hashed values from the input value;

retrieving a plurality of encoded values stored at locations in a table corresponding to the plurality of hashed values and recovering an output value from the encoded values where the encoded values encode the output value such that the output value cannot be recovered from any single encoded value.

retrieving a lookup value from a location in a second table, where the output value recovered is associated with the location in the second table storing the lookup value associated with the input value.

Description

- [0001]This Utility Patent Application is a Non-Provisional of and claims the benefit of U.S. Provisional Patent Application Ser. No. 60/541,983 entitled “INEXPENSIVE AND FAST CONTENT ADDRESSABLE MEMORY” filed on Feb. 5, 2004, the contents of which are incorporated by reference herein.
- [0002]The present invention relates to information retrieval.
- [0003]There are a variety of known data structures for supporting lookup queries. Hash-based lookup schemes typically provide the fastest known lookups for large databases. Given an input value, a hash function is applied to the input and perhaps other data in the data structure to yield one or more indices, and the data structure can be queried at these indices in order to search for the output value. A common feature of prior art hashing-based retrieval schemes is that at one or more locations in a lookup table, information is stored that allows one to determine the output value corresponding to the given input value. Thus, hashing-based schemes typically work by searching for the entry containing this information. Consider, for example, a recent hash-based scheme referred to in the art as “cuckoo hashing.” See Pagh, R. and Rodler, F., “
*Cuckoo Hashing,”*Journal of Algorithms, 51, pages 122-144 (2004). In cuckoo hashing, an input value t is hashed to obtain two locations, L_{1 }and L_{2}. One then queries the data structure at both of these locations. At each location there is either an empty marker or an (input value, output value) pair. If for one of the locations, L_{1 }or L_{2}, there is an (input value, output value) pair such that the input value is equal to t, then the given output value can be retrieved. Once the location with the matching input value is identified, the output value is obtained without any need to consult or utilize the contents of the other location(s). Thus, the input value is explicitly stored at the location which stores the output value, which can result in a great deal of inefficiency, for example, where the input values are a hundred bits long and the output values are a single bit. Other standard hashing-based techniques can reduce this inefficiency, but nevertheless incur a storage overhead typically proportional to log(n) bits per stored entry, where n is the number of input elements, resulting in a storage requirement proportional to nlog(n) bits. - [0004]It would be clearly advantageous to have a lookup system with improved storage requirements. A “Bloom filter” is a known lossy encoding scheme for binary functions used to conduct membership queries for a given set of input values. See Bloom B. H., “
*Space/Time Trade-offs in Hash Coding with Allowable Errors,”*Communications of the ACM, 13(7), pp. 422-426 (July 1970). The data structure consists of a bit-vector of length m. The Bloom filter is initially programmed by hashing each input k times to produce k indices between 0 and m. The bit-vector entries corresponding to these indices are set to 1. A query on a message M proceeds as follows. M is hashed k times and each of the k locations in the bit-vector is checked. Clearly, if the value stored at any location is 0, M is not part of the data contained in the Bloom filter. If all the entries are 1, however, M is most likely a part of the data contained in the Bloom filter. A false positive possibility arises from the fact that the hash functions can result in the same set of k values for two different inputs. By allowing false positives, the Bloom filter can fit within storage proportional to n bits. Part of the reason Bloom filters achieve their space efficiency is by combining in a nontrivial way the values obtained from the k locations queried. A location containing a 1 contains no information about which input value it is affirming as being in the set—this lack of information allows for the space efficiency. This can cause confusion, as an input value not in the given set might still hash to k locations, all set to 1 by different input values. By computing an AND of all of these value, instead of relying on a single one, one reduces the probability of such mistakes to an acceptable value. - [0005]Unfortunately, although Bloom filters allow membership queries to be conducted, they do not allow one to associate an output value to an input value belonging to some given set. Although a number of variants of Bloom filters have been proposed, there is still a need for a generalized scheme which can associate output values with input values for a given set, while obtaining the small storage requirements enjoyed by Bloom filters.
- [0006]In accordance with an embodiment of the invention, a lookup architecture is herein disclosed which receives an input value and compactly stores arbitrary lookup values associated with different input values in a pre-specified lookup set. The data lookup architecture comprises a table of encoded values. The input value is hashed a number of times to generate a plurality of hashed values and, optionally, a mask, the hashed values corresponding to locations of encoded values in the table. The encoded values obtained from an input value encode an output value such that the output value cannot be recovered from any single encoded value. For example, the encoded values can be encoded by combining the values using a bit-wise exclusive or (XOR) operation, to generate the output value. The output value can then be used to retrieve the lookup value associated with the input value, assuming the input value is in the pre-specified lookup set. If it is not, then the output value will take on a value outside a pre-specified range and it can be readily recognized that the input value does not have an associated lookup value. In accordance with an embodiment of the invention, the lookup architecture further comprises a second table which stores each lookup value at a unique index in the second table, thereby readily facilitating update of the lookup values without affecting the encoded values. The table of encoded values can be constructed so that the output value generated by the bit-wise XOR operation is an index in the second table where the associated lookup value is stored, or may be combined with input value to obtain such an index
- [0007]The present invention advantageously enables a constant query time with modest space requirements while still being able to encode arbitrary functions. It can respond to a membership query and retrieve any stored value associated with the input value. If the stored values are small (a constant number of bits) then the space required by the lookup architecture requires only a constant number of bits per input value, regardless of the size of the input values or the number of input values. This is in contrast to previous lookup architectures, which must either store the input values or hashes of the input values, and whose space requirement per input value grows as the logarithm of the number of input values. These and other advantages of the invention will be apparent to those of ordinary skill in the art by reference to the following detailed description and the accompanying drawings.
- [0008]
FIG. 1 is a diagram of a lookup architecture, in accordance with an embodiment of the invention. - [0009]
FIG. 1 is a diagram of a lookup architecture, in accordance with an embodiment of the invention. As depicted inFIG. 1 , an input value**101**is received and processed by the architecture. Based on the processing of the input value**101**, what is output is a lookup value**102**retrieved from a table**120**or an error code indicating that the input value is not a member of the lookup set. - [0010]In
FIG. 1 , there are two tables**110**,**120**, the construction and operation of which are described in further detail herein. Table**120**is referred to herein as a lookup table and comprises a plurality of entries, each storing a lookup value. Table**110**is referred to herein as the “encoding” table. Encoding table**110**is constructed so that there is a one-to-one mapping between every valid input value within the particular pre-specified lookup set and a unique location in lookup table**120**, as described in further detail below. - [0011]To lookup the value
**102**associated with an input value**101**, the input value**101**is hashed at**130**to produce k different values and a mask M at**145**. The hash**130**can be implemented using any advantageous hash function. The k different hash values, (h_{1}, . . . , h_{k}), each refer to locations in the encoding table**110**. Each h_{i }is in the interval [1, m] where m is the number of entries in the encoding table**110**and the lookup table**120**. Each entry in the encoding table**110**stores a value, Table1[h_{i}]. The values Table1[h_{1}] . . . Table1[h_{k}] selected by the k hash values and the mask M are bit-wise exclusive-ored at 140 to obtain the following value:

*x=M⊕⊕*_{i=1}^{k}Table1[h_{i}]

This value is an index to a location in the lookup table**120**that can be used to retrieve the lookup value f(t) associated with the input value t. If the value falls outside the valid index range, then the input value**101**is not part of the lookup set. - [0012]Given a domain D and a range R, the lookup structure encodes an arbitrary function F:D→R such that querying with any element t of D results in a lookup value of f(t). Any t that is not within the domain D is flagged.
- [0013]Construction of the encoding table
**110**can proceed in a number of different ways. Given an input value t and an associated index value, l, the below equation for l defines a linear constraint on the values of the encoding table**110**. The set of input values and associated indices defines a system of linear constraints, and these linear constraints may be solved using any of the many methods known in the literature for solving linear constraints. - [0014]Alternatively, and in accordance with an embodiment of the invention, the following very fast method can be utilized that works with very high probability. The encoding table
**110**is constructed so that there is a one-to-one mapping between every element t in the lookup set and a unique index τ(t) in the lookup table**120**. It is required that this matching value, τ(t), be one of the hashed locations, (h_{l}, . . . , h_{k}), generated by hashing t. Given any setting of the table entries, the linear constraint associated with t may be satisfied by setting

Table1*[L]=l⊕M⊕⊕*_{l≠i=1}^{k}Table1[h_{i}].

However, changing the entry in the encoding table**110**of Table1[τ(t)] may cause a violation of the linear constraint for a different input value whose constraint was previous satisfied. To avoid this, an ordering should be computed on the set of input elements. The ordering has the property that if another input value t′ precedes t in the order, then none of the hash values associated with t′ will be equal to τ(t). Given such a matching and ordering, the linear constraint for the input elements according to the order would be satisfied. Also, the constraint for each t would be satisfied solely by modifying τ(t) without violating any of the previously satisfied constraints. At the end of this process, all of the linear constraints would be satisfied. - [0015]The ordering and τ(t) can be computed as follows: Let S be the set of input elements. A location L in the encoding table is said to be a singleton location for S if it is a hashed location for exactly one t in S. S can be broken into two parts, S
_{1 }consisting of those t in S whose hashed locations contain a singleton location for S, and S_{2}, consisting of those t in S whose hashed locations do not contain a singleton location for S. For each t in S_{1}, τ(t) is set to be one of the singleton locations. Each input value in S_{1 }is ordered to be after all of the input values in S_{2}. The ordering within S_{1 }may be arbitrary. Then, a matching and ordering for S_{2 }can be recursively found. Thus, S_{2 }can be broken into two sets, S_{21 }and S_{22}, where S_{21 }consists of those t in S_{2 }whose hashed locations contain a singleton location for S_{2}, and S_{22 }consists of the remaining elements of S_{2}. It should be noted that locations that were not singleton locations for S may be singleton locations for S_{2}. The process continues until every input value t in S has been given a matching value τ(t). If at any earlier stage in the process, no elements are found that hash to singleton locations, the process is deemed to have failed. It can be shown, however, that when the size of the encoding table is sufficiently large, such a matching and ordering will exist and be found by the process with high probability. In practice, the encoding table size can be set to some initial size, e.g., some constant multiple of the number of input values. If a matching is not found, one may iteratively increase the table size until a matching is found. There is a small chance that the process will still fail even with a table of sufficiently large size due to a coincidence among the hash locations. In this case, one can change the hash function used. Note that one must use the same hash function for looking up values as one uses during the construction of the encoding table. - [0016]It should be noted that the encoding table can be utilized with the above-described table construction and lookup procedures to directly store the lookup values. It is difficult, however, to change the value associated with an input value when one is solely using the encoding table. To allow for quicker updates, it is advantageous to use the encoding table as an index into a second table, the lookup table, as depicted in
FIG. 1 . For each value t in the set of input values, a unique location L(t) in the lookup table is associated. Some encoding of L(t) is stored in the encoding table, and stores the value v associated with t in the lookup tagble at Table2[L(t)]. Any one-to-one mapping may be used from the set of input values and locations in the lookup table, and any method of encoding these locations. In one embodiment, the lookup table can be the same size as encoding table. Then, the same matching can be used as for the creation of the encoding table, L(t)=τ(t). In this case, given t, L(t) has a very succinct encoding. Recall that t is hashed to obtain k values, and that L(t)=τ(t) is one of these hashed values. Hence, one may encode L(t) as a value from 1 to k. If k=4, L(t) may be encoded using only 2 bits.

Patent Citations

Cited Patent | Filing date | Publication date | Applicant | Title |
---|---|---|---|---|

US5103478 * | Oct 12, 1990 | Apr 7, 1992 | International Business Machines Corporation | Secure management of keys using control vectors with multi-path checking |

US6122375 * | Jun 4, 1998 | Sep 19, 2000 | Hitachi, Ltd. | Hash value generating method and device, data encryption method and device, data decryption method and device |

US6504843 * | Jul 14, 1999 | Jan 7, 2003 | 3Com Technologies | System and method for dynamically mapping a high speed link to a multiplicity of low speed trunked links |

US6731633 * | Apr 25, 2000 | May 4, 2004 | 3Com Corporation | Network unit including address hashing |

US6847647 * | Sep 26, 2000 | Jan 25, 2005 | Hewlett-Packard Development Company, L.P. | Method and apparatus for distributing traffic over multiple switched fiber channel routes |

US7043494 * | Jan 28, 2003 | May 9, 2006 | Pmc-Sierra, Inc. | Fast, deterministic exact match look-ups in large tables |

US7145911 * | Mar 5, 2002 | Dec 5, 2006 | Hewlett-Packard Company | Method and system for parallel hash transformation for an address input |

US20030177401 * | Mar 14, 2002 | Sep 18, 2003 | International Business Machines Corporation | System and method for using a unique identifier for encryption key derivation |

US20030188089 * | Dec 21, 1999 | Oct 2, 2003 | Ronald S. Perloff | Hash cam having a reduced width comparison circuitry and its application |

US20030210689 * | May 13, 2002 | Nov 13, 2003 | International Business Machines Corporation | Lookups by collisionless direct tables and CAMs |

Referenced by

Citing Patent | Filing date | Publication date | Applicant | Title |
---|---|---|---|---|

US7019674 * | Aug 2, 2004 | Mar 28, 2006 | Nec Laboratories America, Inc. | Content-based information retrieval architecture |

US7430560 | Jul 3, 2006 | Sep 30, 2008 | X-Engines, Inc. | Multi-level compressed lock-up tables formed by logical operations to compress selected index bits |

US7592935 * | Mar 9, 2006 | Sep 22, 2009 | Nec Laboratories America, Inc. | Information retrieval architecture for packet classification |

US7653670 * | Nov 28, 2006 | Jan 26, 2010 | Nec Laboratories America, Inc. | Storage-efficient and collision-free hash-based packet processing architecture and method |

US7827218 | Apr 25, 2007 | Nov 2, 2010 | X-Engines, Inc. | Deterministic lookup using hashed key in a multi-stride compressed trie structure |

US7840554 * | Mar 27, 2008 | Nov 23, 2010 | International Business Machines Corporation | Method for evaluating a conjunction of equity and range predicates using a constant number of operations |

US7921088 | Mar 7, 2007 | Apr 5, 2011 | X-Engines, Inc. | Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables |

US7925676 | Jan 27, 2006 | Apr 12, 2011 | Google Inc. | Data object visualization using maps |

US7953720 | Mar 31, 2005 | May 31, 2011 | Google Inc. | Selecting the best answer to a fact query from among a set of potential answers |

US8055674 | Feb 17, 2006 | Nov 8, 2011 | Google Inc. | Annotation framework |

US8065290 | Aug 24, 2009 | Nov 22, 2011 | Google Inc. | User interface for facts query engine with snippets from information sources that include query terms and answer terms |

US8224802 | Aug 9, 2011 | Jul 17, 2012 | Google Inc. | User interface for facts query engine with snippets from information sources that include query terms and answer terms |

US8239394 * | Mar 31, 2005 | Aug 7, 2012 | Google Inc. | Bloom filters for query simulation |

US8239751 | May 16, 2007 | Aug 7, 2012 | Google Inc. | Data from web documents in a spreadsheet |

US8305271 | Mar 17, 2010 | Nov 6, 2012 | Microsoft Corporation | Cuckoo hashing to store beacon reference data |

US8356020 | Aug 13, 2008 | Jan 15, 2013 | Green Investment Fund, L.L.C. | Multi-level compressed look-up tables formed by logical operations to compress selected index bits |

US8572140 | Oct 1, 2010 | Oct 29, 2013 | X-Engines, Inc. | Deterministic lookup using hashed key in a multi-stride compressed trie structure |

US8650175 | Jul 13, 2012 | Feb 11, 2014 | Google Inc. | User interface for facts query engine with snippets from information sources that include query terms and answer terms |

US8767009 * | Jul 10, 2012 | Jul 1, 2014 | Google Inc. | Method and system for record-time clipping optimization in display list structure |

US8954412 | Sep 28, 2006 | Feb 10, 2015 | Google Inc. | Corroborating facts in electronic documents |

US8954426 | Feb 17, 2006 | Feb 10, 2015 | Google Inc. | Query language |

US9020953 * | Mar 7, 2012 | Apr 28, 2015 | Pmc-Sierra Us, Inc. | Search table for data networking matching |

US9087059 | Aug 4, 2010 | Jul 21, 2015 | Google Inc. | User interface for presenting search results for multiple regions of a visual query |

US9135277 | Aug 4, 2010 | Sep 15, 2015 | Google Inc. | Architecture for responding to a visual query |

US9530229 | Mar 24, 2014 | Dec 27, 2016 | Google Inc. | Data object visualization using graphs |

US20060209725 * | Mar 9, 2006 | Sep 21, 2006 | Nec Laboratories America, Inc. | Information Retrieval Architecture for Packet Classification |

US20070136331 * | Nov 28, 2006 | Jun 14, 2007 | Nec Laboratories America | Storage-efficient and collision-free hash-based packet processing architecture and method |

US20070198499 * | Feb 17, 2006 | Aug 23, 2007 | Tom Ritchford | Annotation framework |

US20090024643 * | Aug 13, 2008 | Jan 22, 2009 | X-Engines, Inc | Multi-Level Compressed Look-up Tables Formed by Logical Operations to Compress Selected Index Bits |

US20090248648 * | Mar 27, 2008 | Oct 1, 2009 | International Business Machines Corporation | Method for evaluating a conjunction of equity and range predicates using a constant number of operations |

US20100332846 * | Jun 25, 2010 | Dec 30, 2010 | Simplivt Corporation | Scalable indexing |

US20110227790 * | Mar 17, 2010 | Sep 22, 2011 | Microsoft Corporation | Cuckoo hashing to store beacon reference data |

Classifications

U.S. Classification | 1/1, 707/999.001 |

International Classification | G06F7/00 |

Cooperative Classification | G06F17/3033 |

European Classification | G06F17/30S2P5 |

Legal Events

Date | Code | Event | Description |
---|---|---|---|

Oct 4, 2004 | AS | Assignment | Owner name: NEC LABORATORIES AMERICA, INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHAZELLE, BERNARD;KILIAN, JOSEPH;RUBINFELD, RONITT;AND OTHERS;REEL/FRAME:015212/0952;SIGNING DATES FROM 20040913 TO 20040928 |

Rotate