# US 8,930,650 B1 · Identification of non-sequential data stored in memory

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,930,650 B1
- Document ID: US8930650B1
- Status: Granted
- Kind: B1
- Application number: 14/248,229
- Filed: 2014-04-08
- Granted: 2015-01-06
- Earliest claimed: 2007-07-05
- Assignees: Silver Peak Systems, Inc.
- Applicants: David Anthony Hughes; Zhigang Yin; John Burns
- Inventors: David Anthony Hughes; Zhigang Yin; John Burns
- Web page: https://patentgrep.com/patent/US8930650B1

## CPC

- G06F 12/121: using replacement algorithms
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G06F 12/0862: with prefetch
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/6026: Prefetching based on access pattern detection, e.g. stride based prefetch
- Y10S 707/99944: Object-oriented database structure
- Y10S 707/99947: Object-oriented database structure reference
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

Systems and methods for identification of data stored in memory are provided. A data packet is received and a first packet byte within the data packet is compared to a first memory byte within a memory. A mismatch is determined between the first packet byte and the first memory byte. A memory location is accessed that contains a second memory byte that is non-consecutive with the first memory byte. A packet location accessed that contains a second packet byte that is non-consecutive with the first packet byte. The second packet byte is compared to the second memory byte. A retrieval instruction is generated based at least in part on a result of the comparison between the second packet byte and the second memory byte. Various embodiments may be included in a network memory architecture to allow for faster data matching and instruction generation in a central appliance.

## Claims

### Claim 1

A method comprising:
receiving packet data;
comparing a first packet byte within the packet data to a first memory byte within memory data;
determining a mismatch between the first packet byte and the first memory byte;
after determining the mismatch between the first packet byte and the first memory byte, accessing a memory location containing a second memory byte, the second memory byte being non-consecutive-with the first memory byte;
accessing a packet location containing a second packet byte, the second packet byte being non-consecutive with any other compared packet byte;
determining a match between the second packet byte and the second memory byte;
determining that a search end criteria has been met, the search end criteria being based on at least one of a number of jumps, a percentage of a memory searched, and a total number of memory bytes searched;
generating instructions to reassemble the packet data from the memory data; and
processing the instructions to reassemble the packet data based at least in part on a result of a comparison between the packet bytes and the memory bytes.

### Claim 2 (depends on 1)

The method of claim 1, wherein a number of packet bytes between the first packet byte and the second packet byte is equal to a number of memory bytes between the first memory byte and the second memory byte.

### Claim 3 (depends on 1)

The method of claim 1, further comprising determining that a match threshold between the matched packet bytes and the matched memory bytes is met.

### Claim 4 (depends on 3)

The method of claim 3, wherein the match threshold is based on at least one of a number of bytes having a match and a percentage of the bytes having a match.

### Claim 5 (depends on 1)

The method of claim 1, further comprising generating an insertion command to insert missing packet bytes into the memory data.

### Claim 6 (depends on 1)

The method of claim 1, further comprising generating a deletion command to delete memory bytes not matching the packet data.

### Claim 7 (depends on 1)

The method of claim 1, further comprising generating an overwrite command to replace memory bytes with packet bytes.

### Claim 8 (depends on 1)

The method of claim 1, wherein the memory data is stored in a faster memory in a network memory appliance.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
pre-scanning the packet data to generate a sample fingerprint;
identifying stored fingerprints identical to the sample fingerprint; and
copying the first memory byte associated with the identified stored fingerprints into the memory.

### Claim 10

A system comprising:
a comparison module configured to compare a first packet byte within a packet data to a first memory byte within a memory data, determine a mismatch between the first packet byte and the first memory byte, access a memory location containing a second memory byte that is non-consecutive with the first memory byte after determining the mismatch between the first packet byte and the first memory byte, access a packet location containing a second packet byte that is non-consecutive with any other compared packet byte, determine a match between the second packet byte and the second memory byte, and determine that a search's end criteria has been met, the search end criteria being based on at least one of a number of jumps, a percentage of a memory searched, and a total number of memory bytes searched; and
a data module that generates instructions to reassemble the packet data from the memory data based at least in part on a result of a comparison between the packet bytes and the memory bytes.

### Claim 11 (depends on 10)

The system of claim 10, wherein a number of packet bytes between the first packet byte and the second packet byte is equal to a number of memory bytes between the first memory byte and the second memory byte.

### Claim 12 (depends on 10)

The system of claim 10, wherein the comparison module is further configured to determine that a match threshold between the matched packet bytes and the matched memory bytes is met.

### Claim 13 (depends on 12)

The system of claim 12, wherein the match threshold is based on at least one of a threshold number of bytes having a match, and a percentage of the bytes having a match.

### Claim 14 (depends on 10)

The system of claim 10, wherein the data module is further configured to generate an insertion command to insert missing packet bytes into the memory data.

### Claim 15 (depends on 10)

The system of claim 10, wherein the data module is further configured to generate a deletion command to delete memory bytes not matching the packet data.

### Claim 16 (depends on 10)

The system of claim 10, wherein the data module is further configured to generate an overwrite command to replace memory bytes with packet bytes.

### Claim 17 (depends on 10)

The system of claim 10, wherein the memory data is stored in a faster memory in a network memory appliance.

### Claim 18 (depends on 10)

The system of claim 10, further comprising a prescan module configured to pre-scan the packet data to generate a sample fingerprint, identify stored fingerprints identical to the sample fingerprint, and copy the first memory byte associated with the identified stored fingerprints into the memory.

### Claim 19

A non-transitory computer readable medium having embodied thereon a program, the program being executable by a processor for performing a method for generating a retrieval instruction based on matched data, the method comprising:
receiving packet data;
comparing a first packet byte within the packet data to a first memory byte within memory data;
determining a mismatch between the first packet byte and the first memory byte;
after determining the mismatch between the first packet byte and the first memory byte, accessing a memory location containing a second memory byte, the second memory byte being non-consecutive-with the first memory byte;
accessing a packet location containing a second packet byte, the second packet byte being non-consecutive with any other compared packet byte;
determining a match between the second packet byte and the second memory byte;
determining that a search end criteria for a memory has been met, the search end criteria being based on at least one of a number of jumps, a percentage of the memory searched, and a total number of memory bytes searched;
generating instructions to reassemble the packet data from the memory data; and
processing the instructions to reassemble the packet data based at least in part on a result of a comparison between the packet bytes and the memory bytes.

### Claim 20 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein a number of packet bytes between the first packet byte and the second packet byte is equal to a number of memory bytes between the first memory byte and the second memory byte.

### Claim 21 (depends on 19)

The non-transitory computer readable medium of claim 19, further comprising determining that a match threshold between the matched packet bytes and the memory bytes is met.

### Claim 22 (depends on 21)

The non-transitory computer readable medium of claim 21, wherein the match threshold is based on at least one of a number of bytes having a match and a percentage of the bytes having a match.

### Claim 23 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein the method further comprises generating an insertion command to insert missing packet bytes into the memory data.

### Claim 24 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein the method further comprises generating a deletion command to delete memory bytes not matching the packet data.

### Claim 25 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein the method further comprises generating an overwrite command to replace memory bytes with packet bytes.

### Claim 26 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein the memory data is stored in a faster memory in a network memory appliance.

### Claim 27 (depends on 19)

The non-transitory computer readable medium of claim 19, wherein the method further comprises:
pre-scanning the packet data to generate a sample fingerprint;
identifying stored fingerprints identical to the sample fingerprint; and
copying the first memory byte associated with the identified stored fingerprints into the memory.
