0

Possible Duplicate:
Why are we still using CPUs instead of GPUs?

Even though having high-end GPU there is always a requirement of similar high end CPU to play high end games.

Without a same or equivalent cpu the gpu is like nothing?

Why for gaming a CPU should be a necessity, since it deals with calculations. A GPU is the one who deals with all the graphics in the game.

So, GPU shouldn't be dependent on CPU for gaming.

2
  • 4
    Drawing pretty pictures is not the only thing a game program does.
    – EBGreen
    Oct 4, 2012 at 20:53
  • In any case, graphics are calculations.
    – terdon
    Oct 4, 2012 at 22:32

4 Answers 4

2

The GPU is a great engine for small highly predictably operations, the kind of which are required in their thousands in order to paint a single image onto a canvas (memory buffer) in order to be displayed on a screen.

The GPU can perform many hundred operations on a single memory buffer simultaneously using what are known as shader programs, this is used to make the images pretty, adding features that make modern games look so stunning. The problem is that due to their requirement for high speed and data throughput these programs need to be continuously changed, pointed at new data and generally managed.

This is just one of the things that a CPU does for modern games. The graphics card makes it look pretty while the CPU tells it just how to make it pretty. A lot of strategy games also require the realtime tracking of many thousands of in game objects and what those objects are doing at any given moment.

For example I will give you an idea using one game, Supreme Commander.

You have a single unit. Simple enough.

That unit can be moving, in which case you need to keep track of direction and speed vectors for that object.

The unit has a gun, in which case you have to track whether or not it is firing.

The gun fires bullets, for each bullet fired the game has to create an object detailing the direction and speed of that bullet, or at least create a virtual line from the gun then test to see if other in-game objects intersect that line.

Lets say it's not a simple gun but is instead something like a ballistic launcher, it needs more realistic ballistic simulation. The bullet needs to be tracked as it crosses the map, having its speed and height constantly simulated by a (near) real-world ballistic model. That will need to be done hundreds of times a second in order for the projectile to look right.

This is all at the same time as telling the graphics card just what to paint where mind you.

The projectile needs to be constantly tested to see if it is occupying the same space as an enemy unit, in which case you have a hit, otherwise carry on.

If a hit occurs you then need to calculate what happens, does the unit take damage or is is killed? In either case do we need to show the user some kind of "bang" animation? Bits of shrapnel flying off, that sort of thing... In which case each of those bits of shrapnel need to be tracked and animated and eventually destroyed so they no longer need to be simulated.

Now imagine that each player can have up to 500 units, all potentially able to move, to fire multiple guns or missile launchers, to have to test whether there are enemies nearby to fire at in the first place. Potentially thousands of bullet interactions, missile paths and ballistic projectiles that need to all be created, tracked, tested and have visible actions that happen as a result. Put 8 players in that game and you quickly have several thousand units with tens of thousands of projectiles in play, all with associated programming "objects" that need to be created, tracked and destroyed over the life of the object.

That's a whole humongous amount of calculations right there that is needed in order to display each and every frame of graphics, and that's before you go to tell the graphics card just what it can show.

In a lot of games you can (kinda) ignore anything that is off-screen or out of area at the time but not so with an RTS game, each unit can move, fire and die independently of what you are looking at at that given moment. Each unit also has an in-built "AI" to tell it how is should move around, how to avoid obstacles, how to get to the enemy, when it should be firing, how it can fire.

These things do not lend themselves to the kind of thing a graphics card could easily do. Graphics cards work well running a hundreds of copies of a single small program against large blocks of data and don't do too well with the kind of large and long calculations that every step of calculating the status of a single unit is up to. Sure it could handle the ballistic projectiles and things like that, but for every bit you track that way you loose power that could be used to display images.

CPUs are plenty powerful and can handle a lot more complex branching programs than a graphics card can and are much more suited to large scale management of an overall system while graphics cards are good for pure number crunching and showing pretty pictures.

4

The CPU does a lot for gaming actually. I'll list a few thing that I can think of off the top of my head.

  • The CPU has to be fast enough to handle the througput of your GPU. For example, your CPU needs to be fast enough to handle the traffic going to your GPU. This is why Gamers overclock their CPU's. Your video card can be bottle-necked by your CPU, this is a huge possibility, and the reason why you want to buy top end CPU's when buying top end GPU's. Example: Back in the day I had a Phenom II x4 955 and a GTX275. ( Both higher end at the time ) I was testing my bottleneck in a Crysis benchmark. To test bottle-necking, you simply change the resolution at which your bench marking. If you're getting around the same FPS at 1920x1080, as you are at 1024x768, then you're bottle-necked. Theoretically your FPS should sky rocket playing at such a low resolution. This was the case for me with my Phenom II, as soon as my CPU was overclocked past 3.6GHz, I was able to see a HUGE increase in FPS when bench marking in 1024x768.
  • Artificial Intelligence ( AI ) - Your CPU handles AI, and does all the technical processing behind how your non-player units act in game. For modern games, this isn't a small task for your CPU.
  • Physics Engine - Yes if you have Nvidia you can run PhysX on your card, however by default, it is ran from your CPU. Once again, number crunching for your game.

I must say my first point is the single biggest reason your CPU is being used in games. It's transferring that data to your GPU, and it has to be fast enough to keep up.

Hope this helps.

1

The GPU's job is to render (i.e. "draw") objects in a framebuffer that eventually gets transmitted to the screen.

The CPU's job is to tell the GPU what to render and where.

Rendering the scene is only a small part of the game (shouldn't say "small" but definitely not all of what a game is). You need an internal representation of objects, what they are doing, and what happens when they interact. Even if they won't appear on the screen and be drawn. Calculations are necessary for most of that and some GPU's have "physics" accelerators that can help. However, decision making (i.e. branching) is also needed, and that's something GPU's aren't good at, general purpose programs that branch all over the place.

0

You can't really compare the GPU to the CPU like that. That is like saying you only need the part of your brain that deciphers the image sent from your eyes. The GPU does an awesome job of computing floating point numbers, but there is a lot more going on behind the scenes than just computing numbers. The CPU is still executing the code necessary to feed the GPU with data to crunch.

Here is a good paper on the subject. http://www.cs.virginia.edu/kim/docs/ispass11.pdf

Not the answer you're looking for? Browse other questions tagged .