Originally posted by: Krk3561
What are the benefits of hyperthreading and which existing programs support it?
I'll do a major simplification. Hyperthreading is kindof like turning a single processor into a dual processor machine. Basically processors have redundant parts. Hyperthreading allows the processor to do multiple calculations at the same time, thereby utilizing all the parts at once. Suppose a theoretical processor had two integer parts. If a program needed to perform 2 integer calculations, current processors will often do them one at a time. Hyperthreading will allow the processor to do both at the same time. Theoretically this will double the speed during that part of the program. In reality, there is extra overhead when using hyperthreading and there are a lot of operations where there aren't redundancy - so you never get a full 100% improvement. Or maybe a program never needs to do two integer calculations at once - thus it gets no speed boost. Programs that do benefit will get roughly a free 20% speed boost. Programs that don't benefit are still harmed by the extra overhead and get roughly a 10% speed slowdown. Luckilly a programmer can do a quick check at the beginning of the program and decide if it will use it or not (so properly written programs won't get the slowdown).
For a more technical response look at some hardware review websites. I think Anand even had a decent article a while back.
Unfortunately for Intel, if they came right out with hyperthreading - there would be no programs written to do that check. Thus many programs will slow down. So instead Intel is slowly phasing it in - hoping that most programmers will have put this check in on newer programs by the time the consumer gets a hyperthreaded processor.
Also, programs today rarely run in a vacuum (have full control of the computer). Usually multiple programs are running (example: Windows and your favorite game). So maybe Windows needs an integer calculation at the same time your game needs one. This is where hyperthreading could theoretically help out significantly. However the interaction between various programs is far too complex for me to begin to understand...
Programs that support it vary widely.
I thought the app did not have to support it to benefit from it....only hardware needs to support hyperthreading?
The app doesn't have to support it, but if a program will get a speed reduction, it
should be properly programmed to avoid this slowdown. All old programs obviously won't have this check programmed in, so many old programs will run slower (unless you disable it in your bios). Even many new programs aren't coded properly and will risk a performance drop. Programs that will benefit don't need to be coded in any special way to benefit. However if they can be coded slightly differently to take full advantage of the redundant parts - then they can maximize the speed boost. Often all that might take is a simple reordering of some code.