Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: But, Re: Questions re P4 3.03 with HT ??

Author: Jeremiah Penery

Date: 17:33:34 12/10/02

Go up one level in this thread


On December 10, 2002 at 20:18:16, Robert Hyatt wrote:

>On December 10, 2002 at 20:12:06, Jeremiah Penery wrote:
>
>>On December 10, 2002 at 20:00:11, Robert Hyatt wrote:
>>
>>>On December 10, 2002 at 16:43:29, Matt Taylor wrote:
>>>
>>>>They said that HT allows -concurrent- scheduling of threads, but the threads
>>>>obviously cannot make use of the same execution resources. If this is correct,
>>>>one thread would be spinning (consuming bandwidth to the L1 cache) while the
>>>>other thread was doing real work.
>>>
>>>Again, think about what you just said, which is impossible to happen.  If one
>>>thread is smoking the L1/L2 cache, then it is not waiting for _anything_ and
>>>once it is scheduled it will execute until the cpu decides to flip to the other
>>>thread.  Or until that thread does a pause.  Whichever comes first.
>>
>>The point is that the spinning thread blocks no execution units.  The processor
>>can spin the idle thread all it wants, why should that stop it from scheduling
>>the second thread, which _will_ use the execution units, to run at the same
>>time?
>
>
>I don't follow.  The "spinning thread" completely fills the integer pipe...

Processors have more than one integer pipe, and I'm sure that a spinning thread
doesn't fill more than one.  In a P4, which has dual-pumped ALUs, a spinning
thread wouldn't even block a single pipe.  That is, if the scheduler were smart
enough to schedule other thread(s) to fill that unit.

>The cpu doesn't execute two threads at a time, it flips and flops back and
>forth between them.  The spinning thread will _never_ give up control and has
>to be either preempted by the cpu, or else it has to do a pause, as explained
>in the intel white-paper on the subject...
>
>Otherwise the pause would _not_ be needed...

What's the point of hyper-threading if two threads don't run at the same time?
Yeah, sure, you can execute while one thread waits on memory or something, but
it's certainly not the most efficient use.  All the documentation I've seen
suggests that if one thread is using, say, half the integer pipes, that another
thread can be scheduled concurrently to use the other half of the pipes.



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.