Önbellek performans ölçümü ve metrik - Cache performance measurement and metric

Bir CPU önbelleği ana bellekte sık kullanılan verilerin bir kısmını daha küçük ve daha hızlı belleğin 'önbelleğinde' tutarak bellekteki verilere erişim süresini azaltan bir donanım parçasıdır.

Bir bilgisayar sisteminin performansı, tamsayı, dallanma ve kayan nokta, G / Ç birimleri, veri yolu, önbellekler ve bellek sistemleri gibi yürütme birimlerini içeren tüm bağımsız birimlerin performansına bağlıdır. İşlemci hızı ile ana bellek hızı arasındaki boşluk katlanarak büyümüştür. 2001-05'e kadar, saat frekansı ile ölçülen CPU hızı yıllık olarak% 55 artarken, bellek hızı yalnızca% 7 arttı.[1] Bu sorun bellek duvarı olarak bilinir. Önbellek ve hiyerarşisinin motivasyonu, bu hız boşluğunu kapatmak ve bellek duvarını aşmaktır.

Çoğu yüksek performanslı bilgisayardaki kritik bileşen önbellektir. Önbellek hız boşluğunu kapatmak için bulunduğundan, performans ölçümü ve ölçümleri, önbellek boyutu, ilişkilendirilebilirlik, değiştirme politikası vb. Gibi çeşitli parametrelerin tasarlanması ve seçilmesinde önemlidir. Önbellek performansı, önbellek isabetlerine ve önbellek eksikliklerine bağlıdır, bunlar yaratan faktörlerdir. sistem performansına kısıtlamalar. Önbellek isabetleri önbellekte bu verileri gerçekten bulan önbelleğe erişimlerin sayısıdır ve önbellekte eksik önbellekte bloğu bulamayan erişimlerdir. Bu önbellek isabetleri ve eksikleri terime katkıda bulunur ortalama erişim süresi (AAT) aynı zamanda AMAT (ortalama bellek erişim süresi ), bu, adından da anlaşılacağı gibi, belleğe erişmek için geçen ortalama süredir. Bu, önbellek performansı ölçümü için önemli bir ölçüdür çünkü işlemci hızı arttıkça bu sayı oldukça önemli ve kritik hale gelir.

Performansı test etmek için başka bir kullanışlı metrik de Önbelleğin güç yasası eksik. Önbellek boyutlarından biri için kayıpların sayısının bilindiği göz önüne alındığında, önbelleğin boyutunu değiştirdiğinizde size kaçak hata verir. Benzer şekilde, önbelleğin performansını farklı ilişkilendirmelerdeki eksiklikler açısından test etmek istediğinizde, Yığın mesafesi profili kullanıldı.

Kaçırılan önbellek türlerine giriş

Önbellek hiyerarşisine bağlı işlemci performansındaki artış, önbellekten gelen engelleme isteklerini karşılayan erişimlerin sayısına (önbellek isabetleri) karşı önbelleğe erişim sayısına bağlıdır. Önbellekten veri okumaya veya yazmaya yönelik başarısız girişimler (önbellek eksiklikleri), daha düşük düzeyde veya ana bellek erişimiyle sonuçlanır ve bu da gecikmeyi artırır. Olarak bilinen üç temel önbellek türü vardır: 3C'ler [2] ve daha az popüler olan bazı önbellekleri kaçırır.

Zorunlu ıskalar

İlk başvurulduğunda her bellek bloğu, zorunlu bir ıskalamaya neden olur. Bu, zorunlu kayıpların sayısının, şimdiye kadar başvurulan farklı bellek bloklarının sayısı olduğu anlamına gelir. Bazen çağrılırlar soğuk özlüyor çok. Blok olmadığı sürece soğuk kaçırmalardan kaçınılamaz. önceden getirilmiş.

Bir dereceye kadar blok boyutunda bir artışın istismar edildiği gözlemlenmiştir. mekansal yerellik soğuk atlamalarda azalmaya neden olur. Blok boyutunun artırılması, bir blokta yakındaki kelimelerin önceden getirilmesine ve gelecekteki soğuk cevapların önlenmesine yol açar. Blok boyutunun çok fazla artırılması, gereksiz verilerin önceden getirilmesine yol açabilir ve böylece hataların sayısını artırabilir.

Çatışma özlüyor

Çatışma kayıpları, gerekli veriler daha önce önbellekteyken, ancak çıkarıldığında ortaya çıkar. Bu tahliyeler, aynı önbellek satırına başka bir istek eşlendiği için gerçekleşir. Genel olarak, çatışma kayıpları, sınırlı ilişkilendirilebilirliğe sahip bir önbellekteki kayıpların sayısının, aynı boyut ve önbellek bloğu boyutuna sahip tamamen ilişkilendirilebilir bir önbelleğin kayıp sayısına göre çıkarılmasıyla ölçülür.

