IP Library Granted Patent US 9,892,057
Granted Patent B2
US 9,892,057 · App. 15/086,095 · Granted Feb 13, 2018

Single double cuckoo hash

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,892,057
App. No.
15/086,095
Granted
Feb 13, 2018
Kind
B2
Abstract

In a network element a decision apparatus has a plurality of multi-way hash tables of single size and double size associative entries. A logic pipeline extracts a search key from each of a sequence of received data items. A hash circuit applies first and second hash functions to the search key to generate first and second indices. A lookup circuit reads associative entries in the hash tables that are indicated respectively by the first and second indices, matches the search key against the associative entries in all the ways. Upon finding a match between the search key and an entry key in an indicated associative entry. A processor uses the value of the indicated associative entry to insert associative entries from a stash of associative entries into the hash tables in accordance with a single size and a double size cuckoo insertion procedure.

Claims (99)

1. A decision apparatus, comprising:

a first memory bank, containing a plurality of hash tables of associative entries comprising a respective entry key and a respective value, the hash tables being accessible in multiple ways including a first way and a second way, the associative entries comprising single size items and double size items;

a second memory bank containing a stash of associative entries;

a logic pipeline, which is configured to receive a sequence of data items, to extract a search key from each of the data items, the logic pipeline comprising:

a hash circuit configured to apply first and second hash functions to the search key to generate first and second indices;

a lookup circuit configured to read the associative entries in the hash tables that are indicated respectively by the first and second indices and to match the search key against the associative entries of the hash tables in all the ways, and upon finding a match between the search key and the respective entry key in an indicated associative entry, to output the respective value from the indicated associative entry;

a processor configured, using the respective value output by the lookup circuit, to insert the associative entries of the stash into the hash tables in accordance with a single size cuckoo hashing insertion procedure and a double size cuckoo hashing insertion procedure for the single size items and the double size items, respectively.

2. The apparatus according to claim 1 , wherein the single size cuckoo hashing insertion procedure for a selected single size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected single size item in one of the first and second vacant ways;

when the first search is unsuccessful, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position is occupied, and when the second search is successful, storing the selected single size item in the first way of the second position;

when the second search is unsuccessful and when a predetermined probability is satisfied, evicting an occupant of one of the ways of a chosen position of one of the hash tables into the stash and storing the selected single size item in the one way of the chosen position; and

when the predetermined probability is not satisfied, conducting a third search of the hash tables for a third position wherein the first way and the second way of the third position have respective first and second occupying single size items, and when the third search is successful, evicting the first occupying single size item into the stash, and storing the selected single size item in the first way of the third position.

3. The apparatus according to claim 2 , further comprising the step of when the third search is unsuccessful, when space for a double size item is unavailable on the stash, inserting the selected single size item into the stash;

when space for a double size item is available on the stash evicting a double size occupant of a new chosen position of one of the hash tables into the stash; and

storing the selected single size item in the new chosen position.

4. The apparatus according to claim 3 , wherein the chosen position and the new chosen position are randomly chosen.

5. The apparatus according to claim 1 , wherein the double size cuckoo hashing insertion procedure for a selected double size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected double size item in the first and second vacant ways;

when the first search is unsuccessful and when a predetermined probability is satisfied, evicting occupants of a chosen position of one of the hash tables into the stash, and storing the selected double size item in the first way and the second way of the chosen position; and

when the predetermined probability is not satisfied, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position has an occupying single size item, and when the second search is successful, evicting the occupying single size item into the stash and storing the selected double size item in the second position;

when the second search is unsuccessful, conducting a third search of the hash tables for a third position having an occupying double size item, and when the third search is successful evicting the occupying double size item and storing the selected double size item in the third position; and

when the third search is unsuccessful, evicting occupants of a new chosen position of one of the hash tables into the stash; and

storing the selected double size item in the new chosen position.

6. The apparatus according to claim 5 , wherein the chosen position and the new chosen position are randomly chosen.

7. A decision apparatus, comprising:

a first memory bank, containing a first table of hash composition factors;

a second memory bank, containing second and third hash tables of associative entries, each of the associative entries comprising a respective entry key and a respective value, the hash tables being accessible in multiple ways including a first way and a second way, the associative entries comprising single size items and double size items;

a third memory bank containing a stash of associative entries;

a logic pipeline, which is configured to receive a sequence of data items, and to extract a search key from each data item, and which comprises:

a pre-hash circuit, configured to compute a first index by applying a first hash function to the search key;

a first lookup circuit, which is coupled to read a hash composition factor from a location in the first memory bank indicated by the first index;

a hash circuit, which is configured to compute second and third indices as different combinations, determined by the hash composition factor, of second and third hash functions applied by the hash circuit to the search key;

