Memory Tagging for Offloaded Function Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programming languages face inefficiencies in memory synchronization during function calls, particularly in WebAssembly, leading to performance overhead due to unnecessary memory accesses and potential memory safety bugs, especially when offloading computations to separate processors.

Innovation Solution

Implementing memory tagging and tracking systems that utilize tags to identify modified memory regions, allowing for efficient synchronization and reducing unnecessary memory operations by tracking and updating memory addresses only when modifications occur.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If memory synchronization is performed during function calls, then memory safety is improved, but performance overhead increases due to unnecessary memory accesses

Engineering Contradiction:
Improvememory safetyVSAvoidperformance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies local quality by tracking and synchronizing only the specific memory regions that are actually modified during function execution, rather than synchronizing entire memory spaces. Memory tags are assigned to individual memory regions, allowing selective synchronization of only those regions that changed, thus maintaining memory safety while reducing unnecessary synchronization overhead.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent implements partial action by performing memory synchronization only when and where modifications occur, rather than universally synchronizing all memory. The tracking mechanism identifies modified memory regions and triggers synchronization only for those specific regions, avoiding excessive synchronization actions that would degrade performance.

Inventive Principle:
Principle #16Partial or excessive action

2Productivity

If comprehensive memory tracking is implemented, then memory access efficiency is improved, but device complexity increases

Engineering Contradiction:
Improvememory access efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments memory into tagged regions, where each region has an associated tag indicating its modification status. This segmentation allows the tracking system to manage complexity by breaking down the large memory space into smaller, independently trackable units, improving efficiency without requiring complex tracking of the entire memory space at once.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces memory tags as intermediary elements between the memory system and the tracking mechanism. These tags serve as simple indicators of modification status, mediating between the complex memory management requirements and the tracking system, thereby improving efficiency while keeping the added complexity minimal and manageable.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS20230100873A1Memory tagging and tracking for offloaded functions and called modules
Publication Date: 2023.03.30 INTEL CORP
  • US20230100873A1 patent drawing
  • US20230100873A1 patent drawing
  • US20230100873A1 patent drawing

AI summary

An apparatus includes a first processor to be communicatively coupled to a main memory having instructions stored therein. The first processor is to execute the instructions to assign a first tag to a plurality of granules in a first portion of memory allocated for an offloaded function invoked by a module running on a second processor, detect an exception raised for a tag check failure for a memory access operation based on a first memory address in the first portion of the memory, and update a modified address list to include information associated with the first memory address. The instructions are executed further to synchronize, based on the modified address list, a second portion of the memory allocated to the module with the first portion of the memory.