What is the difference between hyper-threading and multiple cores?

In a conversation with the network administator, I mentioned that my machine was a dual-core. He told me it was not. I brought up the task manager, went to the perfomance tab, and showed him that there are two separate CPU usage graphs. I have a quad-core machine at home and it has four graphs. He told there were two graphs on this particular machine because of hyper-threading. I used to have a hyper-thread pentium 4 processor back in the day, but I never fully understood what it meant. So what is the difference between hyper threading and dual-core? And how do you tell which one you have?


Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.

Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.

There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.

You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.

enter image description here

If you have an Intel CPU, you can download Intel's CPU ID utility instead.


Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.

The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.

See also: This question