Intermodule Communication via Shared Memory and FIFO Buffers

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programming environments for data storage devices are often static, non-expandable, and lack a common interface for integrating software components, making it difficult to develop flexible and platform-independent software solutions that can efficiently communicate between code modules.

Innovation Solution

A method and architecture for intermodule communication using shared memory with FIFO structures and application programming interfaces (APIs) that allow code modules to execute in user or kernel space, enabling flexible and platform-independent communication across different operating systems and hardware platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If code modules execute in user space with shared memory and FIFO structures, then communication flexibility and platform independence are improved, but system complexity and synchronization overhead increase

Engineering Contradiction:
Improvecommunication flexibilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The communication system is segmented into distinct functional components: shared memory for data storage, FIFO structures for ordered message passing, and API boundaries for module isolation. This segmentation allows each component to be optimized independently while maintaining overall system flexibility and reducing complexity through modular design.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces FIFO structures as intermediary buffers between code modules, allowing asynchronous communication without direct synchronization. The FIFO acts as a mediator that decouples sender and receiver, reducing system complexity by eliminating the need for complex inter-process synchronization mechanisms while maintaining communication flexibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If shared memory is used for intermodule communication, then communication speed and efficiency are improved, but memory management complexity and access control difficulties increase

Engineering Contradiction:
Improvecommunication speedVSAvoidmemory management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs preliminary actions by pre-establishing shared memory segments with defined structures and FIFO buffers before communication begins. Memory allocation, structure definition, and access permission setup are completed in advance, allowing fast communication without real-time memory management complexity during actual data exchange operations.

Inventive Principle:
Principle #10Preliminary action

3Ease of manufacture

If platform-independent APIs are implemented, then software portability and ease of development are improved, but API overhead and abstraction layer complexity increase

Engineering Contradiction:
Improvesoftware portabilityVSAvoidabstraction layer complexity
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The API is designed with universal functionality that handles multiple communication scenarios (synchronous, asynchronous, buffered, unbuffered) through a unified interface. This multi-functionality allows the same API layer to serve different platform requirements without increasing complexity, as the abstraction handles diverse operations through consistent mechanisms rather than requiring separate platform-specific implementations.

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

Data Source

PatentUS8359603B1Techniques for inter-user-space communication
Publication Date: 2013.01.22 EMC IP HLDG CO LLC
  • US8359603B1 patent drawing
  • US8359603B1 patent drawing
  • US8359603B1 patent drawing

AI summary

Described are techniques for intermodule communication between a first code module and a second code module each executing in user space. A shared memory portion includes storage for one or more commands and is accessible to the first and the second code modules. A first first-in-first-out (FIFO) structure is used for sending a location in the shared memory portion from the first code module to the second code module. A second FIFO structure is used for sending a location in the shared memory portion from the second code module to the first code module. The first code module stores command data for a command at a first location in the shared memory portion. A command is issued from the first code module to the second code module by sending the first location from the first code module to the second code module using the first FIFO structure.