AIR&SPACE said:
In short, you can generalize this as: A CPU is about quality over quantity, a GPU is about quantity over quality.
No both are about highest quality. The reason for the difference is optimizations. I have done graphics programming in OpenGL. And much of the instructions you tell the graphics card to do
can be paralized. The same is not true for the CPU. Example
Draw triangle v1, v2, v3 with color mappings of c1, c2, c3 (about 5 -10 lines of code)
From a GPU (which is rigorously optimized for rendering) Will draw each pixel at simutaneosly. Unfortunatly reading pixels from GPU is generally very, very SLOW,
If a CPU will do this, the CPU will draw each pixel one at a time, mostly because the development of the CPU was more generic. And can't make the assumption that the previous state is independent of the next state, when optimizing how the instructions are processed. You will not find how a GPU is designed cause that will give unfair advantage to competitors, what you will find is specs of how to use the GPU, and how to write programs that optimize for different GPU's.
However the CPU is optimized for executing instructions one after another. Now you can get CPU's with 16 cores and there are even CPU's with 100 cores on FPGA's. Right now what I see multithreading is going up cause a lot of applications these days process mass amounts of data that do not need the result of the previous data point or the future data point to calculate the current data point. E.g. doing physics simulation, you can allocate memory for the next state and simulate dt for each of the current state objects and save it in the next state memory location. Now work back and forth between the memory location. In this design all objects can be parallelized.
Also on a GPU you cannot easily make your own color blending function, it is optimized for specific ones (This is changing with new shading algorithms where you can specify the function) e.g. you can only do linear forms of blending. But on a CPU you can do non-linear blending and it will generally be faster cause instructions like power, squrt, sine, cos and etc... are hardware optimized, but a GPU generally does not need all of those functions just sine, cos and a few others.
Note: No where will you find how a GPU, or a CPU works in specific details, since it gives advantage to competitors. But you can find docs of how to make use of the functionalities, and speculate how it is designed internally.
But what it comes down too is drawing can easily be parallelized (just apply the same equation for each pixel) cause pixels are not dependent with each other, but for CPU general applications (e.g compression, decompression) algorithms require the current state to be calculated before calculating the next state.
But this is changing though # of cores are increasing, and because of this multi-threading algorithms are being developed. the biggest example are games do physics calculations on separate threads. Compiling programs are done on separate threads now. So are compression algorithms.
... and one day we might have a 1K core CPU.