Thread Issue Controller Pilot Sequence Cache Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Data processing systems with multiple threads in parallel execution face inefficiencies due to cache misses, leading to stalled threads and reduced pipeline progress, as the cache memory's limited capacity results in significant latency and overhead when handling these misses.

Innovation Solution

An issue controller reorders threads into a pilot sequence and a main sequence, where pilot threads are issued ahead of neighboring main threads to provoke early cache misses, ensuring that surrounding data values are likely returned by the time main threads are executed, thereby reducing stalling and increasing pipeline efficiency without modifying program instructions or hardware.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If threads are issued in predetermined logical sequence, then execution order is maintained, but pipeline efficiency decreases due to bunching of cache misses

Engineering Contradiction:
Improveexecution order correctnessVSAvoidpipeline efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The thread sequence is segmented into two distinct sequences: a pilot sequence containing select threads issued early to provoke cache misses, and a main sequence containing remaining threads issued after cache lines are filled. This segmentation allows the system to maintain logical execution order while improving pipeline efficiency by preventing cache miss bunching.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Pilot threads are issued in advance of main threads to proactively fill cache lines with data that will be needed by subsequent main threads. This preliminary action ensures that when main threads are issued, the required data is already in cache, preventing stalling and improving overall pipeline efficiency.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If cache memory capacity is increased, then cache hit rate improves, but system complexity and cost increase

Engineering Contradiction:
Improvecache hit rateVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Instead of increasing cache capacity, the system uses pilot threads to proactively load required data into cache before main threads need it. This preliminary data loading approach achieves high cache hit rates for main threads without requiring larger cache memory, thereby avoiding increased system complexity and cost.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Pilot threads act as intermediaries that mediate between main memory and main threads. They trigger cache line fills in advance, serving as a mechanism to improve cache hit rates without physically expanding cache capacity, thus avoiding the complexity and cost associated with larger cache memories.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If more threads are kept in flight to maintain pipeline fullness, then throughput increases, but overhead of managing stalled threads increases

Engineering Contradiction:
ImprovethroughputVSAvoidthread management overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The thread management system is segmented into two queues: a pilot queue for threads to be issued early to fill caches, and a main queue for threads to be issued after cache filling. This segmentation allows the system to maintain a controlled number of in-flight threads while reducing management overhead, as the issue controller can systematically switch between sequences rather than managing all threads uniformly.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The issue controller periodically switches between issuing pilot threads and main threads in a structured manner. This periodic action pattern allows the system to maintain pipeline fullness with controlled overhead, as the switching between sequences follows a predictable pattern that simplifies thread management compared to handling all threads uniformly.

Inventive Principle:
Principle #19Periodic action

4Loss of time

If pilot threads are issued ahead of main threads, then cache fill latency is hidden, but pipeline capacity for main threads is reduced

Engineering Contradiction:
Improvecache fill latencyVSAvoidmain thread execution rate
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

Pilot threads are issued in advance to perform the preliminary action of filling cache lines with data needed by main threads. This hides the cache fill latency from main threads, as the data is already in cache when main threads are issued. The pipeline capacity is optimized by limiting pilot threads to a manageable subset that triggers necessary cache fills without excessively reducing capacity for main threads.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Instead of issuing all possible pilot threads that could potentially fill caches, the system issues a partial, carefully selected subset of pilot threads that are sufficient to fill the necessary cache lines for upcoming main threads. This partial action approach hides cache fill latency effectively while minimizing the reduction in pipeline capacity for main threads.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS9753735B2Thread issue control
Publication Date: 2017.09.05 ARM LTD
  • US9753735B2 patent drawing
  • US9753735B2 patent drawing
  • US9753735B2 patent drawing

AI summary

A data processing system includes a processing pipeline for the parallel execution of a plurality of threads. An issue controller issues threads to the processing pipeline. A stall manager controls the stalling and unstalling of threads when a cache miss occurs within a cache memory. The issue controller issues the threads to the processing pipeline in accordance with both a main sequence and a pilot sequence. The pilot sequence is followed such that threads within the pilot sequence are issued at least a given time ahead of their neighbors within a main sequence. The given time corresponds approximately to the latency associated with a cache miss. The threads may be arranged in groups corresponding to blocks of pixels for processing within a graphics processing unit.