MSI

**MSI** protokolü temel bir önbellek tutarlılığı protokolü olup, çoklu işlemci sistemlerinde çalışır. Diğer önbellek tutarlılığı protokollerinde olduğu gibi, protokol isminin baş harfleri önbellek satırının bulunabileceği olası durumların İngilizce isimlerini söyler. .MSI dosya uzantılı bir dosya bir Windows Installer Paketi dosyasıdır. MSI için, önbellekte bulunan her öbek olası üç durumdan birinde olabilir:

* **M** - Modified (değiştirilmiş): Öbek değiştirilmiştir, dolayısıyla önbellekteki veri ana bellekteki veriyle uyumlu değildir. Bir öbeğe "M" durumunda sahip olan önbellek, bu öbek tahliye edileceği zaman onu ana belleğe yazmakla sorumludur.
* **S** - Shared (paylaşımda): Bu öbek değiştirilmemiştir ve diğer önbelleklerin en az birinde bulunmaktadır. Önbellek ana belleğe yazmadan öbeği tahliye edebilir.
* **I** - Invalid (geçersiz): Bu öbek geçersizdir ve geçersiz olduğu önbelleğin bağlı olduğu işlemcinin bu öbeği kullanabilmesi için, bu öbeğin ana bellekten veya bir başka önbellekten getirilmesi gerekir.

Bu tutarlılık durumları, önbellekler ile ana bellek arasındaki iletişim yoluyla korunur. Öbekler okunduğunda veya yazıldığında ya da başka önbelleklerin okuma veya yazma istekleri öğrenildiğinde, önbelleklerin farklı sorumlulukları vardır.

“M” veya “S” durumundaki bir öbeğe bağlı olduğu işlemciden okuma isteği ulaştığında önbellek veriyi sağlar. Eğer öbek önbellekte değilse (“I” durumunda), öbeğin bir başka önbellekte “M” durumunda olmadığından emin olması gerekir. Bu durumu farklı önbellek mimarileri farklı şekilde halleder. Örneğin, veriyolu mimariler genellikle gözetleme (snooping) mekanizmasını kullanır. Gözetleme yönteminde okuma isteği bütün önbelleklere yayılır (broadcast). Diğer bir önbellek mimarisi ise dizinlerdir (directories). Dizin mekanizmasında her öbeğin hangi önbelleklerde ve durumda olduklarını bilen dizin kaydı vardır. Öbek önbellekte değilken (“I” durumunda) işlemcisinden okuma isteği gelirse ve bir başka önbellek öbeğe “M” durumunda sahipse, “M” durumundaki önbellek veriyi ana belleğe yazmak ve “S” ya da “I” durumuna geçmek zorundadır. “M” öbeği ana belleğe geri yazıldığında, istekte bulunan önbellek öbeği ana bellekten alır ve “S” durumuna geçer.

“M” durumundaki bir önbelleğe bağlı olduğu işlemciden yazma isteği gelirse, önbellek veri yoluna hiçbir şey yollamasına gerek olmaksızın, yerel olarak öbeğe yazabilir. İşlemcisinden yazma isteği geldiğinde öbek “S” durumundaysa, önbelleğin, başka önbelleklerin de öbeğe “S” durumunda sahip olma ihtimali bulunduğundan bu isteği bildirmesi gerekir ki diğer önbellekler kendilerinde bulunan kopyaların artık geçersiz olduğunu bilsinler. Bu bilgilendirme de, mimariye göre, gözetleme veya dizin yöntemiyle gerçekleşebilir. Bilgilendirme sonrası yazma işlemi gerçekleşir. İşlemcisinden yazma isteği gelen önbellekte öbek mevcut değilse (“I” durumu), önbelleğin öbeğe S" veya “M” durumunda sahip olan diğer önbelleklere yazma  niyetini bilgilendirmesi gerekir. Bu önbellekler öbek kopyasına “S” durumunda sahiplerse kopyalarını geçersizleştirsinler. Ancak “M” durumunda sahipse ana belleğe ve/veya istekte bulunan önbelleğe öbeği gönderir. Yazmayı yapan işlemciye bağlı önbellek sonuçta “M” durumuna geçer.

Bu protokol SGI 4D makinesinde kullanılmıştır.

## Kaynakça