Çatışma ıskalamaları, yeterli çağrışımsallık eksikliğine atfedilebildiğinden, ilişkilendirilebilirliğin belirli bir dereceye kadar arttırılması (8 yönlü çağrışım, neredeyse tamamen ilişkisel kadar etkili), çatışma kaçırma miktarını azaltır, ancak böyle bir yaklaşım, önbellek erişim süresini artırır ve belirli bir ilişkisel önbellekten çok daha fazla güç tüketir.

Kapasite kayıpları

Önbelleğin eşleme işlevi değil, önbelleğin sınırlı boyutu nedeniyle kapasite kaybı meydana gelir. Çalışma kümesi, yani program için şu anda önemli olan veriler önbellekten daha büyük olduğunda, sıklıkla kapasite kayıpları meydana gelir. Dışında 3C'ler kapasite kayıpları, tanımlanması en zor olanlardır ve tamamen ilişkisel bir önbellekteki zorunlu olmayan eksiklikler olarak düşünülebilir. Tek işlemcili bir sistemde, zorunlu ıskalama ve çatışma ıskalama sayıları çıkarıldıktan sonra ortaya çıkan ıskalar kapasite kayıpları olarak kategorize edilebilir.

Kapasite kayıpları bir önbelleğin sınırlı boyutuna bağlanabildiğinden, bu tür kayıpların sayısını azaltmanın basit bir yolu, önbellek boyutunu artırmaktır. Bu yöntem çok sezgisel olsa da, daha uzun bir erişim süresine ve önbellek alanında ve güç tüketiminde artışa neden olur. Ayrıca, belirli bir önbellek boyutundan sonra, eksiklerin sayısı doyurulur ve önbellek boyutu artırılsa bile azalmaz.

Temel önbellek parametrelerini değiştirmenin önbellek kayıpları üzerindeki etkisi.[2]
ParametrelerZorunlu ıskalarÇatışma özlüyorKapasite kayıpları
Daha büyük önbellek boyutuEtkisi yokEtkisi yokAzaltmak
Daha büyük blok boyutuAzaltmakBelirsiz etkiBelirsiz etki
Daha büyük çağrışımEtkisi yokAzaltmakEtkisi yok

Yukarıdaki üç tür eksiklik, yalnızca tek işlemci eksikliklerini giderir.

Tutarlılık özlüyor

3C'ler önbellek kayıpları grubu şu şekilde genişletilebilir: 4C'ler önbelleğe sahip çok işlemcili bir sistem söz konusu olduğunda, dördüncü C tutarlılığı özlüyor. Tutarlılık kayıp sayısı, aksi halde iş parçacığının önbelleğinde mevcut olacak bir önbellek satırı başka bir iş parçacığından bir yazma ile geçersiz kılındığı için eksik olan bellek erişimlerinin sayısıdır.[3] Tutarlılık çok işlemcili bir sistemde, bir bellek bloğunun yalnızca bir kopyası mevcutsa veya tüm kopyalar aynı değere sahipse korunur. Bellek bloğunun tüm kopyaları aynı değere sahip olmasa bile, mutlaka bir tutarlılık kaybına yol açmaz. İş parçacıkları bellek bloğunun farklı değerlerini gözlemleyecek şekilde yükler yürüttüğünde bir tutarlılık kaybı meydana gelir.[4]

Tutarlılık sorunu karmaşıktır ve paralel programların ölçeklenebilirliğini etkiler. Bu sorunun üstesinden gelmek için sistem genelinde aynı konuma tüm bellek erişimlerinin genel sıralaması mevcut olmalıdır.

Kapsama alanı ıskalıyor

4C'ler önbellek kayıpları grubu daha da genişletilebilir 5C'ler çok işlemcili sistem, bir önbellek olarak düzenlenen, yani girişlerin yerini alabilen bir tutarlılık dizini içerdiğinde. Bu beşinci C Kapsama anlamına gelir.[5] Eksik kapsama sayısı, aksi takdirde işlemcinin önbelleğinde mevcut olacak bir önbellek satırı bir dizin tahliyesinin bir sonucu olarak geçersiz hale geldiği için eksik olan bellek erişimlerinin sayısıdır. Dizin, sınırlı kapasitesi nedeniyle bir önbellek hattını izleyemiyorsa, hat, korumak için işlemcinin önbelleğinden geçersiz kılınmalıdır. Tutarlılık.

Sistemle ilgili hatalar

