Bellek Tutarlılığı ve Önbellek Tutarlılığı


17

Sıralı Tutarlılığın Önbellek Tutarlılığından daha güçlü bir özellik olduğu doğru mu?

Göre

Sorin, Daniel J; Hill, Mark D; Wood, David A: Bellek Tutarlılığı ve Önbellek Tutarlılığı Üzerine Bir Astar , Morgan & Claypool, 2011

sıralı tutarlılık (resmi olarak değil) olarak tanımlanabilir:

Sıralı tutarlı bellek modeli, sistemin tüm iş parçacıklarının yüklerini yürütmesi ve tüm bellek konumlarında her iş parçacığının program sırasına uygun olarak toplam sırada depolanması gerektiğini belirtir. Her yük, toplam siparişteki en son mağazanın değerini alır.

Diğer bir deyişle, sistem sıralı olarak tutarlıdır, eğer her bir iş parçacığının bellek olayları (yükler ve depolar) verilirse, tüm bu olayları şu şekilde sıralayabiliriz: 1) her iş parçacığı için olayların sırası korunur ve 2) küresel düzen seri (herhangi bir yük depolanan en son değeri döndürür).

Şimdi devam ediyorlar ve tutarlılığı tanımlıyorlar:

Bir tanımı tutarlılık Sıralı Tutarlılık tanımına benzerdir Tutarlı bir sistem, toplam amacıyla tek bir bellek konumu tüm lifler yüklerin ve depolar yürütmek için görünür olması olduğunu açıdan her bir ipliğin program düzeni.

Diğer bir deyişle, sistem tutarlıdır, eğer her bir konum için her bir iş parçacığının bellek olayları verilirse , o konum için olayları sipariş edebiliriz, böylece: 1) her iş parçacığı için o konumdaki olayların sırası korunur ve 2) her biri için konumu sırası seri olduğunu.

Son olarak, farka dikkat çekiyorlar:

Bu tanım tutarlılık ve tutarlılık arasındaki önemli bir ayrımı vurgular : tutarlılık bellek başına konum bazında belirlenirken tutarlılık tüm bellek konumlarına göre belirlenir.

Dolayısıyla, fark, tutarlı sistemler için, her bir konum için tüm olaylar için toplam bir düzene (yani belirli bir konum için olaylar arasındaki siparişe) ihtiyaç duyduğumuz gibi, tutarlı sistemler için toplam olay tüm olaylarda (ve böylece sıralaması da farklı yerlerdeki etkinlikler arasındadır).

Bu tutarlılığın bu tutarlılıktan daha az katı olduğu anlamına mı geliyor? (eğlenceli görünüyor!) Tutarlı ancak tutarlı olmayan izler var mı?


2
"Lütfen cevabımı kontrol edin!" Şeklindeki soruları beğenmiyoruz. Daha spesifik bir soru ekleyebilir misiniz? Boşluğunuzun nerede olabileceğini düşünüyorsunuz?
Raphael

@Raphael haklısın ve soruyu yazarken çok iyi hissetmedim. Ama eğer internette bir cevap bulamazsam ne yapmalıyım ('tüm bitlerden bahseden tutarlılıktan farklı olan tutarlılık, bir bit hakkında konuşur gibi belirsiz iddialar hariç) ve böylece bir cevap bulmaya çalıştım ve ne zaman görünüyor? doğru olup olmadığından emin değildi. Balıklarla ilgili bir soru sormalı mıyım? Yoksa soruya cevap vermiyor musunuz? :)
Ayrat

@Ayrat Sorunuzun son bölümünü kontrol etmek istediğiniz cevap olarak okudum. Bu durumda, okuyucular için saptamanız gereken bazı şüpheler (başka, neden sormalısınız?) Olmalıdır. Belki yanlış okudum?
Raphael

@ Raphael 'son kısmı kontrol etmek istiyorum' - evet. 'neden sordun?' - konu yeni ve sonucun doğru olduğundan emin değildim. Gelecekte bu tür sorulardan kaçınmaya çalışacağım ve muhtemelen kontrol etmek için etrafta birini bulacağım.)
Ayrat

Yanıtlar:


11

Sizin de belirttiğiniz gibi, tutarlılık ise bireysel hafıza konumunun bir özelliktir tutarlılık tüm hafıza konumlara erişimlerin sırasına karşılık gelir. Sıralı tutarlılık tutarlılıktan kesinlikle daha güçlü bir özelliktir. Yani: ardışık olarak tutarlı olan her sistem aynı zamanda her bellek konumunda tutarlıdır. Bunun tersi doğru değildir, her yerde tutarlı bir bellek mutlaka sıralı olarak tutarlı değildir. Aslında, bellek modelinin sadece zayıf bir şekilde tutarlı olduğu birçok gerçek önbellek uyumlu çok işlemcili vardır (farklı işlemcilerin farklı konumlarda farklı konumlara erişimi gözlemlediği durumlar vardır).

Sıralı olarak tutarlı kanıt, tutarlı anlamına gelir:

Ardışık olarak tutarlı bir sistemden herhangi bir iz verildiğinde, tanım gereği izin sistemdeki her işlemci tarafından üzerinde anlaşılan toplam bir sıraya sahip olması gerekir. Şimdi bu izdeki konumuna erişimlere bakın . Toplam sipariş geçişli olduğundan, yalnızca konumuna erişim , sistemdeki her işlemci tarafından üzerinde anlaşılan toplam bir siparişe de sahiptir. Böylece tüm bellek konumları uyumludur.xx

Tersi işe yaramıyor. Her bir ve tek bir erişimle ve üzere iki tutarlı bellek yeri düşünün . Tüm işlemciler konumuna erişim sırası üzerinde anlaşır ve tüm işlemciler konumuna toplam erişim sırası üzerinde anlaşır , ancak bazı işlemciler sırasını gözlemlerken, diğerleri sırasını gözlemleyebilir . Dolayısıyla tutarlılık sıralı tutarlılık anlamına gelmez.xyx0y0xyxyyx

Bu şaşırtıcı sonuçlara yol açabilir. Örneğin

initially A=B=0
process 1               process 2
store A := 1            load B (gets 1)
store B := 1            load A (gets 0) 

Bu iz tutarlıdır:

  • A sırası şöyledir: proc2 loads A(gets 0),proc1 stores A:=1
  • B sırası şöyledir: proc1 stores B:=1,proc2 loads B(gets 1)

Ama tutarlı değil! Eğer proc2 load B1 döndürürse, o zaman proc1 store A := 1zaten oldu ve proc2 load Aayrıca 1 dönmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.