Runtime Alias Table for Low RAM Footprint
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Limited resource computing devices, such as those used in IoT devices, face significant memory constraints due to reduced RAM, leading to reduced language function, incompatibilities, and limited space for script code and data, making it challenging to effectively implement dynamic scripting languages.
Innovation Solution
The solution involves moving significant parts of the virtual machine's data structures to non-volatile ROM and using a dynamic alias mechanism to store modified properties in RAM, while keeping unchanged properties in ROM, allowing objects in ROM to be modified as if they were in RAM, and utilizing a runtime image that includes a memory image from an initialization phase to reduce memory usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If dynamic scripting languages are implemented on limited resource computing devices, then robust and secure products with easy updates are achieved, but RAM usage becomes excessively high consuming hundreds of KB on devices with only 32-512 KB available
Solution Approach 1:
The virtual machine memory space is segmented into read-only code segments stored in flash memory and mutable data segments stored in RAM. This segmentation allows the majority of the virtual machine image to reside in non-volatile memory, dramatically reducing the RAM footprint from hundreds of KB to a manageable amount while preserving full functionality.
Solution Approach 2:
A compressed copy of the virtual machine image is stored in flash memory and decompressed/loaded into RAM only when needed. This copying approach allows the system to maintain a complete virtual machine environment in non-volatile storage while using minimal RAM, enabling robust scripting capabilities on resource-constrained devices.
2Adaptability or versatility
If more RAM is allocated to the runtime environment, then more script code and data can be stored, but the device's overall memory capacity is exceeded on devices with 32-512 KB RAM
Solution Approach 1:
The system transitions from a single-dimension RAM-based memory model to a two-dimensional memory model utilizing both flash memory (for code and immutable data) and RAM (for mutable data and execution). This dimensional change allows the system to leverage the large capacity of flash memory while using minimal RAM, effectively increasing script code and data capacity without exceeding device memory constraints.
Solution Approach 2:
The virtual machine environment is nested within the operating system, which itself is nested within the hardware constraints. The VM image is nested as a compressed archive in flash memory, with only the necessary portions loaded into RAM during execution. This nested structure allows maximum utilization of limited RAM resources while maintaining full VM functionality.
3Speed
If the virtual machine image is loaded entirely into RAM, then execution speed is improved, but the device cannot boot or run other applications due to insufficient RAM
Solution Approach 1:
The virtual machine image is pre-compressed and stored in flash memory in an optimized format. During runtime, only the necessary portions of the image are decompressed and loaded into RAM, rather than loading the entire image. This preliminary preparation allows fast loading of essential VM components while keeping RAM usage minimal, enabling both quick startup and coexistence with other system operations.
Data Source
AI summary
A computing device and method for reducing memory usage in a runtime. The method is performed in a computer system having a non-volatile memory (ROM) containing initial states of objects for the runtime and volatile memory (RAM). An alias table in RAM is accessed corresponding with an object in ROM. If the there is an alias referenced in RAM, then computation is performed upon the alias rather than the object in ROM. Otherwise, if there is no alias then computation is performed upon the one in ROM. If the object is required to be updated, then it is stored as an alias referenced by the alias table stored in RAM.