Gibi sistem etkinlikleri keser, bağlam anahtarları ve sistem çağrıları işlemin askıya alınmasına ve önbellek durumunun değiştirilmesine yol açar. İşlemin yürütülmesi sürdürüldüğünde, değiştirilen önbellek durumunu geri yüklemek için önbellekte eksiklik yaşanır. Bu kayıplara sistemle ilgili kayıplar denir.[2]

Ayrıca, bağlam değiştirmeden kaynaklanan önbellek kayıpları, aşağıda açıklanan iki kategoriye yerleştirilebilir.

Değiştirilen özlüyor

Bir bağlam anahtarı gerçekleştiğinde, önbellek durumu değiştirilir ve bazı blokları değiştirilir. Bu bloklara erişimdeki kayıplara değiştirilen eksikler denir.

Yeniden sıralanan özetler

Önbellekteki bazı bloklar, bağlam değiştirme nedeniyle değiştirilemeyebilir, ancak yeniliği değiştirilir. Yeniden sıralanan hataların, yeniliğin değişmesi nedeniyle ve değiştirilen bloklar nedeniyle değil, eksiklikler meydana geldiğinde meydana geldiği söylenir. Bununla birlikte, askıya alınan süreç yürütmeyi sürdürdüğünde, yeniden sıralanan bloklar, başka hiçbir eksiklik bu yeniden sıralanan blokların çıkarılmasına neden olmadığında bağlam anahtarı eksiklerine yol açmaz.

Bağlam değiştirme düzenli olarak gerçekleştiğinde sistemle ilgili eksiklikler önemli hale gelir. Önbellek boyutunun artırılması, kapasitede düşüşe ve çatışma eksikliklerine neden olur, ancak önbelleğin önbelleği paylaşan işlemlerin çalışma kümesinden daha küçük olması durumunda sistemle ilgili eksikliklerde artışa yol açtığı gözlemlenmiştir. Bu nedenle, sistemle ilgili ıskalamaların sayısını azaltmak bir zorluktur.

Ortalama bellek erişim süresi

Bu önbellek kaçırmaları, talimat başına döngüdeki (CPI) artışla doğrudan ilişkilidir. Bununla birlikte, önbellek kaçırmalarının CPI üzerindeki etkisinin miktarı, aynı zamanda, önbellek kaybının ne kadarının ILP nedeniyle hesaplamalarla çakışabileceğine de bağlıdır ( Öğretim düzeyinde paralellik ) ve bunun ne kadarı diğer önbellek kaçırmalarıyla örtüşebilir. Bellek düzeyinde paralellik.[2] Bu iki etkiyi de göz ardı edersek, ortalama bellek erişim süresi önemli bir metrik olur. Bellek sistemlerinin ve hiyerarşilerinin performansının bir ölçüsünü sağlar. Hafıza erişimi gerçekleştirmek için geçen ortalama süreyi ifade eder. Hafıza talimatları ve hafıza sıkışma döngüleri için yürütme süresinin eklenmesidir. Yürütme süresi, bir önbellek erişimi zamanıdır ve bellek kesinti döngüleri, bir önbellek kaybına hizmet etme ve daha düşük bellek seviyelerine erişme süresini içerir. Erişim gecikmesi, kaçırma oranı ve kaçırılma cezası biliniyorsa, ortalama bellek erişim süresi şu şekilde hesaplanabilir:

nerede birinci seviye önbelleğin erişim gecikmesidir, birinci seviye önbelleğin kaçırılma oranı ve daha yüksek seviyedeki bir isabetle karşılaştırıldığında daha yüksek seviyedeki bir isabetin hizmete sunulması gereken ek döngülerdir ve aşağıdakilerle hesaplanır:

bu formül daha da genişletilebilir ve bellek hiyerarşisindeki tüm diğer düzeyler için özyinelemeli olarak kullanılabilir. .[6]

Önbelleğin güç yasası eksik

Önbelleğin güç yasası eksik önbellek boyutundan etkilenen programın belirli bir uygulamasında kapasite kayıplarında bir eğilim gösterir. Bu ampirik gözlem, ıskalama oranı ile önbellek boyutu arasındaki ilişkiyi gösteren, güç yasasının matematiksel biçimine yol açtı. Olarak ifade edilebilir

nerede M boyuttaki bir önbellek için kaçırılma oranı C ve M0 temel önbelleğin eksik oranıdır. Üs α iş yüküne özgüdür ve tipik olarak 0,3 ile 0,7 aralığında, ortalama 0,5 değerindedir. Güç yasası, gerçek dünyadaki pek çok kıyaslama üzerinde onaylandı.[7]

