Power reduction of volatile memory with partial array self-refresh

By employing partial array self-refresh mode and data swapping techniques, the power consumption of volatile memory in portable computing systems is reduced during inactivity, addressing the challenge of managing memory refresh and storage efficiently.

WO2025128124A1PCT designated stage expired Publication Date: 2025-06-19GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/US2023/084362
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-12-15
Publication Date
2025-06-19

AI Technical Summary

Technical Problem

Battery-powered portable computing systems face challenges in reducing power consumption of volatile memory during periods of inactivity, as existing technologies do not efficiently manage memory refresh and storage.

Method used

The implementation of partial array self-refresh (PASR) mode in conjunction with data swapping from volatile storage to non-volatile storage, where a swap space aligned to partial array boundaries is used to store compressed data, allowing for reduced refresh operations during low power modes.

Benefits of technology

This approach effectively decreases power consumption by minimizing the amount of volatile memory that needs to be refreshed while ensuring data preservation, and resumes full refresh operations when the system is active again.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2023084362_19062025_PF_FP_ABST
    Figure US2023084362_19062025_PF_FP_ABST
Patent Text Reader

Abstract

A method includes allocating a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device. The method further includes storing at least a portion of contents of the second portion in the compressed storage swap space. The method further includes, responsive to the computing system operating in a low power mode, copying contents of the compressed storage swap space to a non-volatile storage device, setting the refresh mode of the volatile storage device to a partial-array self-refresh mode, and refraining from refreshing the compressed storage swap space. The method further includes copying the contents of the compressed storage swap space back to the volatile storage device.
Need to check novelty before this filing date? Find Prior Art

Description

POWER REDUCTION OF VOLATILE MEMORY WITH PARTIAL ARRAY SELF-REFRESHBACKGROUND

[0001] In a battery-powered portable computing system such as a mobile phone, tablet, smart watch, fitness tracker, etc., the computing system may often be inactive for long periods of time. For example, the computing system may be displaying a current time on a clock but may otherwise be substantially in a quiescent state. In this state, the computing system may use a reduced amount of memory. While being in a quiescent state, some computing systems perform refreshes of volatile memory so that when the computing system is “woken up” from the quiescent state, the computing system is ready to resume high power processing with data stored in the volatile memory.SUMMARY

[0002] In general, the techniques of this disclosure are directed to reducing power consumption of one or more volatile storage devices in a computing system using partial array self-refresh and swapping of data from the volatile storage to non-volatile storage. The techniques may allocate a swap space in the one or more volatile storage devices, the swap space being aligned on a partial array boundary, for a selected portion of virtual memory of the one or more volatile storage devices. The selected portion of virtual memory may be compressed and stored in the swap space. When the computing system enters a low power mode, the swap space may be copied to a non-volatile storage device and the portion of the volatile storage device storing the swap space may be set to a partial array self-refresh mode, such that the portion of the volatile storage device previously storing the swap space is not refreshed. The computing system may then decrease the amount of volatile memory in the volatile storage being refreshed while preserving the data in the segments of the volatile storage that is no longer being refreshed. When the computing system exits the low power mode, the volatile storage device is set to a full self-refresh mode, resulting in subsequent refresh operations to refresh all memory in the volatile storage device. The swap space may then be copied from the non-volatile storage device back to the volatile storage device for future use.

[0003] In one example, a method includes allocating, by a computing system, a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portiondifferent from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refreshing, by the computing system and based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; storing at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copying contents of the compressed storage swap space to a non-volatile storage device; setting the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refreshing, by the computing system and based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to tiie computing system exiting a low power mode: setting the refresh mode of the volatile storage device to the full self-refresh mode; refreshing, by the computing system and based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copying the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0004] In one example, a computing device includes a volatile storage device; a nonvolatile storage device; and one or more processors configured to: allocate a first portion of virtual memory of the volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to the non-volatile storage device; set the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refresh, based on the partial-array selfrefresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting a low power mode: set the refresh mode of the volatile storage device to the full self-refresh mode; refresh, based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0005] In another example, a non-transitory computer-readable medium encoded with instructions that, when executed by one or more processors of a computing system cause the one or more processors to allocate a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to a non-volatile storage device; set the refresh mode of the volatile storage device to a partial-array selfrefresh mode; and refresh, based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting a low power mode: set the refresh mode of the volatile storage device to the full self-refresh mode; refresh, based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0006] The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS

[0007] FIG. 1 is a conceptual diagram illustrating an example computing system with volatile storage and non-volatile storage, in accordance with one or more aspects of the present disclosure.

[0008] FIG. 2 is a block diagram illustrating further details of an example computing system for saving power in a volatile storage device, in accordance with one or more aspects of the present disclosure.

[0009] FIG. 3 is a flowchart of an example process for example computing systems to save power in a volatile storage device, in accordance with aspects of this disclosure.

[0010] FIG. 4 is a flowchart of an example process for an example computing system to save power in a volatile storage device, in accordance with aspects of this disclosure.DETAILED DESCRIPTION

[0011] FIG. 1 is a conceptual diagram illustrating an example computing system with volatile storage and non-volatile storage, in accordance with one or more aspects of the present disclosure. Computing system 100 includes one or more processors to execute instructions of an operating system (OS) 104 and one or more applications 108. Examples of computing system 100 include a mobile phone, a tablet computer, a laptop computer, a desktop computer, a server, a mainframe, a set-top box, a television, a wearable device (e.g., a smartwatch, computerized eyewear, computerized headphones, computerized gloves, fitness tracker, health monitor, virtual reality device, augmented reality device, etc.), a home automation device or system (e.g., an intelligent thermostat or home assistant device), a gaming system, a media player, an e-book reader, a mobile television platform, an automobile navigation or infotainment system, or any other type of mobile, non-mobile, wearable, and non-wearable computing device. Computing system 100 may include a battery to provide electrical power (not illustrated in FIG. 1). As illustrated in FIG. 1, computing system 100 includes volatile storage devices 118, non-volatile storage devices 120, interface 111, and operating system 126 (hereinafter “OS 126").

[0012] One or more processors may execute OS 126. OS 126 may include a desktop operating system and or a mobile operating system. In some examples, OS 126 may be an embedded operating system. OS 126 may provide an execution environment for one or more applications and modules. OS 126 may provide an execution environment for one or more modules such as power manager 124. Power manager 124 may be a module, plugin, or other software component. In some examples, power manager 124 may be a standalone software component separate from OS 126. Power manager 124 may manage the power consumption of one or more components of computing system 100 such as the one or more processors, volatile storage devices 118, and non-volatile storage devices 120. For example, power manager 124 may orchestrate a low-power mode of computing system 100 that reduces power consumption of the processors of computing system 100. In another example, power manager 124 may orchestrate a high performance mode of computing system 100 that increases power consumption and computing performance ofthe one or more processors. In yet another example, power manager 124 manages the power consumption of one or more storage devices of computing system 100.

[0013] Computing system 100 includes volatile storage devices 118 and non-volatile storage devices 120. Non-volatile storage devices 120 may include one or more types of computer memory that retains data without requiring a consistent flow of power to the storage components. Non-volatile storage devices 120 may include types of non-volatile memory such as erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), ferroelectric RAM, non-volatile RAM (NVRAM), magnetic disks, solid state drives (SSDs), magnetic tape, optical discs, and other types of non-volatile storage.

