And with a little effort, the programmer can split his program in several greatly independent treads that can be executed in parallel.
You're either obviously not a computer programmer, or if you are you've never worked with any serious multi-threading code. That statement is just wrong on so many levels...
1) It's a <i>LOT</i> of effort. Even with libraries and compilers to help it still introduces a whole new world of bugs caused by timing problems. And even if you work out all of the timing problems on one PC they can be completely different on a different PC. So once you switch to multi-threaded code you now have to test your code on numerous PCs if you want to ensure that these types of bugs don't happen. On top of that debugging multi-threaded code is a heck of a lot harder than debugging single-threaded code, <i>period</i>. So multi-threaded code is a <i>huge</i> effort compared to single-threaded code.
2) <i>Most</i> programs only have one primary line of logic anyway and thus <i>can't</i> be split into "several greatly independent threads(sic) that can be executed in parallel". Games are the only real exception, and even then it's mostly just the AI that gets split into independant threads.
3) Most single-threaded code suffers <i>not</i> from a CPU that is incapable of fully utilizing it's execution units, but from the code itself being so poorly optimized that the code simply can't even use the execution units efficiently. Programmers who use any sort of a profiler to maximize the efficiency of their code will gain far more performance in a single-CPU system with HT than making their code multi-threaded.
4) Making code multi-threaded <i>adds overhead</i>. All of the extra pointers, timing logic, etc. create an additional use of resources that single-threaded code doesn't have. If you run multi-threaded code next to single-threaded code on a single non-HT CPU you can even measure this overhead rather effectively.
Anyone who does <i>good</i> coding for a living knows these things. This is why most game developers don't even write multi-threaded code. And of those who do, their only reason is because they know that some of their biggest enthusiasts (even if it is a rather small percentage of their customers, they're usually the loudest of their customers) run dualie boxes and so multi-threading their code simply gives them access to two CPUs instead of one.
Basically, concepts like HyperThreading do absolutely nothing for people who know how to write efficient code, even if the code is multi-threaded. All that it really does is slightly help poorly written multi-threaded code and greatly improve multi-tasking.
I guess you could call HyperThreading a hardware engineer's trick to try and overcome some of the bloat caused by lazy programmers.
<pre><b><font color=red>*** BattleTech - The Crescent Hawks Inception ***</b>
Pilot twenty-ton behemoth robots to save your planet from a
Kuritian invasion force. Now available on the C=64!</font color=red></pre><p>