Non-Volatile Memory Data Persistence via Application Profiling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Volatile memory loses data when power is turned off, leading to significant impacts on application performance as it necessitates reloading data during startup.
Innovation Solution
Compiling source code into instrumented code to generate memory profile data, which is then used to identify and store relevant data in non-volatile memory, allowing it to persist across sessions and reducing the need for reloading during application startup.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If data is stored in volatile memory, then application performance during runtime is improved, but data is lost when power is turned off requiring reloading
Solution Approach 1:
The patent applies preliminary action by identifying and storing frequently accessed memory data in non-volatile memory before the application needs it again. The system performs memory profiling during application execution to determine which data should be persisted, then stores this data in NVM before power-off or application closure. This preliminary storage action eliminates the need to reload this data during application startup, thus reducing startup time while maintaining data persistence.
2Reliability
If all memory data is stored in non-volatile memory, then data persistence is improved, but access speed decreases compared to volatile memory
Solution Approach 1:
The patent applies local quality by storing only specific portions of memory data in non-volatile memory rather than all data. The system uses memory profiling to identify which data is frequently accessed and should be persisted, then stores only this subset in NVM. This selective approach ensures that data persistence is achieved for critical data while maintaining fast access speeds for frequently used data that remains in volatile memory.
Solution Approach 2:
The patent applies segmentation by dividing memory data into different categories based on access patterns and persistence requirements. The system segments memory into frequently accessed data (stored in NVM for persistence), temporarily accessed data (kept in volatile memory for speed), and rarely accessed data (stored in secondary storage). This segmentation allows the system to optimize for both persistence and speed by placing different data segments in appropriate memory locations.
3Productivity
If memory profiling is performed to identify data for NVM storage, then storage efficiency is improved, but system complexity increases
Solution Approach 1:
The patent applies self-service by having the application automatically perform memory profiling and identify its own data access patterns without requiring external analysis tools or complex manual configuration. The instrumented code within the application monitors and records memory access patterns during normal execution, automatically generating the information needed to determine which data should be stored in NVM. This self-service approach improves storage efficiency while minimizing the added system complexity.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
Some examples relate to storing memory profile data of an application in a non-volatile memory. In an example, source code of an application may be compiled into an instrumented code for generating profile data of the application. In an example, the profile data may include memory profile data related to memory usage of the application. Next, the profile data comprising the memory profile data of the application may be generated using the instrumented code. The application may be recompiled based on the profile data that includes the memory profile data of the application. Data for storing in a non-volatile memory (NVM) may be identified from the memory profile data of the application. The identified data may be stored in the NVM.