# US 11,308,570 B2 · Video data processing system for storing frames of video data

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

- Number: US 11,308,570 B2
- Document ID: US11308570B2
- Status: Granted
- Kind: B2
- Application number: 16/442,711
- Filed: 2019-06-17
- Published: 2019-12-26
- Granted: 2022-04-19
- Earliest claimed: 2018-06-22
- Assignees: Arm Limited
- Applicants: Arm Limited
- Inventors: Lars Oskar Flordal; Jakob Axel Fries
- Web page: https://patentgrep.com/patent/US11308570B2

## CPC

- G06T 1/0007: {Image acquisition}
- G06T 1/60: Memory management
- G09G 5/363: {Graphics controllers}
- G09G 2340/02: Handling of images in compressed format, e.g. JPEG, MPEG
- G09G 2350/00: Solving problems of bandwidth in display systems
- G09G 2360/125: using unified memory architecture [UMA]
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

A data processing system includes a producer processor that produces a sequence of data outputs for use by consumer processors of the data processing system. The system also includes a memory for storing a sequence of data outputs produced by the data processor. The data processor encodes data outputs as encoded blocks of data, storing a particular encoded block of a first frame in a first location in the memory and an indication of the first location. The data processor stores a corresponding encoded block of a second data output in a second location and updates the indication to the second location.

## Claims

### Claim 1

A method of operating a data processing system in which a producer processor of the data processing system is operable to produce a sequence of data outputs for use by one or more consumer processors of the data processing system, the method comprising:
the producer processor encoding a first data output in a sequence of data outputs, each data output being encoded as a plurality of encoded blocks of data and storing the plurality of encoded blocks of data for each data output in turn in a region of memory of a memory system from which encoded blocks of data will be read by a consumer processor for processing while the producer processor is storing other encoded blocks of data for the data output in the region of memory,
wherein the region of memory comprises a first sub-region of memory and a second sub-region of memory, and
wherein the first sub-region of memory is separate and delineated from the second sub-region of memory;
the method further comprising:
the producer processor:
storing all of a plurality of encoded blocks of data of a first data output in the sequence of data outputs in a plurality of first locations in the first sub-region of memory;
the method further comprising, when storing each encoded block of data of the plurality of encoded blocks of data of the first data output in the sequence of data outputs:
the memory system, in response to the producer processor storing that encoded block of data of the first data output in one of the plurality of first locations in the first sub-region of memory, acknowledging to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor; and
the producer processor, in response to the memory system acknowledging to the producer processor that an encoded block of data has been stored, storing, for that encoded block of data, an indication of the first location in the first sub-region for use by a consumer processor when reading the block of data; and
the producer processor:
storing all of a plurality of encoded blocks of data of a second data output in a plurality of second locations in the second sub-region of the memory;
the method further comprising, when storing each encoded block of data of the plurality of encoded blocks of data of the second data output in the sequence of data outputs that corresponds to one of the plurality of encoded blocks of data in the first data output:
the producer processor storing that encoded block of data of the second data output in one of the plurality of second locations in the second sub-region of memory;
the memory system, in response to the producer processor storing that encoded block of the second data output in one of the plurality of second locations in the second sub-region of memory, acknowledging to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor; and
the producer processor, in response to the memory system acknowledging to the producer processor that an encoded block of data has been stored, updating the indication of the location of the encoded block in the memory to the one of the plurality of second locations in the second sub-region of the memory;
and wherein the method further comprises the consumer processor:
pre-fetching data for the first and second sub-regions of the memory;
reading the indication of the location of the encoded block of data;
reading the encoded block of data from the location in the region of memory indicated by the location indication for the encoded block of data; and
consuming the encoded block data.

### Claim 2 (depends on 1)

The method as claimed in claim 1, further comprising not overwriting the particular encoded block of data of the first data output stored in the first location when storing the corresponding encoded block of data of the second data output in the second location.

### Claim 3 (depends on 1)

The method as claimed in claim 1, wherein the region of memory comprises a header buffer for storing the indication of the location of the encoded block of data.

### Claim 4 (depends on 1)

The method as claimed in claim 1, wherein the indication of the location of an encoded block of data comprises a pointer to the location at which the encoded block of data is stored.

### Claim 5 (depends on 1)

The method as claimed in claim 1, the method further comprising a consumer processor reading one or more encoded blocks of data from the region of memory while the producer processor is storing one or more other encoded blocks of data in the same region of memory.

### Claim 6 (depends on 1)

The method as claimed in claim 1, wherein the method comprises the consumer processor pre-fetching translation lookaside buffer data for the first and second sub-regions of the memory.

### Claim 7

