ScholarGate
Asistan

Bellek Hiyerarşisi ve Önbellekler

Bellek hiyerarşisi, depolamayı kayıtçılar (registers), önbellekler (caches), ana bellek ve yedek depolama (backing store) gibi seviyelere ayırarak düzenler. Bu düzenleme sayesinde, küçük ve hızlı seviyeler en çok kullanılması muhtemel verileri barındırır ve programlara hem büyük hem de hızlı bir bellek yanılsaması sunar.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Bellek hiyerarşisi, farklı hız, maliyet ve kapasiteye sahip depolama teknolojilerinin katmanlı bir düzenlemesidir. Bu düzenleme, sıkça ve yakın zamanda erişilen verilerin daha hızlı, daha küçük seviyelerde — en önemlisi önbellekte — bulunmasını sağlayarak ortalama erişim süresini en aza indirmek amacıyla yönetilmektedir.

Kapsam

Bu kapsam, belleğin neden ve nasıl başvuru yerelliği (locality of reference) ilkesinden yararlanılarak hiyerarşik bir yapıda düzenlendiğini ele almaktadır. Önbellek yapısı (yerleştirme, değiştirme ve yazma politikaları), çok seviyeli önbellekler, işlemciler arası önbellek tutarlılığı (cache coherence), sanal bellek ve adres çevirisi ile temel DRAM ve gelişmekte olan bellek teknolojilerini içermektedir. İşlemci yürütmesinin kendisi (işlemci mikro mimarisi) ve büyük ölçekli dosya ve cihaz depolaması (depolama ve G/Ç sistemleri) bu kapsamın dışındadır, ancak her ikisiyle de sınırlıdır.

Alt konular

Temel sorular

  • Başvuru yerelliği (locality of reference) neden katmanlı bir bellek hiyerarşisini etkili kılmaktadır?
  • Önbellekler yerleştirme, ilişkililik (associativity), değiştirme ve yazma politikası açısından nasıl organize edilmektedir?
  • Birden fazla önbellek aynı belleğin kopyalarını tuttuğunda tutarlılık nasıl sağlanmaktadır?
  • Sanal bellek adresleri nasıl çevirmekte ve koruma ile büyük bellek yanılsamasını nasıl sağlamaktadır?
  • DRAM ve gelişmekte olan belleklerin özellikleri sistem performansını nasıl şekillendirmektedir?

Anahtar kavramlar

  • zamansal ve uzamsal yerellik
  • önbellek isabeti ve ıskalaması
  • ilişkililik ve değiştirme politikası
  • doğrudan yazma ve geri yazma
  • çok seviyeli önbellekler
  • önbellek tutarlılığı
  • sanal bellek ve sayfalama
  • çeviri arabellek
  • DRAM ve bellek bant genişliği
  • ortalama bellek erişim süresi

Temel kuramlar

Başvuru yerelliği
Programlar, yakın zamanda erişilen verileri yeniden kullanma (zamansal yerellik) ve yakın adreslere erişme (uzamsal yerellik) eğilimindedir; bellek hiyerarşisi, yakın zamanda kullanılan blokları önbelleğe alarak ve komşuları birlikte getirerek her ikisinden de yararlanmaktadır.
Önbellek tasarımındaki ödünleşimler
Önbellek performansı, ıskalama oranı (miss rate), ıskalama cezası (miss penalty) ve isabet süresi (hit time) tarafından yönetilmekte olup, boyut, blok boyutu, ilişkililik ile değiştirme ve yazma politikaları aracılığıyla ayarlanmaktadır; klasik analizler, zorunlu (compulsory), kapasite (capacity) ve çakışma (conflict) ıskalamalarını bu seçimlerin hedefleri olarak tanımlamaktadır.

Mekanizmalar

İşlemci veri talep ettiğinde, öncelikle önbellek kontrol edilir; bir isabet (hit) veriyi hızla döndürürken, bir ıskalama (miss) alt seviyeden bir blok getirir ve bir değiştirme politikası (replacement policy) ile başka bir bloğu çıkarabilir. Yazma işlemleri, doğrudan yazma (write-through) veya geri yazma (write-back) şemalarıyla yayılır ve tutarlılık protokolleri (coherence protocols) birden fazla önbelleği tutarlı tutar. Sanal bellek, sayfa tabloları (page tables) ve bir çeviri arabellek (translation lookaside buffer) aracılığıyla bir çeviri adımı ekleyerek program adreslerini fiziksel DRAM'e eşlerken koruma da sağlamaktadır.

Klinik önem

Bellek hiyerarşisi genellikle gerçek performansa hakimdir: işlemciler ana bellekten çok daha hızlı olduğundan, önbellek davranışı ve yerellik, ham komut hızından daha önemli olabilmektedir. Önbellek farkındalıklı veri düzenleri, bloklama ve önceden getirme (prefetching), yüksek performanslı bilgi işlem, veritabanları ve makine öğrenimi çekirdekleri için merkezi öneme sahiptir ve önbellek zamanlaması, güvenlik yan kanallarının (security side channels) bir kaynağı haline gelmiştir.

Tarihçe

Maurice Wilkes, 1965 yılında önbelleği ('köle bellek' olarak) önermiştir ve önbellekler IBM System/360 Model 85 gibi ticari makinelere girmiştir. Sanal bellek, 1960'ların başında Atlas bilgisayarı ile ortaya çıkmış ve Denning'in çalışma kümesi modeli (working-set model) ile resmileştirilmiştir. Alan Jay Smith'in 1982 tarihli araştırması, önbellek tasarım bilgisini pekiştirmiş ve işlemci-bellek hız farkları genişledikçe çok seviyeli önbellekler ve gelişmiş tutarlılık protokolleri standart hale gelmiştir.

Tartışmalar

Yerelliğin donanım ve yazılım tarafından yönetimi
Şeffaf donanım önbelleklemesi ile açıkça yönetilen bellekler (scratchpad'ler, yazılım kontrollü önceden getirme) arasında süregelen bir gerilim bulunmaktadır: donanım önbelleklemesi genel ve programlaması kolayken, açık yönetim özel iş yükleri için daha öngörülebilir ve verimli olabilmektedir.

Öne çıkan isimler

  • Maurice Wilkes
  • Alan Jay Smith
  • Peter J. Denning
  • John L. Hennessy
  • David A. Patterson

İlgili konular

Temel eserler

  • hennessy2019
  • smith1982cache
  • patterson2020

Sıkça sorulan sorular

Önbellekler ana belleğe kıyasla bu kadar küçük olmalarına rağmen neden etkilidir?
Çünkü programlar yerellik sergiler: herhangi bir anda, yalnızca küçük bir çalışma veri kümesine tekrar tekrar dokunurlar ve erişimler yakın adreslerde kümelenir. Bu çalışma kümesini tutan küçük bir önbellek bu nedenle isteklerin büyük çoğunluğunu karşılamaktadır.
Önbellek ile sanal bellek arasındaki fark nedir?
Her ikisi de verileri daha hızlı, daha küçük bir seviye ile daha yavaş, daha büyük bir seviye arasında taşır. Bir önbellek (donanımda yönetilir) ana belleğin bloklarını tutar; sanal bellek (işletim sistemi ile yönetilir) program adreslerini fiziksel belleğe eşler ve verileri diskten sayfalayarak getirip götürür, aynı zamanda koruma ve fiziksel RAM'den daha büyük bir adres alanı da sağlar.

Bu kavram için yöntemler

İlgili kavramlar