Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?

share|improve this question
    
Please let me know if you have any articles or books whatsoever. –  Green Code Jun 7 '11 at 15:11
1  
Why are you asking? Are you planning on designing graphics hardware, or are you just curious from software development point of view? –  Jari Komppa Jul 12 '11 at 6:54
    
It is just software stuff I am curious about. –  Green Code Sep 1 '11 at 10:50
    
From software perspective their differences don't really matter =) –  Jari Komppa Sep 2 '11 at 12:16
3  
Memories of its childhood, memories of its first kiss, memories of running Quake at 200fps... –  Nick Wiggill Oct 21 '11 at 11:42

2 Answers 2

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.


Read-/Writeable:

Global Memory (DRAM)
- Only memory on its own chip
- Very big (many gigabytes)
- but slow to read/write and higher latency

Register file
- smaller compared to DRAM (Fermi: 32768 x 32-bit = 128KB per SM)
- fastest memory available - can only be read/wrote to through ptx code

Shared Memory
- 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:

Instruction Cache
L1 Cache L2 Cache
Constant/Uniform Cache
Texture Cache

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.