A data processing system comprising:
a producer processor operable to produce a sequence of data outputs for use by one or more consumer processors of the producer processing system; and
a memory system comprising a memory for storing a sequence of data outputs produced by the producer processor;
wherein the producer processor comprises a processing circuit operable to:
encode a sequence of data outputs, each data output being encoded as a plurality of encoded blocks of data; and
store the plurality of encoded blocks of data for each data output in turn in a region of the memory from which encoded blocks of data will be read by a consumer processor for processing while the producer processor is storing other encoded blocks of data for the data output in the region of memory;
wherein the region of memory comprises a first sub-region of memory and a second sub-region of memory, and
wherein the first sub-region of memory is separate and delineated from the second sub-region of memory;
wherein the processing circuit is further operable to:
store all of a plurality of encoded blocks of data of a first data output in a plurality of first locations in the first sub-region of the memory;
wherein the memory system is operable to:
for each of the plurality of encoded blocks of data of the plurality of encoded blocks of data of the first data output that the processing circuit stores in the plurality of first locations in the first sub-region of the memory,
in response to the producer processor storing that encoded block of data of the first data output in one of the plurality of first locations in the first sub-region of memory,
acknowledge to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor;
wherein the processing circuit is further operable to:
in response to the memory system acknowledging to the producer processor that an encoded block of data has been stored,
store, for each of the plurality of encoded blocks of data, an indication of the first location in the first sub-region for use by a consumer processor when reading the block of data;
wherein the processing circuit is further operable to:
store all of a plurality of encoded blocks of data of a second data output in a plurality of second locations in the second sub-region of the memory;
when the processing circuit is storing each encoded block of data of the plurality of encoded blocks of data of the second data output in the sequence of data outputs that corresponds to one of the plurality of encoded blocks of data in the first data output:
the processing circuit is further operable to store that encoded block of data of the second data output in one of the plurality of second locations in the second sub-region of memory;
the memory system is operable to:
in response to the producer processor storing that encoded block of the second data output in one of the plurality of second locations in the second sub-region of memory,
acknowledge to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor; and
the processing circuit is further operable to update the indication of the location of the encoded block in the memory to the one of the plurality of second locations in the second sub-region of the memory; and
wherein the data processing system comprises one or more consumer processors comprising a processing circuit operable to:
pre-fetch data for the first and second sub-regions of the memory;
read the indication of the location of the encoded block of data;
read the encoded block of data from the location in the region of memory indicated by the location indication for the encoded block of data; and
consume the encoded block of data.

### Claim 8 (depends on 7)

The data processing system as claimed in claim 7, wherein the processing circuit is operable to not overwriting the particular encoded block of data of the first data output stored in the first location when storing the corresponding encoded block of data of the second data output in the second location.

### Claim 9 (depends on 7)

The data processing system as claimed in claim 7, wherein the region of memory comprises a header buffer for storing the indication of the location of the encoded block of data.

### Claim 10 (depends on 7)

The data processing system as claimed in claim 7, wherein the indication of the location of an encoded block of data comprises a pointer to the location at which the encoded block of data is stored.

### Claim 11 (depends on 7)

The data processing system as claimed in claim 7, wherein the data processing system comprises one or more consumer processors comprising a processing circuit operable to:
read one or more encoded blocks of data from the region of memory while the producer processor is storing one or more other encoded blocks of data in the same region of memory.

### Claim 12 (depends on 7)

The data processing system as claimed in claim 7, wherein the processing circuit of the one or more consumer processors is operable to pre-fetch translation lookaside buffer data for the first and second sub-regions of the memory.

### Claim 13

A non-transitory computer readable storage medium storing computer software code which when executing on a video processing system performs a method of operating a data processing system in which a producer processor of the data processing system is operable to produce a sequence of data outputs for use by one or more consumer processors of the data processing system, the method comprising:
the producer processor encoding a first data output in a sequence of data outputs, each data output being encoded as a plurality of encoded blocks of data and storing the plurality of encoded blocks of data for each data output in turn in a region of memory of a memory system from which encoded blocks of data will be read by a consumer processor for processing while the producer processor is storing other encoded blocks of data for the data output in the region of memory,
wherein the region of memory comprises a first sub-region of memory and a second sub-region of memory, and
wherein the first sub-region of memory is separate and delineated from the second sub-region of memory;
the method further comprising:
the producer processor:
storing all of a plurality of encoded blocks of data of a first data output in the sequence of data outputs in a plurality of first locations in the first sub-region of memory;
the method further comprising, when storing each encoded block of data of the plurality of encoded blocks of data of the first data output in the sequence of data outputs:
the memory system, in response to the producer processor storing that encoded block of data of the first data output in one of the plurality of first locations in the first sub-region of memory, acknowledging to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor; and
the producer processor, in response to the memory system acknowledging to the producer processor that an encoded block of data has been stored, storing, for that encoded block of data, an indication of the first location in the first sub-region for use by a consumer processor when reading the block of data; and
the producer processor:
storing all of a plurality of encoded blocks of data of a second data output in a plurality of second locations in the second sub-region of the memory;
the method further comprising, when storing each encoded block of data of the plurality of encoded blocks of data of the second data output in the sequence of data outputs that corresponds to one of the plurality of encoded blocks of data in the first data output:
the producer processor storing that encoded block of data of the second data output in one of the plurality of second locations in the second sub-region of memory;
the memory system, in response to the producer processor storing that encoded block of the second data output in one of the plurality of second locations in the second sub-region of memory, system acknowledging to the producer processor that the encoded block of data has been stored such that it is at least available to be used by a consumer processor; and
the producer processor, in response to the memory system acknowledging to the producer processor that an encoded block of data has been stored, updating the indication of the location of the encoded block in the memory to the one of the plurality of second locations in the second sub-region of the memory;
and wherein the method further comprises the consumer processor:
pre-fetching data for the first and second sub-regions of the memory;
reading the indication of the location of the encoded block of data;
reading the encoded block of data from the location in the region of memory indicated by the location indication for the encoded block of data; and
consuming the encoded block data.
