Startseite→Hardware & Bileşenler
Hardware & Bileşenler

Çok Çekirdekli Sistemlerde Önbellek Tutarlılığının Mekanizmaları.

Paylaşılan Verinin Kopyaları ve Ortaya Çıkan Sorun Önbellek tutarlılığı, aynı bellem konumunun birden çok önbellekte tutulan kopyalarının birbiriyle...

User Avatar
liquid_metal_modEditör
4 Min. Lesezeit
Yayın:
🌐
Originalsprache wird angezeigt

Dieser Artikel wurde noch nicht ins Deutsche übersetzt. Sie sehen die Originalversion.

Paylaşılan Verinin Kopyaları ve Ortaya Çıkan Sorun

Önbellek tutarlılığı, aynı bellem konumunun birden çok önbellekte tutulan kopyalarının birbiriyle uyumlu kalmasını sağlayan donanım düzeneğidir. Ortak bir adres uzayını paylaşan çok çekirdekli ve çok işlemcili sistemlerde her çekirdek kendi önbelleğine yazdığı için aynı adresin farklı çekirdeklerde farklı değerleri bulunabilir. Tutarlılık düzeneği bu kopyaları izleyerek bütün çekirdeklerin belleğe ilişkin aynı görünümü paylaşmasını sağlar.

Sorun önbelleğin varlığından doğar. Önbellek tek çekirdekli bir sistemde yazılıma görünmeyen bir başarım düzeneğidir; çekirdek sayısı birden çok olduğunda ise aynı düzenek, paylaşılan verinin birbirinden habersiz kopyalarını üretir. Tutarlılık protokolü bu kopyaları donanımda izleyip gerektiğinde geçersiz kılarak, paylaşımlı bellek soyutlamasını programcı için ayakta tutar. Protokolün yaptığı iş yazılıma görünmez, ancak ürettiği veri aktarımı ve gecikme çok çekirdekli başarımın belirleyicilerinden biridir.

SayarBilgi sitesini Google’da tercih edilen kaynak olarak seç

Tutarlılığın Gerektirdiği İki Koşul

Bir bellek düzeninin tutarlı sayılması için iki özelliği sağlaması gerekir. Yazma yayılımı, bir çekirdeğin yaptığı yazmanın sonunda öteki çekirdeklerce de görülebilir duruma gelmesidir. Bir yazmanın yalnızca yazan çekirdeğin önbelleğinde kalması ve orada süresiz durması tutarlılığı bozar. Yazma serileştirmesi ise aynı adrese yapılan yazmaların bütün çekirdeklerce aynı sırada görülmesidir. İki çekirdek x’e sırasıyla 1 ve 2 yazarsa, hiçbir çekirdek önce 2’yi sonra 1’i görmemelidir.

Bu iki koşul birlikte, her bellek adresinin bütün çekirdekler için tek bir değer dizisi taşıyormuş gibi davranmasını sağlar. Koşullar yalnızca tek bir adres için tanımlıdır; ayrı adreslere yapılan işlemlerin göreli sırası konusunda hiçbir şey söylemezler.

Geçersizleştirme ve Güncelleme Yaklaşımları

Yazma geçersizleştirme yaklaşımında bir çekirdek yazmadan önce öteki bütün kopyaları geçersiz kılar ve satırın tek sahibi durumuna geçer. Nächste yazmaları için başka ileti göndermesi gerekmez. Yazma güncelleme yaklaşında ise yazılan değer kopyası bulunan bütün önbelleklere yayılır ve kopyalar yerinde kalır. Bu yaklaşım paylaşılan veriyi okuyan çekirdeklerin bekleme süresini kısaltır, ancak her yazma için veri aktarımı gerektirir.

Çağdaş sistemlerin neredeyse tamamı geçersizleştirmeyi kullanır. Nedeni tipik paylaşım deseninin bir çekirdeğin bir veriyi bir süre kendine ayırıp üzerinde çalışması, sonra bırakması biçiminde olmasıdır; bu desende güncelleme yaklaşımı gereksiz aktarım üretir.

Gözetleme ve Dizin Tabanlı Protokoller

Gözetleme tabanlı protokollerde bütün önbellekler ortak bir yayın ortamını, çoğunlukla paylaşılan bir yolu dinler. Bir çekirdek bir satırı isteyince isteğini bu ortama koyar; her önbellek isteği görür, kendi etiketlerine bakar ve o satırın kopyasına sahipse gereken tepkiyi verir. Sıralamayı yayın ortamının kendisi sağlar. Yaklaşımın üstünlüğü basitliği ve düşük gecikmesidir; ayrı bir dizin yapısı tutulmadığı için depolama maliyeti yoktur. Sınırı ise yayın ortamının kendisidir: çekirdek sayısı arttıkça hem ortamın bant genişliği hem de her önbelleğin etiket arama yükü doğrusal büyür. Bu yüzden gözetleme küçük ve orta ölçekli sistemlerde kullanılır.

