When doing the first test, it is only a read. So there is no need for sending "exclusive read" message across the bus. This can better utilize the local cache on each processor.
pht
There are still no provisions for fairness because when each lock is realized, it's still a free-for-all competition on which processor has access to the lock next. Because of this, chances are there isn't a balance of lock acquisition opportunities distributed across the processors.
unparalleled
When the lock is released there is still a lot of traffic on the interconnect.
hzxa21
Why O(P^2) interconnect traffic?
Bye
@hzxa21 Note that interconnect traffic is defined as the total amount of traffic when all processor want to acquire the lock and successfully acquire it in succession. There will be O(P) invalidations after one lock release of one processor, thus O(P*P) invalidations after all processor acquired and released the lock.
dyzz
In the uncontended case we are doing an extra test since even if we were doing the standard test-and-set we would have succeeded the first time, thus not creating any unnecessary cache invalidations with the old method.
When doing the first test, it is only a read. So there is no need for sending "exclusive read" message across the bus. This can better utilize the local cache on each processor.
There are still no provisions for fairness because when each lock is realized, it's still a free-for-all competition on which processor has access to the lock next. Because of this, chances are there isn't a balance of lock acquisition opportunities distributed across the processors.
When the lock is released there is still a lot of traffic on the interconnect.
Why O(P^2) interconnect traffic?
@hzxa21 Note that interconnect traffic is defined as the total amount of traffic when all processor want to acquire the lock and successfully acquire it in succession. There will be O(P) invalidations after one lock release of one processor, thus O(P*P) invalidations after all processor acquired and released the lock.
In the uncontended case we are doing an extra test since even if we were doing the standard test-and-set we would have succeeded the first time, thus not creating any unnecessary cache invalidations with the old method.