Ali,
There might be a simpler explanation - caches. In true 2-CPU architecture the caches are truly independent, and the OS has certain ideas now to use them. In pseudo two-CPU, it might cause severe cache conflicts, with massive increase in off-chip traffic. To avoid this, I guess, a total OS kernel rework is necessary.
Good point about caches. One problem is that it may be impossible to figure out with certainty whether SMT or single thread execution will be more efficient at any given time, in context of everything else that is going in the CPU and OS in general (state and priority of other threads, type of code in those threads).
Even a totally reworked OS will not always know whether it is better to switch to another thread, or leave the CPU stalled.
A close cooperation with the OS (some reporting back that the CPU is stalled) would be helpful, since the OS is going to switch to other threads at some point, and it would make sense to do so when the CPU is stalled, rather then when it is fully utilized.
Another idea (that is probably years away) would be to move thread management to CPU hardware.
Anyway, the jury is still out on SMT, and while it seemed to me like a great idea at first, now I am not sure if it is a step forward or sideways.
Joe |