[0014] Volatile storage devices 118 may include one or more types of volatile memory. Volatile memory is computer memory that requires power to maintain stored information. Volatile memory, such as volatile storage devices 118, loses stored data in the case of an interruption of power flowing to the volatile memory. Volatile storage devices 118 may include one or more types of volatile storage such as random access memory (RAM), double data rate (DDR) RAM, synchronous dynamic RAM (SDRAM), low-power double data rate (LPDDR) RAM, cache memory, flip-flop circuits, and latches, among other types of data volatile storage.

[0015] Volatile storage devices 118 include segmentsMO. Volatile storage devices 118 may be subdivided into segments 140A-E (hereinafter “segments 140”) based on the physical partitioning of volatile storage devices 118. For example, volatile storage devices 118 include one or more segments that are physical segments of the storage components of volatile storage devices 118. Further, volatile storage devices 118 may support partial-array self-refresh (PASR) capability as described in “Low Power Double Data Rate (LPDDR) Synchronous DRAM (SDRAM) Standard 5 / 5X”, July 2023 (and earlier versions), by the Joint Electron Device Engineering Council (JEDEC) Solid State Technology Association. Volatile storage devices 118 may enable partial-array selfrefresh (PASR) to disable refreshing of one or more of segments 140. PASR enables a storage device to refrain from refreshing one or more memory segments while continuing to refresh other memory segments. For example, volatile storage devices 118 may disable refreshing segment MOE while continuing to refresh other segments such as segments 104C and 104D. In another example, volatile storage devices 118 may disable refreshing by entire devices (e.g., memory devices such as DIMMs) of volatile storage devices 118.

[0016] Power manger 124 may determine, based on one or more factors, that power consumption should be reduced and execute one or more power-saving actions such as enabling PASR. For example, power manager 124 may use heuristics to determine whether to place volatile storage devices 118 into the low-power mode. In another example, power manager 124 may determine that computing system 100 is in a “bedtime" mode and no longer requires regular use of much of the capacity of volatile storage devices 118. In yet another example, power manager 124 may measure the usage of volatile memory over a period of time and determine that computing system 100 only uses a portion of volatile storage devices (e.g., that computing system 100 only uses a portion of total capacity of volatile storage devices 118 at any given time). In yet another example, computing system 100 may determine that it has not been interacted with for a predetermined length of time.

[0017] Power manager 124, responsive to determining that the power consumption of computing system 100 should be reduced, may determine that volatile storage devices 118 should be placed in a low power mode. For example, power manager 124 may leverage PASR to cease or disable refreshing one or more segments of volatile storage devices 118 outside of memory in active use, such as segments 140C and MOD that contain active memory 136. Power manager 124 may cause volatile storage devices 118 to cease refreshing one or more segments of segments 140 to reduce the power consumption of volatile storage devices 118. In another example, power manager 124 may cause volatile storage devices 118 to appear to OS 126 to have less capacity than the true total capacity of volatile storage devices 118 and disable refreshing of the segments containing hidden memory 138, such as segment 140A that includes hidden memory 138. Power manager 124 may modify the storage capacity of volatile storage device 118 that is visible to OS 126 based on the capacity of hidden memory 138.

[0018] Power manager 124 may cause volatile storage devices 118 to cease refreshing the one or more segments of selected memory 130 to reduce power consumption by volatile storage devices 118. Power manager 124 may stop refreshing parts of volatile storage devices 118 as, due to their volatile nature, volatile storage devices 118 require a consistent flow of power to refresh segments and maintain data stored within volatile storage devices 118 and therefore reduce power consumption by volatile storage devices 118.

[0019] Power manager 124 may provide an indication to storage manager 122 that power manager 124 is going to cause volatile storage devices to enter PASR and ceaserefreshing one or more of segments 140. Storage manager 122 may be a module, plugin, or other software component executed by computing system 100 that manages the movement of data within storage devices of computing system 100. In some examples, storage manager 122 may be a standalone software component separate from computing OS 126. Storage manager 122, responsive to receiving an indication that power manager 124 is going to cause volatile storage devices 118 to enter PASR, storage manager 122 may select one or more segments of volatile storage devices 118 that should be disabled from refreshing. Storage manager 122 may select one or more of segments 140 of volatile storage devices 118 to disable from refreshing that are not in active use. For example, storage manager 122 may select one or more of segments 140 of volatile storage devices 118 that are not in active use, such as segment 140B that includes selected memory 130, to cease refreshing to avoid disabling segments of volatile storage devices 118 that are in active use. Storage manager 122 may determine which segments of segments 140 that include memory in active use by computing device (e.g., active memory 136) to avoid creating problems in the functioning of computing system 100. In an example, storage manager 122 selects segment 1406 that includes selected memory 130 and does not include segments of segments 140 used by OS 126 to avoid causing errors in the functioning of OS 126. Storage manager 122 may align the boundaries of selected memory 130 to the boundaries of segment MOB. Storage manager may provide an indication to power manager 124 for power manager 124 to disable refreshing the segments of selected memory 130 (i.e., segment MOB). In another example, power manager 124 selects the segments of selected memory 130 to be disabled.

