Anda di halaman 1dari 7

KOHERENSI CACHE DAN PROTOKOL MESI

Dalam sistem multiprosesor kontemporer, biasanya memiliki satu atau dua tingkat cache yang
terkait dengan setiap prosesor. Organisasi ini sangat penting untuk dicapai kinerja yang wajar.
Namun, hal itu menciptakan masalah yang dikenal sebagai cache. masalah koherensi. Inti dari
masalahnya adalah ini: Beberapa salinan sama data dapat ada di berbagai cache secara
bersamaan, dan jika prosesor diizinkan untuk memperbarui salinan mereka sendiri secara bebas,
tampilan memori yang tidak konsisten dapat terjadi. Di Bab 4 kita mendefinisikan dua kebijakan
penulisan umum:

• Tulis kembali: Operasi penulisan biasanya dibuat hanya untuk cache. Memori utama hanya
dimutakhirkan ketika garis cache yang sesuai dihapus dari cache.

• Write through: Semua operasi penulisan dibuat ke memori utama dan juga ke cache,
memastikan bahwa memori utama selalu valid.

Jelas bahwa kebijakan balas dendam dapat mengakibatkan ketidakkonsistenan. Jika dua
cache berisi baris yang sama, dan baris diperbarui dalam satu cache, cache lainnya akan tanpa
sadar memiliki nilai yang tidak valid. Selanjutnya membaca ke jalur produksi yang tidak valid
hasil tidak valid. Bahkan dengan kebijakan write-through, ketidakkonsistenan dapat terjadi
kecuali cache lainnya memantau lalu lintas memori atau menerima pemberitahuan langsung dari
memperbarui.

Pada bagian ini, kami akan secara singkat mensurvei berbagai pendekatan untuk
koherensi cache masalah dan kemudian fokus pada pendekatan yang paling banyak digunakan:
MESI (dimodifikasi / eksklusif / dibagi / tidak valid) protokol. Versi protokol ini digunakan pada
implementasi Pentium 4 dan PowerPC.

Untuk setiap protokol koherensi cache, tujuannya adalah untuk membiarkan lokal yang
baru saja digunakan variabel masuk ke cache yang sesuai dan tetap di sana melalui banyak
membaca dan menulis, saat menggunakan protokol untuk menjaga konsistensi dari variabel
bersama yang mungkin berada di beberapa cache sekaligus. Pendekatan koherensi cache
umumnya telah dibagi menjadi pendekatan perangkat lunak dan perangkat keras. Beberapa
implementasi mengadopsi strategi yang melibatkan elemen perangkat lunak dan perangkat keras.
Namun demikian,klasifikasi ke dalam pendekatan perangkat lunak dan perangkat keras masih
bersifat instruktif dan umumnya digunakan dalam mensurvei strategi koherensi cache.

Solusi Perangkat Lunak


Skema koherensi cache perangkat lunak berupaya menghindari kebutuhan akan
perangkat keras tambahan sirkuit dan logika dengan mengandalkan kompiler dan sistem operasi
untuk menghadapinya masalah. Pendekatan perangkat lunak menarik karena overhead
mendeteksi potensi masalah ditransfer dari run time ke waktu kompilasi, dan desain
kompleksitas ditransfer dari perangkat keras ke perangkat lunak.
Di sisi lain, kompilasi pendekatan perangkat lunak umumnya harus membuat keputusan
konservatif, yang mengarah ke pemanfaatan cache yang tidak efisien. Mekanisme koherensi
berbasis kompiler melakukan analisis pada kode untuk menentukan item data mana yang
mungkin menjadi tidak aman untuk caching, dan mereka menandainya item yang sesuai. Sistem
operasi atau perangkat keras kemudian mencegah noncacheable item dari di-cache.

