MESI Durum Diyagramı.MESI protokolünün aktivite diyagramı. "Main mem." (Ana bellek) işlemci mimarisine bağlı olarak "L2 ön belleği" olarak değiştirilebilir.
Aynı zamanda *Illinois protokolü* olarak da bilinen **MESI protokolü** yaygın olarak kullanılan bir ön bellek tutarlılığı protokolüdür. Intel'in Pentium işlemcilerinde kullanılan ön belleklerde verimliliği artırmak için kullanılmıştır.

Durumlar
--------

MESI protokolünde her ön bellek satırı (ek iki bitle kodlanmış olarak) aşağıdaki dört durumdan birisinde olarak belirtilir:

* **M** - Modified (Değiştirilmiş): Verinin son hali yalnızca ilgili ön bellekte tutulmaktadır ve bu nedenle *kirli* olarak tanımlanır. Saklanan veri ana bellekteki veriden farklıdır. Verinin yeniden ana bellekten okunmasından önce ilgili ön bellek satırının ana belleğe geri yazılması gerekir.
* **E** - Exclusive(Özel): İlgili ön bellek satırının verinin son durumunu tuttuğunu gösterir. Saklanan veri ana bellekteki veriyle aynıdır ve bu durumda verinin *temiz* olarak tanımlanır.
* **S** - Shared (Paylaşımda): İlgili ön bellek satırının aynı makinedeki başka ön belleklerde de saklanıyor olabileceğini gösterir.
* **I** - Invalid (Geçersiz): Ön bellek satırının geçersiz olduğunu gösterir.

Çalışma mantığı
---------------

Tipik bir sistemde çok sayıda ön bellek ana belleğe giden ortak bir veri yolunu paylaşırlar. Aynı zamanda her birinin bağlı olduğu okuma ve yazma isteklerinde bulunan bir işlemci vardır. Ön belleklerin ortak amacı paylaşılan ana belleğin kullanımını minimize etmektir.

Bir ön bellek geçersiz ("I"-Invalid) dışındaki her durumda okuma isteğini karşılar. "I" durumundaki bir ön bellek satırının ise okuma isteğini karşılamak için veriyi getirmesi gerekir. Veriyi getirdiğinde ise "S" ya da "E" durumuna geçer.

Yazma isteği ise ancak ön bellek satırı değiştirilmiş ("M"-Modified) veya özel ("E"-Exclusive) durumunda ise karşılanabilir. Paylaşımda ("S"-Shared) durumunda olan bir ön bellek satırına yazma isteği gelirse, önce diğer ön belleklerdeki kopyaların geçersizleştirilmesi gerekir. Bu genellikle yazma isteğini diğer ön belleklere yayarak yapılır.

Bir ön bellek değiştirilmemiş bir satırı istediği zaman atabilir ve "I" durumuna geçer. "M" durumunda yani değiştirilmiş bir satır ise atılmadan önce ana belleğe geri yazılmalıdır.

Bir satırı "M" durumunda tutan bir ön bellek, ana belleğe diğer ön bellekler tarafından yapılan okuma isteklerini cevaplamak için gözetlemelidir (snoop). Bu genellikle okuma isteğini erteletmek, sonra da veriyi ana belleğe yazarak durumu "S"ye çevirmek şeklinde yapılır.

Bir satırı "S" durumunda tutan bir ön bellek başka ön belleklerden gelen geçersizleştirme veya yazma isteklerini dinlemeli ve bu takdirde satırı geçersiz ("I" durumu) yapmalıdır.

Bir satırı "E" durumunda tutan bir ön bellek de diğer ön belleklerden gelen okuma isteklerini gözetlemelidir, ve bu takdirde satırı "S" durumuna değiştirmelidir.

"M" ve "E" durumundaki satıra sahip ön bellek, satırın sahibi durumundadır. "S" durumundaki satıra sahip ön bellek ise bir başka ön bellek "S" satırını atsa ve satırın tek sahibi olsa dahi "E" durumuna yükselemez.

### Sahiplik isteği

*Sahiplik isteği* (Request for Ownership) veya *Özel okuma isteği*(Read Exclusive) ön bellek tutarlılığı protokollerinde okuma ve geçersizleştirme isteklerinin birleşimi olan bir işlemdir. Bu işlem "I" durumundaki bir ön bellek satırına yazmaya çalışan bir işlemci tarafından yapılır. Bu işlem diğer ön belleklerdeki kopyalarını "I" durumuna değiştirir. Bu işlem veriyi ön belleğe getirir ve diğer ön belleklerdeki kopyaları geçersizleştirir.

Kaynakça
--------

Dış bağlantılar
---------------

* İnteraktif bir MESI simulasyonu(İngilizce)3 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.
* M. S. Papamarcos and J. H. Patel, "A low-overhead coherence solution for multiprocessors with private cache memories," Proc. 11th Annual Int. Symp. on Computer Architecture, pp. 348–354, June 1984. (This is where Illinois Cache Protocol was first published).