[0020] Storage manager 122, responsive to the selection of segment MOB, allocates a section of virtual memory in volatile storage devices 118, such as swap space 132A, to act as a temporary storage space for the data of selected memory 130 to be stored before being pushed to one or more non-volatile storage devices 120. Storage manager 122 may allocate swap space 132A in volatile storage devices 118 to act as a storage swap space between volatile storage devices 118 and non-volatile storage devices 120. For example, storage manager 122 allocates swap space 132A in volatile storage devices 118 and a corresponding section of non-volatile storage devices 120, such as swap space 132B, to act as storage swap space to swap data between volatile storage devices 118 and nonvolatile storage devices 120. In some examples, storage manager 122 may directly swap data from active memory 136 to swap space 132A instead of first compressing selected memory 130 and then swapping data from selected memory 130 to swap space 132.

[0021] Storage manager 122 may align the boundaries of the allocated virtual memory of swap space 132A with the boundaries of the segment of selected memory 130 used to define the boundaries to be disabled from refreshing. Storage manager 122 may align the boundaries of swap space 132 A with the boundaries of the partial-array boundary and enable use of preexisting memory management software / firmware, and avoid requiring the use of custom memory management software and subsystems. For example, storage manager 122 may align the boundaries of selected memory 130 and swap space 132A to reduce the complexity or energy of swapping the data of selected memory 130 to swap space 132A. Storage manager 122, responsive to the allocation of swap space 132A, copies the data of selected memory 130 to swap space 132B.

[0022] Storage manager 122 may compress the data located within the allocated memory of swap space 132A to result in compressed selected memory 134A. Storage manager 122 may compress the data located within the allocated memory using one or more types of data compression. Storage manager 122 may compress the data located within swap space 132A to reduce the volume of compressed selected memory 134A that will be swapped to non-volatile storage devices 120.

[0023] Storage manager 122 may additionally perform compression of data as part of transferring data to swap space 132 from selected memory 130 and active memory 136. Storage manager may compress the data of selected memory 130 and / or active memory 136 as it is copied to swap space 132A. For example, storage manager 122 may compress the data of selected memory 130 as storage manager 122 transfers the data to swap space 132A to result in compressed selected memory 134A.

[0024] Storage manager 122 may transfer the compressed data from swap space 132A located within volatile storage devices 118 to one or more segments of allocated storage space within on-volatile storage devices 120. Storage manager 122 may allocate a swap space, such as swap space 132B, within non-volatile storage devices 120 that is aligned to the boundaries of swap space 132A. Storage manager 122, based on the allocation, transfers compressed selected memory 134A to swap space 132B. For example, storage manager 122 may transfer compressed selected memory 134A via one or more interfaces between volatile storage devices 118 and non-volatile storage devices 120 such as interface 111.

[0025] Interface 111 may include one or more interfaces interconnecting volatile storage devices 118 and non-volatile storage devices 120. Storage manager 122 may transfer compressed selected memory 134A via interface 111 to non-volatile storage devices 120to preserve the data within the volatile storage devices 118 as compressed selected memory 134B during the low-power mode during which refreshing of the segments of the selected memory is paused. Storage manager 122 may maintain compressed selected memory 134B within swap space 132B while the segments of selected memory 130 are disabled from refreshing.

[0026] Power manager 124, responsive to the compressed data of selected memory 130 being transferred to non-volatile storage devices 120, enables PASR for volatile storage devices 118 and ceases refreshing the segments that include selected memory 130. Power manager 124 may set volatile storage devices 118 to PASR to reduce power consumption of volatile storage devices 118. For example, power manager 124 may set volatile storage devices 118 to PASR and stop refreshing segments 140A-140D. In another example, power manager 124 may refrain from refreshing one or more of segments 140 of volatile storage devices 118 in response to the data from those segments being transferred to nonvolatile storage devices 120.

[0027] Power manager 124 may determine whether computing system 100 should exit the low-power mode. Power manager 124 may determine whether computing system 100 should exit the low-power mode based on one or more factors. For example, power manager 124 may determine that a user has interacted with computing system 100 and cause computing system 100 to exit the low-power mode. In another example, power manager 124 may determine that computing system 100 has exited the “bedtime” mode and cause computing system 100 to exit the low-power mode.

[0028] Power manager 124, responsive to computing system 100 exiting the low-power mode, causes volatile storage devices 118 to resume regular operation. For example, power manager 124 may cause volatile storage devices 118 to stop operating in PASR and resume refreshing the segments of volatile storage devices 118 that computing system 100 refrained from refreshing. In another example, responsive to resuming refreshing the segments of volatile storage devices 120, power manager 124 provides an indication to storage manager 122 that computing system 100 has resumed refreshing the segments of volatile storage devices 120.

[0029] Storage manager 122, responsive to volatile storage devices exiting PASR, transfers compressed selected memory 134B from swap space 132B to swap space 132 A. Storage manager 122 may transfer compressed selected memory 134B from swap space 132B to swap space 132 A via interface 111 interconnecting non-volatile storage devices 120 and volatile storage devices 118. Storage manager 122 may uncompress compressedselected memory 134A within swap space 132A. Storage manager 122 may uncompress the data within swap space 132A and copy the data of compressed selected memory 134A back to selected virtual memory 130. Responsive to the copying of the data, storage manager 122 deallocates swap space 132A. In some examples, storage manager 122 may decompress compressed selected memory 134A as it copies compressed selected memory 134A back to selected memory 130.

[0030] The techniques of this disclosure include one or more advantages. For example, power manager 124 may enable reduced power consumption of volatile memory through use of partial-array boundary operation of volatile memory while preserving data within the volatile memory. In a further example, computing system 100 uses storage swap spaces allocated within the volatile and non-volatile memory that align with the partialarray boundaries of the volatile memory to continue using pre-existing memory management software to implement the use of partial-array boundary self-refresh mode rather than requiring custom software to implement the partial-array boundary self-refresh mode. In yet another example, power manager 124 may enable reduced power consumption through disabling segments of volatile memory that are unused by computing system 100 and disabling visibility of the disabled segments of volatile memory for OS 126 (e.g., so that OS 126 only “sees” the storage capacity of volatile storage devices 118 that is being refreshed).

[0031] FIG. 2 is a block diagram illustrating further details of an example computing system for saving power in a volatile storage device, in accordance with one or more aspects of the present disclosure. Computing system 200 includes one or more processors 202 to execute instructions of an operating system (OS) 226 and one or more applications 242. Computing system 200 may include any number of processors having any number of processing cores. Computing system 200 may be similar to computing system 100 as illustrated in FIG. 1.

