MOESI
MOESI diğer ön bellek tutarlılığı protokollerinin çoğunda kullanılan durumları kapsayan tam bir protokoldür. Yaygın olan dört yaygın MESI durumları yanında, bu protokolde beşinci bir "Sahip (Owned)" durumu mevcuttur ki hem değiştirilmiş hem de paylaşılan veriyi ifade eder. Bu değiştirilmiş veriyi paylaşmadan önce ana belleğe geri yazma ihtiyacını ortadan kaldırır. Neticede veri yine de ana belleğe yazılmak zorunda olsa da, bu yazma ertelenmiş olur.
AMD64 Architecture Programmer's Manual Vol 2 'System Programming',[1] dokümanında anlatıldığı üzere, her ön bellek satırı (öbeği) beş durumdan birinde bulunur:
- M - Modified (değiştirilmiş): "M" durumundaki bir ön bellek öbeği güncel kopyaya sahiptir. Ana bellekteki kopyası güncel değildir ve başka hiçbir ön bellek geçerli bir kopyaya sahip değildir. Bu durumda sahip olunan veri ilgili işlemci tarafından yerel olarak değiştirilebilir. Ön bellek satırı, değişiklikleri ana belleğe geri yazarak "E" durumuna geçirilebilir. "M" durumundaki ön bellek satırına sahip ön bellek isteklere cevap vermek zorundadır.
- O - Owned (sahip): "O" durumundaki bir ön bellek satırı güncel kopyaya sahiptir. "O" durumu, başka ön belleklerin de güncel kopyaya sahip olabilmesinden dolayı "S" durumuna benzerlik gösterir. Ana bellekteki kopya güncel değildir. Tüm ön belleklerde yalnızca bir tane ön bellek, veriye "O" durumunda sahip olabilir, güncel veriye sahip diğerleri ancak "S" durumunda bulunabilir. Ön bellek satırı diğer paylaşanları geçersizleştirerek "M" durumuna geçiş yapabilir ve satırda değişiklik yapabilir, ya da değişiklikleri ana belleğe geri yazarak "S" durumunda geçiş yapabilir. "O" durumundaki ön bellek satırına sahip ön bellek isteklere cevap vermek zorundadır.
- E - Exclusive (özel): "E" durumundaki bir ön bellek satırı güncel kopyaya sahiptir. Ana bellekteki kopya da günceldir ama başka hiçbir ön bellekte kopya yoktur. Ön bellek satırına "E" durumunda sahip olan ön bellek istediğinde veriyi yerel olarak değiştirerek (yazarak) "M" durumuna geçebilir; bu geçiş sırasında veriyolundan bilgi yollamak zorunda değildir. Yine ön bellek istediğinde veriyi geçersizleştirebilir ("I" durumuna geçebilir). "E" durumundaki ön bellek satırına sahip olan ön bellek isteklere cevap verebilir.
- S - Shared (paylaşımda): "S" durumundaki bir ön bellek satırı güncel kopyaya sahiptir. Diğer ön bellekler de verinin kopyasını "S" durumunda tutuyor olabilirler. Eğer veriye "O" durumunda sahip olan bir ön bellek varsa ana bellekteki kopya geçersizdir, aksi takdirde ana bellekteki kopya da günceldir. Bu durumdaki ön bellek satırı diğer paylaşımcıları geçersizleştirerek "E" durumuna geçebilir, veya istenildiği zaman ön bellekten atılabilir ("I" durumuna geçiş). "S" durumundaki ön bellek satırına sahip olan ön bellek isteklere bazı MOESI uygulamalarında cevap verebilir.
- I - Invalid (geçersiz): "I" durumundaki bir ön bellek satırı verinin geçerli bir kopyasına sahip değildir. Geçerli veri ana bellekte ya da başka ön belleklerde bulunabilir.
MESI protokolünün daha geniş bir versiyonu olan bu protokol, bir başka ön bellek okuma isteğinde bulunduğunda değiştirilmiş veriyi ana belleğe geri yazma ihtiyacını ortadan kaldırır. Ana belleğe geri yazmak yerine, "O" durumu ön belleğin değiştirilmiş verinin doğrudan istekte bulunan ön belleğe verilmesini sağlar. İletişim gecikmesi ve bant genişliği ön bellekler arasında (ön bellek-ana bellek arasındakine göre) daha iyiyse çok daha faydalıdır.