# US 10,310,757 B2 · Systems and methods for memory power saving via kernel steering to memory balloons

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

- Number: US 10,310,757 B2
- Document ID: US10310757B2
- Status: Granted
- Kind: B2
- Application number: 15/684,838
- Filed: 2017-08-23
- Published: 2019-02-28
- Granted: 2019-06-04
- Earliest claimed: 2017-08-23
- Assignees: QUALCOMM Incorporated
- Applicants: Qualcomm Incorporated
- Inventors: Yanru Li; Larry Bassel; Thomas Zeng; Dexter Chun
- Web page: https://patentgrep.com/patent/US10310757B2

## CPC

- G06F 3/0625: {Power saving in storage systems}
- G06F 1/3225: of memory devices
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0673: {Single storage device}
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems, methods, and computer programs are disclosed for reducing memory power consumption. An exemplary method comprises configuring a power saving memory balloon associated with a volatile memory. Memory allocations are steered to the power saving memory balloon. In response to initiating a memory power saving mode, data is migrated from the power saving memory balloon. A power saving feature is executed on the power saving memory balloon while in the memory power saving mode.

## Claims

### Claim 1

A method for reducing memory power consumption in a volatile memory, the method comprising:
configuring a plurality of power saving memory balloons associated with the volatile memory;
steering memory allocations to the plurality of power saving memory balloons, the memory allocations including movable pages migratable to other power saving memory balloons and non-movable pages not migratable to other power saving memory balloons;
in response to initiating a memory power saving mode, determining which of the plurality of power saving memory balloons is preferred over others of the plurality of power saving memory balloons to execute a memory power saving feature on, wherein the determination is based at least in part on whether a power saving memory balloon is allocated one or more non-movable pages;
cleaning up data from the preferred power saving memory balloon; and
executing the memory power saving feature on the preferred power saving memory balloon while in the memory power saving mode.

### Claim 2 (depends on 1)

The method of claim 1, wherein the volatile memory comprises a dynamic random access memory (DRAM).

### Claim 3 (depends on 1)

The method of claim 1, wherein a size of the power saving memory balloon is determined by a memory monitor.

### Claim 4 (depends on 1)

The method of claim 1, wherein the determination is based on, for each power saving memory balloon, whether the power saving memory balloon is allocated one or more non-movable pages and how many pages are active in the power saving memory balloon.

### Claim 5 (depends on 1)

The method of claim 1, wherein the memory allocations are steered to the power saving memory balloon based on one or more user-defined parameters specified via a user interface.

### Claim 6 (depends on 1)

The method of claim 1, wherein the power saving mode comprises one of a DRAM rank power down, a partial array self refresh, or partial array active refresh.

### Claim 7 (depends on 1)

The method of claim 1, wherein the memory power saving mode is initiated by a user command, a user-specified condition, or a remaining battery threshold.

### Claim 8

A system for reducing memory power consumption in a volatile memory, the system comprising:
means for configuring a plurality of power saving memory balloons associated with the volatile memory;
means for steering memory allocations to the plurality of power saving memory balloons the memory allocations including movable pages migratable to other power saving memory balloons and non-movable pages not migratable to other power saving memory balloons;
means for, in response to initiating a memory power saving mode, determining which of the plurality of power saving memory balloons is preferred over others of the plurality of power saving memory balloons to execute a memory power saving feature on, wherein the determination is based at least in part on whether a power saving memory balloon is allocated one or more non-movable pages;
means for migrating data from the preferred power saving memory balloon; and
means for executing the memory power saving feature on the preferred power saving memory balloon while in the memory power saving mode.

### Claim 9 (depends on 8)

The system of claim 8, wherein the volatile memory comprises a dynamic random access memory (DRAM).

### Claim 10 (depends on 8)

The system of claim 8, wherein a size of the power saving memory balloon is determined by a means for monitoring usage.

### Claim 11 (depends on 8)

The system of claim 8, wherein the determination is based on, for each power saving memory balloon, whether the power saving memory balloon is allocated one or more non-movable pages and how many pages are active in the power saving memory balloon.

### Claim 12 (depends on 8)

The system of claim 8, wherein the memory allocations are steered to the power saving memory balloon based on one or more user-defined parameters specified via a user interface.

