Daha önceki yazılarda cache coherence nedir üzerinde durmuştuk.Bu yazıda da önbelleklerin birbirleriyle olan veri iletişimini kontrol etmek için geliştirilen protokollerin genel özelliklerinden ve içerdikleri durumlardan bahsedeceğim.Bu protokollere bağlı olarak bir cache veriyi değiştirmek istediği zaman diğer cachelere duruma göre istek göndermektedir ve verinin değiştiğini diğer önbelleklere bildirmektedir. Bu şekilde veri güncel bir şekilde tutulup ana bellekteki bilgiyle tutarlılığı sağlanmaktadır.
Yazan: Nuran Bahar
MSI Protocol: MSI protokolü mikroişlemci mimarilerinde kullanılan temel bir cache coherence protokolüdür. Diğer protokollerde olduğu gibi bu protokolün isminin baş harfleri de cache line’deki her durum için bir şeyi ifade etmektedir.MSI protokolü için cache içerisindeki her blok aşağıdaki üç duruma sahip olabilir:
M: (Modified) Cache içerisindeki blok değiştirilebilir yeniden düzenlenebilir. M durumuna sahip bir bloğu bulunan cache blok yazma hakkına sahiptir.
S: (Shared) Bu blok değiştirilemez ve her cache içerisinde asgari olarak bulunur. Cache veriyi yazmadan backing store’a tahliye ettirebilir.
I: (Invalid) Bu blok geçersizdir ve hafızadan fetch edilmelidir veya eğer blok başka bir cache üzerinde saklanmaktaysa o cacheden de fetch edilebilir.
Bir okuma isteği M veya S durumunu içeren bloğa ulaştığı zaman, cache datayı sağlar. Eğer blok cache içinde değilse yani I durumunda ise, line’ın herhangi diğer bir cachedeki M durumunda olduğunu doğrulamalıdır. Farklı caching mimarileri bu farklılığı tutarlar. Örneğin bus mimarileri sıklıkla snooping tekniğini yerine getirirler.
Eğer başka bir cache M durumuna sahipse o blok veriye bağlı olarak tekrar backing store’a geri yazılmalıdır, S ve I durumuna gitmelidir.
M durumuna sahip bir bloklu cache’e yazma isteği ulaştığı zaman, cache veriyi yeniden düzenler. Eğer block S durumuna sahipse cache diğer cacheleri o bölgenin değiştiğine dair uyarmalıdır. Bu uyarı snooping mesajıyla veya tanımlanmış bir dizinle uyarmalıdır.
Bu protokol SGI 4D makinelerinde kullanılmıştır. Birçok sistem MSI protokolünün değişkenlerini kullanmıştır. Böylece bus trafiğinin yoğunluğunun azaltılması amaçlanmıştır.
MESI Protocol: Bu protokol Illinois protokolü olarak da bilinmektedir. Önbellek tutarlılığı yani cache coherency için sık kullanılan bir protokoldür. İlk defa Intel’in Pentium işlemcilerinde önbelleklerdeki performansın, verimin artması için kullanılmıştır.
MESI protokolü de MIS’te olduğu gibi baş harfleriyle bazı durumları ifade etmektedir. Bu protokole göre her önbellek satırı (ek iki bitle kodlanmış olarak) şu durumlarla ifade edilir:
M: (Modified) Değiştirilmiş anlamına gelmektedir. Verinin güncellenmiş en son hali yalnızca ilgili cache de bulundurulur. Saklanan data anabellekteki veriden farklıdır. Verinin anabellekten yeniden okunmasından önce ilgili cache satırının memory’e tekrar yazılması gerekmektedir. Ana bellekteki veriyle saklanan data aynı olmadığı için “kirli” olarak anılır.
E: (Exclusive) ilgili cache bloğunun ilgili satırındaki verinin son durumunu sakladığını gösterir. Saklanan bilgi ana bellektekiyle aynıdır bu yüzden temiz olarak tanımlanır.
S: (Shared) Paylaşımda anlamına gelmektedir. İlgili cache satırının aynı makinada başka cachelerde de saklanıyor veya tutuluyor olabileceğini gösterir.
I: (Invalid) Geçersiz anlamına gelmektedir. Cache satırının geçersiz olduğunu belirtir.
MOSI Protocol: Temel MSI cache coherency protokolünün geliştirilmiş hali olduğu söylenebilir. Ayrıca diğerine ek olarak “O” durumu bulunmaktadır. İşlemdeki işlemcinin bu bloğa sahip olduğunu belirtir. Owned yani sahip kelimesinden gelmektedir. Ayrıca bu blok için diğer işlemcilerden gelen isteklere hizmet vermektedir.
MOESI Protocol: Diğer protokollerde kullanılan tüm olası durumları kapsayan tüm bir cache coherency protokolüdür. MESI protokolündeki dört durumla ortak olmak üzere ek olarak beşinci bir durum olan “Owned” durumuna sahiptir.
MERSI Protocol: Bu protokol hafıza ve cache tutarlılığı için PowerPc G4 tarafından kullanılan bir protokoldür. Modified,Exclusive, Read Only or Recent, Shared ve Invalid olmak üzere beş tane durumu içermektedir. M,E,S ve I drumları MESI protokolündeki durumlar ile aynıdır. R durumu da E durumuyla benzerlik göstermektedir. E durumundan farklı olarak işlemci başlangıçta R durumundaki cache satırına istek göndermeyi gerektirmektedir. Bu da işlemci cache satırını değiştirmeden ve M durumuna geçişten önce yapılır. MESI ve MERSI protokollerinde aynı olmak üzere E durumundan M durumuna geçiş sessiz yani etkisiz gerçekleşmektedir.
MESIF Protocol: Cache ve hafıza tutarlılığı için Intel tarafından geliştirilen bu protokol “cache coherent nonuniform memory” mimarileri için düzenlenmiştir. Modified,Exclusive, Shared, Invalid ve Forward olmak üzere beş tane durumdana oluşmaktadır. M,E,S,I durumları MESI protokolüyle aynıdır. F durumu bir cache’in herhangi bir verilen satıra gönderilen istekler için belirlenmiş bir cevap veren olarak davranmasını belirtir. MESIF protokolünü barındıran önbellekli bir sistemde , bir önbellek satırı sadece F durumundaki satırı tutan bir önbellek tarafından cevaplanmak üzere bir istek gönderebilir.