IP Library Granted Patent US 9,152,661
Granted Patent B1
US 9,152,661 · App. 13/278,785 · Granted Oct 6, 2015

System and method for searching a data structure

Inventors: Satish Sathe (San Ramon, CA); Rajendra Marulkar (Pune, IN); Sagar Vaishampayan (Pune, IN)
Assignee: Applied Micro Circuits Corporation
G06F17/3033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,152,661
App. No.
13/278,785
Granted
Oct 6, 2015
Kind
B1
Abstract

System and method for searching a data structure are disclosed. The method includes providing a data structure that includes a plurality of data entries stored in an external random access memory (RAM) and a portion of the data structure is stored in an internal cache memory, performing one or more hash functions on each entry of the data structure to generate an encoding that maps to a location in the external RAM, maintaining a count of encodings that map to the location in the external RAM, receiving a search string, performing the one or more hash functions on the search string to generate an index to the count of encodings, and searching the data structure in accordance with the count of encodings stored in the internal cache memory and in the external RAM.

Claims (55)

1. A method for searching a data structure, comprising:

providing a data structure, wherein the data structure comprises a plurality of data entries stored in an external random access memory (RAM) and a portion of the data structure is stored in an internal cache memory;

performing one or more hash functions on each entry of the data structure to generate an encoding that maps to a location in the external RAM;

maintaining a count of encodings that map to the location in the external RAM, wherein a first portion of the count of encodings is stored in the internal cache memory and a second portion of the count of encodings is stored in the external RAM, the first portion of the count of encodings comprises an indication of whether the second portion of the count of encodings is used; and the second portion of the count of encodings is an extension of the first portion of the count of encodings;

receiving a search string;

performing the one or more hash functions on the search string to generate an index to the count of encodings; and

searching the data structure in accordance with the count of encodings stored in the internal cache memory and in the external RAM,

wherein maintaining the count of encodings comprises:

if there is the indication the second portion of the count of encoding is not used, incrementing the first portion of the count in response to a different entry of the data structure that maps to the location in the external RAM, and

decrementing the first portion of the count in response to an entry that maps to the location in the external RAM is removed from the data structure.

2. The method of claim 1 , wherein the first portion of the count of encodings comprises count values of 0, 1, and 2, and the second portion of the count of encodings comprises count values of great than 2.

3. The method of claim 1 , wherein maintaining a count of encodings further comprises:

if there is an indication the second portion of the count of encoding is used, incrementing the second portion of the count in response to a different entry of the data structure that maps to the location in the external RAM; and

decrementing the second portion of the count in response to an entry that maps to the location in the external RAM is removed from the data structure.

4. The method of claim 1 , further comprising:

identifying a false positive access associated with an encoding of a non-existing entry in the data structure;

creating a default missed entry to record the encoding;

counting a number of missed entries associated with the encoding using the default missed entry; and

generating an alert signal if the number of missed entries exceeds a predetermined threshold value.

5. The method of claim 4 further comprises creating an access control list entry for the non-existing entry.

6. The method of claim 4 further comprising reconfiguring a bloom filter to indicate false positive accesses detected based on the non-existing entry.

7. The method of claim 4 further comprises programming a parser to control the non-existing entry.

8. A system for searching a data structure, comprising:

a memory for storing the data structure, wherein the data structure comprises a hierarchically arranged set of nodes and branches, and each node has two or less branches;

a user interface for viewing representations of the data structure on a display;

at least a processor and control logic, wherein the processor and control logic further comprises logic for providing the data structure, wherein the data structure comprises a plurality of data entries stored in an external random access memory (RAM) and a portion of the data structure is stored in an internal cache memory;

logic for performing one or more hash functions on each entry of the data structure to generate an encoding that maps to a location in the external RAM;

logic for maintaining a count of encodings that map to the location in the external RAM, wherein a first portion of the count of encodings is stored in the internal cache memory and a second portion of the count of encodings is stored in the external RAM;

logic for receiving a search string;

logic for performing the one or more hash functions on the search string to generate an index to the count of encodings;

searching the data structure in accordance with the count of encodings stored in the internal cache memory and in the external RAM;

