Apa Itu Berbagi Palsu?

Berbagi palsu adalah situasi yang dapat terjadi dalam program komputer ketika dua aplikasi yang berjalan secara bersamaan mencoba mengakses informasi di wilayah memori logis yang sama yang disimpan oleh setiap program atau proses dalam cache-nya sendiri. Data di setiap cache aplikasi disalin dari sumber yang sama, jadi memodifikasi satu cache menyebabkan cache lainnya harus dimuat ulang dari sumbernya. Aspek palsu dari berbagi muncul ketika perubahan yang dibuat pada baris cache oleh satu program tidak benar-benar mempengaruhi data yang digunakan program kedua, dalam hal ini memaksa cache untuk dimuat ulang adalah pemborosan sumber daya sistem dan dapat berdampak negatif. kinerja program. Masalah berbagi palsu sulit dideteksi, karena ini bukan akibat langsung dari kode apa pun yang terkandung dalam aplikasi, meskipun ada cara efektif untuk mencegah berbagi palsu, seperti memindahkan data yang saat ini berada di baris yang di-cache ke baris yang terpisah. .

Salah satu alasan utama mengapa berbagi palsu dapat terjadi ditemukan dalam bagaimana sistem operasi atau perangkat keras menangani membaca dan menulis data. Ketika informasi dari hard disk atau sumber lain sedang dibaca atau ditulis oleh suatu program, biasanya dimuat ke dalam cache sementara sehingga dapat diakses dengan cepat. Jumlah informasi yang di-cache dari lokasi sumber disebut cache line dan merupakan blok logis dari memori yang biasanya panjangnya antara 2 byte dan 256 byte. Di bawah beberapa sistem operasi atau arsitektur sistem, program dapat berjalan pada saat yang sama, seperti dalam pemrosesan paralel. Ini berarti ada kemungkinan bagi dua program terpisah untuk mencoba mengakses informasi dalam baris cache yang sama, sehingga setiap program akan memiliki salinan data sumbernya sendiri, yang berpotensi menyebabkan perubahan dalam satu cache tidak tercermin dalam cache lainnya, membatalkan validasi data yang dipegangnya.

Ada sejumlah mekanisme yang digunakan untuk menangani situasi ketika dua program mencoba mengakses baris cache yang sama, tetapi hasilnya paling sering adalah bahwa satu program dipaksa untuk memuat ulang cache-nya dengan informasi terbaru yang telah dimodifikasi oleh program lain. Jenis insiden ini dikenal sebagai berbagi palsu ketika data di dalam saluran cache yang diakses setiap program tidak terkait, jadi memaksa satu program untuk memuat ulang cache adalah pemborosan daya pemrosesan dan sumber daya lainnya. Ini paling sering merupakan masalah bagi program yang tidak akan pernah mengubah informasi dalam cache-nya, sehingga tidak ada risiko aplikasi menimpa perubahan yang telah dibuat oleh proses lain.

Ada dua cara umum untuk mencegah atau mengurangi efek dari berbagi palsu. Yang pertama adalah menambahkan informasi kosong sebelum atau sesudah data dalam memori, pada dasarnya memaksanya menjadi baris cache terpisah yang tidak sedang diakses oleh program lain. Metode kedua adalah membatasi frekuensi membaca dan menulis ke baris cache sehingga memuat ulang sesedikit mungkin. Solusi yang lebih kompleks melibatkan manajemen tingkat cache atau bahkan perubahan pada cara sistem operasi menangani berbagi.