On Tue, 8 Mar 2005 21:35:55 +0000, Brian J. Beesley
<[EMAIL PROTECTED]> wrote:

> The overhead is internal to the processor, it shows up in the fact that the
> Prescott P4 CPUs (with hyperthreading) have greater iteration times than
> Northwood P4 CPUs (without hyperthreading) running at the same clock
> frequency. Even with hyperthreading disabled! ISTR this is because of longer
> instruction pipelines therefore a greater loss of cycles when a branch is
> guessed incorrectly

Yes, Prescotts have longer pipelines and do have greater iteration
times than Northwood.  What I am saying is that if you take a Prescott
with HT enabled, it will have greater iteration times as the exact
same CPU with HT disabled.  The pipeline length is the same in both
cases, so there is obviously other overhead at work to manage multiple
threads.

> Eh? It's those cycles wasted by prefetch failures which are potentially
> available to the "hyperthreaded" process. Nothing is lost. Hyperthreaded CPUs
> are NOT dual core...

Sorry, I should have been more specific.  I meant to say if your
application is not multi-threaded then it will not take advantage of
the HT capabilities.  That is what I meant when I said "optimized for
HT".

> Sure. Two threads competing for one set of resources. Repeat after me,
> hyperthreading is NOT DUAL CORE technology! If your parallel code is assuming
> that all four CPUs are the same - as opposed to four virtual processors
> running in two physical cores - then it's very likely going to cripple itself
> by making completely wrong assumptions about the symmetry of resource
> availability.

Thanks Brian, I know HT != dual core.  I am saying that when I run my
parallel code with the affinity of the two threads set to the two
physical processors, it runs much faster when HT is disabled than when
it is enabled.  There are no other applications running on the machine
(except regular OS housekeeping).  Again, there is obviously some
overhead in managing HT if I see such a big difference in performance
when my software is only running on the physical processors and not
the virtual ones.

Repeat after me, hyperthreading increases the overhead of processing
on the same CPU when enabled considering the length of the pipeline is
the same.

Jeff.
_______________________________________________
Prime mailing list
[email protected]
http://hogranch.com/mailman/listinfo/prime

Reply via email to