Hacker News new | past | comments | ask | show | jobs | submit login
Cache coherency primer (2014) (fgiesen.wordpress.com)
83 points by swah on July 14, 2016 | hide | past | favorite | 6 comments



The moral of the story for software developers is to be aware of false sharing and cache line bouncing when writing multithreaded code.

Seemingly innocent code like this will most likely cause completely unnecessary inter-core traffic (assuming that the compiler has laid out a and b adjacently, and they both fall within the boundaries of a single cache line):

    unsigned a, b;

    void thread_a(void) {
        for (;;) a++;
    }

    void thread_b(void) {
        for (;;) b++;
    }


I don't know almost anything about hardware but that was very well written and easy to follow. A pleasure to read.


If you are more interested, Appendix C of "Is Parallel Programming Hard, And, If So, What Can You Do About It?" by Paul McKenney (http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/p...) provides a very detailed description as well. It really helped improve my understanding of how memory barriers and atomics work



Thanks! :) Gonna add this to the list of books I need to read.


It was very helpful for me as well - I saw cache optimization mentioned in these C++ gamedev talks but wasn't quite grasping the issues.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: