Why do graphics cards need so much video bandwidth?

Byte

Platinum Member
Mar 8, 2000
2,877
6
81
with them going up to 20-30GBps, what it really doing? It only has around 128MB of onboard memory, how can it fill up so much bandwidth?
 

corkyg

Elite Member | Peripherals
Super Moderator
Mar 4, 2000
27,370
239
106
Graphics are large in file size, and if you want them to move quickly, you need to push multi megabytes through in an instant. Think of water flowing in a pipe. The bigger the pipe, the more water flows in the same amount of time. Bandwidth works in generally the same way. Think of it as the size of the pipe. :)
 

Byte

Platinum Member
Mar 8, 2000
2,877
6
81
but why do you need such a huge pipe if there is only 128MB on board and maybe 256-512 system ram.
 

TheBDB

Diamond Member
Jan 26, 2002
3,176
0
0
The 128 MB of data in memory needs to be put through the GPU multiple times per second. The data travels back and forth from the GPU and video memory, so high bandwidth is needed.
 

corkyg

Elite Member | Peripherals
Super Moderator
Mar 4, 2000
27,370
239
106
Like I said - you are thinking of storage capacity - memory. That is not bandwidth. Bandwidth is the size of the pipe you need to get that stuff moved instantly from those places you mention. Where the rubber meets the road is your display. What really drives that is the speed needed for vast amounts of data in modern games and video processing.
 

zephyrprime

Diamond Member
Feb 18, 2001
7,512
2
81
Several things.
Graphics cards have overdraw. They don't have an exact idea of which polygons cover which other polygons. They employs various culling techniques to narrow down the possibilities but these techniques aren't completely effective. So they end up draw stuff and then overwriting that same stuff at some later point. This eats up bandwidth.

Second, memory access of textures tends to take the form of a bunch of accesses that traces out a curved lines on the surface of the texture. Moderns memories are good at sequential access but kinda sucky at non-contiguous accesses. Memory is quite slow if the curve of the line prevents large contiguous accesses. So the real bandwidth is less than advertised. (this can be alleviated by using a tiled memory architecture)

Also, polygons often have multiple textures nowadays. They have the plain texture, maybe a light map, and maybe a bump map. And vextex lighting creates yet another texture map in real time. And each individual light source has to be calculated independent of the others so each light source adds linear increasing processing load. (this is why you never see 100 lights in 1 frame.)

It used to be that figuring out polygon ordering by way of the z-buffer really sucked down the bandwidth but this may be not a big deal anymore since video cards now have on-chip z-buffer.

In the future, cards may have on chip frame buffers and that would alleviate memory constrictions a little more.

And refreshing the screen can eat up a fair bit of bandwidth too. Suppose the screen is running at 1024x768x32bit @ 100 hz. Running at these specs would require 300MB/Sec of bandwidth.

But since the resolution of monitors and their refresh rates only grow slowly, the amount of bandwidth required per texture will also only grow slowly. Memory speed, on the other hand, grows exponentially in rough accordance with moore's law. So eventually memory bandwidth will be more than adequate. (of course new ways will be found to use more bandwidth but even so, moore's law is very powerful.)
 

Byte

Platinum Member
Mar 8, 2000
2,877
6
81
so it basically needs to move things back and forth real fast a few hundred times a second? Cuz nothing can feed it 10-30GB of data.