a second lookup circuit, which is configured to read the associative entries in the second and third hash tables that are indicated respectively by the second and third indices, and upon finding a match between the search key and the respective entry key in an indicated entry, to output the respective value from the indicated entry; and

a processor, responsively to outputs of the first lookup circuit and the second lookup circuit, configured to insert values of the hash composition factor into the first table and the associative entries into the second and third hash tables in accordance with a single size cuckoo hashing insertion procedure and a double size cuckoo hashing insertion procedure for the single size items and the double size items, respectively.

8. The apparatus according to claim 7 , wherein the single size cuckoo hashing insertion procedure for a selected single size item comprises:

with respective first hash composition factors from the first table iteratively conducting a first search of the hash tables for a first position wherein the first way of the first position is vacant and the second way of the first position is occupied, and when an iteration of the first search is successful, storing the selected single size item in the first way of the first position;

when the iterations of the first search are unsuccessful, iteratively conducting a second search of the hash tables for a second position having first and second vacant ways, and when an iteration of the second search is successful, storing the selected single size item in one of the first and second vacant ways;

when the iterations of the second search are unsuccessful and when a predetermined probability is satisfied, evicting an occupant of one of the ways of a chosen position of one of the hash tables into the stash and storing the selected single size item in the one way of the chosen position; and

when the predetermined probability is not satisfied, conducting a third search of the hash tables for a third position wherein the first way and the second way of the third position have respective first and second occupying single size items, and when the third search is successful, evicting the first occupying single size item into the stash, and storing the selected single size item in the first way of the third position.

9. The apparatus according to claim 8 , further comprising the step of when the third search is unsuccessful, when space for a double size item is unavailable on the stash, inserting the selected single size item into the stash;

when space for a double size item is available on the stash evicting a double size occupant of a new chosen position of one of the hash tables into the stash; and

storing the selected single size item in the new chosen position.

10. The apparatus according to claim 9 , wherein the chosen position, the new chosen position and the hash composition factors are selected randomly.

11. The apparatus according to claim 7 , wherein the double size cuckoo hashing insertion procedure for a selected double size item comprises:

with respective hash composition factors from the first table iteratively conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected double size item in the first and second vacant ways;

when the first search is unsuccessful and when a predetermined probability is satisfied, evicting occupants of a chosen position of one of the hash tables into the stash, and storing the selected double size item in the first way and the second way of the chosen position; and

when the predetermined probability is not satisfied, iteratively conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position has an occupying single size item, and when an iteration of the second search is successful, evicting the occupying single size item into the stash and storing the selected double size item in the second position;

when the iterations of the second search are unsuccessful, conducting a third search of the hash tables for a third position having an occupying double size item, and when the third search is successful evicting the occupying double size item and storing the selected double size item in the third position; and

when the third search is unsuccessful, evicting occupants of a new chosen position of one of the hash tables into the stash; and

storing the selected double size item in the new chosen position.

12. The apparatus according to claim 11 , wherein the chosen position, the new chosen position and the hash composition factors are selected randomly.

13. A method, comprising:

in a first memory bank of a network element storing a plurality of hash tables of associative entries comprising a respective entry key and a respective value, the hash tables being accessible in multiple ways including a first way and a second way, the associative entries comprising single size items and double size items;

in a second memory bank storing a stash of associative entries;

receiving a sequence of data items;

extracting a search key from each of the data items;

applying first and second hash functions to the search key to generate first and second indices;

reading the associative entries in the hash tables that are indicated respectively by the first and second indices

matching the search key against the associative entries of the hash tables in all the ways, and upon finding a match between the search key and the respective entry key in an indicated associative entry, outputting the respective value from the indicated associative entry; and

responsively to the respective value from the indicated associative entry inserting the associative entries of the stash into the hash tables in accordance with a single size cuckoo hashing insertion procedure and a double size cuckoo hashing insertion procedure for the single size items and the double size items, respectively.

14. The method according to claim 13 , wherein the single size cuckoo hashing insertion procedure for a selected single size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected single size item in one of the first and second vacant ways;

when the first search is unsuccessful, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position is occupied, and when the second search is successful, storing the selected single size item in the first way of the second position;

when the second search is unsuccessful and when a predetermined probability is satisfied, evicting an occupant of one of the ways of a chosen position of one of the hash tables into the stash and storing the selected single size item in the one way of the chosen position; and

when the predetermined probability is not satisfied, conducting a third search of the hash tables for a third position wherein the first way and the second way of the third position have respective first and second occupying single size items, and when the third search is successful, evicting the first occupying single size item into the stash, and storing the selected single size item in the first way of the third position.