[0032] In some examples, processors 202 may include one or more processors of different types. For example, processors 202 may include at least one “high-performance” processor and at least one “efficiency” processor. In another example, processors 202 may include a processor that includes multiple cores, with at least one “high- performance” core that provides relatively higher processing performance, and at least one “efficiency” core that provides relatively lower processing performance but consumes less power than the high-performance cores. Further, in some examples, processors 202may include a system on a chip (SOC) that includes one or more processors, with at least one high-performance processor and at least one efficiency processor.

[0033] Processors 202 execute OS 226. OS 226 may be an operating system such as mobile, desktop, server, or distributed operating system. OS 226 may include one or more components, plugins, and modules that provide functionality for OS 226. For example, OS 226 may include one or more programs executed by one or more processors of computing system 200.

[0034] OS 226 executes power manager 224. Power manager 224 may be a module, plugin, or other type of process or program executed by OS 226. Power manager 224 may manage the configuration and power consumption of one or more components of computing system 200, similar to power manager 124 as illustrated in FIG. 1. For example, power manager 224 may manage the power consumption of one or more processors of computing system 200 and the allocation of workloads to “efficiency” cores and “performance” cores of computing system 200. In another example, power manager 224 may enable PASR for volatile storage devices 218 and reduce power consumption by volatile storage devices 218. In yet another example, power manager 224 may cause storage manager 222 to “hide” one or more segments of segments 240 of volatile storage devices 218 from visibility of OS 226 and disable the hidden segments of volatile storage devices 218.

[0035] Power manager 224 may orchestrate a sleep mode of computing system 100.Power manager 224 may orchestrate a sleep mode that substantially reduces the power consumption of one or more components of computing system 100. For example, power manager 224 may orchestrate a sleep mode and cease output by output components 206 (e.g., a display, receivers, or other output components), reduce or stop communications by communication units 204, and reduce power consumption by processors 202. Processors 202 may enter a low-power mode that disables some or all of the performance processors / cores of processors 202 and only uses the efficiency processors / cores of processors 202. Power manager 224, as part of orchestrating a sleep mode or low- performance mode, may reduce usage and power supplied to storage devices 216.

[0036] Power manager 224 may determine whether to reduce the power consumption of volatile storage devices 218 based on one or more factors. Power manager 224 may determine whether to reduce the power consumption of volatile storage devices based on determining that computing system 200 has entered a “bedtime” mode or that computing system 200 has entered a low power mode which anticipates either no or much reducedmemory access for a relatively longer period of time, such modes including but not limited to "bedtime" mode, "battery saver" mode, "off-wrist for a wearable" or "in pocket for a mobile". In addition, power manager 224 may receive an indication from computing system 200 that computing system 200 has not been interacted with by a user for a predetermined period of time. Further, power manager 224 may record and analyze the usage of volatile storage devices 218 by OS 226 to determine whether providing power to refresh the full capacity of volatile storage devices 218 is necessary. Power manager 224 may periodically determine the usage of volatile storage devices 218 by computing system 200 (e.g., check the amount of storage of volatile storage devices 218 used by computing system 200). Power manager 224 may also determine the peak usage of volatile storage devices 218. Power manager 224, based on the usage of volatile storage devices 218, may determine that one or more segments of segments 240 of volatile storage devices 218 may be disabled and reduce the power consumption of computing system 200. In an example, power manager 224 determines that computing system 200 has not used more than 87.5% or other percent capacity of the capacity of volatile storage devices over a period of time. Power manager 224 may determine that at least a portion of the unused 12.5% or other percent capacity of volatile storage devices 218 may be disabled from refreshing and hidden from OS 226 (e.g., such that OS 226 only “sees” the remaining 87.5% of volatile storage devices 218 as the total capacity of volatile storage devices 218).

[0037] Power manager 224, responsive to determining that the power consumption of volatile storage devices 218 should be reduced, may provide an indication to storage manager 222. In an example, power manager 224 may provide an indication to storage manager 222 that indicates which segments of segments 240 of volatile storage devices 218 will cease refreshing. In another example, power manager 224 may provide an indication to storage manager 222 to select which segments of volatile storage devices 218 should be disabled. Storage manager 222, responsive to the indication, may select selected virtual memory 230 from the virtual memory of volatile storage devices 218 and provide an indication of the selection of selected virtual memory 230 to power manager 224. Storage manager 222 may determine the boundaries of selected virtual memory 230 based on one or more factors such as a power reduction target, the amount of virtual memory unused by computing system 200, and other factors. For example, storage manager 222 may determine which segments of volatile storage devices 218 are in active use by computing system 200 (e.g., active memory 236) and avoid overlapping theboundaries of selected virtual memory 230 with the segments that include active memory 236.

[0038] OS 226 may execute storage manager 222. Storage manager 222 may be a module, component, process, or program configured to manage data stored by computing system 200 and to control volatile storage devices 218 and non-volatile storage devices 220. For example, storage manager 222 may manage the exchange of data between volatile storage devices 218 and non-volatile storage devices 220 via interface 211. Storage manager 222 may orchestrate swapping data from volatile storage devices 218 to non-volatile storage devices 220.

[0039] Storage manager 222, responsive to the selection of selected virtual memory 230, may allocate a segment of the virtual memory from segments 240 of volatile storage devices 218 as swap memory space. Storage manager 222 may allocate a segment of memory space on both volatile storage devices 218 and non-volatile storage devices 220. For example, storage manager 222 may allocate swap space 232A in volatile storage devices 218 and allocate a corresponding swap space of swap space 232B in non-volatile storage devices 220. Storage manager 222 may allocate swap space 232A based on the size and boundaries of selected virtual memory 230. For example, storage manager 222 may allocate swap space 232A based on the partial-array boundaries of selected virtual memory 230. Storage manager 222 may allocate swap space 232A based on the partialarray boundaries to simplify swapping the data within selected virtual memory 230.

[0040] Storage manager 222 may shift the data within selected memory 230 to swap space 232A. Further, storage manager 222 may shift the data of selected memory 230 to swap space 232A and compress the swapped data of selected memory 230. For example, storage manager 222 may shift the data of selected memory 230 within volatile storage devices 218 and compress the data using one or more techniques of lossy or lossless data compression. Storage manager 222 may compress the data of selected memory 230 and store the data within swap space 232A as compressed selected memory 234A.

