# US 10,372,606 B2 · System and method for integrating overprovisioned memory devices

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

- Number: US 10,372,606 B2
- Document ID: US10372606B2
- Status: Granted
- Kind: B2
- Application number: 15/282,848
- Filed: 2016-09-30
- Published: 2018-02-01
- Granted: 2019-08-06
- Earliest claimed: 2016-07-29
- Assignees: Samsung Electronics Co., Ltd.
- Applicants: Samsung Electronics Co., Ltd.
- Inventors: Krishna Malladi; Jongmin Gim; Hongzhong Zheng
- Web page: https://patentgrep.com/patent/US10372606B2

## CPC

- G06F 12/08: in hierarchically structured memory systems, e.g. virtual memory systems
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/10: Address translation
- G06F 2212/1016: Performance improvement
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/401: Compressed data
- G06F 2212/403: Error protection encoding, e.g. using parity or ECC codes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A memory device includes a memory interface to a host computer and a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS). A kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device.

## Claims

### Claim 1

A memory device comprising:
a memory interface to a host computer; and
a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS),
wherein a kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, and
wherein the frontswap API call of the kernel driver module provides a hook to intercept the anonymous pages before the anonymous pages are migrated to a swap space of a secondary swap system, and instead migrates the anonymous pages to the frontswap space of the memory space.

### Claim 2 (depends on 1)

The memory device of claim 1, where the virtual memory capacity of the memory device dynamically varies by compression, deduplication, or/and error-correction of data stored in the memory device.

### Claim 3 (depends on 1)

The memory device of claim 1, wherein the memory interface is a double data rate (DDR) interface or a peripheral component interconnect express (PCIe) interface.

### Claim 4 (depends on 1)

The memory device of claim 1, wherein the frontswap API call of the kernel driver module migrates the anonymous pages to the swap space of the secondary swap system when the virtual memory capacity is full due to a compaction of the memory device.

### Claim 5

A memory device comprising:
a memory interface to a host computer; and
a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS),
wherein a kernel driver module of the host OS is configured to manage the virtual memory capacity of the memory device provided by the memory overprovisioning logic of the memory device and provide a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, and
wherein the cleancache API call of the kernel driver module provides a hook to intercept the file pages before the file pages are migrated to a file system of a secondary swap system, and instead migrates the file pages to the cleancache space of the memory device.

### Claim 6 (depends on 5)

The memory device of claim 5, wherein the cleancache API call of the kernel driver module migrates the file pages to the file system of the secondary swap system when the virtual memory capacity is full due to a compaction ratio of the memory device.

### Claim 7 (depends on 1)

The memory device of claim 1, wherein the frontswap and cleancache API calls initiate a CPU memory copy and direct memory access (DMA) transfer to an interface controller.

### Claim 8 (depends on 1)

The memory device of claim 1, wherein the memory overprovisioning logic includes an embedded bitmap to tracks pages in the memory device.

### Claim 9 (depends on 1)

The memory device of claim 1, further comprising a dedicated communication channel to provide the virtual memory capacity to the host OS.

### Claim 10

A method comprising:
providing a memory device comprising a memory overprovisioning logic configured to provide a virtual memory capacity to a host operating system (OS);
configuring the memory device as a block memory device over a memory interface to a host computer;
loading a kernel driver module from a kernel of the host OS during a runtime; and
providing a fast swap of anonymous pages to a frontswap space and file pages to a cleancache space of the memory device using the kernel driver module based on the virtual memory capacity of the memory device,
wherein the kernel driver module provides a frontswap application programming interface (API) call and a cleancache API call, wherein the frontswap API call of the kernel driver module provides a hook to intercept the anonymous pages before the anonymous pages are migrated to a swap space of a secondary swap system, and instead migrates the anonymous pages to the frontswap space of the memory space, and wherein the cleancache API call of the kernel driver module provides a hook to intercept the file pages before the file pages are migrated to a file system of the secondary swap system, and instead migrates the file pages to the cleancache space of the memory device.

### Claim 11 (depends on 10)

The method of claim 10, further comprising registering the memory device as a block memory device having the virtual memory capacity.

### Claim 12 (depends on 10)

The method of claim 10, wherein the kernel driver module determines to accept or reject the anonymous pages or the file pages based on the virtual memory capacity.

### Claim 13 (depends on 10)

The method of claim 10, where the virtual memory capacity of the memory device dynamically varies by compression, deduplication, or/and error-correction of data stored in the memory device.

### Claim 14 (depends on 10)

The method of claim 10, wherein the memory interface is a double data rate (DDR) interface or a peripheral component interconnect express (PCIe) interface.

### Claim 15 (depends on 10)

The method of claim 10, wherein the frontswap API call of the kernel driver module migrates the anonymous pages to the swap space of the secondary swap system and the cleancache API call of the kernel driver module migrates the file pages to the file system of the secondary swap system when the virtual memory capacity is full due to a compaction ratio of the memory device.

### Claim 16 (depends on 10)

The method of claim 10, wherein the frontswap and cleancache API calls initiate a CPU memory copy and direct memory access (DMA) transfer to an interface controller.

### Claim 17 (depends on 10)

The method of claim 10, wherein the memory overprovisioning logic includes an embedded bitmap to tracks pages in the memory device.
