Thread Weave for Cross-ISA Procedure Calls Across Heterogeneous Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Generating code for heterogeneous multiprocessors with different instruction set architectures is complex due to binary incompatibilities and transition complexities, making it difficult for programmers to focus on functional correctness using conventional high-level computer languages.

Innovation Solution

A method involving storing an application with multiple functions, compiling it to different processors, pruning unnecessary functions, proxy inserting remote procedure calls, and renaming sections to create a common application library, allowing seamless transitions between processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code is compiled separately for heterogeneous processors with different ISAs, then each processor can execute optimized code, but the complexity of managing binary incompatibilities and transition boundaries increases

Engineering Contradiction:
Improveprocessor utilization efficiencyVSAvoidcode generation and transition management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces a common application library as an intermediary layer between the high-level application code and the heterogeneous processor ISAs. This library serves as a mediator that handles the complexity of binary incompatibilities and transition boundaries, allowing seamless code generation for multiple processors without requiring the programmer to directly manage ISA differences.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the application into a high-level application layer and a separate common application library layer. This segmentation allows the application code to remain independent of ISA details while the library handles the complex compilation and transition management for different processors, reducing overall system complexity.

Inventive Principle:
Principle #1Segmentation

2Productivity

If procedure calls transition between threads at processor boundaries, then workload can be distributed across heterogeneous cores, but the difficulty of maintaining functional correctness increases

Engineering Contradiction:
Improveworkload distribution capabilityVSAvoidfunctional correctness maintenance
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent changes the fundamental parameter of code organization from processor-specific compilation to a unified common application library approach. This parameter change allows procedure calls to transition between threads at processor boundaries while maintaining functional correctness, as the library ensures consistent interface definitions and calling conventions across all ISAs.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If separate libraries are used for different ISAs, then each processor can have optimized code, but the programmer must deal with multiple incompatible binary interfaces

Engineering Contradiction:
Improveprocessor-specific optimizationVSAvoidbinary interface compatibility management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a universal common application library that serves multiple processor ISAs simultaneously. This single library provides multi-functional support by compiling to different ISAs while maintaining consistent binary interfaces, eliminating the need for separate incompatible libraries and simplifying interface management across heterogeneous processors.

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

Data Source

PatentUS12379981B2Thread weave for cross-instruction set architectureprocedure calls
Publication Date: 2025.08.05 MAGIC LEAP INC
  • US12379981B2 patent drawing
  • US12379981B2 patent drawing
  • US12379981B2 patent drawing

AI summary

The invention provides a method of initiating code including (i) storing an application having first, second and third functions, the first function being a main function that calls the second and third functions to run the application, (ii) compiling the application to first and second heterogeneous processors to create first and second central processing unit (CPU) instruction set architecture (ISA) objects respectively, (iii) pruning the first and second CPU ISA objects by removing the third function from the first CPU ISA objects and removing first and second functions from the second CPU ISA objects, (iv) proxy inserting first and second remote procedure calls (RPC's) in the first and second CPU ISA objects respectively, and pointing respectively to the third function in the second CPU ISA objects and the second function in the first CPU ISA objects, and (v) section renaming the second CPU ISA objects to common application library.