Runtime Instruction Buffer Refill via DMA Queue and Semaphore

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computing systems, integrated circuit devices face challenges in efficiently executing program code due to limited internal register or instruction buffer space, requiring frequent retrieval and refilling of instructions from memory, and lack of visibility into execution engine states for seamless application switching.

Innovation Solution

A runtime driver program generates preamble and postamble instruction blocks, along with DMA descriptors, to manage instruction refilling and application switching by utilizing a refill DMA queue and semaphore to ensure all execution engines reach a 'safe to switch' state, allowing for efficient execution and switching between applications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If instructions are stored in internal register or buffer, then execution speed is improved, but buffer space is limited requiring frequent refilling from memory

Engineering Contradiction:
Improveexecution speedVSAvoidbuffer space
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent segments the instruction buffer into multiple regions or slots that can be independently managed and refilled. The runtime driver program can load instructions into different buffer regions sequentially, allowing the execution engine to continue processing while other regions are being refilled, thus reducing the impact of limited buffer space on execution speed.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The runtime driver program performs preliminary actions by pre-loading instructions into the buffer before the execution engine needs them. The system anticipates future instruction requirements and proactively refills the buffer, ensuring that instructions are ready when needed and minimizing execution pauses due to buffer exhaustion.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If runtime driver manages instruction loading, then execution efficiency is improved, but system complexity increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The execution engine is designed to autonomously monitor its own buffer status and trigger refilling operations when needed. The runtime driver responds to requests from the execution engine rather than continuously managing it, allowing the execution engine to serve itself and reducing the overall system complexity while maintaining execution efficiency.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system implements a feedback mechanism where the execution engine monitors its instruction buffer status and provides feedback to the runtime driver when refilling is needed. This feedback loop allows the runtime driver to manage instruction loading efficiently based on actual execution needs, improving productivity while keeping the management mechanism simple and responsive.

Inventive Principle:
Principle #23Feedback

3Adaptability or versatility

If application switching is implemented, then versatility is improved, but reliability of switching decreases due to lack of visibility into execution engine states

Engineering Contradiction:
Improveapplication switching capabilityVSAvoidswitching reliability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent implements a feedback mechanism where the runtime driver program receives status information from the execution engine about its current state and buffer contents. This feedback allows the runtime driver to determine the appropriate moment to switch applications, ensuring that switching occurs at safe points and improving the reliability of application transitions while maintaining versatility.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

Before switching applications, the runtime driver performs preliminary actions to ensure the execution engine is in a safe state for switching. This may include completing current instruction batches, flushing buffers, or synchronizing states, thereby ensuring reliable application switching while maintaining the ability to switch between multiple applications.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10664282B1Runtime augmentation of engine instructions
Publication Date: 2020.05.26 AMAZON TECH INC
  • US10664282B1 patent drawing
  • US10664282B1 patent drawing
  • US10664282B1 patent drawing

AI summary

Methods for repeated execution of program code by an execution engine are provided. In order to execute large programs, the instruction buffer of an execution engine may be refilled may times with program code to complete one execution of the program. At completion of program execution, the program code needed to begin re-execution of the program is no longer in the instruction buffer. A runtime driver program can load instructions into the instruction buffer, or can cause instructions to be loaded. Once the instructions are loaded, the execution engine may be able to re-execute the instructions without needing further assistance from the runtime driver.