Data Array Block Storage with Size Indications for Random Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data storage methods for texture data in computer graphics systems face challenges in managing high storage and bandwidth requirements, particularly in mobile devices, due to variable compression rates and the need for random access to variable-sized data arrays.

Innovation Solution

A method and apparatus that divide data arrays into blocks with size indications, allowing for efficient storage and random access by using a two-level header/data block size encoding arrangement, where overall group size is stored separately along with individual block sizes, enabling flexible storage and retrieval without decompressing entire arrays.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If texture data is stored in compressed form to reduce storage and bandwidth requirements, then storage efficiency improves, but random access capability deteriorates due to variable block sizes

Engineering Contradiction:
Improvestorage requirementsVSAvoidrandom access capability
Core Design Contradiction:
Quantity of substanceVSEase of operation

Solution Approach 1:

The patent divides the compressed texture data into fixed-size blocks with metadata headers. Each block contains a header indicating the size and offset of compressed data segments, allowing the system to access specific blocks independently without decompressing entire arrays. This segmentation enables random access to variable-sized compressed data while maintaining storage efficiency.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If variable compression rates are applied to texture data to reduce storage size, then storage efficiency improves, but data access complexity increases due to variable block sizes

Engineering Contradiction:
Improvestorage sizeVSAvoiddata access complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent pre-calculates and stores metadata headers for each compressed data block during the compression phase. These headers contain information about block sizes, offsets, and compression parameters. By preparing this access information in advance, the system eliminates the need for complex runtime calculations when accessing compressed data, thereby reducing access complexity while maintaining storage efficiency.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If entire compressed texture arrays are fetched to memory to enable random access, then random access capability improves, but bandwidth consumption increases

Engineering Contradiction:
Improverandom access capabilityVSAvoidbandwidth consumption
Core Design Contradiction:
Ease of operationVSLoss of energy

Solution Approach 1:

The patent extracts only the necessary metadata headers from the compressed data structure and stores them separately in an accessible format. These headers contain the information needed to locate and retrieve specific compressed blocks without fetching the entire texture array. This extraction approach enables random access to individual blocks while minimizing bandwidth consumption by transferring only essential access information.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11023152B2Methods and apparatus for storing data in memory in data processing systems
Publication Date: 2021.06.01 ARM LTD
  • US11023152B2 patent drawing
  • US11023152B2 patent drawing
  • US11023152B2 patent drawing

AI summary

When storing an array of data in memory, the data array is divided into a plurality of blocks, and for respective groups of the blocks that the data array has been divided into, a set of data representing the group of blocks that includes: for each block of the group of blocks, a set of data for that block of the group of blocks; and a size indication for each of one or more of the blocks of the group of blocks, the size indication for a block of a group of blocks indicating the size in memory of the set of data for that block of the group included in the stored set of data representing the group of blocks, is stored. A set of header data is also stored separately for each group of blocks of the data array.