Microprocessor Pipeline Thread Recirculation for Cache Miss Handling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Multithreaded, pipelined microprocessor arrangements face inefficiencies due to blocked threads caused by cache misses, leading to lost execution cycles and the need for complex retry mechanisms, particularly in graphics processing pipelines with many stages and active threads.

Innovation Solution

Implement a method where threads that cannot be processed by a pipeline stage are passed to the next stage without blocking, and uncompleted threads are recirculated from the end of the pipeline to the beginning for retry, allowing continuous processing without the need for complex prioritization or selection mechanisms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If threads are blocked in the pipeline until cache data is fetched, then data availability is improved, but execution cycles are lost and productivity decreases

Engineering Contradiction:
Improvedata availabilityVSAvoidexecution cycles
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the blocked thread from the pipeline and places it in a retry pool buffer, separating it from the main execution flow. This allows other threads to continue processing without waiting for the blocked thread's cache data to be fetched, thus maintaining productivity while ensuring data availability for the blocked thread when it is eventually retried.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The retry pool buffer acts as an intermediary between the pipeline and the blocked thread. Instead of blocking the entire pipeline or permanently removing the thread, the buffer provides a temporary holding area where blocked threads can be stored and later retried, mediating between the need for data availability and the need to maintain execution throughput.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If a retry pool buffer is used to store blocked threads, then thread retry capability is improved, but device complexity increases

Engineering Contradiction:
Improvethread retry capabilityVSAvoidretry mechanism structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The retry pool buffer is implemented as a simple first-in-first-out (FIFO) structure that can be integrated into existing pipeline stages without requiring complex priority management or selection mechanisms. The buffer serves multiple purposes: storing blocked threads, maintaining their state for retry, and enabling simple retry scheduling, thereby reducing overall device complexity while providing reliable thread retry capability.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If multiple threads are processed simultaneously through the pipeline, then productivity is improved, but the impact of blocked threads on overall performance increases

Engineering Contradiction:
Improvethread processing throughputVSAvoidpipeline blocking time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the thread processing into two distinct paths: the main pipeline for active threads and the retry pool buffer for blocked threads. This segmentation ensures that blocked threads do not hold up the main pipeline, allowing multiple threads to be processed simultaneously with minimal impact on overall performance. The segmentation is achieved through simple buffer storage and FIFO retry scheduling rather than complex thread management.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8719553B2Method for re-circulating a fragment through a rendering pipeline
Publication Date: 2014.05.06 ARM NORWAY
  • US8719553B2 patent drawing
  • US8719553B2 patent drawing
  • US8719553B2 patent drawing

AI summary

A microprocessor pipeline arrangement 1 includes a plurality of functional units 2, 3, 4, 5 and 6. Each functional unit 2, 3, 4, 5, 6 also has access to a respective cache memory 7, 8, 9, 10, 11. Threads for processing are received by the first functional unit 2 from an external source 12, and output by an end functional unit 6 of the pipeline to an output target 13. If a thread encounters a cache-miss on its passage through the pipeline, the thread is allowed to continue to pass through the pipeline in the normal manner. However, when the thread reaches the end of the pipeline, it is sent via a loopback path 14 back to the beginning of the pipeline to be sent through the pipeline again. In this way, any thread that has not completed its processing on passing through the pipeline can be sent through the pipeline again to allow the processing of the thread to be completed.