IBM 610 workstation computer 3453
this is somewhat dependent on the traditional spin-lock approach to global system lock. this was almost totally eliminated with the VAMPS bounce lock approach (reducing the cost of having lock contention) and moving some very selective kernel pieces outside the global system lock (reducing the probability of lock contention). misc. recent bounce lock post
IBM 610 workstation computer 3456
Keith The point that you are missing is that *I have seen them fail.* BAH may have too. Modern instruction sets containing index...
part of the bounce lock benefit was a extremely high performance light-weight deferred end mechanism specifically designed around asyncronous serialization of the global lock use. part of the benefit of the given the processors and the cache sizes of the period ... if there was existing code executing in the kernel and there was additional request for kernel end ... when the current processor finished it kernel work, it would check if there was additional work for the kernel. this would then tend to be resumed on the processor that was already executing in the kernel ... and you would tend to get some cache affinity and reuse of kernel cache lines (improving overall cache hit rate and peak end rate).
the spin-lock approach not only can loose a lot of cpu cycles in the spin ... but the processor acquiring the kernel lock would then typically have high cache miss rate as kernel lines were loaded into the cache of the newly acquiring processor.
IBM 610 workstation computer 3454
KR Williams I will describe a machine I was programming in 1993. The main processor was an Intel 8080 which controlled the...
IBM 610 workstation computer 3455
On Sat, 25 Feb 2006 02:24:30 +0000, Andrew Swallow They work when you have more than one CPU too. This is a point that both you anBAH...
there was a lot of smp overhead later introduced ... not directly with lock contention itself ... but overhead of effectively trying to break what had been a single thread of work into two pieces of work that can be executed concurrently on two separate processors. a lot of overhead was additional cpu signalling trying to get another processor to pick up the dynamically split of new piece of work ... allowing the current processor to return to executing the virtual machine. then there was some serialization that had to occur when the two pieces had to come back into sync.