ank_gl said:
[...] i mean when the application is not calling the other processor, why would it call the graphic card??
The answer follows from the above: because the application was written to use the graphic card. 3D-specialized graphic cards are available on PC since 1996 or something. Today there are fairly standard interfaces to use the functionality of a graphic card, like OpenGL or Direct3D, hence most games do so (early 3D games had it optional, with pure CPU mode available as well).
There are in general two modes of "using more than the single core".
One is the "function-parallel" mode, where different pieces of hardware do different stuff, as in CPU/graphic card example. This mode is somewhat natural for games, in that it has been used for more than two decades now (e.g. Commodore Amiga machines of 1987 had, aside from the CPU, specialized processors for graphics, sound, IO). Two cores of today's CPU, although functionally equivalent, can be used in the same manner, e.g. one could do the AI and another the rest as usual.
The other is the "data-parallel" mode. Here, several pieces of hardware are communicating on doing the same stuff (processing the same data). This has not been employed in games until recently, but was rather used for scientific/engineering computations, where it comes rather naturally. Data mode is well suited for units of the same kind, e.g. several cores, but is also harder to program a game for. This is because in function mode, the single-core program can be (more or less) just split into chunks by functionality and some of those chunks offloaded to other units (e.g. graphic card), while in data mode parts of the single-core program have to be considerably restructured to allow for cooperative processing of several cores.
Unfortunately, the function mode doesn't "scale": there are only so many functions that a program is composed of, and not all of them use the same amount of resources. In the AI example, if one of the two cores has been allocated to it, and the game runs out of computer controlled "enemies", suddenly that one core is doing nothing. And then, if there are eight cores, the problem becomes only worse.
The date mode can scale well, because no matter the number of cores, they all work on the same problem and can balance the load -- but, as said, this is not straightforward to achieve. In particular, games are much more complex computing-science wise than typical scientific/engineering computations which use the data mode, so as far as I understood, game programming people are right now scratching their heads...
--
Chusslove Illich (Часлав Илић)