Gee Bee :
This from Wikipedia makes sense also:
Hyper-threading works by duplicating certain sections of the processor—those that store the architectural state—but not duplicating the main execution resources. This allows a hyper-threading processor to appear as the usual "physical" processor and an extra "logical" processor to the host operating system (HTT-unaware operating systems see two "physical" processors), allowing the operating system to schedule two threads or processes simultaneously and appropriately. When execution resources would not be used by the current task in a processor without hyper-threading, and especially when the processor is stalled, a hyper-threading equipped processor can use those execution resources to execute another scheduled task.
Ah yes, the good old Wikipedia reference. There's a good reason why any sensible school teacher will caution students against using it, even when it's not full of crap it can still smell a bit.
That quotation gets the gist of the technology correct, but I take issue with this line:
"This allows a hyper-threading processor to appear as the usual "physical" processor and an extra "logical" processor to the host operating system"
All modern platforms expose both their physical and logical configurations. This includes the number of systems per cluster (for more complex machines that span multiple devices), number of sockets per system, number of populated sockets (installed CPU packages), number of microprocessors per CPU package (for those lovely multichip-modules such as the Core 2 Quads and newer AMD Opterons), number of ISA cores per microprocessor, and the number of hardware threads per ISA core. The logical processors concept is simply an abstract way of linearizing and simplifying interaction with the various hardware threads without worrying about the total layout of the system. A more correct statement would be that a single-socket system with a quad core microprocessor with SMT/HT can be viewed as either a single CPU, four physical cores, or eight logical proccessors. It should not be viewed as "four physical cores with four extra logical processors" as that is somewhat misleading.
When this information is pulled together this forms a tree, and the information within this tree can be used by the kernel scheduler to make sane scheduling decisions about active threads (threads that are either running, or ready to run). The same information can be used by user applications to make sane threading decisions and how it would like the scheduler to treat its threads in order to optimize performance. Professional, wide scale applications make liberal use of these mechanisms to optimize performance. Contrary to what vmN keeps repeating, all of this information is available to user mode applications in most modern operating systems (see cpuset(7), among other things) but since games are generally targeted at commercial users who almost always have a single node single socket system there's very little reason to optimize inter-node or inter-socket latency. They simply detect the number of physical cores, or spawn a fixed number of threads, without giving a damn as to whether or not the platform has SMT/HT. Occasionally a game developer will do something stupid and detect the number of logical processors, which can result in decreased performance on Hyperthreaded machines.