← Back to Patent Explorer
US7146371B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Performance and memory bandwidth utilization for tree searches using tree fragmentation

Assignee: International Business Machines Corp
•
Filing: 2002-12-05
•
Granted: 2006-12-05
•
Expires: 2022-12-05
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A data structure and corresponding search methods are disclosed for improving the performance of table lookups. A data structure for the table is employed using a single hash table with hash table entries pointing to tree fragments that are contiguous in main memory and can be efficiently loaded into a local data store or cache. Decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions. Leaf nodes are stored in a contiguous block of memory based on the position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions. Leaf nodes of the tree fragments contain indicia of a data record, or indicia of another tree fragment. The data structure and corresponding search algorithm are employed for searches based on a longest prefix match in an internet routing table.

Inventors

  • 👤 Peter Hofstee
  • 👤 Marc C. Necker

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 17:34
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/20; G06F16/22; G06F16/2228; G06F16/2255; G06F16/2246; Y; Y10; Y10S; Y10S707/00; Y10S707/99941; Y10S707/99942; Y10S707/99943

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 217 words
A method of initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, comprising: creating the single hash table; creating the plurality of tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on the position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and assigning the tree fragment to at least one hash table entry.
Claim 2
Independent Claim 217 words
A method of initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, comprising: creating the single hash table; creating the plurality of tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on the position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and assigning the tree fragment to at least one hash table entry.
Claim 3
Dependent Claim 15 words
The method of claim 1 , wherein the hash table comprises a one-to-one hash table.
Claim 4
Dependent Claim 19 words
The method of claim 1 , wherein each of the plurality of leaf nodes are substantially equal in size.
Claim 5
Dependent Claim 17 words
The method of claim 1 , further comprising employing the data structure to perform a prefix search.
Claim 6
Dependent Claim 19 words
The method of claim 4 , further comprising forwarding an Internet protocol packet through employment of the prefix search.
Claim 7
Dependent Claim 26 words
The method of claim 1 , wherein a separate table is accessed when the tree fragment associated with the hash key has zero or one entries.
Claim 8
Dependent Claim 31 words
The method of claim 1 , wherein the step of assigning a leaf node tree fragment further comprises assigning Internet protocol routing information to a leaf node of the sub-tree fragment.
Claim 9
Dependent Claim 31 words
The method of claim 1 , further comprising a step of locating a leaf node within the tree fragment as a function of an associated memory address of the leaf node.
Claim 10
Dependent Claim 19 words
The method of claim 1 , wherein the step of storing the tree fragment comprises substantially one loading sequence.
Claim 11
Dependent Claim 32 words
The method of claim 1 , wherein the fragment header comprises a base address pointer, an indicia of the size of a decision node, and a bit mask indicating occupied leaf nodes.
Claim 12
Dependent Claim 14 words
The method of claim 1 , wherein the tree fragments comprise Patricia tree fragments.
Claim 13
Dependent Claim 250 words
A computer program product for initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, the computer program product having a computer-readable medium with a computer program embodied thereon, the computer program comprising: computer code for creating the single hash table; computer code for creating the plurality tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; computer code for storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on he position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; computer code for hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and computer code for assigning the tree fragment to at least one hash table entry.
Claim 14
Dependent Claim 250 words
A computer program product for initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, the computer program product having a computer-readable medium with a computer program embodied thereon, the computer program comprising: computer code for creating the single hash table; computer code for creating the plurality tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; computer code for storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on he position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; computer code for hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and computer code for assigning the tree fragment to at least one hash table entry.
Claim 15
Dependent Claim 34 words
The computer program product of claim 12 , wherein the fragment header comprises a base address pointer, an indicia of the size of a decision node, and a bit mask indicating occupied leaf nodes.
Claim 16
Dependent Claim 16 words
The computer program product of claim 12 , wherein the tree fragments comprise Patricia tree fragments.
Claim 17
Dependent Claim 243 words
A processor for initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, the processor including a computer program comprising: computer program code for creating the single hash table; computer program code for creating the plurality of tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; computer program code for storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on the position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; computer program code for hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and computer program code for assigning the tree fragment to at least one hash table entry.
Claim 18
Dependent Claim 243 words
A processor for initializing a data structure comprising a tree structure that employs a single hash table and a plurality of tree fragments, the processor including a computer program comprising: computer program code for creating the single hash table; computer program code for creating the plurality of tree fragments comprising a plurality of decision nodes and a plurality of leaf nodes of the tree structure, wherein each of the plurality of tree fragments is substantially the same size and comprises a header; computer program code for storing the plurality of tree fragments such that: the plurality of decision nodes are stored in a contiguous block of memory in a relative position based on the position of the decision node in the tree structure, including blank positions; wherein storing the tree fragment is a function of a local storage size, wherein the local storage size is selected from the group consisting of a memory burst access size, a bus transfer size and a cache line size; and the plurality of leaf nodes are stored in a contiguous block of memory based on the position of the leaf node in the tree structure, concatenating leaf nodes to eliminate blank positions; computer program code for hashing at least one table entry corresponding to each tree fragment, thereby creating at least one hash key and at least one hash table entry; and computer program code for assigning the tree fragment to at least one hash table entry.
Claim 19
Dependent Claim 32 words
The processor of claim 15 , wherein the fragment header comprises a base address pointer, an indicia of the size of a decision node, and a bit mask indicating occupied leaf nodes.
Claim 20
Dependent Claim 14 words
The processor of claim 15 , wherein the tree fragments comprise Patricia tree fragments.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2009-12-04 2010-06-05 2010-12-05 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2013-12-04 2014-06-05 2014-12-05 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2017-12-04 2018-06-05 2018-12-05 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag