Önbellek tutarlılığı, bir sistemin veri kümesine birden çok aracı tarafından erişildiğinde ve değiştirildiğinde ortaya çıkan doğal bir sorundur. Bunun bir problem haline geldiği bilgisayar mimarisinin birincil alanı çok işlemcili bilgisayarlardır. Çok işlemcili bir bilgisayardaki her işlemcinin, rasgele erişim belleğinden (RAM) bilgi yükleyen ve depolayan kendi önbelleği vardır. İki işlemci aynı bellek alanına eriştiğinde, bazı önlemler alınmazsa önbellek tutarlılığı kaybedilir.
Önbellek tutarlılığı olmadan, çok işlemcili bir sistem işlev göremez. Bu konuyu ele almak ve olası sorunlardan kaçınmak için geliştirilen birkaç yöntem vardır. Dizin tabanlı tutarlılık, göz kamaştırma ve snarfing, önbellek tutarlılık kaybını önlemek için kullanılan üç yöntemdir.
Dizin tabanlı tutarlılık, tutarlılığı sağlamak için bir filtre olarak çalışır. Veriler, tüm işlemciler tarafından erişilebilen bir hafıza bölümüne yerleştirilir. Bu bellek alanı içinde depolanan bilgiler değiştirildiğinde, sistem önbellekleri günceller veya geçersiz kılar.
Snooping, işlemcinin, önbellekte saklanmış olan hafıza konumlarına tüm erişimlerini izlemesini gerektirir. Bu işlemcinin yazma işleminin ne zaman gerçekleştiğini bilmesini sağlar. Bir yazma işleminin ne zaman gerçekleştiğini bilerek, işlemci önbelleğini güncelleyebilir.
Snarf, merak etmeye oldukça benzer. Snarfing, yalnızca önbellekteki hafıza alanlarına erişimin izlenmesini değil aynı zamanda hafızaya kaydedilmiş olan gerçek bilgilerin izlenmesini de içerir. Bir bellek yazma gerçekleştiğinde, önbellek yeni bilgilerle güncellenebilir.
Dizin tabanlı tutarlılık sistemleri göreceli olarak yüksek bir gecikmeye sahiptir, bu da daha yavaş işleme sağlar. Düşük bant genişliği gereksinimleri, dizin tabanlı tutarlılık sistemlerinin, büyük ölçekli önbellek tutarlılık uygulamalarında pratik olmasını sağlar. Bir sistemin kullandığı işlemci sayısı arttıkça, dizin tabanlı bir tutarlılık sistemi kullanmaktan daha fazla avantaj elde eder.
Snooping çok daha hızlı bir yöntemdir. Bu yöntem, dizin tabanlı yaklaşımdan daha fazla bant genişliği gerektirir. Bu yöntem göreceli olarak az işlemciye sahip sistemlerde etkin bir şekilde kullanılabilir.
Snarfing genellikle önbellek tutarlılığını koruma yöntemi olarak kullanılmaz. Bunun nedeni, snarfing'in hem meraklı hem de dizin tabanlı yöntemlerle karşılaştırıldığında daha fazla kaynak gerektirmesidir. Bir snarfing sisteminin çalışması için, hem bellek adreslerini hem de bu bellek alanlarında depolanan verileri izlemelidir. Bu yöntemle alınan bant genişliği ve işleme miktarı, önbellek tutarlılığını koruma uygulamalarının çoğu için istenmeyen bir duruma getirir.