Bu ilişki, önbellek boyutundaki sürekli artış için önbellek kayıplarının yalnızca küçük bir kısmının ortadan kaldırılabileceğini göstermektedir. Bu yasa yalnızca, ıskalama oranının düzleşmediği belirli bir sınırlı önbellek boyutu aralığı için geçerlidir. Kaçırılma oranı nihayetinde belirli, yeterince büyük bir önbellek boyutunda durgun hale gelir ve bundan sonra ilişki doğru tahminler vermez.

Yığın mesafe profili

Yığın mesafe profili, önbellek ıskalarının önbellek boyutundan nasıl etkilendiğinin daha iyi bir temsilidir. Önbellek ıskalarının güç yasası, aynı şeyin kabaca bir yaklaşımını gösterdi. Yığın mesafe profili, bir uygulamanın geçici olarak yeniden kullanım davranışını tam veya ayarlanmış bir ilişkisel önbellekte yakalar.[8]

Daha geçici yeniden kullanım davranışı sergileyen uygulamalar, genellikle daha yakın zamanda kullanılan verilere erişir. Bir önbelleğin ilişkilendirilebilirliğinin şu şekilde olduğunu varsayalım: . LRU değiştirme politikasına sahip olduğunu varsayarak, bu önbelleğin yığın mesafesi profil bilgilerini toplamak için, sayaçlar -e ve bir ek sayaç , kaçırılanların sayısını tutar. Sayaç bir isabet olduğunda artar yol ve sayaç her ıskalamada artar. Yığın mesafesi profili, en son kullanılan verilerden en az kullanılanlara doğru düşen isabet eğilimini gösterir. Bu yığın mesafesi profil bilgilerini kullanarak, önbellek ilişkilendirilebilirliği olan bir önbelleği kaçırır ve LRU değiştirme politikası, olarak hesaplanabilir

Bu profil oluşturma bilgilerinin, yalnızca farklı ilişkilerde geçici yeniden kullanımı yakalayabilmesi gibi bir sınırlaması vardır. Diğer amaçlar için, geçici yeniden kullanım daha ayrıntılı olarak incelenmelidir.

Ayrıca bakınız

Notlar

  1. ^ Hennessy, J. ve Patterson, D. (2003). Bilgisayar Mimarisi: Niceliksel Bir Yaklaşım, 3. baskı. Morgan-Kaufmann Publishers, Inc. ISBN  9781558607248.CS1 bakimi: birden çok ad: yazarlar listesi (bağlantı)
  2. ^ a b c d Solihin, Yan (2015-11-17). Paralel Çok Çekirdekli Mimarinin Temelleri, 2016 baskısı. Chapman & Hall. ISBN  978-1482211184.
  3. ^ "Çok Çekirdekli Modelleme Önbellek Tutarlılığı Eksikleri" (PDF). Alıntı dergisi gerektirir | günlük = (Yardım)
  4. ^ İsveç, Michel Dubois, Güney Kaliforniya Üniversitesi, ABD, Murali Annavaram, Güney Kaliforniya Üniversitesi, ABD, Per Stenström, Chalmers Teknoloji Üniversitesi (2012). Paralel bilgisayar organizasyonu ve tasarımı. Cambridge: Cambridge University Press. ISBN  9781139051224.
  5. ^ Ros, Alberto; Cuesta, Blas; Fernández-Pascual, Ricardo; Gómez, María E .; Acacio, Manuel E .; Robles, Antonio; Garcia, José M .; Duato José (2010). EMC2: Büyük Ölçekli Sunucular için Magny-Cours Uyumluluğunu Genişletme. 17. Uluslararası Yüksek Performanslı Hesaplama Konferansı (HiPC). s. 1–10. doi:10.1109 / HIPC.2010.5713176. ISBN  978-1-4244-8518-5.
  6. ^ Patterson, John L. Hennessy, David A. (2011). Bilgisayar mimarisi: nicel bir yaklaşım (5. baskı). San Francisco, Kaliforniya.: Morgan Kaufmann. ISBN  978-0-12-383872-8.
  7. ^ Hartstein, A .; Srinivasan, V .; Puzak, T. R .; Emma, ​​P.G (2006-01-01). Önbellek Kaçırma Davranışı: √2 ​​mi?. Computing Frontiers 3. Konferansı Bildirileri. CF '06. sayfa 313–320. doi:10.1145/1128022.1128064. ISBN  978-1595933027.
  8. ^ Mattson, R.L.; Gecsei, J .; Slutz, D. R .; Traiger, ben (1970). "Depolama Hiyerarşileri için Değerlendirme Teknikleri". IBM Systems Journal. 9 (2): 78–117. doi:10.1147 / sj.92.0078.