Computer Chess Club Archives


Search

Terms

Messages

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

Author: Robert Hyatt

Date: 18:14:33 12/10/02

Go up one level in this thread


On December 10, 2002 at 21:03:13, Matt Taylor wrote:

>On December 10, 2002 at 20:33:34, Jeremiah Penery wrote:
>
>>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.
>
>That was my understanding, too, but I honestly don't remember when I read about
>HT. It was back around the 1 GHz war, that's for sure.
>
>Dr. Hyatt -- can you give a reference to the whitepaper? I would like to
>double-check something recent.
>
>-Matt


I will try to do so later tonight.  All I have here is my laptop...

I'll try to at least post a few links later...




This page took 0 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.