False Sharing

Dalam sebuah sistem multiprocessor terdapat sebuah masalah yang disebut dengan false sharing [1]. Masalah false sharing terjadi ketika terdapat beberapa proses atau thread dari prosesor yang berbeda yang memodifikasi variabel-variabel yang terdapat pada cache line yang sama. Ilustrasi untuk kasus false sharing pada SMP dengan dua prosesor diberikan oleh gambar di bawah ini [2]:

False cache line sharing dalam SMP

Di dalam gambar tersebut, terdapat dua thread, thread 0 dan thread 1, pada prosesor yang berbeda, CPU 0 dan CPU 1. Masing-masing thread memodifikasi variabel yang berbeda tetapi terdapat pada satu cache line. Ketika variabel pada CPU 0 berubah, cache line pada CPU 1 dianggap outdated. Begitu pula ketika variabel pada CPU 1 berubah, cache line pada CPU 0 dianggap outdated. Pada prosesor Intel, ketika ada cache line yang outdated, cache line tersebut akan diganti dengan cache line yang lebih baru yang terdapat pada memori utama. Terlihat bahwa setiap terjadi perubahan variabel menimbulkan akses ke memori utama. Akses ke memori utama memiliki latensi yang besar sehingga kondisi false sharing akan meningkatkan delay.

Referensi:

[1] Sae-eung, S. (2010). Analysis of False Cache Line Sharing Effects on Multicore CPUs.

[2] http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads