I just recently bought a 6 core i7 970 CPU.
Now I have been learning about multithreading to try to take advantage of these cores (I am very much into programming) and I have come across some interesting questions.
My main question is when do multiple cores get utilized?
I have only researched multithread programming for 2 days now but from my understanding you have processes, then within processes you have threads.
A thread takes up a certain time slice to execute some instructions, then the next thread in the queue gets the next time slice, and so on, constantly switching between threads. (or something like that lol)
Right now looking at the task manager I am running 425 threads.
I know threads can be sent to different CPUs to be processed simultaneously, but is this actually happening?
Are my threads getting organized into multiple CPUs or does this only happen on certain applications that have been told to do so?
Any running threads are being activley executed by the CPU. Most CPUs can do x number of instructions per clock (IPC) mening they can execute multiple instructions per clock and per core.. Multithreading is where a program can utilize the power of x amount of cores to do a single task.
For example, Cinebench can do a single core or multiple cores to benchmark. The more cores, normally the better the results.
Or a good example is a program that can utilize CUDA (nVidia) will use however many CUDA cores are in the GPU to increase performance by a large amount.
As for how to multithread, thats a bit beyond my scope of software but its still in a very infintile stage. Most prgrams still don't need much more than a single strong core and a few will use 2 or 4 cores. Most games stop at 2 cores. It will change over time but by then we will have more cores than we need, it always goes that way.
Alot depends on your power settings but you can see by just bringing up task manager and switching to the performance tab. The top section will show you a usage graph for overall cpu usage and to the left of it you have individual graphs for each core and hyperthreaded core you have.