MSI
Temel bir ön bellek tutarlılığı protokolü olan MSI protokolü çoklu işlemci sistemlerinde çalışır. Diğer ön bellek tutarlılığı protokollerinde olduğu gibi, protokol isminin baş harfleri ön bellek satırının bulunabileceği olası durumların İngilizce isimlerini söyler. Dolayısıyla, MSI için, ön bellekte bulunan her öbek olası üç durumdan birinde olabilir:
- M - Modified (değiştirilmiş): Öbek ön bellekte değiştirilmiştir, dolayısıyla ön bellekteki veri ana bellekteki veriyle uyumlu değildir. Bir öbeğe "M" durumunda sahip olan ön bellek, 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 ön belleklerin en az birinde bulunmaktadır. Ön bellek ana belleğe yazmadan öbeği tahliye edebilir.
- I - Invalid (geçersiz): Bu öbek geçersizdir ve geçersiz olduğu ön belleğin bağlı olduğu işlemcinin bu öbeği kullanabilmesi için, bu öbeğin ana bellekten veya bir başka ön bellekten getirilmesi gerekir.
Bu tutarlılık durumları, ön bellekler ile ana bellek arasındaki iletişim yoluyla korunur. Öbekler okunduğunda veya yazıldığında ya da başka ön belleklerin okuma veya yazma istekleri öğrenildiğinde, ön belleklerin farklı sorumlulukları vardır.
“M” veya “S” durumundaki bir öbeğe bağlı olduğu işlemciden okuma isteği ulaştığında ön bellek veriyi sağlar. Eğer öbek ön bellekte değilse (“I” durumunda), öbeğin bir başka ön bellekte “M” durumunda olmadığından emin olması gerekir. Bu durumu farklı ön bellek 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 ön belleklere yayılır (broadcast). Diğer bir ön bellek mimarisi ise dizinlerdir (directories). Dizin mekanizmasında her öbeğin hangi ön belleklerde ve durumda olduklarını bilen dizin kaydı vardır. Öbek ön bellekte değilken (“I” durumunda) işlemcisinden okuma isteği gelirse ve bir başka ön bellek öbeğe “M” durumunda sahipse, “M” durumundaki ön bellek 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 ön bellek öbeği ana bellekten alır ve “S” durumuna geçer.
“M” durumundaki bir ön belleğe bağlı olduğu işlemciden yazma isteği gelirse, ön bellek 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, ön belleğin, başka ön belleklerin de öbeğe “S” durumunda sahip olma ihtimali bulunduğundan bu isteği bildirmesi gerekir ki diğer ön bellekler 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 ön bellekte öbek mevcut değilse (“I” durumu), ön belleğin öbeğe “S” veya “M” durumunda sahip olan diğer ön belleklere yazma niyetini bilgilendirmesi gerekir. Bu ön bellekler öbek kopyasına “S” durumunda sahiplerse kopyalarını geçersizleştirsinler. Ancak “M” durumunda sahipse ana belleğe ve/veya istekte bulunan ön belleğe öbeği gönderir. Yazmayı yapan işlemciye bağlı ön bellek sonuçta “M” durumuna geçer.
Bu protokol SGI 4D makinesinde kullanılmıştır.