Ben Ellis wrote: > from the few articles I've read on hyperthreading (in partilcular this one > http://msdn.microsoft.com/en-us/magazine/cc300701.aspx). Each logical core > can have two concurrent instruction streams and if one is waiting for a > resource (i.e. either in use by another thread or accessing the main > memory) then the other instruction stream continues while the first stream > is blocked.
> But because I use independent board states for each thread and the total > memory used is less than my L3 cache size, none of my threads wait long for > access to main memory or contend with each other so they don't easily give > up control to the second stream. The two streams don't really 'give up control' to each other; they both run at once. A modern Intel processor can in principle execute something like four operations per cycle, and in each cycle they can be a mixture of the two streams. So it doesn't take anything nearly as 'heavy' as an access to main memory to mean that you can get value from the second stream. Even an access to L1 cache takes 4 cycles to complete, and if the following instructions depend on the value being read then the processor won't be doing anything else from that stream until the read completes. And even if there are no reads from memory at all, it's pretty rare that the processor can find enough parallel work to get close to keeping four-ish execution units busy from only one instruction stream. The main reasons why in practice you often don't get value from hyperthreading are that the two threads are having to share the L1 and L2 caches, and they also share the resources for instruction fetch and decode (which can turn out to be a bottleneck disappointingly frequently). As long as you're doing light playouts you shouldn't have to worry about the L3 cache; everything should fit very comfortably in L2 (and quite possibly in L1, though I don't know what the CLR overhead is like). -M- _______________________________________________ Computer-go mailing list [email protected] http://dvandva.org/cgi-bin/mailman/listinfo/computer-go