Dizin tabanlı protokollerde her bellek bloğu için, o bloğun hangi önbelleklerde bulunduğunu ve hangi durumda olduğunu tutan bir kayıt saklanır. Yazmak isteyen çekirdek isteğini dizine gönderir; dizin yalnızca kopyayı taşıyan önbelleklere geçersizleştirme iletisi yollar. Yayın olmadığı için ileti sayısı çekirdek sayısıyla değil, o bloğu gerçekten paylaşan çekirdek sayısıyla orantılıdır. Bedeli dizinin kendi depolama maliyetidir. Çekirdek sayısı arttıkça dizin tabanlı düzen kaçınılmaz olur.

Durum Makineleri ve Protokol Ayrımı

Protokoller her önbellek satırına bir durum atar ve gelen isteklere göre bu durumu değiştirir. Durum kümesi büyüdükçe protokol karmaşıklaşır, buna karşılık gereksiz aktarım azalır. En yalın kullanışlı küme MSIdir: satır ya Değiştirilmiş, ya Paylaşılan ya da Geçersiz olur. MESI bu eksiği Dışlayan durumuyla kapatır; bir satır yalnızca tek bir önbellekte bulunuyor ve değiştirilmemişse Dışlayan durumdadır. Protokol 1984’te Illinois Üniversitesi’nde geliştirildiği için Illinois protokolü olarak da anılır.

MOESI, Sahiplenilmiş durumunu ekler. Değiştirilmiş bir satır başka bir çekirdekçe istendiğinde MESI’de ana belleğe geri yazılması gerekir; MOESI’de satırı elinde tutan çekirdek sahiplik alarak veriyi doğrudan isteyene verir. Durum sınıflandırması 1986’da Sweazey ve Smith tarafından derli toplu bir çerçeveye oturtulmuştur. MESIF ise İletici durumunu ekler ve paylaşılan kopyalardan tam olarak birini yanıt vermekle görevlendirir.

Başarıma Etkisi ve Tarihsel Gelişim

Tutarlılık protokolü, tek çekirdekli bir sistemde bulunmayan yeni bir bulamama türü üretir. Tutarlılık bulamaması, satır önbellekte yer bulamadığı için değil, protokol onu geçersiz kıldığı için oluşur. Bu tür bulamamalar üç C modelinin dışında kaldığından sınıflandırmaya dördüncü bir C olarak eklenir. Yanlış paylaşımda ise çekirdekler ayrı değişkenlere erişir, ancak bu değişkenler aynı önbellek satırına düştüğü için protokol onları tek bir birim gibi görür.

Sorun, birden çok işlemcinin özel önbelleklerle ortak belleğe bağlandığı ilk tasarımlarla birlikte ortaya çıktı. 1978’de Lucien Censier ve Paul Feautrier, her bellek bloğu için kopyaların yerini kaydeden bir dizin öneren ilk düzenli çözümü yayımladı. 1983’te James Goodman, ortak bir yolu dinleyen önbelleklere dayanan ilk gözetleme protokolünü tanıttı. Bir yıl sonra Papamarcos ve Patel, Dışlayan durum ekleyerek bugün MESI diye anılan protokolü ortaya koydu.

2000’li yıllarda çok çekirdekli yongaların yaygınlaşmasıyla tartışma yön değiştirdi. Çekirdek sayısı arttıkça donanım tutarlılığının bırakılıp yerini yazılımla yönetilen düzenlere bırakacağı ileri sürüldü. 2012’de Martin, Hill ve Sorin, dizin maliyetinin ve ileti sayısının uygun tasarımlarla çekirdek sayısına göre sınırlı tutulabileceğini göstererek bu savı çürüttü; yonga içi tutarlılık kalıcı oldu.

Bu açıklama Vikipedi kaynaklarından uyarlanmıştır ve şu lisans altında sunulur: CC BY-SA 4.0.

İlginizi Çekebilir: Apple’ın ‘Minions’ sistemi boştaki Mac’leri sanal GPU bulutuna dönüştürüyor →
Quelle: Vikipedi (Wikipedia) ↗
💻 SayarBilgi Topluluğu

Diskutieren Sie diese Entwicklung in der Community

Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.

💻 Hardware & Sistem Tavsiyesi Odası →
STIMME DER COMMUNITY

Sie sind am Wort.

0 Kommentare

Teilen Sie Ihre Erfahrungen, Fragen und Beiträge. Ihre E-Mail-Adresse wird nicht veröffentlicht.

An der Diskussion teilnehmen

E-Mail adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ihr Kommentar muss möglicherweise vor der Veröffentlichung moderiert werden.

NÄCHSTE LEKTÜRE

Merak etmeye devam

Alle ansehen ↗

Worüber möchten Sie mehr erfahren?

Mindestens 3 Zeichen eingeben.

Entdecken

🌍 SPRACHE WÄHLEN 25 Sprachen
🔍