Firefly (önbellek tutarlılık protokolü) - Firefly (cache coherence protocol)

Ateşböceği önbellek tutarlılığı protokol, içinde kullanılan şemadır Aralık Ateşböceği çok işlemcili iş istasyonu, geliştiren DEC Sistemleri Araştırma Merkezi. Bu protokol 3 Durumlu Yazma Güncelleme Önbellek Tutarlılığı Protokolüdür. Aksine Dragon protokolü Ateşböceği protokolü, Ana Belleği ve ayrıca Yazma Güncellemesi Veriyolu Geçişinde Yerel önbellekleri günceller. Bu nedenle, Dragon Protokolü durumunda mevcut Paylaşılan Temiz ve Paylaşılan Değiştirilmiş Durumlar, Ateşböceği Protokolü durumunda birbirinden ayırt edilmez.

Eyaletler

Bu protokolde, her bloğa aşağıdaki durumlar atanabilir:

  • Geçerli-Özel (V): Önbellek bloğu geçerlidir, temizdir ve yalnızca bir önbellekte bulunur.
  • Paylaşılanlar: Önbellek bloğu geçerlidir, temizdir ve birden çok önbellekte bulunabilir.
  • Kirli (D): Blok, belleğin tek kopyasıdır ve kirli, yani değeri bellekten getirildikten sonra değiştirilmiştir. Bu, blok önbellekte değiştirildiğinde bir geri yazma oluşturan tek durumdur.

Bu durumlar karşılık gelir Ayrıcalıklı, Paylaşılan, ve Değiştirilmiş devletleri MESI protokolü. Bu protokol hiçbir zaman geçersiz kılmaya neden olmaz, bu nedenle Geçersiz devlet burada listelenmemiştir.

İşlemci Tarafı Talepleri

İşlemci tarafı istekler veya CPU istekleri, işlemcinin kendi önbelleklerine yaptığı erişimlerdir. Bunlar 4 tür istek olarak sınıflandırılabilir:

  1. PrRdMiss: İşlemci tarafı, önbellekte bulunmayan bir önbellek bloğunu okuma isteği.
  2. PrRdHit: İşlemci tarafı, zaten önbellekte bulunan bir önbellek bloğunu okuma isteği.
  3. PrWtHit: İşlemci tarafı, zaten önbellekte bulunan bir önbellek bloğuna yazma isteği.
  4. PrWtMiss: İşlemci tarafı, önbellekte bulunmayan bir önbellek bloğuna yazma isteği.

Otobüs Tarafı Talepleri

Veri yolu tarafı istekler, önbellek tutarlılığını sürdürmek için işlemci tarafı isteklerine yanıt olarak üretilen isteklerdir. Bunlar, önbellekleri ve hafızayı gözetleyen kişiler tarafından gözetlenir ve uygun işlem yapılır. Bunlar, Firefly protokolünde iki türe sınıflandırılır:

1. BusRd: Başka bir işlemci tarafından yapılan bir önbellek bloğuna bir okuma talebi olduğunu ve bu işlemcinin veriye sahip olmadığını gösteren istek.

2. BusWr / BusUpdt: Başka bir işlemci tarafından yapılan bir önbellek bloğuna bir yazma isteği olduğunu ve diğer tüm önbelleklerin blok kopyalarını güncellemeleri gerektiğini belirten istek.

Geçişler

Hangi geçişlerin yapılması gerektiğini belirlemek için protokol, paylaşımı adlı özel bir veri yolu hattı kullanarak algılar. CopiesExist. Diğer tüm önbellekler meraklı tüm hafıza işlemleri ve Kopya Var (C) bir "gözetleme isabeti" algılarlarsa, yani verilerin bir kopyası kendi önbelleklerinde varsa.

Hiçbir yerden bir duruma gitmeyen bir ok, yeni yüklenmiş bir bloğu temsil eder.

İşlemci Tarafından Başlatılan Geçişler

Ateşböceği protokolü için Durum Diyagramı.

İşlemcinin bir bloğu okuması durumunda ve başka bir önbellekte bloğun kopyası yoksa, CopiesExist (C) satırı kontrol edilir ve C DÜŞÜK ise blok önbelleğe yerleştirilir ve durum şu şekilde ayarlanır: Geçerli. Bazı önbelleklerde zaten bir kopya varsa (C YÜKSEK), o zaman blok, önbelleğe yerleştirilir. Paylaşılan durum.

Bir bloğa yazılamadığında, herhangi bir önbellekte bloğun kopyası yoksa (C, DÜŞÜK), blok, Kirli durum. Bazı önbelleklerde bloğun zaten bir kopyası varsa (C YÜKSEK), bu durumda blok önbelleğe yerleştirilir. Paylaşılan durum ve değişiklikler hafızaya yansıtılır.

