Heterogeneous Memory Data Abstraction for Persistent Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programming language environments do not effectively manage persistent memory in conjunction with other memory types, limiting the performance and power-off retention benefits of persistent memory in computing devices.

Innovation Solution

A data abstraction is created within a programming language environment that includes a set of memory resources and variables associated with these resources, allowing for the implementation of heterogeneous memory usage, including persistent memory, without requiring legacy preparation methods or rewriting applications.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If persistent memory is implemented in computing devices, then performance and power-off retention are improved, but programming language environments cannot effectively manage it

Engineering Contradiction:
Improvepower-off retentionVSAvoidmemory management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces a data abstraction layer as an intermediary between the programming language environment and heterogeneous memory resources. This abstraction includes variables associated with memory resources, allowing programmers to access persistent memory through standard programming constructs without directly managing the complexity of heterogeneous memory types. The abstraction layer translates high-level variable operations into appropriate memory management operations.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The data abstraction is designed to work with multiple memory types (persistent memory, volatile memory, etc.) through a unified interface. The same abstraction layer and programming constructs can manage different memory types, making the system versatile and eliminating the need for separate management mechanisms for each memory type.

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

2Productivity

If heterogeneous memory management is implemented, then performance is improved, but legacy applications cannot use persistent memory

Engineering Contradiction:
Improvesystem performanceVSAvoidapplication compatibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The data abstraction serves as a mediator that allows legacy applications to access persistent memory without modification. The abstraction layer handles the complexity of persistent memory management internally, presenting a familiar programming interface to legacy applications while enabling them to utilize the performance benefits of persistent memory through the associated variables mechanism.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Quantity of substance

If persistent memory is used without data abstraction, then memory capacity is increased, but programming complexity increases

Engineering Contradiction:
Improvememory capacityVSAvoidprogramming complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent extracts the complexity of persistent memory management from the programming model by introducing a data abstraction layer. The abstraction encapsulates the complex operations of managing persistent memory, handling persistence semantics, and coordinating with hardware, while exposing simple variable access operations to programmers. This separation allows programmers to benefit from increased memory capacity without dealing with the associated programming complexity.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS20230147878A1Implementing heterogeneous memory within a programming environment
Publication Date: 2023.05.11 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US20230147878A1 patent drawing
  • US20230147878A1 patent drawing
  • US20230147878A1 patent drawing

AI summary

A computer-implemented method according to one embodiment includes creating a data abstraction that includes a set of memory resources and variables associated with the memory resources; and implementing the data abstraction within a programming language environment.