Pendekatan yang paling sederhana adalah untuk mencegah variabel data yang dibagi di-
cache Ini terlalu konservatif, karena struktur data bersama mungkin eksklusif digunakan selama
beberapa periode dan mungkin hanya dapat dibaca secara efektif selama periode lainnya.

Pendekatan yang lebih efisien menganalisis kode untuk menentukan periode aman
untuk variabel bersama. Kompiler kemudian memasukkan instruksi ke dalam kode yang
dihasilkan untuk menegakkan koherensi cache selama periode kritis. Sejumlah teknik telah
dikembangkan untuk melakukan analisis dan untuk menegakkan hasil; Lihat [LILJ93] dan
[STEN90] untuk survei.

Solusi Perangkat Keras


Solusi berbasis perangkat keras umumnya disebut sebagai protokol koherensi cache.
Solusi ini memberikan pengakuan dinamis pada saat run time potensi inkonsistensi kondisi.
Karena masalahnya hanya ditangani ketika itu benar-benar muncul, di sana adalah penggunaan
cache yang lebih efektif, yang mengarah pada peningkatan kinerja dibandingkan perangkat lunak
pendekatan.

Selain itu, pendekatan ini transparan bagi programmer dan kompiler, mengurangi
beban pengembangan perangkat lunak. Skema perangkat keras berbeda dalam sejumlah hal,
termasuk di mana keadaannya informasi tentang jalur data diadakan, bagaimana informasi itu
diatur, di mana koherensi ditegakkan, dan mekanisme penegakannya. Secara umum, skema
perangkat keras dapat dibagi menjadi dua kategori: protokol direktori dan protokol snoopy.

PROTOKOL DIREKTORI Protokol direktori mengumpulkan dan memelihara


informasi tentang di mana salinan garis berada. Biasanya, ada pengontrol terpusat bagian dari
pengontrol memori utama, dan direktori yang disimpan di memori utama. Direktori tersebut
berisi informasi keadaan global tentang konten berbagai cache lokal. Ketika pengontrol cache
individu membuat permintaan, terpusat Pengontrol memeriksa dan mengeluarkan perintah yang
diperlukan untuk transfer data memori dan cache atau di antara cache. Itu juga bertanggung
jawab untuk menjaga negara informasi terkini; Oleh karena itu, setiap tindakan lokal yang dapat
mempengaruhi negara global garis harus dilaporkan ke pengontrol pusat.

Biasanya, pengontrol menyimpan informasi tentang prosesor yang dimiliki salinan


garis mana. Sebelum prosesor dapat menulis ke salinan lokal dari sebuah baris, itu harus
meminta akses eksklusif ke saluran dari controller. Sebelum memberikan ini akses eksklusif,
controller mengirim pesan ke semua prosesor dengan cache salinan baris ini, memaksa setiap
prosesor untuk membatalkan salinannya.
Setelah menerima terima kasih kembali dari masing-masing prosesor tersebut,
controller memberikan eksklusif akses ke prosesor yang meminta. Ketika prosesor lain mencoba
membaca baris yang secara eksklusif diberikan kepada prosesor lain, itu akan mengirim
pemberitahuan kehilangan ke controller. Pengontrol kemudian mengeluarkan perintah untuk
memegang prosesor baris yang mengharuskan prosesor untuk melakukan tulis kembali ke
memori utama. Itu baris sekarang dapat dibagi untuk dibaca oleh prosesor asli dan permintaan
prosesor Skema direktori menderita dari kelemahan dari kemacetan pusat dan overhead
komunikasi antara berbagai pengontrol cache dan pusat pengontrol. Namun, mereka efektif
dalam sistem skala besar yang melibatkan banyak bus atau skema interkoneksi kompleks
lainnya.

PROTOKOL SNOOPY Protokol snoopy mendistribusikan tanggung jawab untuk


menjaga koherensi cache di antara semua pengontrol cache di multiprosesor. Cache harus
mengenali kapan garis yang dipegangnya dibagikan dengan cache lainnya.

