Parallel Loop Processing with Precedence Tagged Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current digital computer systems face inefficiencies in processing and presenting large amounts of data due to challenges in handling memory access hazards and latency, which can lead to stalls in processing operations, especially when dealing with multiple, independent loops.

Innovation Solution

A two-dimensional array of compute elements is accessed, where each compute element is coupled to its neighbors, and control is provided on a cycle-by-cycle basis using wide control words generated by a compiler. Memory access operations are tagged with precedence information to order loads and stores, avoiding hazards by delaying data promotion and using hardware to derive precedence values for proper ordering.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple independent loops are executed in parallel, then productivity is improved, but memory access hazards and latency cause processing stalls

Engineering Contradiction:
Improveprocessing throughputVSAvoidprocessing latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by tagging memory access operations with precedence information before execution. The compiler generates control words that include precedence tags for load and store operations, allowing the hardware to pre-determine the correct execution order of memory operations across multiple parallel loops without actual stalls, thus eliminating latency while maintaining productivity

Inventive Principle:
Principle #10Preliminary action

2Reliability

If memory access operations are ordered to avoid hazards, then reliability is improved, but device complexity increases due to precedence tracking

Engineering Contradiction:
Improvememory access correctnessVSAvoidprecedence information handling
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent uses an intermediary approach by introducing precedence information tags as a mediator between the compiler and hardware execution. These tags are embedded in control words and serve as intermediate metadata that guide the memory access ordering without requiring complex runtime analysis or additional hardware structures, thus improving reliability while minimizing added complexity

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If compute elements operate autonomously, then productivity is improved, but difficulty in detecting and measuring execution state increases

Engineering Contradiction:
Improveparallel processing efficiencyVSAvoidloop execution completion status
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent implements feedback by having each compute element generate completion notifications that are sent back to the control unit when loop execution is finished. This feedback mechanism allows the system to track the execution state of autonomous compute elements without reducing their independence, enabling proper coordination and maintaining productivity while solving the detection difficulty

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS20230281014A1Parallel processing of multiple loops with loads and stores
Publication Date: 2023.09.07 ASCENIUM INC
  • US20230281014A1 patent drawing
  • US20230281014A1 patent drawing
  • US20230281014A1 patent drawing

AI summary

Techniques for parallel processing of multiple loops with loads and stores are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operations are tagged with precedence information. The tagging is contained in the control words and is implemented for loop operations. The tagging is provided by the compiler at compile time. Control word data is loaded for multiple, independent loops into the compute elements. The multiple, independent loops are executed. Memory is accessed based on the precedence information. The memory access includes loads and/or stores for data relating to the independent loops.