Cache Cohorence

Hp-Ux

Cache coherence ya da Cache coherency, Memory Coherence’in özel bir durumudur.

Memory Coherence, birden fazla işlemcinin bulunduğu sistemlerde ortak kullanılan memory nin nasıl kullanıldığına dair bir protokoldur. Amaç birden fazla olan işlemciler arasında verinin işlenmesi sırasındaki ortaya çıkabilecek uyumsuzlukların önlenmesidir.

Cache üzerinde bir verinin güncellenmesinden sonra ve verinin memory’ye ya da diske yazılmasından önce verinin işlem basamaklarinin algoritma aracılığıyla izlenebilir ve kaydedilebilir olması çoklu işlemcileri bulunan sistemlerde veri bütünlüğünü korumayı sağlar.

Cache Coherence, aynı verinin başka başka işlemciler tarafından aynı anda işlenmesini önler.

Sekil1

 

 

Şekil 1: Ortak Memory Üzerindeki Çoklu Cache

 

Üstteki Client bir önceki işlemden kalma memory bilgilerine sahip olsun ve  bu bilgileri güncellemeden, allttaki client memory üzerinde bir değişiklik yaparsa, memory ile arasında uyumsuzluk kaçınılmaz olacaktır. Bu durum sistem üzerinde panik olusturup bir crash’e neden olabilir. Cache Cohenrence bu karışıklıklığı engellemek, cache ve memory arasındaki uyumu yönetmek için geliştirilmiştir.

 

 

Coherence aynı memory lokasyonuna okuma ve yazma davranışlarını tanımlar.

 

Okuma

Birden fazla işlemci aynı bilgiyi kendi cachelerine daha sonraki bir okuma için herhangi bir sorun olmadan saklayabilirler.

 

Yazma

Bir işlemcinin yazdığı bir bilgi diğer işlemciler tarafından görülemez. Diğer işlemciler eski bilgileri tuttukları için doğru bilgi kendi cachelerinde artık bulunmaz. [Bakınız: Şekil 2] Doğru bilgiyi yeniden almak istediklerinde kullandıkları Write back protokolü ise Bus trafiğini yavaşlatır.

 

Coherence problemi tek işlemcili sistemlerde de olabilir.

I/O aygıtları ve memory arasında DMA (Direct Memory Access) olduğunda;

  • DMA yapan aygıt memory den bilgi okuduğunda işlemcinin cache’inde güncellenmiş bilgi bulunabilir.
  • İşlemci kendi cachinden bilgi okuduğunda I/O aygıtı DMA yaparak memory’yi güncelleyebilir.

Bu iki durumda da Coherence problemi olabilir.

 

Aşağıdaki şekilde 3.adım gerçekleştiğinde işlemciler u değeri için farklı değerler görecektir.

Sekil2

Şekil 2: Cache Coherence problemi örneği

 

 

Cache Coherence Nasıl Düzeltilebilir?

 

  • Memory hiyerarşisi organize edilebilir.
    • Özel cache’ler kaldırılmalı, ortak cache’ler kullanılmalıdır.
    • Bu yöntem çok sayıda işlemci barındıran sistemlerde pratik olmayabilir.

 

  • Memory segmentleri ‘uncachable’ olarak işaretlenebilir.
    • I/O aygıtları için kullanılan  ortak kullanılan veri ya da segmentler cache’lenmez.
    • Sadece özel veriler cache’lenir.
    • Bu durumda performans düşer.

 

Yazılımsal Coherence Çözümleri

 

Veri cache’lenebilir ya da cache’lenemez olarak etiketlenir. Sdece okunabilir veriler cache’lenebilir olarak etiketlenir ve özel cache’e atılır. Diğer tüm veriler global-cache’e atılır.

Sekil3

Şekil 3: Yazılımsal Coherence Çözümü

 

Donanımsal Coherence Çözümleri

 

Bus Snooping Yöntemi

Sekil4

Şekil 4: Bus Snooping Yöntemi

 

  • Veriler için yapılacak işlemler tüm işlemcilere gönderilir.
  • İşlemciler talepe karşılık vermek için verinin bir kopyalarının kendilerinde olup olmadıklarına bakarlar.
  • Broadcast gerektirir.
  • Piyasada bulunan çok çekirdekli işlemcilerde (düşük sayıda çoklu işlemci sayısına sahip olan) sistemlerde sıklıkla kullanılır.

Directory-Based Schemes Yöntemi

  • Shared edilenler veriler için trackler kullanılır.
  • Ayrık memoryler kullanılır.
  • İşlemcilere point-to-point talepler gönderilir.
  • Snooping yöntemine göre darboğazlara karşı daha ölçeklendirilebilir.

 

En çok kullanılan bı iki yöntemin kendi aralarında avantajı ve dezavantajı vardır. Eğer yeteri kadar bandgenişliği varsa Snooping yöntemi daha hızlıdır. Çünkü bütün transectionlar tüm işlemciler tarafıından görülebilir. Ama ölçeklenebilir değildir. Her talep her node’a gönderildiği için sistem büyüdüğünde mantıksal ya da fiziksel Bus boyutu da  genişlemelidir.

Directory yöntemi ise daha az band genişliği kullnır. Fakat daha geç cevap döner. Çünkü request/forward/response süresi 3 hoptur. Talepler point-topoint tir. Broadcast yapılmaz.

64 işlemciden daha fazla işlemcisi olan sistemlerde bu yöntem tercih edilir.

 

Coherency Protokolleri

 

  • MSI protocol
  • MESI protocol
  • MOSI protocol
  • MOESI protocol
  • MERSI protocol
  • MESIF protocol
  • Write-once protocol
  • Synapse protocol
  • Berkeley protocol
  • Illinois protocol
  • Firefly protocol
  • Dragon protocol

 

 

MESI Protocol (Papamarcos & Patel 1984)

Snooping cache Protokol’un bir versiyonudur.

Her cache bloğu 4 değer alabilir.

 

INVALID  Geçerli Değil

SHARED Birden fazla cache geçerli kopyaları tutabilir.

EXCLUSIVE Sadece bir adet cache bu değeri tutabilir.Diğer cachelerde bu veri yoktur.MODIFIED Geçerli bloktur.Fakat M-blocktaki kopyası geçerli değildir.

 

Event              Local                        Remote

Read hit Use local copy            No action

Read miss I to S, or I to E           (S,E,M) to S

Write hit (S,E) to M                  (S,E,M) to I

Write miss I to M                         (S,E,M) to I

 

Cache Blok değerini M den değiştirdiğinde ilk olarak ana bellekteki bilgiyi günceller.

 

Referanslar

 

Yorum ekle

Güvenlik kodu
Yenile