Somewhat. Forgive my vocabulary, but it's damn early 🙂.
The processor has several units to do calculations and move data around, however, when typical applications do something, they do one thing, and then go on to the next, rather than doing multiple things at a time. Hyperthreading fakes 2 CPUs so that multiple programs can do things at once, or multithreaded programs can, to fill up the various work-doing parts of the CPU, improving performance, since it would otherwise have those parts of the CPU sitting idle.
However, it can also hurt performance.
We have processes A, B, C and D that do near the same thing (say, oh, multiple forum requests). Now, the single CPU does A, does B, does C, then does D. It's doing some work, but you're not really stressing it.
2 CPUs do A and B on one, then C and D. Now, reality isn't quite as neat and tidy, but that's what should happen. Now you're stressing memory and HDs...not too shabby.
4 CPUs each do one A, B, C and D. Really stressing memory and HDs.
1 HT CPU does A and B, and then C and D, like 2 CPUs...but wait! It's trying to do B and hasn't finished with A, so it does a little of A, B waits, now switch and A waits, and back and forth because the CPU is trying to do too much work...the effect of this can be seen in several tests w/ Xeons, where they run much faster with HT off. Indeed some P4 tests are that way, too (like some of the SPEC ones).