Benarkah Konsistensi Berurutan adalah properti yang lebih kuat daripada Cache Coherence?
Berdasarkan
Sorin, Daniel J; Hill, Mark D; Wood, David A: Dasar-dasar Konsistensi Memori dan Cache Coherence , Morgan & Claypool, 2011
konsistensi berurutan dapat digambarkan sebagai (tidak secara formal):
Model memori konsistensi berurutan menentukan bahwa sistem harus muncul untuk mengeksekusi semua utas dan menyimpan ke semua lokasi memori dalam urutan total yang menghormati urutan program setiap utas. Setiap beban mendapat nilai dari toko terbaru dalam total pesanan itu.
Dengan kata lain, sistem konsisten secara berurutan, jika mengingat peristiwa memori (memuat dan menyimpan) dari setiap utas, kami dapat memesan semua peristiwa ini sedemikian rupa sehingga: 1) untuk setiap utas urutan acara-acaranya dipertahankan, dan 2) tatanan global adalah serial (semua beban mengembalikan nilai terbaru yang disimpan).
Sekarang mereka melanjutkan dan menggambarkan koherensi:
Definisi koherensi yang analog dengan definisi Sequential Consistency adalah bahwa sistem yang koheren harus muncul untuk mengeksekusi semua utas dan menyimpan ke satu lokasi memori tunggal dalam urutan total yang menghormati urutan program setiap utas.
Dengan kata lain, sistem ini koheren, jika peristiwa memori yang diberikan masing-masing utas untuk setiap lokasi kita dapat memesan acara untuk lokasi tersebut, seperti: 1) untuk setiap utas urutan acara untuk lokasi tersebut dipertahankan, dan 2) untuk masing-masing lokasi urutannya serial.
Akhirnya, mereka menunjukkan perbedaannya:
Definisi ini menyoroti perbedaan penting antara koherensi dan konsistensi : koherensi ditentukan berdasarkan lokasi per-memori, sedangkan konsistensi ditentukan berkenaan dengan semua lokasi memori.
Jadi tampaknya perbedaannya adalah bahwa untuk sistem yang koheren kita membutuhkan urutan total pada semua peristiwa untuk setiap lokasi (sehingga urutan antara peristiwa untuk lokasi tertentu), sedangkan untuk sistem yang konsisten urutan total harus didefinisikan pada semua peristiwa (dan dengan demikian pemesanan juga antar acara untuk lokasi yang berbeda)?
Apakah itu berarti bahwa koherensi kurang ketat dari konsistensi itu? (yang tampaknya lucu!) Apakah ada jejak yang koheren tetapi tidak konsisten?
Jawaban:
Seperti yang Anda tunjukkan, koherensi adalah properti dari lokasi memori individu sementara konsistensi mengacu pada urutan akses ke semua lokasi memori. Konsistensi berurutan adalah properti yang lebih kuat daripada koherensi. Yaitu: setiap sistem yang konsisten secara berurutan juga koheren di setiap lokasi memori. Sebaliknya tidak benar, memori yang koheren di setiap lokasi belum tentu konsisten secara berurutan. Bahkan, ada banyak multiprosesor cache-koheren nyata di mana model memori hanya konsisten lemah (ada kasus di mana prosesor yang berbeda mengamati akses ke lokasi yang berbeda terjadi dalam pesanan yang berbeda.)
Bukti konsisten berurutan menyiratkan koheren:
Ini dapat menyebabkan hasil yang mengejutkan. Sebagai contoh
Jejak ini koheren:
proc2 loads A(gets 0)
,proc1 stores A:=1
proc1 stores B:=1
,proc2 loads B(gets 1)
Tetapi itu tidak konsisten! Karena jika
proc2 load B
pengembalian 1, makaproc1 store A := 1
sudah terjadi danproc2 load A
seharusnya juga mengembalikan 1.sumber