vulcan hardware support for detecting sequential
play

Vulcan: Hardware Support for Detecting Sequential Consistency - PowerPoint PPT Presentation

Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically Abdullah Muzahid , Shanxiang Qi , and Josep Torrellas University of Illinois at Urbana-Champaign http://iacoma.cs.uiuc.edu MICRO December 2012 Sequential


  1. Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically Abdullah Muzahid , Shanxiang Qi , and Josep Torrellas University of Illinois at Urbana-Champaign http://iacoma.cs.uiuc.edu MICRO December 2012

  2. Sequential Consistency (SC) PA PB A0 A0 A0: x =1 A1 B0 A1: y =1 B0 A1 B0: p = y B1 B1 B1: t = x • In SC, memory accesses: • Appear atomic • Have a total global order • For each thread, follow program order 2 Josep Torrellas Vulcan: Detecting SC Violations

  3. Sequential Consistency Violation (SCV) • SCV: access reorder that does not conform to SC • Machines support relaxed models, not SC • Machines may induce SC violations (SCV) initially x=y=0 In SC, if p=1 then t=1 PA PB A1 A0: x =1 B0 A1: y =1 B1 B0: p = y p is 1 A0 t is 0 B1: t = x Very unintuitive bug 3 Josep Torrellas Vulcan: Detecting SC Violations

  4. Example of SCV T1 T2 buf = malloc(...) init = true if (init) ... = buf[...] Crash!! 4 Josep Torrellas Vulcan: Detecting SC Violations

  5. When Can an SCV Occur? • Two or more data races overlap • They create a cycle PA PB PA PB A0: x =1 A0: ref(x) B0: ref(y) fence fence A1: y =1 A1: ref(y) B1: ref(x) B0: p =y B1: t = x 5 Josep Torrellas Vulcan: Detecting SC Violations

  6. Why Detecting SCVs is Important? • Programmers assume SC – SCV is almost always a bug: unexpected interleaving – Single-stepping debuggers cannot reproduce the bug • Causes portability problems (e.g. Intel TBB) – Code may not work across machines • Lock-free data structures sometimes explicitly use races but rely on SC – Traditional data race detectors won’t work • Around 18% of reported races can cause SCV (see paper) 6 Josep Torrellas Vulcan: Detecting SC Violations

  7. Proposal: Vulcan • Detects SCVs in relaxed consistency machines in highly precise manner • No false positives; no false negatives • Provides info to debugger to debug SCV • No SW changes; only use executable; negligible execution overhead • Idea: Use HW to detect cycles of inter-thread dependences at runtime • Approach: • Use the cache coherence protocol to dynamically record dependences • Interrupt the processor when a cycle is about to occur 7 Josep Torrellas Vulcan: Detecting SC Violations

  8. Basic Algorithm P A P B P A P B Region R2: Should not be the destination B0 ref(y) ref(x) ref(y) of a dependence from Region R1 Region R1: Should not be the ref(y) ref(x) ref(y) source of a A0 dependence to Region R2 P A P B P A P B B1 Allowed B0 AD > A1 Source: AS < min(B0,B1) AS < B0 A0 Allowed B0 Destination: AD > max(A0,A1) A0 AS < B1 AD > A0 A1 8 Josep Torrellas Vulcan: Detecting SC Violations

  9. Hardware Structures P A P B 0 A0 B0 SN: Sequence Number 0 AS: Allowed Source AD: Allowed Destination 1 A1 1 B1 N: # of processors N -1 9 Josep Torrellas Vulcan: Detecting SC Violations

  10. P A P B Hardware Checks A i B j P A P B 1 Request Action at producer 2 Action at consumer 3 Send SN Ai If (SN <= AD [P ]) Ai Bj A If (SN >= AS [P ]) Bj Ai B Ai Bj exception exception Else Else AS[P ] of Bj and earlier = A AD[P ] of Ai and later = B min[curr_value, SN ] Ai max[curr_value, SN ] Bj All cases: Send response + SN Bj 10 Josep Torrellas Vulcan: Detecting SC Violations

  11. Safe Accesses • An access is Safe when it cannot cause an SCV anymore • The access and all its predecessors are performed and • All of disallowed destinations (in all the other procs) are performed P A P B B1 A1 Josep Torrellas 11 Vulcan: Detecting SC Violations

  12. SC Violations and Safe Accesses • When an SCV occurs the following must be true: • In the two arrows that form the cycle, the source reference is Unsafe wrt the destination processor 12 Josep Torrellas Vulcan: Detecting SC Violations

  13. How Long to Keep Metadata? • Keep metadata as long as the access can participate in an SCV • Keep metadata for Unsafe accesses only Unsafe accesses = Pending + Disallowed_destinations_not_perf • Store metadata in a per-processor SC Violation Queue (SCVQ) • Contains address + SN + AD[] + AS[], not data 13 Josep Torrellas Vulcan: Detecting SC Violations

  14. Detecting Dependences and Cycles: Single Word Cache Line • Inter-thread dependence induces a coherence bus transaction • Bus transaction searches the SCVQs of other processors • If hit, src and dst references exchange SN and run the Vulcan algorithm P A P B rd RAW wr Same for WAW, WAR 14 Josep Torrellas Vulcan: Detecting SC Violations

  15. SC Violation Queue (SCVQ) • Keeps Vulcan metadata for Unsafe local load/stores • Need efficient search; cannot rely on cache snooper • Counting bloom filter to minimize useless SCVQ lookups Josep Torrellas 15 Vulcan: Detecting SC Violations

  16. Detecting Dependences and Cycles: Multiword Cache Line P A P B rd3 See Paper for Details wr2 rd4 wr1 • When the destination reference of an inter-thread dependence occurs… • Either coherence protocol triggers a coherence bus transaction • Or Vulcan forces a metadata update bus access • Implementation: Vulcan adds V-State per byte in each line • Tracks whether the latest dependence on that word has already been recorded • If not recorded when processor accesses the word, even if no coherence action, force a metadata bus access 16 Josep Torrellas Vulcan: Detecting SC Violations

  17. Issues With these constraints � No false positives, no false negatives • Advantages: • Detects actual SC violations, not data races • Works for any memory model • Low overhead • Limitations: • Race cycles involving only two processors (very large majority) • Not concerned with impact of compiler transformations on SCV 17 Josep Torrellas Vulcan: Detecting SC Violations

  18. Multicore Modeled Modeled a multicore chip with 8 processors • Core: Out of order, 2-issue width • RC memory model • Private L1, Shared L2 • Cache line size: 32 bytes • Byte-level V-State bits • SCVQ size: 256 entries PROGRAM DESCRIPTION Dekker Mutual exclusion Lazylist List-based concurrent set Concurrent Snark Non-blocking double-ended queue Algorithms Harris Non-blocking set Pthread from glibc Unwind code after canceling a thread Bug Crypt from glibc Small table initialization code Kernels DCL bug Kernel using double-checked locking Full Apps SPLASH-2 8 programs from SPLASH-2 18 Josep Torrellas Vulcan: Detecting SC Violations

  19. Vulcan Effectively Detects SCVs SC Violations Found Program Unique Total New? Dekker 1 224 Lazylist 1 150 Snark 1 1467 Harris 1 18 Pthread 2 142 Y Crypt 2 130 Y DCL 1 2 fmm (SPLASH2) 3 18 Y • Vulcan detects 3 new bugs in important codes (libraries) 19 Josep Torrellas Vulcan: Detecting SC Violations

  20. Example New Bug: Crypt Library Bug • Found a new SCV in a bug fix T1 T2 if (init == False) lock L if(init == False) tab[...] = ... if (init == True) fence = tab[...] init = True Crash!!! unlock L • Branch condition predicted TRUE although not TRUE • THEN code uses the old tab[] (wrong one) • Tab[] is updated • Branch prediction is later confirmed correct 20 Josep Torrellas Vulcan: Detecting SC Violations

  21. Overhead Exec App Overhead(%) fft 9.5 lu 3.6 radix 1.4 cholesky 9.0 ocean 12.3 raytrace 6.9 barnes 2.7 Traffic added: fmm 2.8 • 9% due to piggybacked avg 6.0 • 12% due to extra bus accesses Low overhead: OK for on-the-fly 21 Josep Torrellas Vulcan: Detecting SC Violations

  22. Also in the Paper • Full description of the protocol for multi-word cache lines • Information that a debugger would get after the exception • HW structure sizes and cost • Comparison to related work 22 Josep Torrellas Vulcan: Detecting SC Violations

  23. Conclusions • SCV bugs are arguably the hardest type of concurrency bugs • Vulcan is the first HW scheme to detect these bugs with high precision • No false positives; no false negatives • It has low execution overhead for on-the-fly deployment • 6% for 8-proc runs; 4.4% for 4-proc runs • It detects 3 previously unknown bugs in popular libraries Lots of work to do! 23 Josep Torrellas Vulcan: Detecting SC Violations

  24. Vulcan: Hardware Support for Detecting Sequential Consistency Violations Dynamically Abdullah Muzahid , Shanxiang Qi , and Josep Torrellas University of Illinois at Urbana-Champaign http://iacoma.cs.uiuc.edu MICRO December 2012

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend