More and more I see home users flipping out over Hyperthreading.
Does anybody
know what hyperthreading actually provides? Or do they just think it makes their single CPU appear as 2?
Intel has
gobs of info (they should, after all) at
http://www.intel.com/products/HT/hyperthreading.htmIt is tough to find technical details though. Essentially Hyperthreading allows the independent units within the CPU to be used independently by unique processes. In other words one process may use the floating point engine while another uses the integer engine.
It isn't so simple though. While one process is using one particular engine it may block another process. That process may have been compiled with an optimizing compiler that assumes it will have exclusive use of the CPU. As a result, it will likely optimize its code to make the most efficient use of the instruction pipeline, often utilizing multiple units itself within the cpu die with each cycle. Enabling Hyperthreading can wreak havoc on this, and Intel itself admits that the majority of applications will
NOT experience any improvement out-of-the-box with Hyperthreading.
Intel provides toolkits for application developers and integrators to help identify bottlenecks that reduce the effectiveness of Hyperthreading. Many compute-intensive applications actually experience performance
degradation when first enabling Hypterthreading without this code optimization.
For HT use, I honestly can't see a benefit currently. It is unlikely to provide any benefit and as more and more people are learning (threads in this and other forums show this) actually slows everything down. When it is a benefit 25% is Intel's own documented theoretical maximum improvement. Real world numbers are roughly half that value with properly tuned applications.
Marketing is great. It can get the majority of the buying public to believe almost anything. With proper tuning of applications Hyperthreading can be a benefit but for home use I just don't see application development teams devoting resources to it. Intel has devoted tremendous resources on optimizing uniprocessor designs and is a world leader in pipelining and branch prediction. Hyperthreading is a natural extension but must undergo a bit of maturing and acceptance before personal-use systems will see a benefit.