Java Card Volatile Memory Stack Allocation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Java Card devices face inefficiencies in managing volatile memory, leading to suboptimal use of this precious resource, which is crucial for improving device performance and reducing production costs.

Innovation Solution

A novel memory allocation scheme for Java Card devices, where the volatile memory is divided into portions allocated to OS and JCVM stacks, allowing shared use of memory spaces without a separating heap, optimizing the storage capacity of both stacks and reducing the need for additional memory allocation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If volatile memory is allocated separately for OS stack and JCVM stack with a heap in between, then memory management is simplified, but volatile memory usage is inefficient and storage capacity is reduced

Engineering Contradiction:
Improvememory management complexityVSAvoidvolatile memory storage capacity
Core Design Contradiction:
Device complexityVSQuantity of substance

Solution Approach 1:

The patent merges the OS stack and JCVM stack into a single shared memory region, eliminating the need for a separating heap structure. This allows both stacks to coexist and grow dynamically within the same memory space, maximizing volatile memory utilization while maintaining manageable complexity through structured memory allocation protocols.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent implements dynamic memory allocation where the boundary between OS stack and JCVM stack is not fixed but can adjust based on runtime requirements. This dynamic approach allows the memory manager to allocate more space to either stack as needed, optimizing memory usage patterns rather than relying on static pre-allocation.

Inventive Principle:
Principle #15Dynamics

2Quantity of substance

If more volatile memory is allocated to accommodate both stacks, then storage capacity increases, but device cost increases due to higher-cost RAM chips

Engineering Contradiction:
Improvevolatile memory storage capacityVSAvoiddevice production cost
Core Design Contradiction:
Quantity of substanceVSEase of manufacture

Solution Approach 1:

By consolidating OS stack and JCVM stack into a single shared memory region, the patent eliminates wasted memory space that would exist between separately allocated stacks. This merging allows the device to achieve the required storage capacity using less total volatile memory, thereby reducing costs by enabling the use of lower-cost RAM chips.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent changes the memory allocation parameters from fixed separate allocations to dynamic shared allocation. This parameter change optimizes the total memory footprint required, allowing the system to achieve necessary storage capacity with reduced memory size and lower associated costs.

Inventive Principle:
Principle #35Parameter changes

3Ease of operation

If a heap is used to separate OS stack and JCVM stack, then memory allocation is easier, but volatile memory utilization is suboptimal

Engineering Contradiction:
Improvememory allocation easeVSAvoidvolatile memory utilization
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The patent removes the heap separator and merges the previously separate memory regions into a unified shared space. This eliminates the wasted memory that would exist between separately allocated stacks, improving utilization while maintaining allocation ease through a simplified single-region management approach.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentEP4020297B1Method for managing a volatile memory and JAVA card device
Publication Date: 2025.06.25 IDEMIA FRANCE SAS
  • EP4020297B1 patent drawingFigure 1~2
  • EP4020297B1 patent drawingFigure 3~4
  • EP4020297B1 patent drawingFigure 5~8B

AI summary

Embodiments of the present invention provide a Java Card device (20) and a method for managing a volatile memory. The Java Card device (20) comprises a volatile memory (201), an OS (202), and a JCVM (203). The JCVM (203) comprises a JCVM thread (2031). The volatile memory (201) comprises a first portion (2011), a second portion (2012) within the first portion (2011), and a third portion (2013) outside the first portion (2011). The first portion (2011) is allocated to an OS stack (301) for supporting execution of native code defined in a language used for programming the OS (202). The second portion (2012) is allocated to a JCVM stack (302) for supporting the JCVM thread (2031). The third portion (2013) is allocated to a heap (303).