Ketika tindakan pembaruan dilakukan pada baris cache bersama, itu harus diumumkan
ke semua cache lainnya dengan mekanisme siaran. Setiap pengontrol cache dapat melakukannya
“Mengintip” di jaringan untuk mengamati notifikasi yang disiarkan ini, dan bereaksi demikian.
Protokol Snoopy idealnya cocok untuk multiprosesor berbasis bus, karena bus bersama
menyediakan sarana sederhana untuk penyiaran dan pengintaian. Namun, karena salah satu
tujuan dari penggunaan cache lokal adalah untuk menghindari akses bus, perawatan harus
diambil bahwa peningkatan lalu lintas bus yang diperlukan untuk penyiaran dan pengintaian
tidak membatalkan keuntungan dari penggunaan cache lokal. Dua pendekatan dasar untuk
protokol snoopy telah dieksplorasi: write invalidate dan menulis pembaruan (atau menulis
siaran).

Dengan protokol write-invalidate, di sana dapat terdiri dari beberapa pembaca tetapi
hanya satu penulis pada satu waktu. Awalnya, sebuah garis dapat dibagikan di antara beberapa
cache untuk tujuan membaca. Ketika salah satu dari cache ingin melakukan menulis ke baris,
pertama-tama mengeluarkan pemberitahuan yang membatalkan baris itu di baris lain cache,
membuat baris eksklusif untuk cache penulisan. Setelah garis eksklusif, maka memiliki prosesor
dapat membuat penulisan lokal yang murah sampai beberapa prosesor lain membutuhkannya
baris yang sama.

Tidak satu pun dari kedua pendekatan ini yang lebih unggul dari yang lain dalam
semua keadaan.Kinerja tergantung pada jumlah cache lokal dan pola memori membaca dan
menulis. Beberapa sistem menerapkan protokol adaptif yang digunakan baik mekanisme write-
invalidate maupun write-update.

Pendekatan write-invalidate adalah yang paling banyak digunakan dalam multiprosesor


komersial sistem, seperti Pentium 4 dan PowerPC. Itu menandai keadaan setiap orang garis
cache (menggunakan dua bit tambahan dalam tag cache) sebagai diubah, eksklusif, dibagikan,
atau tidak valid Untuk alasan ini, protokol write-invalidate disebut MESI. Sisanya pada bagian
ini, kita akan melihat penggunaannya di antara cache lokal di sebuah multiprosesor. Untuk
mempermudah dalam presentasi, kami tidak memeriksa mekanisme yang terlibat dalam
mengoordinasi antara level 1 dan level 2 secara lokal serta pada saat yang sama koordinasi lintas
multiprosesor yang didistribusikan. Ini tidak akan menambah yang baru prinsip tetapi akan
sangat menyulitkan diskusi.

Protokol MESI
Untuk memberikan konsistensi cache pada SMP, cache data seringkali mendukung protokol
dikenal sebagai MESI. Untuk MESI, cache data mencakup dua bit status per tag, sehingga
setiap baris dapat dalam satu dari empat negara:
• Dimodifikasi: Baris dalam cache telah dimodifikasi (berbeda dari utama
memori) dan hanya tersedia di cache ini.
• Eksklusif: Baris dalam cache sama dengan yang ada di memori utama dan tidak
hadir dalam cache lainnya.
• Dibagi-pakai: Baris dalam cache sama dengan yang ada di memori utama dan mungkin
hadir dalam cache lain.
• Tidak Valid: Baris dalam cache tidak berisi data yang valid.

