20Aug
Jika Anda baru mulai mempelajari bagaimana CPU multi-core, caching, koherensi cache, dan karya memori, mungkin agak membingungkan pada awalnya. Dengan pemikiran tersebut, Q & SuperUser terbaru memiliki jawaban atas pertanyaan pembaca yang penasaran.
Pertanyaan Hari Ini &Sesi jawaban datang kepada kami atas izin SuperUser - subdivisi dari Stack Exchange, pengelompokan berbasis komunitas dari Q & A situs web.
Pertanyaan
Pembaca superuser CarmeloS ingin tahu kapan cache CPU diputar kembali ke memori utama:
Jika saya memiliki CPU dengan dua core dan masing-masing inti memiliki cache L1-nya sendiri, mungkinkah Core1 dan Core2 keduanya cache sama.bagian dari memori pada saat bersamaan? Jika mungkin, berapakah nilai memori utama jika kedua Core1 dan Core2 telah mengedit nilainya dalam cache?
Kapan cache CPU diputar kembali ke memori utama?
Jawaban
Kontributor SuperUser David Schwartz, sleske, dan Kimberly W memiliki jawaban untuk kita. Pertama, David Schwartz:
Jika saya memiliki CPU dengan dua core dan masing-masing inti memiliki cache L1-nya sendiri, mungkinkah Core1 dan Core2 keduanya menyimpan bagian memori yang sama pada saat bersamaan?
Ya, kinerja akan sangat buruk jika tidak demikian. Pertimbangkan dua benang yang menjalankan kode yang sama. Anda ingin kode itu di kedua cache L1.
Jika mungkin, berapakah nilai memori utama jika kedua Core1 dan Core2 telah mengedit nilainya dalam cache?
Nilai lama akan berada di memori utama, yang tidak masalah karena tidak ada inti yang membacanya. Sebelum mendepak nilai yang dimodifikasi dari cache, itu harus ditulis ke memori. Biasanya, beberapa varian protokol MESI digunakan. Dalam penerapan tradisional MESI, jika sebuah nilai dimodifikasi dalam satu cache, maka tidak dapat hadir sama sekali dalam cache lain pada tingkat yang sama.
Diikuti oleh jawaban dari sleske:
Ya, memiliki dua cache cache wilayah memori yang sama bisa terjadi dan sebenarnya adalah masalah yang banyak terjadi dalam praktek. Ada berbagai solusi, misalnya:
- Dua cache dapat berkomunikasi untuk memastikan mereka tidak setuju dengan
- Anda dapat memiliki semacam supervisor yang memonitor semua cache dan memperbaruinya sesuai dengan
- Setiap prosesor memonitor area memori yang telah di-cache, danketika mendeteksi sebuah tulisan, ini akan membuang tembolok( sekarang tidak berlaku)
Masalahnya disebut koherensi cache dan artikel Wikipedia mengenai topik ini memiliki gambaran bagus tentang masalah dan solusi yang mungkin terjadi.
Dan jawaban terakhir kami dari Kimberly W:
Untuk menjawab pertanyaan di judul posting Anda, itu tergantung pada protokol caching apa. Jika sudah write back, cache hanya akan diputar kembali ke memori utama saat pengendali cache tidak punya pilihan selain meletakkan blok cache baru di ruang yang sudah ditempati. Blok yang sebelumnya menempati ruang dihapus dan nilainya ditulis kembali ke memori utama.
Protokol lainnya adalah write-through. Dalam hal ini, setiap kali blok cache ditulis pada level n , blok yang sesuai pada level n + 1 diperbarui. Hal ini serupa dalam konsep untuk mengisi formulir dengan kertas karbon di bawahnya;apa pun yang Anda tulis di atas akan disalin pada lembar di bawah ini. Ini lebih lambat karena jelas melibatkan lebih banyak operasi penulisan, namun nilai antara cache lebih konsisten. Dalam skema write-back, hanya cache tingkat tertinggi yang memiliki nilai paling up-to-date untuk blok memori tertentu.
Punya sesuatu untuk ditambahkan ke penjelasan? Terdengar dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange tech-savvy lainnya? Simak thread diskusi selengkapnya disini.
Image Credit: Lemsipmatt( Flickr)