Originally posted by: Jim Bancroft
I have a buddy who's going to build a new gaming machine. He wants to go with Intel because when you have a hyperthreaded CPU "it's like having two CPUs for the price of one-- just look at the XP task manager."
I'm trying to convince him that it's not like that, that you still only have one bus and CPU, but I don't know the ins and outs of hyperthreading well enough to give definitive arguments. Can someone help me by explaining in layman's terms what hyperthreading does and doesn't do? I know it'll work fairly well for apps designed with it in mind but you're sure as shootin' not getting an extra CPU for free. Thanks :beer:
It's still just one chip, with one core. It's sort of split in half. So he doesn't have two CPUs, he has two half-CPUs. Which still only adds up to a single whole CPU.
The advantage of "splitting" the CPU like that (in layman's terms), is that instead of the whole CPU acting as one, and when an outside access to memory causes the CPU to stall - a hyper-threading CPU runs as alternating "half-CPUs" (running two tasks, alternatively), and if one one half is stalled, the other half can keep running. That's the biggest difference. So it's not any "faster", overall, but it can be more efficient at using the speed that it has.
If the HT-enabled CPU doesn't have two tasks to run, then it can sort of disable the "split-mode", and run as just a single whole CPU again, running a single task. This is also the case if you disable HT support in the BIOS settings.
Imagine an assembly-line. If there's only a single worker putting parts into whatever comes down the line, then if that worker needs to take a break to use the restroom, the entire assembly-line has to pause and wait. (Equivalent to a CPU pipeline stall, waiting to access main memory.) If instead of one worker, you have two workers on either side of the assembly-line (but still only a single assembly-line), and if each works on every-other board coming down the line, the overall assembly-line still only has the same output, but if one of them has to use the restroom, then the line can keep running, and the other worker will end up doing all of the work for a while. So there are less pauses in the assembly-line's output. (A modern CPU's "pipeline" is indeed much like an assembly-line inside, in terms of how it works.)
A dual-core CPU, on the other hand, would have double the theoretical output, because it would be like two whole sepeperate assembly-lines, not just one assembly-line with multiple workers. But two assembly-lines requires double the floor-space, double the power to run it, and creates double the heat/noise output, and costs more as well.
The reason that the entire CPU industry is moving towards multiple cores, is because they've been able to speed-up the "assembly-line" to nearly the max, and the workers simply can't go any faster anymore. So in order to increase the output further, they simply have no other choice to build more assembly-lines, even with the size/cost issues involved.