# US 11,907,588 B2 · Accelerate memory decompression of a large physically scattered buffer on a multi-socket symmetric multiprocessing architecture

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

- Number: US 11,907,588 B2
- Document ID: US11907588B2
- Status: Granted
- Kind: B2
- Application number: 17/526,016
- Filed: 2021-11-15
- Published: 2023-05-18
- Granted: 2024-02-20
- Earliest claimed: 2021-11-15
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Vishnupriya R; Mehulkumar J. Patel; Manish Mukul
- Web page: https://patentgrep.com/patent/US11907588B2

## CPC

- G06F 3/0661: {Format or protocol conversion arrangements}
- H03M 7/6064: {Selection of Compressor}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0673: {Single storage device}
- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 12/04: Addressing variable-length words or parts of words
- G06F 12/10: Address translation
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 2212/1024: Latency reduction
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/254: Distributed memory
- G06F 2212/657: Virtual address space management
- H03M 7/40: Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M 7/4037: {Prefix coding}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## Abstract

Aspects of the invention include identifying a first subsystem and a second subsystem of a plurality of subsystems respectively storing a first compressed data and a second compressed data, wherein the first compressed data and the second compressed data are fragments of a requested data. A compression method used to compress the first compressed data and second compressed data is identified. A first accelerator of first subsystem and a second accelerator of the second subsystem is identified. The first compressed data from a first local memory of the first subsystem is offloaded to the first accelerator, and the second compressed data from a second local memory of the second subsystem is offloaded to the second accelerator, wherein offloading comprises provided a decompression method for the first compressed data and the second compressed data.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, by a processor, a request for scattered data from a compressed file;
identifying, by a processor, a first subsystem and a second subsystem of a plurality of subsystems respectively storing, in a respective first physical block and second physical block, a first compressed data and a second compressed data, wherein the first compressed data and the second compressed data are fragments of the requested scattered data, and wherein the first physical block and the second physical block are noncontiguous blocks separated by unrelated data pages;
identifying, by the processor, a compression method used to compress the first compressed data and the second compressed data;
identifying, by the processor, a first accelerator of the first subsystem having a closest physical proximity to the first physical block and a second accelerator of the second subsystem having a closest physical proximity to the second physical block; and
offloading, by the processor, the first compressed data to the first accelerator, and the second compressed data to the second accelerator, wherein offloading comprises providing a decompression method for the first compressed data and the second compressed data based on the compression method.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the method further comprises decompressing the first compressed data and the second compressed data using the identified compression method.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the method further comprises:
receiving a read memory request for the first compressed data, wherein the read memory request includes a virtual address of the of the first compressed data; and
translating the virtual memory address to the physical location of the first compressed data.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the method of compressing the first compressed data comprises reading a file extension associated with the first compressed data.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the method further comprises associating the method of compressing the first compressed data with the second compressed data.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the method further comprises decompressing the first compressed data in parallel with the second compressed data.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the first accelerator decompresses the compressed data using one of the following methods: fixed Huffman table decoding, and dynamic Huffman table decoding with full flush mode.

### Claim 8

A system comprising:
a memory having computer readable instructions; and
one or more processors for executing the computer readable instructions, the computer readable instructions controlling the one or more processors to perform operations comprising:
receiving a request for scattered data from a compressed file;
identifying a first subsystem and a second subsystem of a plurality of subsystems respectively storing, in a respective first physical block and second physical block, a first compressed data and a second compressed data, wherein the first compressed data and the second compressed data are fragments of the requested scattered data, and wherein the first physical block and the second physical block are noncontiguous blocks separated by unrelated data pages;
identifying a compression method used to compress the first compressed data and the second compressed data;
identifying a first accelerator of the first subsystem having a closest physical proximity to the first physical block and a second accelerator of the second subsystem having a closest physical proximity to the second physical block; and
offloading the first compressed data to the first accelerator, and the second compressed data to the second accelerator, wherein offloading comprises providing a decompression method for the first compressed data and the second compressed data based on the compression method.

### Claim 9 (depends on 8)

The system of claim 8, wherein the operations further comprise decompressing the first compressed data and the second compressed data using the identified compression method.

### Claim 10 (depends on 8)

The system of claim 8, wherein the operations further comprise:
receiving a read memory request for the first compressed data, wherein the read memory request includes a virtual address of the of the first compressed data; and
translating the virtual memory address to a physical memory address of the first compressed data.

### Claim 11 (depends on 8)

The system of claim 8, wherein identifying the method of compressing the first compressed data comprises reading a file extension associated with the first compressed data.

### Claim 12 (depends on 11)

The system of claim 11, wherein the operations further comprise associating the method of compressing the first compressed data with the second compressed data.

### Claim 13 (depends on 8)

The system of claim 8, wherein the operations further comprise decompressing the first compressed data in parallel with the second compressed data.

### Claim 14 (depends on 8)

The system of claim 8, wherein the first accelerator decompresses the compressed data using one of the following methods: fixed Huffman table decoding, and dynamic Huffman table decoding with full flush mode.

### Claim 15

A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform operations comprising:
receiving a request for scattered data from a compressed file;
identifying a first subsystem and a second subsystem of a plurality of subsystems respectively storing, in a respective first physical block and second physical block, a first compressed data and a second compressed data, wherein the first compressed data and the second compressed data are fragments of the requested scattered data, and wherein the first physical block and the second physical block are noncontiguous blocks separated by unrelated data pages;
identifying a compression method used to compress the first compressed data and the second compressed data;
identifying a first accelerator of the first subsystem having a closest physical proximity to the first physical block and a second accelerator of the second subsystem having a closest physical proximity to the second physical block; and
offloading the first compressed data to the first accelerator, and the second compressed data to the second accelerator, wherein offloading comprises providing a decompression method for the first compressed data and the second compressed data based on the compression method.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the operations further comprise decompressing the first compressed data and the second compressed data using the identified compression method.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein the operations further comprise:
receiving a read memory request for the first compressed data, wherein the read memory request includes a virtual address of the of the first compressed data; and
translating the virtual memory address to a physical memory address of the first compressed data.

### Claim 18 (depends on 15)

The computer program product of claim 15, wherein the operations further comprise determining a first method of compressing the first compressed data.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein the operations further comprise associating the method of compressing the first compressed data with the second compressed data.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein the first accelerator decompresses the compressed data using one of the following methods: fixed Huffman table decoding, and dynamic Huffman table decoding with full flush mode.
