Memory Consistency vs Cache Coherence

16

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?

Ayrat
sumber
2
Perhatikan bahwa kami tidak menyukai pertanyaan dalam formulir "silakan periksa jawaban saya!". Bisakah Anda menambahkan pertanyaan yang lebih spesifik? Di mana Anda merasa kesenjangan Anda bisa?
Raphael
@ Raphael Anda benar, dan rasanya tidak enak ketika saya menulis pertanyaan. Tetapi apa yang harus dilakukan jika saya tidak dapat menemukan jawaban di Internet (kecuali klaim yang tidak jelas seperti 'koherensi berbicara tentang satu bit, yang berbeda dari konsistensi yang berbicara tentang semua bit'), dan kemudian mencoba mencari jawaban, dan ketika tampaknya untuk menemukan itu tidak yakin apakah itu benar. Haruskah saya mengajukan pertanyaan mencurigakan? Atau tidak memberikan jawaban dalam pertanyaan? :)
Ayrat
@Ayrat, saya membaca bagian terakhir dari pertanyaan Anda sebagai jawaban yang ingin Anda periksa. Jika itu masalahnya, harus ada keraguan (yang lain, mengapa bertanya?) Yang harus Anda tunjukkan untuk pembaca. Mungkin saya salah baca?
Raphael
@ Raphael 'bagian terakhir ingin diperiksa' - ya. 'kenapa bertanya?' - topiknya baru, dan saya tidak yakin kesimpulannya benar. Saya akan mencoba untuk menghindari pertanyaan semacam ini di masa depan dan mungkin menemukan seseorang di sekitar untuk memeriksanya.)
Ayrat

Jawaban:

9

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:

xx

xyx0y0xyxyyx

Ini dapat menyebabkan hasil yang mengejutkan. Sebagai contoh

initially A=B=0
process 1               process 2
store A := 1            load B (gets 1)
store B := 1            load A (gets 0) 

Jejak ini koheren:

  • untuk A urutannya adalah: proc2 loads A(gets 0),proc1 stores A:=1
  • untuk B urutannya adalah: proc1 stores B:=1,proc2 loads B(gets 1)

Tetapi itu tidak konsisten! Karena jika proc2 load Bpengembalian 1, maka proc1 store A := 1sudah terjadi dan proc2 load Aseharusnya juga mengembalikan 1.

Logika Pengembaraan
sumber