[mythtv-users] What is a "dual core processor"?
ryan.goat at gmail.com
Fri Dec 5 13:46:50 UTC 2008
On Thu, Dec 4, 2008 at 3:27 PM, John Drescher <drescherjm at gmail.com> wrote:
> On Thu, Dec 4, 2008 at 2:32 PM, ryan patterson <ryan.goat at gmail.com> wrote:
>> Furthermore hyperthreading is not a gimmick like you are saying.
>> Hyperthreading is very useful in systems that spend a lot of time near
>> 100% CPU usage. It is not useful for systems that sit idle most of
>> the time and only want maximum performance in short bursts. In
>> summary, for 99.9% of home users hyperthreading is not useful. But
>> for 99.9% of the computational problems that get solved on computers
>> hyperthreading is useful.
> Hyperthreading was designed to make use of the excessively long
> pipeline in PIV chips. With these chips the pipeline stalled
> frequently because of branch mispredictions. During stalls the
> processor basically is not executing new instructions so this leads to
> inefficiency. So a clever trick would be to add a second set of
> registers and make use of the free slots in the pipeline during these
> stalls. In PIV this resulted in a -10% to 50% improvement when HT was
> enabled. Core2 shortened the pipeline (and thus the cpu stalled less
> frequently) so that HT would not be efficient. I am not sure what I7
> did since it does not have the long pipeline of the PIV.
You are getting close in your description but you still have some
major flaws in your understanding of HT. Hyperthreading has nothing
to do with out of order execution (OoOE). Hyperthreading is used
accrost different independent threads. OoOE simply reorders the
instructions in a single thread.
Also a long instruction pipeline does not mean the CPU stalls more
frequenty. It simply means that it takes longer to recover each time
a stall does happen. The longer the pipeline the longer the latency
before instructions start being completed after a stall. The branch
predictor determines how often the CPU stalls.
Furthermore CPU stalls are not the only time hyperthreading is used.
It would be a worthless technology if it only helped out when the CPU
stalled. Hyperthreading is used whenever the primary thread leaves
unused execution units that the secondary thread can use. Only intel
would know the statistics, but I would bet this is where most of
hyperthreading's benefit come from.
More information about the mythtv-users