Interception Layer for Coprocessor API Coordination

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computing systems face inefficiencies in utilizing coprocessors due to issues such as different API protocols, unbalanced loading, and coprocessor failures, which hinder reliable and efficient access to multiple coprocessors, especially in distributed and cloud computing environments.

Innovation Solution

A software middleware layer, known as the interception layer, intercepts API calls to coprocessors, manages resource pooling, high availability, and memory virtualization, and redirects operations in case of coprocessor failure by using replay logs to ensure seamless execution on alternative coprocessors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple coprocessors are accessed directly by applications, then processing capacity and specialization are improved, but system complexity and reliability deteriorate due to different API protocols, unbalanced loading, and failure management issues

Engineering Contradiction:
Improveprocessing capacityVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an interception layer as a software intermediary between applications and coprocessors. This layer intercepts API calls from applications, translates them into appropriate coprocessor-specific protocols, and manages the distribution of workloads across multiple coprocessors. By placing this intermediary layer, the system achieves unified access to multiple coprocessors with different protocols without requiring applications to be modified, thus resolving the technical contradiction between improved processing capacity and increased system complexity

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The interception layer is designed with multi-functional capabilities: it serves as an API translator, a load balancer, a failover manager, and a resource pool administrator. This single software component performs multiple functions that would otherwise require separate systems, thereby improving productivity while controlling the growth of system complexity through consolidation of management functions

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

2Adaptability or versatility

If coprocessors are distributed remotely, then resource availability is improved, but network delays and access reliability worsen

Engineering Contradiction:
Improveresource availabilityVSAvoidaccess reliability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The interception layer pre-establishes communication channels and maintains connection states to remote coprocessors before actual processing tasks are assigned. It performs preliminary handshaking and protocol negotiations, so that when processing tasks need to be distributed to remote coprocessors, the communication pathways are already established and optimized, reducing network delays and improving access reliability

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements failover mechanisms that are prepared in advance. The interception layer maintains readiness to redirect processing tasks to alternative coprocessors if network failures or coprocessor failures occur. This beforehand cushioning ensures that reliability is maintained even when coprocessors are distributed remotely, as the system has pre-planned contingency paths

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

3Productivity

If coprocessor specialization is increased, then processing efficiency for specific tasks is improved, but ease of operation and failure management deteriorate

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidease of operation
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The interception layer acts as a protocol translator that handles the complexity of interacting with specialized coprocessors. Applications interact with a unified, simplified API provided by the interception layer, which then translates these calls into the specific protocols required by each specialized coprocessor. This maintains ease of operation for applications while still allowing them to leverage the specialized processing efficiency of different coprocessors

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The interception layer automatically manages the complexity of coprocessor selection, task distribution, and failure recovery without requiring manual intervention. It self-adjusts to coprocessor availability and performance, dynamically allocating tasks to optimize efficiency while maintaining ease of operation through automated management of the specialized hardware resources

Inventive Principle:
Principle #25Self-service

4Productivity

If load balancing across coprocessors is implemented, then productivity is improved, but system complexity increases due to monitoring and redistribution mechanisms

Engineering Contradiction:
ImproveproductivityVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent combines multiple management functions into the interception layer: load monitoring, task distribution, performance tracking, and failover management are all integrated into this single software component. By merging these functions rather than implementing them as separate systems, the achievement of improved productivity through load balancing is accomplished while minimizing the increase in overall system complexity through functional consolidation

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS11860737B2System and method for coordinating use of multiple coprocessors
Publication Date: 2024.01.02 VMWARE INC
  • US11860737B2 patent drawing
  • US11860737B2 patent drawing
  • US11860737B2 patent drawing

AI summary

An interface software layer is interposed between at least one application and a plurality of coprocessors. A data and command stream issued by the application(s) to an API of an intended one of the coprocessors is intercepted by the layer, which also acquires and stores the execution state information for the intended coprocessor at a coprocessor synchronization boundary. At least a portion of the intercepted data and command stream data is stored in a replay log associated with the intended coprocessor. The replay log associated with the intended coprocessor is then read out, along with the stored execution state information, and is submitted to and serviced by at least one different one of the coprocessors other than the intended coprocessor.