Çok çekirdekli sistemlerde her çekirdeğin L1 önbelleği bağımsız çalışır. Aynı bellek konumunun birden fazla önbellekte farklı değerler tutması, yazılımın çözmesi değil donanımın önlemesi gereken bir tutarsızlık sorunudur. mesi moesi protokol ailesi bu sorunun standart çözümüdür. MESI protokolü dört durum tanımlar: - Modified (M): Önbellekte kirli kopyası var, ana bellek eskimiş. - Exclusive (E): Önbellekte temiz kopya var, başka önbellekte yok. - Shared (S): Birden fazla önbellekte temiz kopya mevcut. - Invalid (I): Bu önbellek satırı geçersiz. Yazma trafiği açısından kritik geçiş S → M'dir. Bir çekirdek Shared durumundaki satıra yazmak istediğinde bir invalidation mesajı yayınlar; diğer tüm çekirdekler kendi kopyalarını Invalid'e çeker. Bu mesaj, Invalidation Acknowledgement (InvAck) ile onaylanana kadar yazan çekirdek beklemeye alınabilir. Yoğun yazma senkronizasyonu olan uygulamalarda bu bekleme süresi ölçülebilir gecikmelere dönüşür. MOESI, Owned (O) durumunu ekler. mesi moesi protokol farkının pratiği şudur: MESI'de Modified bir satırın başka bir çekirdek tarafından okunması gerekirse Modified çekirdeği veriyi ana belleğe geri yazıp Shared'e geçmek zorundadır. MOESI'de ise Owned durumu bu ara yazmayı atlar; veri doğrudan önbellekten önbelleğe iletilir (cache-to-cache transfer) ve satan çekirdek veriyi Owned olarak tutar. Bu fark bant genişliği açısından önemlidir. Sık okunan/yazılan paylaşımlı verilerde MOESI, ana bellek bant genişliğini MESI'ye göre belirgin biçimde azaltır. AMD işlemciler tarihsel olarak MOESI'yi tercih etmiştir; bu nedenle belirli workload'larda bellek bant genişliği açısından avantajlı çıkabilirler. False sharing ise mesi moesi protokol mekanizmalarının en naif kötüye kullanım senaryosudur. İki iş parçacığı birbirinden bağımsız değişkenlere yazsa bile aynı önbellek satırına düşüyorlarsa sürekli invalidation mesajı üretilir. Bu durumda protokol doğru çalışır ama programcının niyeti yanlıştır. Çözüm, birbirinden bağımsız değişkenleri farklı önbellek satırlarına hizalamaktır (genellikle 64 byte padding).