### Claim 13 (depends on 8)

The system of claim 8, wherein the power saving feature comprises one of a rank power down, partial array self refresh, and partial array auto refresh.

### Claim 14 (depends on 8)

The system of claim 8, wherein the memory power saving mode is initiated by a user command, a user-specified condition, or a remaining battery threshold.

### Claim 15

A system for reducing memory power consumption, the system comprising:
a volatile random access memory; and
a system on chip (SoC) comprising a memory controller and a kernel memory manager, the memory controller electrically coupled to the volatile random access memory, and the kernel memory manager comprising logic configured to:
configure a plurality of power saving memory balloons associated with the volatile memory;
steer memory allocations to the plurality of power saving memory balloons, the memory allocations including movable pages migratable to other power saving memory balloons and non-movable pages not migratable to other power saving memory balloons;
in response to initiating a memory power saving mode, determine which of the plurality of power saving memory balloons is preferred over others of the plurality of power saving memory balloons to execute a memory power saving feature on, wherein the determination is based at least in part on whether a power saving memory balloon is allocated one or more non-movable pages;
migrate data from the preferred power saving memory balloon; and
execute the memory power saving feature on the preferred power saving memory balloon while in the memory power saving mode.

### Claim 16 (depends on 15)

The system of claim 15, wherein the volatile memory comprises a dynamic random access memory (DRAM).

### Claim 17 (depends on 15)

The system of claim 15, wherein a size of the power saving memory balloon is determined by a memory monitor.

### Claim 18 (depends on 15)

The system of claim 15, wherein the determination is based on, for each power saving memory balloon, whether the power saving memory balloon is allocated one or more non-movable pages and how many pages are active in the power saving memory balloon.

### Claim 19 (depends on 15)

The system of claim 15, wherein the memory allocations are steered to the power saving memory balloon based on one or more user-defined parameters specified via a user interface.

### Claim 20 (depends on 15)

The system of claim 15, wherein the power saving mode comprises one of a rank power down, a partial array self refresh, or a partial array auto refresh.

### Claim 21 (depends on 15)

The system of claim 15, wherein the memory power saving mode is initiated by a user command, a user-specified condition, or a remaining battery threshold.

### Claim 22 (depends on 15)

The system of claim 15 incorporated in a portable computing device.

### Claim 23 (depends on 15)

The system of claim 15, wherein the portable computing device comprises one of a tablet computer, a smart phone, and a wearable computing device.

### Claim 24

A computer program embodied in a non-transitory computer readable medium and executed by a processor for reducing memory power consumption in a volatile memory, the computer program comprising logic configured to:
configure a plurality of power saving memory balloons associated with the volatile memory;
steer memory allocations to the plurality of power saving memory balloons, the memory allocations including movable pages migratable to other power saving memory balloons and non-movable pages not migratable to other power saving memory balloons;
in response to initiating a memory power saving mode, determine which of the plurality of power saving memory balloons is preferred over others of the plurality of power saving memory balloons to execute a memory power saving feature on, wherein the determination is based at least in part on whether a power saving memory balloon is allocated one or more non-movable pages;
migrate data from the preferred power saving memory balloon; and
execute the memory power saving feature on the preferred power saving memory balloon while in the memory power saving mode.

### Claim 25 (depends on 24)

The computer program of claim 24, wherein the volatile memory comprises a dynamic random access memory (DRAM).

### Claim 26 (depends on 24)

The computer program of claim 24, wherein a size of the power saving memory balloon is determined by a memory monitor.

### Claim 27 (depends on 24)

The computer program of claim 24, wherein the determination is based on, for each power saving memory balloon, whether the power saving memory balloon is allocated one or more non-movable pages and how many pages are active in the power saving memory balloon.

### Claim 28 (depends on 24)

The computer program of claim 24, wherein the memory allocations are steered to the power saving memory balloon based on one or more user-defined parameters specified via a user interface.

### Claim 29 (depends on 24)

The computer program of claim 24, wherein the power saving feature comprises one of a rank power down, a partial array self refresh, and a partial array auto refresh.

### Claim 30 (depends on 24)

The computer program of claim 24, wherein the memory power saving mode is initiated by a user command, a user-specified condition, or a remaining battery threshold.
