# US 2014/0157258 A1 · Hardware contiguous memory region tracking

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

- Number: US 2014/0157258 A1
- Document ID: US20140157258A1
- Status: Published application
- Kind: A1
- Application number: 13/690,162
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Eli M. Dow; James P. Gilchrest; Steven K. Schmidt; Jessie Yu
- Web page: https://patentgrep.com/patent/US20140157258A1

## CPC

- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 16/116: {Details of conversion of file system types or formats}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/188: Virtual file systems
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the invention relate to performing a scan of a memory region associated with a virtual machine. The scan is performed by a hardware mechanism in response to a call. A data structure that includes information about substrings identified during the scan and a number of replications for each substring is constructed by the hardware mechanism. The data structure is stored by the hardware mechanism at a location determined by the call.

## Claims

### Claim at position 1

1-7. (canceled)

### Claim 8

An apparatus comprising:
at least one processor; and
a storage device having instructions stored thereon that, when executed by the at least one processor, cause the apparatus to:
perform a scan, using a hardware mechanism, of a memory region associated with a virtual machine in response to a call,
construct a data structure comprising information about substrings identified during the scan and a number of replications for each substring, and
store the data structure at a location determined by the call.

### Claim 9 (depends on 8)

The apparatus of claim 8, wherein the instructions, when executed by the at least one processor, cause the apparatus to:
determine at least one of a beginning address and a beginning register to start the scan from based on the call,
determine at least one of an ending address and an ending register to end the scan based on the call, and
perform the scan based on the at least one of a beginning address and a beginning register and the at least one of an ending address and an ending register.

### Claim 10 (depends on 8)

The apparatus of claim 8, wherein the call comprises a specification of a threshold corresponding to a minimum length for the substrings, and wherein the instructions, when executed by the at least one processor, cause the apparatus to:
identify the substrings during the scan based on a determination that a length of each of the substrings is greater than the threshold.

### Claim 11 (depends on 8)

The apparatus of claim 8, wherein the data structure is stored at a memory address determined by the call.

### Claim 12 (depends on 8)

The apparatus of claim 8, wherein the memory region is referenced by a plurality of virtual machines, wherein the plurality of virtual machines includes the virtual machine, and wherein the plurality of virtual machines are hosted by the apparatus.

### Claim 13 (depends on 8)

The apparatus of claim 8, wherein the instructions, when executed by the at least one processor, cause the apparatus to:
sort the information based on the number of replications for each substring,
wherein the data structure is stored based on the sorting.

### Claim 14 (depends on 8)

The apparatus of claim 8, wherein the memory region is a contiguous region of a memory.

### Claim 15 (depends on 8)

The apparatus of claim 8, wherein the instructions, when executed by the at least one processor, cause the apparatus to:
listen for the call as an assembler call.

### Claim 16

A computer program product comprising:
a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising:
computer readable program code configured for:
performing a scan of a memory region associated with a virtual machine, the performing by a hardware mechanism in response to a call,
constructing a data structure comprising information about substrings identified during the scan and a number of replications for each substring, and
storing the data structure at a location determined by the call.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the computer readable program code is further configured for:
identifying the substrings during the scan based on determining that each of the substrings is of a length that is greater than a threshold specified by the call.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein the memory region is referenced by a plurality of virtual machines, wherein the plurality of virtual machines includes the virtual machine, and wherein the plurality of virtual machines are hosted by the machine.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein the computer readable program code is further configured for:
determining at least one of a beginning address and a beginning register to start the scan from based on the call,
determining at least one of an ending address and an ending register to end the scan based on the call, and
performing the scan based on the at least one of a beginning address and a beginning register and the at least one of an ending address and an ending register.

### Claim 20 (depends on 16)

The computer program product of claim 16, wherein the scan is implemented using a hardware level language, and wherein the scan is performed by a hypervisor of the machine.

### Claim 21 (depends on 16)

The computer program product of claim 16, wherein the data structure is a map of keys to a linked list, and wherein the computer readable program code is further configured for:
locating a region for memory sharing by iterating over a plurality of contiguous fixed length memory regions and incrementing an index into a page for each iteration until all indices within the page and all region sizes within the page are computed, and
storing an indication of the region for access by software in at least one of:
the data structure, and
a register.
