aranykai wrote:Actually, that's not entirely true.
The idea is that two threads can be run on the same core at once so when there is an available cycle, if the first thread is idle, the second can execute and the cycle wont be wasted. They cant both execute at the same time.
Its really got nothing to do with multi-core processing.
Not correct
A single CPU core contains multiple instruction units, Each unit is able to process different commands simultaneously along side all other units.
In a single cycle, all units required to to complete the cycle will be used.
However not all units are always required in any individual cycle.
Hyper threading takes advantage of the spare execution units, by creating a virtual 2nd cpu core that is able to run an additional cycle simultaneously.
say you are running a PI calculation, that only takes 5 out of 8 instruction units, as the other 3 are designed to handle different types of calculations.
Whilst the PI calculation is taking place, you decide to start encoding a video, And the remaining 3 instruction units happen to be needed for that.
In a none HT system each process would have to wait in turn for cycles.
ie, 3/8 > 5/8 > 3/8 > etc
With a HT system both process can run at the same time, for every cycle, the only down side is that both process might need 1 of the same type of execution units, So, instead of a 5/3 split, you end up with 4/8 for each giving you:
8/8 > 8/8 > 8/8 etc
So the 2nd process runs faster, and the first slows down a little - but not as much when being forced to use alternation cycles.
Cpu usage is now more efficient, as more units per cycle are used.
With 2 physical CPU cores the principle is actually the same, except you now have 1 dedicated core per process in this case, and both process would be able to run 5/8 on 1 and 4/8 on 2
The real bonus of dual core over HT come when you have very heavy CPU usage things like games. Since the single process most likely will use 8/8 units.
Why the game doesn't fully support Dual core if it does support Hyper threading will probably be a driver issue of some sorts.
Also remember ppl, Threads are not the same as processes! 1 process can spawn multiple threads, and each thread can require multiple instruction sets : )