Y Wr X Rd T Wr T Rd Y Wr Y ... Rd X Wr Y ... Thread 1 Thread 2 Conflict! Undetected Race Exception Delivered Here Synchronization-Free Regions Monday, May 28, 2012
Y Wr X Rd T Wr T Rd Y Wr Y ... Rd X Wr Y ... Thread 1 Thread 2 Conflict! Undetected Race Exception Delivered Here Synchronization-Free Regions Precisely detect only races that can effect consistency The Guarantee: Exception-Thrown? There was a data-race. Exception-Free? Sequential Consistency. Ignoring unimportant races is key to performance Monday, May 28, 2012
legal Granularity independence Rd Y Wr X Acquire(K) Release(K) Wr64_Low X Wr64_Hi X Exception-Free executions are SC Acq(K) Rel(K) Rd X Wr X Acq(K) Rel(K) Rd X Wr X ✓ Monday, May 28, 2012
Rd X Wr X Acq(L) Rd X ! All races have some exceptional schedule Exception Handling: Log + Recover Damage Control: Shut down buggy module Monday, May 28, 2012
T Acquire(K) Release(K) BeginRegion EndRegion BeginRegion EndRegion New Instructions: BeginRegion and EndRegion Synchronization Operations are Singleton Regions Exceptions Thrown Precisely Before Conflicting Instruction Monday, May 28, 2012
N-byte Cache Line N-bit Access Bits Local Read Local Write Remote Read Remote Write Exception Test: compare appropriate local and remote bits Line-level Supplied Bit Monday, May 28, 2012
Reply Local Write Bits Remote Write Bits V CPU 1 CPU 2 Write/Invalidate Invalidate Ack Local Write Bits Local Read Bits Read Coherence Actions Write Coherence Actions Monday, May 28, 2012
Reply Local Write Bits Remote Write Bits V CPU 1 CPU 2 Write/Invalidate Invalidate Ack Local Write Bits Local Read Bits Read Coherence Actions Write Coherence Actions Monday, May 28, 2012
Bits Local Read Bits End-Of-Region Message Ending a Region Address For all supplied lines... Clears Remote Bits Specified in EOR Msg End-Of-Region Ack Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Rd Req Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Rd Reply Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup EoR Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Invalidate Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Inv Ack Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Monday, May 28, 2012
RR RW CPU 1’s Cache Wr A A B C D A B C D A B C D A B C D CPU 2’s Cache CPU 1’s Code Rd C CPU 2’s Code BeginRegion BeginRegion EndRegion BeginRegion Wr C Sup Sup Exception! Monday, May 28, 2012
Table 1 Local Table 2 Global Table Per-thread local table tracks evicted accessed addresses Per-process global table stores evicted lines’ access bits EoR messages for regions with evictions are expensive Global Table Ptr Global Table Ptr Local Table Ptr Local Table Ptr Monday, May 28, 2012
cluster canneal x264 freqm ine Apache blackscholes M ySQ L M ean % In-Memory Acc Bit Lookups Costly access bit lookups are very infrequent - 1.5% in the worst case Monday, May 28, 2012