Unified Invisible Memory Management Interface (UIMMI)
Since the Invisible Memory is not managed by Windows OS, any applications can unrestrictedly claim the Invisible Memory at the same time and thus may access the same memory address. It is obvious that data written by one application can be easily overwritten by another application. This will cause horrible problems. To avoid such problems, users have to carefully manage their applications and set up only one to use Invisible Memory. It is tedious, complicated and error-prone to do this management work. And besides, exclusive possession of Invisible Memory is not acceptable in some scenarios.
In view of these inconveniences and limits, we introduce a new module called Unified Invisible Memory Management Interface (UIMMI). This interface features a unified way to manage and use Invisible Memory. More important, it allows an application to share Invisible Memory with others. This means that if two applications both support UIMMI, they are able to simultaneously access Invisible Memory without any conflict.
Every application that supports UIMMI has a common entry to this interface. When you look at the application's main interface, you will find an icon button , usually at the bottom left corner of the application. In this article, we will take Primo Ramdisk, one of our products, as an example.
1. Open Primo Ramdisk and click on the UIMMI entry button.
2. UIMMI defines two types of settings: global and local. Global settings apply to all applications, while local settings only affect the application itself. Click Enable IM to set up Invisible Memory.
3. If necessary, change the global and local settings. A detailed explanation of these settings can be found in the section UIMMI Options. Now, click Continue. UIMMI will then look for the Invisible Memory address space and return the status.
Front-end Reserve and Quota: These two options limit the Invisible Memory space which can be managed by UIMMI. The following figure illustrates how they affect the UIMMI managed space.
By default, UIMMI will claim and manage the whole Invisible Memory address space. When front-end reserve value is set, that much address space from the beginning of the whole Invisible Memory space is excluded and outside the control of UIMMI. And when quota is set, the maximum address space to UIMMI is restricted and the remaining address space is also excluded.
With the help of these two options, UIMMI is able to reserve the front-end or back-end address space, or both. Usually the reserved space is for on-board video adapters, which may also use Invisible Memory as their shared video memory, in order to prevent possible conflicts. For instance, MSI 880GM-E41 motherboard can assign up to 1024MB physical memory as VGA shared memory. If "UMA Location" option in BIOS is set to "Below", VGA shared memory uses OS managed memory. In such scenario, it has no conflict with UIMMI. However if "UMA Location" is set to "Above", VGA shared memory will use back-end Invisible Memory. Then we have to reserve the back-end address space. Assume that in one computer 8GB physical memory is installed and 32-bit Windows manages 3.25GB memory, so expected Invisible Memory is about 4.75GB. If VGA shared memory is set to 1GB, then we need to set UIMMI quota to less than 3.75GB. In this case, it is not necessary to set font-end reserve, because this model of motherboard does not use front-end address space as its VGA shared memory.
Tip: How do I know which end of Invisible Memory is used by on-board video adapter?
Well, because there are lots of motherboard manufactures and models, we cannot classify and list all motherboards. However you may know it by yourselves with the following practice.
1. First, reserve either end of Invisible Memory as much as VGA shared memory.
2. Then try to fill the remaining Invisible Memory with any data.
3. If you find that the display of screen becomes messed, it means the remaining Invisible Memory overlaps with VGA shared memory. Try to reserve the other end of Invisible Memory and repeat step 2.
Hibernation File Location: Specify the root directory for the Invisible Memory hibernation file. By default, it will be the system drive where Windows is installed.
Invisible Memory Hibernation: When this option is set, the application can safely enter the hybrid sleep or hibernation, and resume without error. Usually a file named "imhiberfilex.sys" will be created to save all valid data from Invisible Memory before entering hibernation. If this option is not set, unexpected errors may happen when computer resumes from the hibernation state. However if your computer will never go to the hibernation state, you can leave this option unchecked to save disk space.
Which applications support UIMMI
All applications from Romex Software support UIMMI, except VSuite Ramdisk. VSuite Ramdisk will be replaced by Primo Ramdisk later.