Hardware Range Coding with Speculative Probability Buffering

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Context-based range coders in data processing units face inefficiencies due to repeated memory access operations for retrieving probability values, leading to slowed throughput and increased memory bandwidth usage, especially when switching between applications and managing state information.

Innovation Solution

Implementing a method where speculative probability values are retrieved in response to a single read instruction, reducing memory access frequency and enhancing processing efficiency by storing these values locally for context-based coding, and compressing state information to minimize latency during switching between data streams.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If context-based range coders retrieve probability values through repeated memory access operations, then coding accuracy is maintained, but processing throughput decreases and memory bandwidth usage increases

Engineering Contradiction:
Improveprocessing throughputVSAvoidmemory access time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by pre-fetching and storing speculative probability values into a local buffer before they are actually needed for coding operations. This allows the coder to retrieve values from the buffer rather than performing repeated memory accesses, thereby improving throughput and reducing latency.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary component - a local buffer - that sits between the main memory and the range coder. This buffer stores speculative probability values and serves as a mediator, allowing the coder to access frequently used probability values locally without repeatedly accessing main memory, thus reducing memory bandwidth usage and improving processing speed.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If state information is fully stored and retrieved during switching between data streams, then coding accuracy is maintained, but switching latency increases

Engineering Contradiction:
Improvecoding accuracyVSAvoidswitching latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts only the essential state information (probability values) that needs to be preserved during switching between data streams, rather than storing and retrieving all state information. By selectively extracting and storing only the critical probability values in a buffer, the system maintains coding accuracy while significantly reducing switching latency.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent applies preliminary action by pre-loading probability values into the buffer before switching between data streams occurs. This ensures that when switching happens, the necessary probability values are already available in the buffer, eliminating delays associated with retrieving state information during the switch.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10771090B2Data processing unit having hardware-based range encoding and decoding
Publication Date: 2020.09.08 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10771090B2 patent drawing
  • US10771090B2 patent drawing
  • US10771090B2 patent drawing

AI summary

A highly programmable data processing unit includes multiple processing units for processing streams of information, such as network packets or storage packets. The data processing unit includes one or more specialized hardware accelerators configured to perform acceleration for various data-processing functions. The data processing unit is configured to retrieve speculative probability values for range coding a plurality of bits with a single read instruction to an on-chip memory that stores a table of probability values. The data processing unit is configured to store state information used for context-coding packets of a data stream so that the state information is available after switching between data streams.