IP Library Granted Patent US 7,251,663
Granted Patent B1
US 7,251,663 · App. 10/858,734 · Granted Jul 31, 2007

Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges

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 7,251,663
App. No.
10/858,734
Granted
Jul 31, 2007
Kind
B1
Abstract

An efficient method and apparatus for storing and retrieving memory ranges is disclosed. A key range that is stored or to be stored is associated with a node in the tree hierarchy encompassing the entire memory address space. All previously stored ranges are listed or otherwise associated with each node, and all possible nodes that may contain ranges that overlap the key range, regardless of starting or ending locations or range length, are found. Partitions are developed in the tree structure of the available address space and the width of the key range (w), the widths of the partitions (d), and the range of offsets in the starting location of the key range with respect to a partition (o) are used to develop a formula that finds a partition suitable for storing the key range. Hashing and dynamic tree building may be used.

Claims (38)

1. A method for finding in a memory address space, a previously stored memory range that overlaps a key memory range, the method comprising the steps of:

organizing the memory address space in a tree with n levels and m branching from nodes, wherein a number of nodes N in a level i is calculated by N i =m i , and wherein at any level in the tree the memory address space is divided into N nodes each of a given size,

finding all ranges that overlap the key memory range, and

searching ranges previously inserted into each overlapping partition elements to see if ranges previously inserted overlap the key memory range, wherein n, m, N, and i are positive integers, where n is greater than 1.

2. The method of claim 1 wherein the step of searching for overlapping ranges includes the steps of:

comparing the starting and the ending address of the key memory range to the starting and ending address of the previously inserted ranges, and

determining that the key memory and a previously inserted range overlap when at least one memory address in the key memory range is found in a previously inserted range.

3. The method of claim 1 further comprising the steps of:

forming a list or table of previously inserted ranges into partition elements associated with nodes, and

associating each list with one node, wherein the searching for overlapping ranges includes searching the lists associated with the overlapping node elements.

4. The method of claim 1 further comprising the steps of:

providing an index for each node in the tree,

selecting the index associated with the node and a partition element for storing a key range,

using the index as an argument in a hash function to point to a bucket where the key range is to be stored.

5. The method of claim 1 further comprising the step of determining that a previously stored range overlaps the key memory range, whereupon the key memory range is not stored in the selected node.

6. The method of claim 5 wherein when an overlap is found the partition tree is to be dynamically constructed by performing the steps of:

restricting the formation of any child node to a maximum of m−1 partition elements,

if the node into which the key range is to be inserted already contains m−1 elements, creating m child nodes from the selected node, and

attempting to insert the key range into an appropriate node, and if unsuccessful, repeating the creating new children of the appropriate node.

7. Apparatus for finding in a memory address space, a previously stored memory range that overlaps a key memory range, the apparatus comprising:

memory having an address space organized in a tree with n levels and m branching from nodes, wherein a number of nodes N in a level i is calculated by N i =m i , and wherein at any level in the tree the memory address space is divided into N nodes each of a given size,

means for finding all ranges that overlap the key memory range, and

means for searching ranges previously inserted into each overlapping partition elements to see if the ranges previously inserted overlap the key memory range, wherein n, m, N, and i are positive integers, where n is greater than 1.

8. The apparatus of claim 7 wherein the means for searching for overlapping ranges comprises:

means for comparing the starting and the ending address of the key memory range to the starting and ending address of the previously inserted ranges, and

means for determining that the key memory and a previously inserted range overlap when at least one memory address in the key memory range is found in a previously inserted range.

9. The apparatus of claim 7 further comprising:

means for forming a list or table of previously inserted ranges into partition elements associated with nodes, and

means for associating each list with one node, wherein the searching for overlapping ranges includes searching the lists associated with the overlapping node elements.

10. The apparatus of claim 7 further comprising:

means for providing an index for each node in the tree,

means for selecting the index associated with the node and a partition element for storing a key range, and

means for using the index as an argument in a hash function to point to a bucket where the key range is to be stored.

11. The apparatus of claim 7 further comprising means for determining that a previously stored range overlaps the key memory range, whereupon the key memory range is not stored in the selected node.

12. The apparatus of claim 11 wherein when an overlap is found the partition tree is to be dynamically constructed as comprising:

means for restricting the formation of any child node to a maximum of m−1 partition elements, and

if the node into which the key range is to be inserted already contains m−1 elements, means for creating m child nodes from the selected node, and

means for attempting to insert the key range into an appropriate node, and if unsuccessful.

Assignments (3)
CHANGE OF NAME Recorded Jul 16, 2024
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 068000/0062 →
CHANGE OF NAME Recorded Sep 21, 2015
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 036610/0642 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2004
From: SMITH, RANDALL
To: NETWORK APPLIANCE, INC.
Reel/Frame 015427/0471 →