[0041] Storage manager 222 may transfer compressed selected memory 234A from swap space 232A to swap space 232B via interface 211. Interface 211 may be one or more types of buses or interconnects between one or more components of computing system 200. Interface 211 may facilitate the transfer of data between the one or more components of computing system 200. For example, interface 211 may facilitate the transfer of data between volatile storage devices 218 and non-volatile storage devices 220. Storage manager 222 may store the compressed data of selected memory 230 in swap space 232Bof non-volatile storage devices 220 as compressed selected memory 234B. Storage manager 222 may store the compressed data of selected memory 230 in non-volatile storage devices 220 to retain the data while pausing refreshing segments of volatile storage devices 218.

[0042] Storage manager 222 may disable visibility of hidden memory 238 for OS 226. Storage manager 222, responsive to the swapping of data, may “hide” the storage of hidden memory 238 from OS 226 and make it appear that the capacity of volatile storage devices 218 has been reduced by the storage of hidden memory 238. In an example, storage manager 222, based on determining that computing system 200 will not be in use for a period of time (e.g., computing system 200 is in a “bedtime” mode), provides an indication to power manager 224 to cease refreshing and disable the segments of volatile storage devices 218. Storage manager 222 may disable the segments of hidden memory 238 and make it appear that the storage capacity of volatile storage device 218 has been reduced.

[0043] Power manager 224, responsive to storage manager 222 moving the data of selected memory 230 to non-volatile storage devices 220, may enable PASR and refrain from refreshing one or more of segments 240 of volatile storage devices 218. Power manager 224 may pause refreshing of one or more of segments 240 of volatile storage devices 218 that correspond to the segments of selected virtual memory 230. In another example, power manager 224 may refrain from refreshing the segments associated with selected memory 230 responsive to determining that computing system 200 is entering a low-power mode. In yet another example, power manager 224 may cause computing system 200 to reboot and disable the segments of volatile storage devices 218 associated with selected memory 230.

[0044] Storage manager 222 may periodically analyze the usage of volatile storage devices 218. Storage manager 222 may analyze one or more aspects of the usage such as whether the operating system 226 exceeds the reduced active capacity of volatile storage devices 218 and how often data is swapped from volatile storage devices 218 to nonvolatile storage devices 220 due to the reduced active capacity of volatile storage devices 218 among other factors. Storage manager 222 may periodically analyze the usage of volatile storage devices 218 and determine whether selected memory 230 should be refreshed and made available to operating system 226. In an example, storage manager 222 determines that, based on usage of volatile storage devices 218 regularly exceeding the reduced capacity of volatile storage devices 218 and that data is being offloaded tonon-volatile storage devices 220, that selected memory 230 should be made available to operating system 226. Storage manager 222 provides an indication to power manager 224 to reboot computing system 200 and begin refreshing the segments of segments 240 that include selected memory 230. In another example, storage manager 222 anticipates that a user of computing system 200 is likely to begin using computing system 200 at a particular point in time (e.g., computing system 200 being set to leave the “bedtime” mode at the particular point in time, usage statistics that indicate that a user of computing system 200 is likely to begin using computing system 200 again at the particular point in time, usage statistics that indicate that a user of computing system 200 is likely to use resource-intensive applications such as video games at the particular point in time, artificial intelligence analysis predicted that more memory will be needed, one or more machine learning models trained to predict memory usage that indicate that more memory may be required, etc.). In yet another example, computing system 200 may receive input via input components 208 (e.g., touchscreen, microphone, capacitive sensors, keyboard, mouse, and / or other input components) consistent with a user interaction with computing system 200 and determine that more memory is required. Responsive to determining that computing system 200 is likely to be used at an upcoming point in time, storage manager 222 provides an indication to power manager 224. In yet another example, storage manager 222 determines that computing system 200 has not regularly approached using the reduced capacity of volatile storage devices 218 and refrains from requesting that the segments of segments 240 that include selected memory 230 be made available.

[0045] Power manager 224 may determine that computing system 200 is exiting a low- power mode. Power manager 224 may use heuristics to determine that computing system 200 is exiting a low-power mode based on one or more factors such as a user interacting with computing system 200 or computing system 200 exiting a “bedtime” mode. Power manager 224, responsive to determining that computing system 200 is exiting the low- power mode, resumes refreshing the segments of selected memory 230. In an example, power manager 224 may cause computing system 200 to reboot and begin refreshing the segments of volatile storage devices 218 associated with selected memory 230. In another example, power manager 224 may wait until computing system 200 determines that a user of computing system 200 is asleep and not using computing system 200 (e.g., the “bedtime” mode is active) before rebooting and enabling the segments of selected memory 230. In yet another example, power manager 224 may wait until computing system 200 is connected to a charger or other power supply before rebooting and enablingthe segments of selected memory 230. In a further example, power manager 224 waits until computing system 200 is connected to a charger or other power source before rebooting and refreshing the segments of segments 240 of selected memory 230. Power manager 224 may wait until computing system 200 is connected to a power source when there is an energy expense associated with rebooting computing system 200 and enabling the refreshing of the segments of selected memory 230.

[0046] Storage manager 222, responsive to volatile storage devices refreshing the segments of selected memory 230, transfers the data of compressed selected memory 234B to compressed selected memory 234A. Storage manager 222 may transfer the data of compressed selected memory 234B to compressed selected memory 234A of swap space 232A via interface 211. Storage manager 222 may decompress the data of compressed selected memory 234A within swap space 232A or within the space of selected memory 230.Storage manager 222 may transfer the data of selected memory 230 within swap space 232A to the segments of selected memory 230. Storage manager 222 may transfer the decompressed data of selected memory 230 back to the segments of selected memory 230. In some examples, storage manager 222 may move compressed selected memory 234A to selected memory 230 and decompress the data of compressed selected memory 234A. In additional examples, storage manager 222 may decompress the data as it moves the data of compressed selected memory 234A to selected memory 230.

[0047] FIG. 3 is a flowchart of an example process for example computing systems to save power in a volatile storage device, in accordance with aspects of this disclosure. For the purposes of clarity, FIG. 3 will be described with respect to the components of FIG. 2.

[0048] A computing device, such as computing system 200, allocates a swap space, such as swap space 232A, in a volatile storage device, such as one or more of volatile storage devices 218 (302). In an example, computing system 200 may allocate swap space 232A responsive to a power manager, such as power manager 224, providing an indication that computing system 200 should enter a reduced power consumption mode. In another example, computing system 200 may allocate swap space 232A prior to any determination as to whether computing system 200 should enter the reduced power mode. Computing system 200 may use a storage manager system or application such as storage manager 222 to manage die allocation of storage spaces within the memory of volatile storage devices 218. For example, storage manager 222 may determine the boundaries of swap space 232A and selected memory 230 based on one or more factors. In an example,storage manager 222 determines the boundaries of swap space and selected memory 230 based on the boundaries of the segments of segments 240.

