I've been googling this around and yet nothing showed up but some articles from middle ages which were talking about Gforce mx and ... . My question is just this: what are the different memories in a high-end graphics card and what is their size and usage?
Generally in the old days you'd read things like how a Voodoo 2 might have 2 mb of texture memory per TMU and 4 mb of framebuffer memory, and everything would have been segmented in a similar manner on other models. I suspect that this is what you might be asking about.
That kind of setup doesn't exist any more.
Since the late 90s a GPU has had unified memory. To take another Jurassic piece of kit as an example, a TNT might have been specced at 16 mb, but there was no segmentation. If textures needed (say) 10 mb, they could take 10 mb. If the framebuffer needed 12 mb it could likewise take all 12. All modern GPUs are like this.
There was a certain art to programming for the old way. Looking through the old Quake 2 source code, for example, I can see that it always bound it's lightmaps to GL_TEXTURE1, even when building them at load time - quite clearly to ensure that the texture always stayed in the memory space which was segmented off for that TMU.
But by and large it's a good thing that we don't have to deal with this kind of thing nowadays.
There are memories where you have read/write access to it
like Global memory / DRAM and others which are controlled by the GPU itself
like Texture and Instruction Cache, etc.
I use the Fermi architecture for this example.
Global Memory (DRAM)
- Only memory on its own chip
- Very big (many gigabytes)
- but slow to read/write and higher latency
- smaller compared to DRAM (Fermi: 32768 x 32-bit = 128KB per SM)
- fastest memory available - can only be read/wrote to through ptx code
- shares space with L1 Cache
- can decide between bigger Shared Memory (48 KB shared memory and 16KB L1) or bigger L1 Cache (48KB L1 and 16KB shared memory) (not with DX11 usage which needs 32KB shared memory)
Controlled by GPU:
L1 Cache L2 Cache