Author: Matt Taylor
Date: 18:03:13 12/10/02
Go up one level in this thread
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
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.