15. The method according to claim 14 , further comprising the step of when the third search is unsuccessful, when space for a double size item is unavailable on the stash, inserting the selected single size item into the stash;

when space for a double size item is available on the stash evicting a double size occupant of a new chosen position of one of the hash tables into the stash; and

storing the selected single size item in the new chosen position.

16. The method according to claim 13 , wherein the double size cuckoo hashing insertion procedure for a selected double size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected double size item in the first and second vacant ways;

when the first search is unsuccessful and when a predetermined probability is satisfied, evicting occupants of a chosen position of one of the hash tables into the stash, and storing the selected double size item in the first way and the second way of the chosen position; and

when the predetermined probability is not satisfied, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position has an occupying single size item, and when the second search is successful, evicting the occupying single size item into the stash and storing the selected double size item in the second position;

when the second search is unsuccessful, conducting a third search of the hash tables for a third position having an occupying double size item, and when the third search is successful evicting the occupying double size item and storing the selected double size item in the third position; and

when the third search is unsuccessful, evicting occupants of a new chosen position of one of the hash tables into the stash; and

storing the selected double size item in the new chosen position.

17. A computer software product, including a non-transitory computer-readable storage medium in which computer program instructions are stored, which instructions, when executed by a computer, cause the computer to perform the steps of:

in a first memory bank storing a plurality of hash tables of associative entries comprising a respective entry key and a respective value, the hash tables being accessible in multiple ways including a first way and a second way, the associative entries comprising single size items and double size items;

in a second memory bank storing a stash of associative entries;

receiving a sequence of data items;

extracting a search key from each of the data items;

applying first and second hash functions to the search key to generate first and second indices;

reading the associative entries in the hash tables that are indicated respectively by the first and second indices

matching the search key against the associative entries of the hash tables in all the ways, and upon finding a match between the search key and the respective entry key in an indicated associative entry, outputting the respective value from the indicated associative entry; and

responsively to the respective value from the indicated associative entry inserting the associative entries of the stash into the hash tables in accordance with a single size cuckoo hashing insertion procedure and a double size cuckoo hashing insertion procedure for the single size items and the double size items, respectively.

18. The computer software product according to claim 17 , wherein the single size cuckoo hashing insertion procedure for a selected single size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected single size item in one of the first and second vacant ways;

when the first search is unsuccessful, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position is occupied, and when the second search is successful, storing the selected single size item in the first way of the second position;

when the second search is unsuccessful and when a predetermined probability is satisfied, evicting an occupant of one of the ways of a chosen position of one of the hash tables into the stash and storing the selected single size item in the one way of the chosen position; and

when the predetermined probability is not satisfied, conducting a third search of the hash tables for a third position wherein the first way and the second way of the third position have respective first and second occupying single size items, and when the third search is successful, evicting the first occupying single size item into the stash, and storing the selected single size item in the first way of the third position.

19. The computer software product according to claim 18 , when the third search is unsuccessful the instructions cause the computer to perform the steps of, when space for a double size item is unavailable on the stash, inserting the selected single size item into the stash;

when space for a double size item is available on the stash evicting a double size occupant of a new chosen position of one of the hash tables into the stash; and

storing the selected single size item in the new chosen position.

20. The computer software product according to claim 17 , wherein the double size cuckoo hashing insertion procedure for a selected double size item comprises:

conducting a first search of the hash tables for a first position having first and second vacant ways, and when the first search is successful, storing the selected double size item in the first and second vacant ways;

when the first search is unsuccessful and when a predetermined probability is satisfied, evicting occupants of a chosen position of one of the hash tables into the stash, and storing the selected double size item in the first way and the second way of the chosen position; and

when the predetermined probability is not satisfied, conducting a second search of the hash tables for a second position wherein the first way of the second position is vacant and the second way of the second position has an occupying single size item, and when the second search is successful, evicting the occupying single size item into the stash and storing the selected double size item in the second position;

when the second search is unsuccessful, conducting a third search of the hash tables for a third position having an occupying double size item, and when the third search is successful evicting the occupying double size item and storing the selected double size item in the third position; and

when the third search is unsuccessful, evicting occupants of a new chosen position of one of the hash tables into the stash; and

storing the selected double size item in the new chosen position.

Assignments (4)
MERGER Recorded Dec 15, 2021
From: MELLANOX TECHNOLOGIES TLV LTD.
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 058517/0564 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 42962/0859 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
Reel/Frame 046551/0459 →
SECURITY INTEREST Recorded Jun 23, 2017
From: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 042962/0859 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LEVY, GIL; PONTARELLI, SALVATORE; REVIRIEGO, PEDRO
To: MELLANOX TECHNOLOGIES TLV LTD.
Reel/Frame 038144/0048 →