Tabel 17.1 merangkum arti dari empat negara. Gambar 17.6 menampilkan a
diagram keadaan untuk protokol MESI. Ingatlah bahwa setiap baris cache memiliki bit state-nya
sendiri dan karenanya realisasi dari diagram state-nya sendiri. Gambar 17.6a menunjukkan
transisi yang terjadi karena tindakan yang diprakarsai oleh prosesor yang terpasang ke cache ini.
Gambar 17.6b menunjukkan transisi yang terjadi karena peristiwa yang sedang terjadi
mengintai di bus umum. Presentasi diagram keadaan terpisah ini untuk prosesor- tindakan yang
diprakarsai dan diprakarsai bus membantu untuk memperjelas logika protokol MESI.
Kapan saja garis cache berada dalam satu keadaan. Jika acara selanjutnya dari terlampir
prosesor, maka transisi ditentukan oleh Gambar 17.6a dan jika acara berikutnya adalah dari bus,
transisi ditentukan oleh Gambar 17.6b. Mari kita lihat transisi ini lebih detail.

BACA LEWATKAN Ketika terjadi kesalahan baca dalam cache lokal, prosesor
memulai a memori baca untuk membaca garis memori utama yang berisi alamat yang hilang. Itu
Prosesor memasukkan sinyal pada bus yang memberitahukan semua unit prosesor / cache
lainnya mengintip transaksi. Ada sejumlah hasil yang mungkin:

• Jika satu cache lainnya memiliki salinan bersih (tidak dimodifikasi sejak dibaca dari memori)
baris dalam keadaan eksklusif, ia mengembalikan sinyal yang menunjukkan bahwa ia berbagi ini
baris. Prosesor yang merespons kemudian mentransisikan status salinannya dari eksklusif untuk
dibagikan, dan prosesor yang memulai membaca baris dari memori utama dan mentransisikan
baris dalam cache dari yang tidak valid ke yang dibagikan.
• Jika satu atau lebih cache memiliki salinan baris yang bersih dalam status bersama, masing-
masing mereka memberi sinyal bahwa ia berbagi garis. Prosesor yang memulai membaca baris
dan mentransisikan baris dalam cache dari tidak sah menjadi dibagikan.
• Jika satu cache lain memiliki salinan yang dimodifikasi dari baris, maka cache itu memblokir
memori membaca dan menyediakan baris ke cache yang meminta melalui shared bis. Cache
yang merespons kemudian mengubah jalurnya dari diubah menjadi dibagikan.1 baris yang
dikirim ke cache yang meminta juga diterima dan diproses oleh memori controller, yang
menyimpan blok dalam memori.
• Jika tidak ada cache lain yang memiliki salinan baris (bersih atau diubah), maka tidak ada
sinyal dikembalikan. Prosesor yang memulai membaca garis dan mentransisikan garis di
dalamnya cache dari tidak valid ke eksklusif.

BACA HIT Ketika hit baca terjadi pada baris yang saat ini ada di cache lokal, the
Prosesor hanya membaca item yang diperlukan. Tidak ada perubahan negara: Negara tetap
dimodifikasi, dibagikan, atau eksklusif.

MENULIS LEWATKAN Ketika terjadi kesalahan penulisan di cache lokal, prosesor


memulai a memori baca untuk membaca garis memori utama yang berisi alamat yang hilang.
Untuk tujuan ini, prosesor mengeluarkan sinyal pada bus yang berarti baca-dengan-niat ubah
(RWITM). Ketika garis dimuat, segera ditandai dimodifikasi. Sehubungan dengan cache lain,
dua skenario yang mungkin mendahului pemuatan baris data.

Pertama, beberapa cache lain mungkin memiliki salinan baris ini yang dimodifikasi
(status = modifikasi). Dalam hal ini, prosesor yang diperingatkan memberi sinyal prosesor yang
memulai prosesor yang lain memiliki salinan baris yang dimodifikasi. Prosesor yang memulai
menyerahkan bus dan menunggu. Prosesor lain mendapatkan akses ke bus, menulis cache yang
dimodifikasi.

kembali ke memori utama, dan mengubah status jalur cache menjadi tidak valid (karena
prosesor yang memulai akan memodifikasi baris ini).

