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.