Compression Buffer Allocation to Reduce Memory Fragmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data compression methods in physical computer memory face challenges in managing fragmentation, particularly when using hardware-assisted compression, as it is difficult to determine the required space for compressed data beforehand, leading to inefficiencies and wasted space due to fixed buffer sizes.

Innovation Solution

The proposed solution involves compression hardware that selects optimal buffers of different sizes to store compressed data, minimizing unused space by splitting data across multiple buffers, and communicating with the memory management program to manage fragmentation and optimize storage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If fixed-size buffers are used to store compressed data, then memory allocation is simplified, but internal fragmentation increases and compression effectiveness decreases

Engineering Contradiction:
Improvememory allocation simplicityVSAvoidwasted memory space
Core Design Contradiction:
Ease of manufactureVSLoss of substance

Solution Approach 1:

The patent divides the fixed buffer into multiple variable-sized slots that can be dynamically allocated to match the actual size of compressed data. Each compression operation can utilize one or more slots, and unused portion of slots can be left empty or reused, thereby reducing internal fragmentation while maintaining the overall fixed buffer structure for simplicity.

Inventive Principle:
Principle #1Segmentation

2Productivity

If compression hardware determines buffer size dynamically, then memory utilization improves, but hardware complexity increases

Engineering Contradiction:
Improvememory utilization efficiencyVSAvoidcompression hardware complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent pre-allocates a fixed number of variable-sized slots in the buffer before compression operations begin. The compression hardware only needs to select and allocate these pre-defined slots based on compressed data size, rather than dynamically managing arbitrary buffer sizes. This reduces hardware complexity by limiting the decision space to a finite set of pre-prepared options.

Inventive Principle:
Principle #10Preliminary action

3Loss of substance

If multiple variable-sized buffers are used, then fragmentation is reduced, but buffer management complexity increases

Engineering Contradiction:
Improveunused space in buffersVSAvoidbuffer management complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

The patent implements a self-managing buffer system where the compression hardware automatically selects appropriate slots from the available pool based on the size of compressed data. The system tracks which slots are in use and which are available without requiring external intervention, thereby reducing buffer management complexity while maintaining efficient space utilization through variable-sized allocations.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3420458B1Managing memory fragmentation in hardware-assisted data compression
Publication Date: 2021.11.10 GOOGLE LLC
  • EP3420458B1 patent drawingFigure 1
  • EP3420458B1 patent drawingFigure 1B
  • EP3420458B1 patent drawingFigure 1C

AI summary

Systems, devices, and methods for managing fragmentation in hardware-assisted compression of data in physical computer memory which may result in reduced internal fragmentation. An example computer-implemented method comprises: providing, by a memory management program to compression hardware, a compression command including an address in physical computer memory of data to be compressed and a list of at least two available buffers for storing compressed data; using, by the compression hardware, the address included in the compression command to retrieve uncompressed data; compressing the uncompressed data; and selecting, by the compression hardware, from the list of at least two available buffers, at least two buffers for storing compressed data based on an amount of space that would remain if the compressed data were stored in the at least two buffers, wherein each of the at least two selected buffers differs in size from at least one other of the selected buffers.