Memiliki dua proses p1 & p2 masing-masing berjalan pada core yang berbeda katakanlah c1 & c2 (kedua core berada pada prosesor fisik yang sama). Kedua core ini memiliki cache L1 & L2 yang berbeda saat berbagi cache L3 yang sama. Baik p1 & p2 menggunakan pointer ptr (ptr berada di memori bersama). Proses p1 menginisialisasi ptr & p2 seharusnya hanya menggunakannya. Menghadapi crash di p2 karena melihat ptr sebagai 'NULL' pada awalnya (meskipun setelah beberapa waktu, mungkin karena koherensi cache, nilai ptr yang benar terlihat oleh p2). Saya memiliki pertanyaan berikut terkait dengan ini:

  1. Bagaimana situasi di atas bisa muncul (p2 melihat nilai nol ptr), meskipun beberapa bentuk protokol koherensi cache akan digunakan?
  2. Dalam hal arsitektur bus/memori bersama, prosesor yang berbeda (pada soket yang berbeda) biasanya mengikuti protokol pengintaian bus untuk koherensi cache. Saya ingin tahu protokol koherensi cache apa yang diikuti jika dua core (kedua core pada prosesor fisik yang sama) memiliki cache l1/l2 pribadi mereka saat berbagi cache l3 umum.
  3. Apakah ada cara untuk memeriksa protokol koherensi cache apa yang digunakan (ini untuk sistem ubuntu 16.04)?
0
mezda 17 April 2020, 16:17

1 menjawab

Jawaban Terbaik