logic for identifying a false positive access associated with an encoding of a non-existing entry in the data structure;

logic for creating a default missed entry to record the encoding;

logic for counting a number of missed entries associated with the encoding using the default missed entry; and

logic for generating an alert signal if the number of missed entries exceeds a predetermined threshold value.

9. The system of claim 8 , wherein the first portion of the count of encodings comprises an indication of whether the second portion of the count of encodings is used; and the second portion of the count of encodings is an extension of the first portion of the count of encodings.

10. The system of claim 9 , wherein the first portion of the count of encodings comprises count values of 0, 1, and 2, and the second portion of the count of encodings comprises count values of great than 2.

11. The system of claim 9 , wherein logic for maintaining the count of encodings comprises:

if there is the indication the second portion of the count of encoding is not used, logic for incrementing the first portion of the count in response to a different entry of the data structure that maps to the location in the external RAM; and

logic for decrementing the first portion of the count in response to an entry that maps to the location in the external RAM is removed from the data structure.

12. The system of claim 9 , wherein logic for maintaining the count of encodings further comprises:

if there is the indication the second portion of the count of encoding is used, logic for incrementing the second portion of the count in response to a different entry of the data structure that maps to the location in the external RAM; and

logic for decrementing the second portion of the count in response to an entry that maps to the location in the external RAM is removed from the data structure.

13. The system of claim 8 further comprises logic for creating an access control list entry for the non-existing entry.

14. The system of claim 8 further comprising logic for reconfiguring a bloom filter to indicate false positive accesses detected based on the non-existing entry.

15. The system of claim 8 further comprises logic for programming a parser to control the non-existing entry.

16. A computer program product for searching a data structure, comprising a non-transitory medium storing computer programs for execution by one or more computer systems, the computer program product comprising:

code for providing a data structure, wherein the data structure comprises a plurality of data entries stored in an external random access memory (RAM) and a portion of the data structure is stored in an internal cache memory;

code for performing one or more hash functions on each entry of the data structure to generate an encoding that maps to a location in the external RAM;

code for maintaining a count of encodings that map to the location in the external RAM, wherein a first portion of the count of encodings is stored in the internal cache memory and a second portion of the count of encodings is stored in the external RAM;

code for receiving a search string;

code for performing the one or more hash functions on the search string to generate an index to the count of encodings; and

code for searching the data structure in accordance with the count of encodings stored in the internal cache memory and in the external RAM, wherein the first portion of the count of encodings comprises count values of 0, 1, and 2, and the second portion of the count of encodings comprises count values of great than 2.

17. The computer program product of claim 16 , wherein the first portion of the count of encodings comprises an indication of whether the second portion of the count of encodings is used;

and the second portion of the count of encodings is an extension of the first portion of the count of encodings.

Assignments (6)
CHANGE OF NAME Recorded Dec 6, 2017
From: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
To: AMPERE COMPUTING LLC
Reel/Frame 044717/0683 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2017
From: MACOM CONNECTIVITY SOLUTIONS, LLC
To: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
Reel/Frame 044798/0599 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2017
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: MACOM CONNECTIVITY SOLUTIONS, LLC (SUCCESSOR TO APPLIED MICRO CIRCUITS CORPORATION)
Reel/Frame 044652/0609 →
SECURITY INTEREST Recorded May 11, 2017
From: MACOM CONNECTIVITY SOLUTIONS, LLC (SUCCESSOR TO APPLIED MICRO CIRCUITS CORPORATION)
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 042444/0891 →
MERGER AND CHANGE OF NAME Recorded Apr 6, 2017
From: APPLIED MICRO CIRCUITS CORPORATION; MACOM CONNECTIVITY SOLUTIONS, LLC; MACOM CONNECTIVITY SOLUTIONS, LLC
To: MACOM CONNECTIVITY SOLUTIONS, LLC
Reel/Frame 042176/0185 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2011
From: SATHE, SATISH; MARULKAR, RAJENDRA; VAISHAMPAYAN, SAGAR
To: APPLIED MICRO CIRCUITS CORPORATION
Reel/Frame 027103/0696 →