BİLGİSAYAR MİMARİLERİ 13 BİLGİSAYAR MİMARİLERİ 13.Hafta: Çoklu İşlemcili Sistemlerde Ön-Bellek Tutarlılığı Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü
Ders Planı Çoklu işlemcili sistemlerde temel meseleler Ortak bellekli sistemlerde ön bellek Ön bellek tutarlılığı problemi Temel snoopy protokolleri Örnek bir snoopy protokolü Örnek analiz Dağıtık directory ön bellek (geniş ölçekli sistemler)
Çoklu işlemcili sistemlerde temel meseleler İsimlendirme (naming) Hangi veri paylaşılacak? Nasıl adreslenecek? Hangi komutlarla verilere erişilecek? İşlemciler nasıl referans edilecek? Senkronizasyon Birlikte çalışabilmek için prosesler arası koordinasyon sağlanmalı Gecikme ve band genişliği Yüksek performans için yüksek band genişliği gerekli, Gecikmeler performansı kötü yönde etkiliyor, işlemciler beklemek zorunda Hesaplama ile iletişim örtüştürülerek gecikmeler gizlenmeye çalışılır
Küçük ölçekli (ortak bellekli) sistemlerde ön bellek Ön bellekler band genişliğini arttırır Bellek erişim gecikmesini azaltır Bireysel ve paylaşılan veri için oldukça önemlidir
Ön bellek tutarlılığı problemi
Ön bellek tutarlılığı nedir? İnformal olarak: Herhangi bir okuma en son yazılan değeri geri döndürmelidir Çok sıkı ve gerçeklemesi zor bir tanım Diğer bir açıklama: Herhangi bir yazma eninde sonunda okuma tarafından görülmelidir Tüm yazmalar uygun sırada görülmelidir Bundan emin olmak için iki kural: Eğer P x yazarsa ve P1 bunu okursa, okuma ve yazma yeteri kadar birbirinden uzaksa P’nin yazdığını P1 görmelidir Aynı bölgeye yazmalar serileştirilmelidir Daima son yazılan görülmelidir
Donanımsal ön bellek tutarlılığı çözümleri Snooping çözümü (snoopy bus): Veri talepleri tüm işlemcilere gönderilir İşlemciler talepleri dinler ve eğer aranılan kopya var ise uygun şekilde cevaplar Broadcast gereklidir Bus ile iyi çalışır (bus broadcast için çok uygundur) Birçok küçük ölçekli makinede kullanılıyor Directory temelli çözümler: Merkezi bir yerde paylaşılan veriye ait bilgiler tutulur Diğer bir yaklaşımda ise dağıtık directory kullanılır (darboğazı aşmak için) Talepler network üzerinden noktadan-noktaya gönderilir Snooping’den daha iyi ölçeklenebilir
Temel snoopy protokoleri Yazma geçersiz (invalidate) protokolu Çoklu okuyucu tek yazıcı Paylaşılan veriye yazma: «invalidate» mesajı tüm işlemcilere gönderilir, ve ellerinde kopya bulunduranlar geçersiz «invalidate» konumuna döndürürler Read miss: Write through: Ana bellek her zaman güncel Write-back: Güncel kopyayı bulmak için ön belleklere göz atmak gerekli Yazma broadcast protokolü: Paylaşılan veriye yazma: Bus üzerinden broadcast ve işlemciler, varsa, kendi kopyalarını güncellerler Read-miss: Ana bellek daima güncel
Temel snoopy protokolerinin karşılaştırılması Write invalidate ve Brodcast yaklaşımı: Invalidate protokolunda yazma işlemi bir transaction ile tamamlanır, oysa broadcast’te daha fazla transaction gerekir (kopyaların güncellenmesi) Invalidate uzayda (spatial) lokallik prensibinden yararlanır: Blok başına sadece bir transaction yapılır Broadcast yaklaşımı okuma ve yazma arasında daha düşük gecikme süresine sahiptir
Temel snoopy protokolünde ön belleğin bulanabileceği durumlar Bir kişiye ait (exclusive) Paylaşılan (shared) Geçersiz (invalid) Diğer snoopy uyarlaması protokoller:
Örnek snoopy protokolü Write invalidate ve write-back ön bellekleri Her ön bellek bloğu bir durumda: Tüm ön bellekler ile ana bellek tutarı ise (clean) Sadece bir ön bellekte değiştirilmiş ise (exclusive) Hiçbir ön bellekte yok ise (invalid) Her ön bellek bloğu bir durumda olmak zorunda: Shared: Blok okunabilir Exclusive: Tek kopya var, blok yazılabilir ve kirli (dirty) Invalid: Blokta data yok Read miss: Tüm ön belleklerin bus’ı snoop (dinlemesine) sebep olur Temiz bir ön bellek bloğuna yazmak write-miss olarak değerlendirilir
Snoopy Durum Makinesi – I CPU talepleri
Snoopy Durum Makinesi – II Bus talepleri
Örnek
Örnek
Örnek
Örnek
Örnek
Örnek
Dağıtık directory ön bellek (Geniş ölçekli sistemler)