Parallel String Copy Engines for Dependency-Aware Decompression

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The inefficiency of using software for decompressing compressed data in electronic devices due to the large number of decompression operations and memory accesses required, which leads to increased power consumption and reduced performance.

Innovation Solution

A hardware-based decompression subsystem with a command processor and string copy engines that process literal write and string copy commands in parallel, utilizing a scratch array and history buffer to efficiently recreate original data from compressed data, while managing dependencies between commands.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If software is used for decompressing compressed data, then the decompression operations can be performed using a general-purpose processor, but the large number of decompression operations and memory accesses leads to inefficient performance and increased power consumption

Engineering Contradiction:
Improveuse of general-purpose processorVSAvoiddecompression efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent replaces the software-based decompression mechanism (which uses a general-purpose processor executing instructions) with a hardware-based decompression engine that directly performs decompression operations through dedicated circuitry. This substitution eliminates the overhead of software interpretation and memory accesses, providing significant performance improvement while maintaining the same decompression functionality.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Adaptability or versatility

If software is used for decompressing compressed data, then the system can handle various compression formats, but the large number of memory accesses required reduces performance

Engineering Contradiction:
Improvesoftware decompression capabilityVSAvoidmemory access time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The decompression engine is divided into multiple parallel string copy engines (first string copy engine, second string copy engine, etc.) that can simultaneously process different portions of the decompression task. This segmentation allows the system to handle multiple memory operations in parallel, reducing the total time required for decompression while maintaining versatility through configurable engine parameters.

Inventive Principle:
Principle #1Segmentation

3Productivity

If multiple string copy engines are used in parallel, then decompression performance is improved, but dependencies between commands must be managed

Engineering Contradiction:
Improveparallel decompression throughputVSAvoidcommand dependency management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The command processor includes a dependency checking mechanism that monitors the execution state of multiple string copy engines and detects dependencies between commands. When a dependency is detected (e.g., when one engine needs data that another engine has not yet produced), the system provides feedback to stall the dependent engine until the data becomes available. This feedback loop enables parallel execution while correctly handling command dependencies.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10707897B1Command processor with multiple string copy engines for a decompression system
Publication Date: 2020.07.07 ATI TECHNOLOGIES ULC
  • US10707897B1 patent drawing
  • US10707897B1 patent drawing
  • US10707897B1 patent drawing

AI summary

An electronic device for decompressing compressed data to recreate original data includes a first string copy engine and a second string copy engine. The first string copy engine processes a first string copy command by acquiring a first string from recreated original data and appending the first string to the recreated original data. The second string copy engine processes a second string copy command by checking the second string copy command for a dependency on the first string and, when the dependency is found, stalling further processing of the second string copy command until the first string copy engine has appended a corresponding portion of the first string to the recreated original data. The second string copy engine processes the second string copy command by acquiring a second string from the recreated original data and appending the second string to the recreated original data.