Hardware Virtual Memory Management

XX

Newcomer
I remember when reading a couple of P10 previews that VMM was
highlighted as quite a significant feature. So my question is this, how
usefull it realy is and if the R300/NV30 have it?
 
I'm not entirely certain, but I believe this refers to the fact that the P10 can support programs of any length, as long as the program fits within video (or perhaps AGP) memory, whereas it appears that the programs of today's programmable hardware must fit entirely within an on-chip cache.
 
I was under the impression that it was more of a virtual memory mapping thingy like you find in operating systems. That the momery handler in the P10 can swap "blocks" of data out to main RAM like the OS can swap blocks of memory from RAM to disk, trying to keep the most used parts in fast memory...

Hm, if the mapping to RAM is piped through the OS then possible you could load so much texture data that the P10 swaps some data to RAM then the OS swaps it to disk, now there's latency for you! :LOL: You should probably try to have a little LOD'ing in there as well :)

Regards / ushac
 
I was under the impression that it was more of a virtual memory mapping thingy like you find in operating systems. That the momery handler in the P10 can swap "blocks" of data out to main RAM like the OS can swap blocks of memory from RAM to disk, trying to keep the most used parts in fast memory...

Yes. JC and Tim Sweeny have talked about virtualised texture memory for some time, which is what the 3Dlabs Oxygen cards have been able to do since their introduction, P10 takes that a step further and allows the entire memory to be virtualised, so textures, programs, even the frame buffer can exist in local, system, or OS virtual (hard disk) memory. P10 can address up to 16GB of space.

http://www.beyond3d.com/articles/p10tech/index.php?page=page4.inc

Will it be any use? Well, it will probably give some benefit to games in the medium term where textures spill over local memory, but thats probably about it for a while. It will be of more use to workstation and ofline rendering environments probably. This feature will certianly, though, become much more important when Windows introduces the 3D interface with Longhorn - each 'window' will essentially be another 3D scene and so it will need lots of memory to handle lots of open windows.

As yet, there seemed to be no mention of R300 supporting it (although it is in DX9 apparently) and we'll have to wait on NV30.
 
First architecture which used it was Digital's PixelVision BTW, the 3DLabs founder took the idea with him from there.
 
Well, all graphics cards today support swapping in and out of main memory. For example, PCI nVidia cards support a "virtual AGP" that swaps textures in and out of main memory. Of course, all cards today also do have limits to the amount they can access, either set by AGP aperture or software (with virtual AGP).
 
Well, all graphics cards today support swapping in and out of main memory. For example, PCI nVidia cards support a "virtual AGP" that swaps textures in and out of main memory.

The system they employ is also considerably worse in performance.

IIRC the way Carmack explained it it seems as though not just the 'textures that overspill' can be swapped across the AGP bus, but all of them are addressed from there if there is insufficient local RAM. Someone else may have better information though.
 
ArtX implemented a virtual texture system for Flipper in Gamecube, so I am a bit surprised that they wouldn't for the R300 (at least, that is how it appears, but who knows).
 
DaveBaumann said:
The system they employ is also considerably worse in performance.

IIRC the way Carmack explained it it seems as though not just the 'textures that overspill' can be swapped across the AGP bus, but all of them are addressed from there if there is insufficient local RAM. Someone else may have better information though.

That can happen with poor caching.

Imagine if the caching system always deletes the oldest texture in video memory. If video memory is overfilled in one scene, the "oldest texture" will be the first texture drawn in the scene.

So, as the scene is drawn the second time, the first texture needs to be loaded from AGP, and the second texture is erased. This continues, and each and every texture must be re-loaded.

There's no fundamental reason why video cards must, or should, do this. But, it may explain why certain drivers under certain situations cause massive framerate stalls. I'm reasonably certain that this sort of optimization is completely up to the hardware drivers to determine.
 
There's a difference in at what granularity it's done.

I believe 3Dlabs claimed that all other AGP card did the texture swapping by always loading the whole mipmap pyramid. P10 only loads the mipmaps that are needed, or even part of mipmaps if the textures are large.

Biggest difference would be if you have many large textures for parts that are far away. While some cards would be swapping textures like mad, P10 would just load the low res mipmaps, and might not do any per frame swapping at all.
 
That's probably true, with one exception.

All of the Kyro boards had virtual AGP texturing, where only the portion of the texture used was sent over the bus.
 
Chalnoth said:
That's probably true, with one exception.

All of the Kyro boards had virtual AGP texturing, where only the portion of the texture used was sent over the bus.
That's news to me. Kyro can certainly do AGP texturing (i.e. texturing directly from the MOBO RAM), but we are talking about having the HW automatically cache blocks of data in the on-board memory.

Long ago, I proposed doing hardware caching on a PCX2 followup (doing bus mastering on PCI ) but memory prices continued to come down so there seemed no great need.
 
Modulor said:
As one can see english chip design is more sophisticated 8) !
Given the number of Scots, I think you should at least say "British" design. On second thoughts, given the number of non Brits, I'm not sure how you should describe it :)
 
Back
Top