[0049] Storage manager 222 may align the boundaries of a selected memory, such as selected memory 230, to the boundaries of a partial-array boundary of volatile storage devices 218 (304). Storage manager 222 may align the boundaries of selected memory 230 to the boundaries of the segments of the partial-array boundaries to simplify the process of transferring data and pausing refreshing one or more segments of volatile storage devices 218. Storage manager 222 may align the boundaries of selected memory 230 to reduce the processing power necessary to preserve the data within selected memory 230, to simplify the implementation of PASR, and to avoid the need for modifications to the storage system of computing system 200.

[0050] Computing system 200 may leverage power manager 224 and determine whether computing system 200 should enter a low-power mode (306). Power manager 224, may determine that, based on one or more factors, that computing system 200 should not enter a low-power mode (NO branch of 306). Power manager 224 may determine that the computing system 200 should not enter a low power mode based on factors such as a user continuing to actively use computing system 200, the schedule of the user (e.g., computing system 200 is not scheduled to enter a bedtime mode), and other factors.

[0051] Computing system 200, responsive to the determination by power manager 224, ends the process and deallocates swap space 232A (308). In some examples, computing system 200 may refrain from deallocating swap space 232A and instead wait until computing system 200 enters a low power mode in the future. In addition, computing system 200 may perform compression and decompression at any stage of the techniques described herein. For example, computing system 200 may refrain from compressing the data until after it is copied to swap space 232B.

[0052] Power manager 224, based on one or more factors, determines that computing system 200 should be placed in a low power mode (YES branch of 306). In an example, power manager 224 determines that a user has not interacted with computing system 200 for a predetermined period of time. Power manager 224 determines that, based on the determination regarding user interaction, that computing system 200 should enter a low- power mode. In another example, power manager 224 determines that computing system 200 has been placed in a “bedtime” mode. Power manager 224, responsive to the determination, determines that computing system 200 should be placed in a low power mode.

[0053] Storage manager 222, responsive to computing system 200 entering a low-power mode, compresses the data of selected memory 230 and stores it in swap space 232 A as compressed selected memory 234A (310). Storage manager 222 may compress the data of selected memory 230 using one or more techniques of data compression such as lossless or lossy data compression. Storage manager 222 may compress the data of selected memory to reduce the volume of data required to be transmitted. In addition, storage manager 222 may compress the data as it is copied to another storage device. In some examples, compu ting system 200 may compress the data of selected memory 230 without computing system entering a low-power mode.

[0054] Storage manager 222 copies compressed selected memory 234A from volatile storage devices 218 to non-volatile storage devices 220 (312). Storage manager 222 may copy compressed selected memory 234A to preserve the data of selected virtual memory 230 when the segments of virtual memory 230 are no longer refreshed and any data within those segments is lost due to the volatile nature of volatile storage devices 218.

[0055] Power manager 224, responsive to the storage manager 222 transferring the data of selected memory 230, sets volatile storage devices 218 to partial-array self-refresh mode to pause refreshing of selected memory 230 in volatile storage devices 218 (314). Power manager 224, while volatile storage devices 218 are in the PASR mode, pauses refreshing one or more segments of segments 240 of volatile storage devices 218 associated with selected memory 230. Power manager 224 may continue refreshing a different set of segments of volatile storage devices 218 in order to maintain operations of computing system 200. For example, power manager 224 may continue refreshing the one or more segments to maintain some operations of computing system 200 such as the operating system while computing system 200 is in the low-power mode.

[0056] Power manager 224 determines whether computing system 200 should exit the low-power mode (316). Power manager 224 may determine whether computing system 200 should exit the low power mode based on one or more factors. Further, power manager 224 may use heuristics to determine whether computing system 200 should exit the low-power mode.

[0057] In some examples, power manager 224 determines that computing system 200 should not exit the low-power mode (NO branch of 316). Power manager 224 may determine that computing system 200 should not exit the low-power mode based on one or more factors such as whether computing system 200 is still in a “bedtime” mode orwhether computing system 200 still has not yet been interacted with after a predetermined period of time.

[0058] In some examples, power manager 224 determines that computing system 200 should exit the low-power mode (YES branch of 316). Power manager 224 may determine that computing system 200 should exit the low-power mode based on one or more factors such as whether a user has recently interacted with computing system 200 or whether computing system 200 has exited “bedtime” mode.

[0059] Power manager 224, responsive to computing system 200 leaving the low-power mode, sets volatile storage devices 218 to full self-refresh mode (318). Power manager 224 may cause the one or more segments of selected memory 230 to begin refreshing. For example, power manager 224 may cause the one or more segments associated with selected memory 230 to begin refreshing.

[0060] Storage manager 222, responsive to volatile storage devices 218 entering full selfrefresh mode, copies compressed selected memory 234B from non-volatile storage devices 220 to volatile storage devices 218 (320). Storage manager 222 may copy the data of compressed selected memory 234B. Storage manager 222 may copy the compressed data to swap space 232B. In some examples, storage manager 222 may directly copy the data of compressed selected memory 234B. In another example, storage manager 222 may only pull data from non-volatile storage devices 220 when OS 226 determines that a page fault has occurred. Storage manager 222 may determine the data needed by OS 226 to avoid the page fault and obtain the data from non-volatile storage devices 220.

[0061] Storage manager 222 decompresses compressed selected memory 234A to selected memory 230 (322). Storage manager 222 may decompress compressed selected memory 234A from swap space 232A to selected memory 230. Storage manager 222 may employ one or more types of data decompression to decompress the data of compressed selected virtual memory 234A into selected memory 230.

[0062] FIG. 4 is a flowchart of an example process of swapping data between swap storage spaces, in accordance with aspects of this disclosure. For the purposes of clarity, FIG. 4 will be discussed in reference to FIG. 2.

[0063] A computing system, such as computing system 200, allocates a first portion of memory, such as selected memory 230, of a volatile storage device, such as volatile storage devices 218, of computing system 200 as a compressed storage swap space, such as swap space 232A, wherein selected memory 230 includes a second portion differentfrom a first portion, such as selected memory 230, wherein swap space 232A is aligned to a partial-array boundary in volatile storage devices 218 (402). For example, computing system 200 may allocate swap space 232A based on the addresses of selected memory 230. Computing system 200 may allocate swap space based on the partial-array boundary of selected memory 230 to simplify the management of volatile storage devices 218 and non-volatile storage devices 220.

[0064] Computing system 200 refreshes, based on a refresh mode of volatile storage devices 218, swap space 232A and selected memory 230, wherein the refresh mode is set to a full self-refresh mode (404). Computing system 200 may refresh both swap space 232A and selected virtual memory 230 when computing system 200 is not in a low-power mode and does not need to reduce the power consumption of volatile storage devices 218 resulting from volatile storage devices 218 refreshing.

[0065] Computing system 200 stores at least a portion of the contents of selected memory 230 in swap space 232A (406). Computing system 200 may compress the contents of selected memory 230 and store them in swap space 232A as compressed selected memory 234A.

[0066] Computing system 200, responsive to operating in a low power mode, copies compressed selected memory 234A of swap space 232A to non-volatile storage devices 220 (408). Computing system 200 copies compressed selected memory 234A to swap space 232B as compressed selected memory 234B. Computing system 200 may copy compressed selected memory 234A to non-volatile storage devices 220 via interface 211. Computing system 200 may determine that computing system 200 has entered a low power mode using heuristics. Computing system 200 may determine that computing system 200 has entered a low power mode based on determining that computing system 200 has entered a “bedtime” mode or that computing system has not been interacted with by a user for a predetermined period of time.

[0067] Computing system 200 sets a refresh mode of volatile storage devices 218 to a partial-array self-refresh mode (410). Computing system 200 refreshes, based on the partial-array self-refresh mode, swap space 232A while refraining from refreshing selected memory 230 (412). Computing system 200 may refrain from refreshing selected memory 230 to reduce the power consumption of volatile storage devices 218 while computing system 200 is in tiie low power mode.

[0068] Computing system 200, responsive to exiting the low power mode, sets the refresh mode of volatile storage devices 218 to full self-refresh mode (414). Computing system200 may decide to exit the low power mode using heuristics and based on one or more factors such as exiting the “bedtime” mode or determining that a user has interacted with computing system 200. Computing system 200, based on exiting the low power mode, sets volatile storage devices 218 to full self-refresh mode as computing system 200 no longer needs to reduce the power consumption of volatile storage devices 218.

[0069] Computing system 200, based on the full self-refresh mode, refreshes selected memory 230 and swap space 232 A (416). Computing system 200 may refresh selected memory 230 and swap space 232A and enable the retention of data within selected memory 230 and swap space 232 A.

[0070] Computing system 200 copies the contents of swap space 232B from non-volatile storage devices 220 to volatile storage devices 218 (418). For example, computing system 200 may copy compressed selected memory 234B to swap space 232A and decompress the contents of swap space 232A back to selected memory 230.

[0071] Example 1: A method includes allocating, by a computing system, a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refreshing, by the computing system and based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; storing at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copying contents of the compressed storage swap space to a non-volatile storage device; setting the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refreshing, by the computing system and based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting the low power mode: setting the refresh mode of the volatile storage device to the full self-refresh mode; refreshing, by the computing system and based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copying the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0072] Example 2: The method of example 1, further comprising decompressing, by the computing system, the contents of the compressed storage swap space in the volatile storage device.

[0073] Example 3: The method of any of examples 1-2, further comprising compressing, by the computing system, the contents of the second portion of the virtual memory using a selected compression process.

[0074] Example 4: The method of any of examples 1-3, further comprising determining, by the computing system, whether to operate in the low power mode, wherein determining whether to enter the low power mode further includes using heuristics to determine whether to enter the low power mode.

[0075] Example 5: The method of example 4, wherein determining whether to operate in the low power mode further comprises determining whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

[0076] Example 6: The method of any of examples 1-5, wherein the partial-array selfrefresh mode includes refreshing only a portion of the virtual memory.

[0077] Example 7: The method of any of examples 1-6, further comprising responsive to the computing system operating in low power mode, modifying a storage capacity of the volatile storage device visible to an operating system of the computing system based on the storage capacity of the second portion.

[0078] Example 8: The method of any of examples 1-7, wherein the compressed storage swap space comprises a selected range of addresses of the first portion of the virtual memory.

[0079] Example 9: A computing system includes a volatile storage device; a non-volatile storage device; and one or more programmable processors configured to: allocate a first portion of virtual memory of the volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to the non-volatile storage device; set the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refresh, based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining fromrefreshing the compressed storage swap space; and responsive to the computing system exiting the low power mode: set the refresh mode of the volatile storage device to the full self-refresh mode; refresh, based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0080] Example 10: The computing system of example 9, wherein the one or more programmable processors are further configured to decompress the contents of the compressed storage swap space in the volatile storage device.

[0081] Example 11: The computing system of any of examples 9-10, wherein the one or more programmable processors are further configured to compress the contents of the second portion of the virtual memory using a selected compression process.

[0082] Example 12: The computing system of any of examples 9-11, wherein the one or more programmable processors are further configured to determine whether to operate in the low power mode, wherein determining whether to enter the low power mode further include using heuristics to determine whether to enter the low power mode.

[0083] Example 13: The computing system of example 12, wherein determining whether to operate in the low power mode further comprises determine whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

[0084] Example 14: The computing system of any of examples 9-13, wherein the partialarray self-refresh mode includes refreshing only a portion of the virtual memory.

[0085] Example 15: A non-transitory computer-readable medium, encoded with instructions that, when executed by one or more processors of a computing system, cause the one or more processors to perform any combination of the methods of examples 1-8.

[0086] Example 16: A computing system includes a memory; and one or more processors implemented in circuitry and in communication with the memory, the one or more processors configured to: allocate, by a computing system, a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh, by the computing system and based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least aportion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to a non-volatile storage device; set the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refresh, by the computing system and based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting a low power mode: set the refresh mode of the volatile storage device to the full self-refresh mode; refresh, by the computing system and based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0087] Example 17: The computing system of example 16, wherein the one or more processors are further configured to decompress, by the computing system, the contents of the compressed storage swap space in the volatile storage device.

[0088] Example 18: The computing system of any of examples 16-17, wherein the one or more processors are further configured to compress, by the computing system, the contents of the first second portion of the virtual memory using a selected compression process.

[0089] Example 19: The computing system of any of examples 16-18, wherein the one or more processors are further configured to determine, by the computing system, whether to operate in the low power mode, wherein to determine whether to enter the low power mode further includes using heuristics to determine whether to enter the low power mode.

