Multi-level memory compression
AssigneeInternational Business Machines Corporation
InventorsChristopher J. Arges, Nathan Fontenot, Jeffrey D. George, Ryan P. Grimm, Joel H. Schopp, Michael T. Strosaker, Mark W. VanderWiele
Life of this patent
Estimating the term…
Abstract
According to one embodiment of the present disclosure, an approach is provided in which a processor selects a page of data that is compressed by a first compression algorithm and stored in a memory block. The processor identifies a utilization amount of the compressed page of data and determines whether the utilization amount meets a utilization threshold. When the utilization amount fails to meet the utilization threshold, the processor uses a second compression algorithm to recompresses the page of data.
Claims4
A method comprising:
- selecting, by one or more processors, a page of data that is compressed by a first compression algorithm, wherein the compressed page of data is stored in a first one of a plurality of memory blocks;
- decompressing the page of data by the first compression algorithm, resulting in a decompressed page of data;
- storing the decompressed page of data into an uncompressed memory area;
- combining the first memory block with one or more of the plurality of memory blocks that are unallocated, resulting in a larger memory block;
- identifying one of a plurality of pre-defined memory block sizes corresponding to the larger memory block;
- updating one of a plurality of linked lists corresponding to the identified pre-defined memory block size to indicate that the larger memory block is unallocated;
- recompressing, by one of the processors, the page of data using a second compression algorithm in response to determining that the compressed page of data is utilized less than a utilization threshold, the recompressing resulting in a recompressed page of data;
- determining a size of the recompressed page of data;
- selecting one of the plurality of pre-defined memory block sizes based upon the size of the recompressed page of data, wherein each of the plurality of pre-defined memory block sizes corresponds to a size of a memory block located in memory;
- identifying, in an index array, one of a plurality of indexes that is assigned to the selected pre-defined memory block size;
- determining whether the identified index includes a pointer that points to one of the plurality of linked lists comprising an address location of a second one of the plurality of memory blocks that corresponds to the selected pre-defined memory block size;
- and
- in response to determining that the identified index includes the pointer, storing the recompressed page of data in the second memory block.
Dependencies are inferred from the claim text.