I know that Hyperthreading acts like another core but it is not really a real core, and performance of that virtual core is somewhat between 10 to 50 percent depending on the application.
On the mainstream/consumer based CPUs. Intel could remove the hyper-threading for now and focus more on greatly improving the IPC on the real cores? I mean most programs are written to run efficiently on two cores and just starting to really efficiently utilize four cores.
Is hyper-threading useful? Yes but not for all applications. After about 4 threads there doesnt seems to be a lot of value in having additional threads on a gaming system. While on something that like Adobe CS you will get some additional performance from having a processor with hyper-threading.
The idea that if we removed hyper-threading from the design would somehow allow us to focus on getting better performance from the IPC on the core is a mistake. Heck about the Intel® Celeron, Intel Pentium® and Intel Core™ i5 of the 2nd and 3rd generation Intel Core family don't have hyper-threading and you don't hear about them grossly out performing the Intel Core i3 or the Intel Core i7 processors that do have hyper-threading. Heck if you want to see what hyper-threading does simply turn it off in the Bios. There are some software where you might see a little better perforance and some where you will see worst but you arent going to see a big increase in IPC.
Hyper threading is immensely helpful in certain scenarios and very mildly detrimental in others, it really depends on what you are doing. Certain engineering programs get very significant speed ups thanks to hyper threading letting them push the other threads in the holes.
Hyper threading just takes the empty execution units in the CPU that have no instructions to execute in the current thread and has them execute instructions from a second thread, this way you make sure almost all of your execution units are almost always in use.
It is important to remember than more CPU power isn't meant for you, it isn't meant for gamers, it is meant for servers, workstations and high-performance computing requirements that need massive amounts of CPU power to get work done in a rational amount of time.
Just as important, you cannot speed up a single thread infinitely, even with a processor with perfect prediction, out-of-order execution, infinite instruction issue per cycle, and unlimited execution units there is a maximum speed you can make a single thread run due to data and structural dependencies within the code, we are approaching the point where this is relavent, and single threaded performance cannot be massively improved with each generation hence the move towards more threads and more cores as it permits better overall throughput even though the latency of execution for each thread is almost the same.
Is hyper-threading useful?
Both the operating system AND the program have to be written so that they sense multiple processors, and know how to use them. More than 80% of the programs we use are so simple, multiple processor usage is not written into them. Windows XP used hyper-threading better than it did multiple cores. It, and the operating systems before it, use multiple cores poorly. Windows 7 and 8 use both hyper-threading and multiple cores well. In these newer operating systems, if the program also has multiple processor usage written into it, hyper-threading and/or multiple cores will give an additional boost in performance.
Hyper-threading is where a core has two physical processors that are controlled and initiated separately, but share the core's execution engine and its resources.