File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ _id : d3ef2c20-8d5c-11f0-b11d-51afb330cee9
2+ _parent : ' https://travisdowns.github.io/blog/2020/07/06/concurrency-costs.html'
3+ replying_to_uid : ' '
4+ message : >-
5+ Hi Travis! I am not sure why it took me quite this long to find this, but I
6+ am very happy that I finally ran across it. The prototypical example that I
7+ developed when I was working on tightly-coupled accelerators at AMD was a
8+ "single-producer, single-consumer" scenario where the "data" (typically
9+ contained inside a single cache line) was protected by a "flag" in a different
10+ cache line -- as described in
11+ https://sites.utexas.edu/jdm4372/2016/11/22/some-notes-on-producerconsumer-communication-in-cached-processors/.
12+ This seems like special-case variant of your "Level 2: True Sharing" case,
13+ which avoids locking instructions while maintaining the same functionality. I
14+ absolutely agree that reasoning about concurrency is hard and prone to errors
15+ and I often keep a copy of Edward Lee's dictum "[...] non-trivial
16+ multi-threaded programs are incomprehensible to humans" posted on the wall in
17+ my office. I think that way forward is more explicit control over causal
18+ dependency (which humans reason about fairly well), but that is a much bigger
19+ topic....
20+ name : John D. McCalpin
21+ email : 663374c47c17d463c5e2f63166c9ec99
22+ hp : ' '
23+ date : 1757409028
You can’t perform that action at this time.
0 commit comments