Bir blok zaten önbelleğe alınmışsa Geçerli durum, bir işlemci yazma isabeti durumu şu şekilde değiştirir: Kirli başka hiçbir önbellekte verilerin kopyası bulunmadığından durumu. Bu yazı belleğe yazılmaz.

Bir blok önbelleğe alınmışsa Kirli durum ve bir işlemci yazma isabeti oluşursa, durum olarak kalır Kirli durum.

Blok içeride ise Paylaşılan durumu ve bir işlemci yazma vuruşu var ve bazı önbelleklerde (C) zaten bir kopya varsa, blok Paylaşılan durum. Herhangi bir önbellekte (! C) bloğun kopyası yoksa, blok Geçerli önbelleklerde bulunan tek 'geçerli' kopya olduğunu belirtin.

Bir CPU okuma vuruşu varsa, blok halihazırda bulunduğu durumda kalır - tıpkı Dragon protokolünde olduğu gibi.

Otobüsle Başlatılan Geçişler

Blok içeride ise Paylaşılan Durumve bir BusRd veya BusWr isteği varsa, blok Paylaşılan durumda kalır.

Blok içeride ise Kirli Devletve başka bir işlemci onu okur veya yazar, başka bir işlemciden talep eder, Paylaşılan duruma geçer ve değişiklikler ana belleğe yansıtılır.

Blok içeride ise Geçerli Devlet ve başka bir işlemci onu okursa, Paylaşılan duruma geçer. Başka bir işlemci yazma isteği gizlice alınırsa, blok güncellenir ve artık paylaşıldığı için Paylaşılan duruma geçer.

MESI'den farklı olarak, Firefly güncelleme protokolünde, yazma yayılımı, işlemciler (PrWr) tarafından bir yazma talebi üzerine diğer tüm kopyaların doğrudan güncellenmesiyle sağlanır.

Diğer Politikalarla Karşılaştırma

1. Verilerin güncellenmiş kopyalarının önbelleklerde bulunması nedeniyle, Yazma - Geçersiz Kılma ilkelerine göre daha az tutarlılık kaybı vardır.

2. Geçersiz kılma protokollerine göre daha yüksek veri yolu bant genişliği gereklidir çünkü geçersiz kılma protokolleri, diğer işlemcilerde gözetlenen veri yoluna yalnızca bir sinyal / komut göndererek onların kendi veri kopyalarını geçersiz kılmalarına neden olur. Güncelleme protokollerinde, aksine, belleğin ve diğer önbelleklerin verilerini incelemesine ve güncellemesine izin vermek için yeni veri değerinin BusUpdate sinyaliyle birlikte gönderilmesi gerekir.

3. Verileri her yazma işleminde güncellemek, artık ihtiyaç duyulmayan bazı verilerin önbellekte kalmasına neden olur ve bu da bazı "yararlı" verilerin çıkarılmasına neden olabilir.

Ayrıca bakınız

Referanslar

  • Hashemi, B. (2011-05-01). Simülasyon ve Değerlendirme Paylaşılan Hafızalı Çok İşlemcili Sistemlerde Güncelleme Stratejisi ile Snoopy Önbellek Uyum Protokolleri. 2011 Dokuzuncu IEEE Uluslararası Uygulama ile Paralel ve Dağıtık İşleme Sempozyumu (ISPAW). s. 256–259. doi:10.1109 / ISPAW.2011.68. ISBN  978-1-4577-0524-3.
  • Eggers, S. J .; Katz, R.H. (1988-01-01). Paralel Programlarda Paylaşımın Karakterizasyonu ve Tutarlılık Protokolü Değerlendirmesine Uygulanması. 15. Yıllık Uluslararası Bilgisayar Mimarisi Sempozyumu Bildirileri. ISCA '88. Los Alamitos, CA, ABD: IEEE Computer Society Press. s. 373–382. doi:10.1145/633625.52442. ISBN  978-0818608612.
  • Archibald, James; Baer, ​​Jean-Loup (1986-09-01). "Önbellek Tutarlılık Protokolleri: Çok İşlemcili Simülasyon Modeli Kullanarak Değerlendirme". ACM Trans. Bilgisayar. Sist. 4 (4): 273–298. doi:10.1145/6513.6514. ISSN  0734-2071.
  • Solihin, Yan (2015-10-09). Paralel Çok Çekirdekli Mimarinin Temelleri. Raleigh, Kuzey Karolina: Solihin Publishing and Consulting, LLC. ISBN  978-1-4822-1118-4.