# US 11,113,783 B2 · Programmable re-order buffer for decompression

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

- Number: US 11,113,783 B2
- Document ID: US11113783B2
- Status: Granted
- Kind: B2
- Application number: 16/683,024
- Filed: 2019-11-13
- Published: 2021-05-13
- Granted: 2021-09-07
- Earliest claimed: 2019-11-13
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Abhishek R. Appu; Eric G. Liskay; Prasoonkumar Surti; Sudhakar Kamma; Karthik Vaidyanathan; Rajasekhar Pantangi; Altug Koker; Abhishek Rhisheekesan; Shashank Lakshminarayana; Priyanka Ladda; Karol A. Szerszen
- Web page: https://patentgrep.com/patent/US11113783B2

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 1/60: Memory management
- G06F 9/3818: {Decoding for concurrent execution}
- G06F 9/3856: {Reordering of instructions, e.g. using queues or age tags}
- G06F 9/5016: {the resource being the memory}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples described herein relate to a decompression engine that can request compressed data to be transferred over a memory bus. In some cases, the memory bus is a width that requires multiple data transfers to transfer the requested data. In a case that requested data is to be presented in-order to the decompression engine, a re-order buffer can be used to store entries of data. When a head-of-line entry is received, the entry can be provided to the decompression engine. When a last entry in a group of one or more entries is received, all entries in the group are presented in-order to the decompression engine. In some examples, a decompression engine can borrow memory resources allocated for use by another memory client to expand a size of re-order buffer available for use. For example, a memory client with excess capacity and a slowest growth rate can be chosen to borrow memory resources from.

## Claims

### Claim 1

A graphics processing apparatus comprising:
an interface to a memory device;
a reorder buffer system coupled to the interface to the memory device, the reorder buffer system comprising a random access memory and a tracker; and
an interface to couple the reorder buffer system to a decompressor, wherein:
the random access memory is to store data prior to output to the interface coupled to the decompressor,
the tracker is to cause data to be provided to the interface to the decompressor in order of allocation,
an amount of memory resources in the random access memory allocated for a reorder buffer (ROB) to reorder received data is dynamically reconfigured based on a mode of operation,
the mode of operation is based on a profile of an application associated with use of the ROB, and
the profile of the application is to identify a percentage of compressed data transferrable over a memory bus using more than one clock cycle.

### Claim 2 (depends on 1)

The graphics processing apparatus of claim 1, wherein the reorder buffer system comprises a control buffer to indicate compression characteristics of data stored in the reorder buffer.

### Claim 3 (depends on 2)

The graphics processing apparatus of claim 2, wherein the compression characteristics comprise one or more of: compression state, surface format, compression format, or other metadata.

### Claim 4 (depends on 1)

The graphics processing apparatus of claim 1, wherein the mode of operation is based on a type of application requesting use of decompression.

### Claim 5 (depends on 4)

The graphics processing apparatus of claim 4, wherein the type of application comprises a game, presentation software, spreadsheet, or video player.

### Claim 6 (depends on 1)

The graphics processing apparatus of claim 1, wherein the mode of operation is based on hiding latency from use of the ROB to store data to reorder data.

### Claim 7 (depends on 1)

The graphics processing apparatus of claim 1, wherein the random access memory is to include allocated memory resources for a first client and memory resources for a second client.

### Claim 8 (depends on 7)

The graphics processing apparatus of claim 7, comprising a controller that is to permit the first client to borrow memory resources from the second client to provide for the ROB.

### Claim 9 (depends on 8)

The graphics processing apparatus of claim 8, wherein the second client has available memory resources and an associated slowest growth rate for memory allocation.

### Claim 10 (depends on 8)

The graphics processing apparatus of claim 8, wherein the random access memory is to include allocated memory resources for a third client and wherein the controller is to allocate memory resources for the second client by a borrow of memory resources from the third client and the controller is to allocate memory resources for the first client by a borrow of memory resources from the second client.

### Claim 11 (depends on 1)

The graphics processing apparatus of claim 1, wherein the amount of memory resources in the random access memory allocated for the ROB to reorder received data is dynamically reconfigured based on a mode of operation and per read request or group of read requests.

### Claim 12

A method performed by a reorder buffer used by a decompressor to reorder compressed data entries, the method comprising:
dynamically allocating an amount of memory for the reorder buffer (ROB) based on a mode of operation, the ROB for use in re-ordering received entries associated with a read request of compressed data, wherein
the mode of operation is based on a profile of an application associated with use of the ROB, and
the profile of the application is to identify a percentage of compressed data transferrable over a memory bus using more than one clock cycle;
storing received compressed data associated with the read request into the ROB as one or more entries;
based on receipt of an entry that has not been provided to the decompressor and is a front of line, providing the entry in-order to the decompressor; and
based on identification of receipt of a last entry of all of one or more entries associated with the read request, providing one or more entries, including the last entry, not previously provided to the decompressor, in-order, to the decompressor.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
providing compression information for one or more entries to the decompressor.

### Claim 14 (depends on 13)

The method of claim 13, wherein the compression information comprises one or more of: compression state, surface format, compression format, or other metadata.

### Claim 15 (depends on 12)

The method of claim 12, wherein the type of application comprises a game, presentation software, spreadsheet, or video player.

### Claim 16 (depends on 12)

The method of claim 12, comprising:
allocating memory resources for the ROB and memory resources for another memory client.

### Claim 17 (depends on 16)

The method of claim 16, comprising:
borrowing memory resources from the another memory client for allocation to the ROB.

### Claim 18 (depends on 17)

The method of claim 17, wherein the another memory client has available memory resources and an associated slowest growth rate for memory allocation.

### Claim 19

A non-transitory computer-readable medium comprising instructions stored thereon, that if executed by a processor, causes the processor to:
cause a random access memory to store data prior to output to an interface coupled to a decompressor,
cause received data to be provided to the interface to the decompressor in order of allocation, and
dynamically modify an amount of memory resources in the random access memory allocated to a reorder buffer (ROB) to reorder received data, wherein
the amount of memory resources in the random access memory allocated to the ROB is based on a mode of operation,
the mode of operation is based on a profile of an application associated with use of the ROB, and
the profile of the application is to identify a percentage of compressed data transferrable over a memory bus using more than one clock cycle.

### Claim 20 (depends on 19)

The computer-readable medium of claim 19, wherein the mode of operation is based on a type of application requesting use of decompression.

### Claim 21 (depends on 20)

The computer-readable medium of claim 20, wherein the type of application comprises a game, presentation software, spreadsheet, or video player.

### Claim 22 (depends on 19)

The computer-readable medium of claim 19, comprising instructions stored thereon, that if executed by a processor, causes the processor to:
allocate memory resources for the ROB and memory resources for another memory client.

### Claim 23 (depends on 22)

The computer-readable medium of claim 22, comprising instructions stored thereon, that if executed by a processor, causes the processor to:
allocate memory resources to the ROB from memory resources allocated to the another memory client.

### Claim 24 (depends on 19)

The computer-readable medium of claim 19, comprising instructions stored thereon, that if executed by a processor, causes the processor to:
provide compression information for one or more entries to the decompressor, wherein the compression information comprises one or more of: compression state, surface format, compression format, or other metadata.