Selanjutnya, memulai prosesor lagi akan mengeluarkan sinyal ke bus RWITM dan
kemudian membaca baris dari memori utama, modifikasi baris di cache, dan tandai baris di
keadaan yang dimodifikasi. Skenario kedua adalah bahwa tidak ada cache lain yang memiliki
salinan yang dimodifikasi dari yang diminta baris. Dalam hal ini, tidak ada sinyal yang
dikembalikan, dan prosesor yang memulai mulai membaca di baris dan memodifikasinya.
Sementara itu, jika satu atau lebih cache memiliki salinan bersih dari baris dalam status bersama,
masing-masing cache membuat salinannya tidak valid, dan jika satu cache memiliki salinan garis
yang bersih dalam status eksklusif, salinannya tidak valid.

MENULIS HIT Ketika hit menulis terjadi pada baris saat ini di cache lokal, efeknya
tergantung pada kondisi saat itu dari baris itu di cache lokal:

• Dibagi-pakai: Sebelum melakukan pembaruan, prosesor harus mendapatkan kepemilikan


eksklusif dari garis. Prosesor menandakan niatnya di bus. Setiap prosesor
yang memiliki salinan baris bersama dalam cache-nya mentransisikan sektor dari yang dibagikan
menjadi tidak valid. Prosesor yang memulai kemudian melakukan pembaruan dan transisi
salinannya dari baris dari dibagikan ke dimodifikasi.
• Eksklusif: Prosesor sudah memiliki kontrol eksklusif pada baris ini, dan demikianlah halnya
cukup melakukan pembaruan dan mentransisikan salinan jalurnya dari eksklusif untuk
dimodifikasi.
• Dimodifikasi: Prosesor sudah memiliki kontrol eksklusif atas baris ini dan memiliki baris
ditandai sebagai dimodifikasi, dan hanya melakukan pembaruan.

L1-L2 CACHE CONSISTENCY Kami sejauh ini menggambarkan protokol koherensi


cache dalam hal aktivitas kerjasama antara cache yang terhubung ke bus yang sama atau fasilitas
interkoneksi SMP lainnya. Biasanya, cache ini adalah cache L2, dan masing-masing Prosesor
juga memiliki cache L1 yang tidak terhubung langsung ke bus dan itu karena itu tidak dapat
terlibat dalam protokol snoopy. Jadi, beberapa skema diperlukan untuk itu menjaga integritas
data di kedua level cache dan di semua cache di SMP konfigurasi.

Strateginya adalah memperluas protokol MESI (atau protokol koherensi cache apa pun)
ke cache L1. Dengan demikian, setiap baris dalam cache L1 termasuk bit untuk menunjukkan
negara. Intinya, tujuannya adalah sebagai berikut: untuk setiap baris yang ada di keduanya L2
cache dan L1 cache yang sesuai, status garis L1 harus melacak status garis L2. Cara sederhana
untuk melakukan ini adalah untuk mengadopsi kebijakan write-through di Internet L1 cache;
dalam hal ini write through adalah untuk L2 cache dan bukan ke memori. Kebijakan L1 write-
through memaksa setiap modifikasi ke jalur L1 ke L2 cache dan karenanya membuatnya terlihat
oleh cache L2 lainnya. Penggunaan L1 ditulis melalui
kebijakan mensyaratkan bahwa konten L1 harus merupakan bagian dari konten L2. Ini pada
gilirannya menunjukkan bahwa asosiatif cache L2 harus sama atau lebih besar daripada asosiasi
L1. Kebijakan menulis L1 digunakan dalam IBM
S / 390 SMP.

Jika cache L1 memiliki kebijakan write-back, hubungan antara kedua cache lebih
kompleks. Ada beberapa pendekatan untuk menjaga koherensi. Untuk contoh, pendekatan yang
digunakan pada Pentium II dijelaskan secara rinci dalam [SHAN05].

Anda mungkin juga menyukai