Computation Engine Synchronization via Event Registers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Integrated circuit devices with multiple computation engines face challenges in synchronizing operations due to data and resource dependencies, often requiring costly synchronization circuitry that occupies valuable chip space and increases complexity.

Innovation Solution

The use of event registers and instructions like 'set-event' and 'wait-on-event' allows for synchronization of computation engines without specialized synchronization circuitry, utilizing hardware registers to manage dependencies and reduce chip area usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If specialized synchronization circuitry is used to synchronize computation engines, then synchronization reliability is improved, but chip area and device complexity increase

Engineering Contradiction:
Improvesynchronization reliabilityVSAvoidchip area
Core Design Contradiction:
ReliabilityVSArea of stationary object

Solution Approach 1:

The patent introduces event registers as intermediary components that mediate synchronization between computation engines. Instead of direct engine-to-engine synchronization circuitry, engines interact with shared event registers that record completion status. This intermediary approach reduces the need for complex direct synchronization paths while maintaining reliability through the event registration mechanism.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent uses non-blocking instructions that create copies of data and control information in register files associated with each computation engine. Rather than requiring engines to directly access and synchronize on shared resources, each engine maintains local copies of relevant state information, eliminating the need for costly shared synchronization circuitry while preserving correctness.

Inventive Principle:
Principle #26Copying

2Reliability

If specialized synchronization circuitry is used to synchronize computation engines, then synchronization reliability is improved, but device complexity increases

Engineering Contradiction:
Improvesynchronization reliabilityVSAvoidsynchronization complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Event registers serve as simple intermediary structures that decouple the complexity of inter-engine synchronization. Each register merely stores an event identifier when set, and engines simply check for their awaited events. This intermediary layer transforms complex synchronization protocols into simple register read/write operations, dramatically reducing device complexity while maintaining reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces mechanical-style direct synchronization circuitry with a software-instruction-based approach using non-blocking instructions and event registers. Instead of hardware handshaking and direct control signals between engines, the system uses programmable instructions that operate on simple register structures, substituting complex mechanical synchronization with more flexible and simpler software-controlled mechanisms.

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

3Reliability

If blocking instructions are used for synchronization, then correctness is ensured, but productivity decreases due to waiting

Engineering Contradiction:
Improveoperation correctnessVSAvoidcomputation throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent introduces dynamic instruction types that can adapt their behavior based on execution context. Non-blocking instructions dynamically check event register status and either proceed immediately or wait, rather than following a fixed blocking pattern. This dynamic approach allows the system to maintain correctness by waiting when necessary while maximizing throughput by proceeding when events are already complete, eliminating unnecessary stalls.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

By using non-blocking instructions, computation engines can continue executing subsequent useful operations without stalling when dependencies are not yet complete. The engine maintains continuous productive work by issuing independent operations while background mechanisms handle the waiting for dependent data, ensuring that useful computational actions continue uninterrupted rather than being blocked by synchronization waits.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10761822B1Synchronization of computation engines with non-blocking instructions
Publication Date: 2020.09.01 AMAZON TECH INC
  • US10761822B1 patent drawing
  • US10761822B1 patent drawing
  • US10761822B1 patent drawing

AI summary

Provided are systems and methods for generating program code for an integrated circuit, where instructions in the code synchronize computation engines that support non-blocking instructions. In various examples, a computing device can receiving an input data set including operations to be performed by an integrated circuit device and dependencies between the operations. The input data set can include a non-blocking instruction, and an operation that requires that the non-blocking instruction be completed. The computing device can generate instructions for performing the operation including a particular instruction to wait for a value to be set in a register of the integrated circuit device. The computing device can further generate program code including the non-blocking instruction and the instructions for performing the operation, wherein the non-blocking instruction is configured to set the value in the register.