[0090] Example 20: The computing system of example 19, wherein to determine whether to operate in the low power mode further comprises to determine whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

[0091] Example 21: The computing system of any of examples 16-20, wherein the partial-array self-refresh mode includes refreshing only a portion of the virtual memory.

[0092] Example 22: The computing system of any of examples 16-21 wherein the volatile storage device includes at least one of: random access memory, or dynamic random access memory.

[0093] Example 23: The computing system of any of examples 16-22, wherein the compressed storage swap space comprises a selected range of addresses of the first portion of virtual memory.

[0094] Example 24: A computer-readable medium, encoded with instructions that, when executed by one or more processors of a computing system, cause the one or more processors to allocate a first portion of virtual memory of the volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to the non-volatile storage device; set the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refresh, based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting the low power mode: set the refresh mode of the volatile storage device to the full self-refresh mode; refresh, based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

[0095] Example 25: The non-transitory computer-readable storage medium of example 24, wherein the instructions further configure the one or more processors to decompress the contents of the compressed storage swap space in the volatile storage device.

[0096] Example 26: The non-transitory computer-readable storage medium of any of examples 24-25, wherein the instructions further configure the one or more processors to compress the contents of the second portion of the virtual memory using a selected compression process.

[0097] Example 27: The non-transitory computer-readable storage medium of any of examples 24-26, wherein the instructions further configure the one or more processors to determine whether to operate in the low power mode, wherein determining whether to enter the low power mode further includes using heuristics to determine whether to enter the low power mode.

[0098] Example 28: The non-transitory computer-readable storage medium of example 27, wherein the instructions further configure the one or more processors to: to determine whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

[0099] Example 29: The non-transitory computer-readable storage medium of any of examples 24-28, wherein the partial-array self-refresh mode includes refreshing only a portion of the virtual memory.

[0100] Example 30: The non-transitory computer-readable storage medium of any of examples 24-29 wherein the volatile storage device includes at least one of: random access memory, or dynamic random access memory.

[0101] Example 31: The non-transitory computer-readable storage medium of any of examples 24-30, wherein the compressed storage swap space comprises a selected range of addresses of the first portion of virtual memory.

[0102] Various aspects have been described in this disclosure. These and other aspects are within the scope of the following claims.

Claims

CLAIMS:What is claimed is:

1. A method comprising: allocating, by a computing system, a first portion of virtual memory of a volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refreshing, by the computing system and based on a refresh mode of the volatile storage device, the first portion and the second portion of tiie virtual memory, wherein the refresh mode is set to a full self-refresh mode; storing at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copying contents of the compressed storage swap space to a non-volatile storage device: setting the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refreshing, by the computing system and based on the partial-array selfrefresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting the low power mode: setting the refresh mode of the volatile storage device to the full selfrefresh mode; refreshing, by the computing system and based on the full self-refresh mode; the first portion and the second portion of the virtual memory ; and copying the contents of the compressed storage swap space from the nonvolatile storage device back to the volatile storage device.

2. The method of claim 1, further comprising decompressing, by the computing system, the contents of the compressed storage swap space in the volatile storage device.

3. The method of any of claims 1-2, further comprising compressing, by the computing system, the contents of the second portion of the virtual memory using a selected compression process.

4. The method of any of claims 1-3, further comprising determining, by the computing system, whether to operate in the low power mode, wherein determining whether to enter the low power mode further includes using heuristics to determine whether to enter the low power mode.

5. The method of claim 4, wherein determining whether to operate in the low power mode further comprises determining whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

6. The method of any of claims 1-5, wherein the partial-array self-refresh mode includes refreshing only a portion of the virtual memory.

7. The method of any of claims 1-6, further comprising responsive to the computing system operating in low power mode, modifying a storage capacity of the volatile storage device visible to an operating system of the computing system based on the storage capacity of the second portion.

8. The method of any of claims 1-7, wherein the compressed storage swap space comprises a selected range of addresses of the first portion of the virtual memory.

9. A computing system, comprising: a volatile storage device; a non-volatile storage device; and one or more programmable processors configured to: allocate a first portion of virtual memory of the volatile storage device of the computing system as a compressed storage swap space, wherein the virtual memory includes a second portion different from the first portion, wherein the compressed storage swap space is aligned to a partial-array boundary in the volatile storage device; refresh based on a refresh mode of the volatile storage device, the first portion and the second portion of the virtual memory, wherein the refresh mode is set to a full self-refresh mode; store at least a portion of contents of the second portion in the compressed storage swap space; responsive to the computing system operating in a low power mode: copy contents of the compressed storage swap space to the nonvolatile storage device; set the refresh mode of the volatile storage device to a partial-array self-refresh mode; and refresh, based on the partial-array self-refresh mode, the second portion of the virtual memory while refraining from refreshing the compressed storage swap space; and responsive to the computing system exiting the low power mode: set the refresh mode of the volatile storage device to the full selfrefresh mode; refresh, based on the full self-refresh mode; the first portion and the second portion of the virtual memory; and copy the contents of the compressed storage swap space from the non-volatile storage device back to the volatile storage device.

10. The computing system of claim 9, wherein the one or more programmable processors are further configured to decompress the contents of the compressed storage swap space in the volatile storage device.

11. The computing system of any of claims 9-10, wherein the one or more programmable processors are further configured to compress the contents of the second portion of the virtual memory using a selected compression process.

12. The computing system of any of claims 9-11, wherein the one or more programmable processors are further configured to determine whether to operate in the low power mode, wherein determining whether to enter the low power mode further include using heuristics to determine whether to enter the low power mode.

13. The computing system of claim 12, wherein determining whether to operate in the low power mode further comprises determine whether the computing system is in one or more states, wherein the one or more states include at least one of: a bedtime mode, or an inactivity mode, wherein the inactivity mode is based on a period of limited user interaction with the computing system.

14. The computing system of any of claims 9-13, wherein the partial-array self-refresh mode includes refreshing only a portion of the virtual memory.

15. A non-transitory computer-readable medium, encoded with instructions that, when executed by one or more processors of a computing system, cause the one or more processors to perform any combination of the methods of claims 1-8.

Citation Information

Patent Citations

  • Efficiency in a memory management system

    US20030188121A1

  • Systems and methods for memory power saving via kernel steering to memory balloons

    US20190065087A1