Ant wrote:
> On 12/23/2010 4:04 AM PT, Richard Owlett typed:
>
>>> I heard that I can use the unused memory for other things like a RAM
>>> drive for swap files, %temp%, etc. How do I do that?
>>> [snip]
>>
>> I suspect you heard a reference to expanded memory and/or extended
>> memory from DOS era. See:
>> http://en.wikipedia.org/wiki/Expanded_memory
>> http://en.wikipedia.org/wiki/Extended_memory
>
> Yes. I was told that using unused RAM like a RAM drive but others says
> no in these newsgroups.
There are two ways to get to memory.
http://en.wikipedia.org/wiki/Iommu
It's really a question of control. If you had control of the
entire OS and its facilities, then there are ways to get around
the limitation. Of course, if you had control of the OS, then
you wouldn't need all the silliness in the first place. (Just
use PAE, the way it was intended. That would give a 32 bit OS
access to up to 64GB of memory.)
What you're really looking for, is a back door left open by Microsoft,
that would allow bypassing the current limitation. Going back to
SP1, might be the quickest way to get there.
The bottom of this article, gives a hint. It uses a hardware card
and driver, to get at memory above 4GB.
http://msdn.microsoft.com/en-us/library/aa366778.aspx
"That means PAE-aware drivers can actually use physical space
above 4 GB if they want. For example, drivers could map the
“lost” memory regions located above 4 GB and expose this memory
as a RAM disk."
Now, even with those statements, that isn't a complete solution. To
make that into an "Extended" or "Expanded" kind of memory scheme,
and makes it seamless, still requires a lot of low level hooks being
left available by the OS. Just the ability for a PCI or PCI Express
card, to reach high memory, isn't a complete solution. You need the
same hooks, as are used for swapping virtual memory to disk. In a
sense, the OS would need to be made aware, that there was more than
4GB of memory in use. And what are the odds, that Microsoft
left that door open ? They wouldn't have imposed the limitation,
via translation tables, of 4GB, only to leave the ability to
use hardware DMA to expand the space.
The perfect vehicle for implementation, would be a PCI Express x16
video card. It would make a great DMA engine, with high transfer
speeds for block memory transfer. You could probably move data with
one of those, as fast as the memory subsystem could run (16GB/sec
best case, as PCI Express is full duplex). But you need a TLB miss,
to trigger your video card driver, to page in the requested memory.
Or something along those lines.
Paul