Virtual Machine Shared Memory Data Transfer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for data communication between virtual machines or between a virtual machine and a host machine are inefficient due to high latency and overhead, particularly when using network messaging that requires serialization and deserialization of data.

Innovation Solution

A computer-implemented method using a shared memory block with a buffer, post counter, and acknowledgment counter to facilitate direct data transfer between virtual machines or a host and virtual machines, eliminating the need for serialization and deserialization by incrementing counters to signal data availability and receipt.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If network messaging techniques are used for communication between virtual machines, then communication can be performed as though they were physical computing devices, but latency and processing overhead increase due to serialization and deserialization requirements

Engineering Contradiction:
Improvecommunication capabilityVSAvoidlatency
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent extracts the data directly from the source virtual machine's memory space and places it into the destination virtual machine's memory space through a shared memory block, eliminating the intermediate serialization and deserialization steps that would otherwise be required for network messaging communication

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces a shared memory block as an intermediary structure that both virtual machines can access directly, allowing data to be transferred through this intermediate memory region without requiring full network protocol processing, thus reducing latency while maintaining communication capability

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If network messaging techniques are used for communication between virtual machines, then communication can be performed as though they were physical computing devices, but processing overhead increases due to serialization and deserialization requirements

Engineering Contradiction:
Improvecommunication capabilityVSAvoidprocessing overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent removes the complex serialization and deserialization processing steps from the data transfer path by using direct memory access through a shared memory block, reducing processing overhead while preserving the ability to communicate between virtual machines as if they were physical devices

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent replaces the mechanical process of serializing data to a protocol format and then deserializing it with a direct memory copy operation, substituting the complex protocol processing mechanism with a simpler memory access mechanism that achieves the same communication goal with less overhead

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

Data Source

PatentEP3660675B1Sharing data by a virtual machine
Publication Date: 2021.12.29 BLACKBERRY LTD
  • EP3660675B1 patent drawingFigure 1~2
  • EP3660675B1 patent drawingFigure 3~4
  • EP3660675B1 patent drawingFigure 5~6

AI summary

A memory block is provided that is shared between two endpoints. This first endpoint is either a host for a virtual machine or the virtual machine. The second endpoint is either the host or another virtual machine. The shared memory block includes a buffer, a post counter, and an acknowledgment counter. The block is employed for communicating data from the first endpoint to the second endpoint. Sending data to the second endpoint includes identifying the buffer as being currently owned by the first endpoint and storing data in the buffer. It is then detected that the acknowledgment counter is equal to the post counter. The post counter is then incremented to signal that data has been stored for receipt by the second endpoint. Receiving the data by the second endpoint includes detecting that the post counter has changed and then incrementing the acknowledgment counter to acknowledge receipt of the data.