Önbellek

Hesaplamada, önbellek ; veri depolayan bir donanım veya yazılım bileşenidir, böylece bu veriler için gelecekteki talepler daha hızlı bir şekilde yerine getirilebilir; Bir önbellekte depolanan veriler daha önceki bir hesaplamanın sonucu veya başka bir yerde depolanan verilerin bir kopyası olabilir. İstenen veriler bir önbellekte bulunduğunda, önbellek kaçması, yapamadığında önbellek kaçırma şeklinde göründüğünde önbellek isabet oluşur. Önbellek isabetleri, bir sonucu yeniden hesaplamadan veya daha yavaş bir veri deposundan okumadan daha hızlı olan önbellekten veri okuyarak yapılır; bu nedenle, önbellekten ne kadar fazla istek yapılabiliyorsa, sistem o kadar hızlı çalışır.

Uygun maliyetli ve verilerin verimli bir şekilde kullanılmasını sağlamak için, önbelleklerin nispeten küçük olması gerekir. Bununla birlikte, önbellekleri birçok hesaplama alanında kendilerini kanıtlamışlardır, çünkü tipik bilgisayar uygulamaları verilere yüksek derecede referansın bulunduğu yer ile erişir. Bu tür erişim kalıpları, yakın zamanda talep edilen verilerin talep edildiği geçici bir konum ve fiziksel olarak daha önce talep edilen verilere yakın olarak depolanan verilerin talep edildiği mekansal konum sergiler.

Boyut ve hız (daha büyük bir kaynağın daha büyük fiziksel mesafeler gerektirdiği düşünüldüğü için) arasında doğal bir denge vardır, ancak aynı zamanda daha ucuz, kolayca seri üretilen emtialar (örneğin, SRAM gibi) arasında pahalı, birinci sınıf teknolojiler (örn. DRAM veya sabit diskler) olur.

Daha büyük bir kaynak erişim için önemli bir gecikme yaşar; modern bir 4 GHz işlemcinin DRAM'a ulaşması yüzlerce saat döngüsü alabilir. Bu, daha sonraki okumaların yakındaki konumlardan geleceği umuduyla, büyük parçalar halinde okunarak hafifletilir. Öngörme veya açık ön yükleme ayrıca gelecekteki okumaların nereden geleceğini ve zamanından önce talepte bulunacağını tahmin edebilir; Doğru yapılırsa gecikme tamamen atlanır.

Önbellek kullanımı ayrıca, çok sayıda ince tane aktarımını daha büyük ve daha verimli taleplere birleştirerek, temel kaynaklardan daha yüksek verime izin verir. DRAM devrelerinde, bu daha geniş bir veri yoluna sahip olarak yapılabilir. Örneğin, 32 bit adres alanındaki baytlara erişen, ancak 128 bit yonga dışı bir veri yolu tarafından sunulan bir program düşünün; önbelleğe alınmamış ayrı bayt erişimleri, toplam bant genişliğinin yalnızca 1/16'sının kullanılmasına izin verir ve veri hareketinin %80'i veri yerine hafıza adresleri olur. Daha büyük parçaların okunması, adres bilgilerinin iletilmesi için gereken bant genişliği oranını azaltır.

Donanım, tekrar kullanılması muhtemel verilerin geçici olarak depolanması için bir bellek bloğu olarak önbellek uygular. Merkezi işlem birimi ve sabit disk ler, web tarayıcısı ve web sunucusu gibi sık sık önbellek kullanırlar.

Bir önbellek bir giriş havuzundan oluşur. Her giriş, veri deposu içindeki aynı verilerin bir kopyası olan veri ile ilişkilendirilmiştir. Her giriş, girişin kopya olduğu destek deposundaki verilerin kimliğini belirten bir etiketine de sahiptir.

Önbellek istemcisinin (bir CPU, web tarayıcısı, işletim sistemi) destek deposunda olduğu varsayılan verilere erişmesi gerektiğinde, ilk önce önbelleği kontrol eder. İstenen verininkiyle eşleşen bir etiket ile bir giriş bulunabiliyorsa, girişteki veriler yerine kullanılır. Bu durum önbellek isabet olarak bilinir. Örneğin, bir web tarayıcı programı, belirli bir URL adresindeki bir web sayfasının içeriğinin yerel bir kopyasına sahip olup olmadığını görmek için diskteki yerel önbelleğini kontrol edebilir. Bu örnekte, URL etiketi ve web sayfasının içeriği veridir. Önbellek isabetiyle sonuçlanan erişimlerin yüzdesi, önbelleğin isabet oranı veya isabet oranı olarak bilinir.

Önbellek kontrol edildiğinde ve istenen etiketi içeren herhangi bir giriş içermediğinde alternatif durum, önbellek kaçırma olarak bilinir. Bu, destek deposundan verilere daha pahalı erişim gerektirir. İstenen veri alındıktan sonra, tipik olarak bir sonraki erişim için hazır olan önbelleğe kopyalanır.

Bir önbellek özeti sırasında, yeni alınan verilere yer açmak için önceden var olan diğer önbellek girişleri kaldırılır. sezgisel yerine kullanılacak girişi seçmek için kullanılan değiştirme politikası olarak bilinir. En az kullanılan "popüler değiştirme politikası" (LRU), en eski girişin yerine, en son girilen diğer girişlerden daha az erişilen girişin yerine geçer (bkz. Önbellek algoritmaları). Daha verimli önbellekleme algoritmaları, kullanım-hit frekansını depolanan içeriğin boyutuna karşı ve ayrıca hem önbellek hem de destek deposu için gecikmeler ve verimlerle hesaplar. Bu, daha büyük miktarlarda veri, daha uzun gecikmeler ve sabit sürücüler ve ağlarda yaşananlar gibi yavaş çıkışlar için iyi çalışır, ancak bir CPU önbelleğinde kullanım için verimli değildir.

Geri yazma: başlangıçta, yazma işlemi yalnızca önbelleğe yapılır. Yedek depoya yazma, değiştirilen içerik başka bir önbellek bloğu ile değiştirilene kadar ertelenir.

Diğer politikalar da veri geri yazma işlemini tetikleyebilir. İstemci, önbellekteki verilerde birçok değişiklik yapabilir ve daha sonra verileri geri yazması için önbelleğe açıkça bildirimde bulunabilir.

Yazma tahsisi (ayrıca yazarken al olarak da bilinir): cevapsız yazma konumundaki veriler önbelleğe yüklenir ve ardından yazma-yazma işlemi yapılır. Bu yaklaşımda yazma özlüyor okuma özlüyor benzer.

Yazma yok tahsisi (ayrıca yazma-yok-ayırma veya etrafına yazma olarak da bilinir): cevapsız yazma konumundaki veriler önbelleğe yüklenmez ve doğrudan arkaya yazılır saklayın. Bu yaklaşımda, veriler yalnızca okuma özlüyorsa önbelleğe yüklenir.

Önbellek dışındaki varlıklar destek deposundaki verileri değiştirebilir; bu durumda önbellekteki kopya eski olabilir veya eski olabilir. Alternatif olarak, istemci önbellekteki verileri güncellediğinde, bu verilerin diğer önbelleklerdeki kopyaları eskimiş olur. Verileri tutarlı tutan önbellek yöneticileri arasındaki iletişim protokolleri tutarlılık protokolleri olarak bilinir.

CPU üzerindeki veya yakınında küçük anılar, daha büyük ana bellekten daha hızlı çalışabilir. 1980'lerden bu yana çoğu CPU bazen bir ya da daha fazla önbellek kullandı, bazen modern yüksek gömülü, masaüstü ve sunucumikroişlemcilerde altı adet önbellek türü olabilir (seviyeler ve fonksiyonlar arasında). Belirli bir işleve sahip önbellek örnekleri, D-önbellek ve I-önbellek ve bellek yönetim birimi için etkin sayfalar ön belleği olabilir.

Daha önce grafik işlemci üniteleri (GPU'lar) genellikle sınırlı salt okunur doku önbelleklerine sahipti ve 2D'yi geliştirmek için morton düzeni şişmiş dokular ön bellek işlemliği getirdi. İşlemci önbelleği, performansı önemli ölçüde etkileyecektir; mipmaplama kullanılmıyorsa. Önbellekleme, karmaşık UV formatlarında rastgele UV koordinatları ve perspektif dönüşümleri ile ters doku eşlemesinde indekslenen, genellikle piksel başına 4 bit kadar küçük doku verisi için 32 bitlik (ve daha geniş) transferlerden yararlanılması için önemliydi.

GPU'lar geliştikçe (özellikle GPGPU hesaplama gölgelendiricileriyle birlikte), shader için talimat önbellekleri de dahil olmak üzere, giderek artan bir şekilde genel önbellekleri geliştirdiler ve CPU önbellekleriyle giderek daha yaygın bir işlevsellik sergilediler. Örneğin, GT200 mimarisi GPU'larında L2 önbellek bulunmazken, Fermi GPU'da 768 KB son seviye önbellek bulunurken, Kepler GPU'da 1536 KB son seviye önbellek bulunur, ve Maxwell GPU'da 2048 KB son seviye önbellek var. Bu önbellekler, iş parçacığı ve atomik işlemler arasındaki senkronizasyon ilkellerini işlemek ve bir CPU tarzı MMU ile arayüz oluşturmak için büyüdü.

Sayısal işaret işleyiciler yıllar içinde benzer şekilde genellemişlerdir. Daha önceki tasarımlar, DMA tarafından beslenen karalama belleği kullandılar, ancak Qualcomm Hexagon gibi modern DSP'ler genellikle CPU'lara çok benzer bir önbellek seti içeriyordu. (ör. Paylaşılan L2, bölünmüş L1 I-önbellek ve D-önbellek ile değiştirilmiş Harvard mimarisi).

Sayfa tablosu girişlerini ana bellekten alan bir bellek yönetim birimi (MMU), sanal adres sonuçlarını fiziksel adres çevirilerine kaydetmek için kullanılan özel bir önbelleğe sahiptir. Bu özel önbellek adı etkin sayfalar ön belleği (TLB).

Bilgi merkezli ağ iletişimi (ICN), İnternet altyapısını, kalıcı bağlantı ve uçtan uca prensip temelinde, odak noktası olan bir ağ mimarisine dayanan ana bilgisayar merkezli bir paradigmadan uzağa geliştirmek için bir yaklaşımdır. Tanımlanmış bilgi (veya içerik veya veri). Bilgi merkezli ağ iletişimi ICN'sindeki düğümlerin doğal önbelleğe alma yetenekleri nedeniyle, ICN, önbellek politikalarının benzersiz gereksinimlerine sahip olan gevşek bir şekilde bağlanan önbellek ağı olarak görülebilir.Bununla birlikte, her yerde bulunan içerik önbelleğe alma işlemi, fazladan özen ve çözümler gerektiren yetkisiz erişime karşı içerik koruma zorluğunu da beraberinde getirir. Proxy sunucularının aksine, Bilgi merkezli ağ bağlantısında önbellek ağ düzeyinde bir çözümdür. Bu nedenle, hızla değişen önbellek durumları ve daha yüksek talep varış oranları vardır; dahası, daha küçük önbellek boyutları, içerik tahliye politikalarına farklı tür gereksinimler getirmektedir. Özellikle, Bilgi merkezli ağ oluşturma için tahliye politikaları hızlı ve hafif olmalıdır. Farklı Bilgi-merkezli ağ mimarileri ve uygulamaları için çeşitli önbellek çoğaltma ve tahliye planları önerilmiştir.

En Son Kullanılan Zaman Farkında Olan (TLRU) önbellekte depolanan içeriğin geçerli bir ömre sahip olduğu durumlar için tasarlanmış bir LRU çeşididir. Algoritma, Bilgi merkezli ağ (ICN), İçerik Dağıtım Ağları (CDN'ler) ve genel olarak dağıtılmış ağlar gibi ağ önbellek uygulamalarında uygundur. TLRU yeni bir terim sunar: TTU (Kullanım Süresi). TTU, içeriğin bulunduğu yere ve içerik yayıncısının duyurusuna dayanarak içeriğin kullanılabilirlik süresini belirleyen bir içeriğin/sayfanın zaman damgasıdır. Bu yerel konum tabanlı zaman damgası nedeniyle, TTU yerel yöneticiye ağ depolama alanında düzenleme yapmak için daha fazla kontrol sağlar.

TLRU algoritmasında, bir içerik parçası geldiğinde, önbellek düğümü, içerik yayıncısı tarafından atanan TTU değerini temel alarak yerel TTU değerini hesaplar. Yerel TTU değeri, yerel olarak tanımlanmış bir fonksiyon kullanılarak hesaplanır. Yerel TTU değeri hesaplandıktan sonra, içeriğin değiştirilmesi önbellek düğümünde depolanan toplam içeriğin bir alt kümesinde gerçekleştirilir. TLRU, daha az popüler ve küçük yaşam içeriğinin, gelen içerikle değiştirilmesini sağlar.

En Son Kullanılan En Az Sıklık (LFRU) önbellek değiştirme şeması, LFU ve LRU şemalarının faydalarını birleştirir. LFRU, Bilgi merkezli ağ (ICN), İçerik Dağıtım Ağları (CDN'ler) ve genel olarak dağıtılmış ağlar gibi ‘ağ içi’ önbellek uygulamaları için uygundur. LFRU'da, önbellek ayrıcalıklı ve ayrıcalıklı olmayan bölümler olarak adlandırılan iki bölüme ayrılmıştır. Ayrıcalıklı bölüm, korunan bir bölüm olarak tanımlanabilir. İçerik çok popülerse, ayrıcalıklı bölüme itilir. İmtiyazlı bölümün değiştirilmesi aşağıdaki şekilde yapılır: LFRU, imtiyazsız bölümden içeriği tahliye eder, içeriği imtiyazlı bölümden imtiyazlı bölüme iter ve son olarak da imtiyazlı bölüme yeni içerik ekler. Yukarıdaki prosedürde LRU ayrıcalıklı bölüm için kullanılır ve ayrıcalıklı olmayan bölüm için yaklaşık bir LFU (ALFU) şeması kullanılır, dolayısıyla LFRU kısaltması kullanılır.

CPU önbellekleri genellikle tamamen donanım tarafından yönetilirken, çeşitli önbellek yazılımları diğer önbellekleri yönetir. Disk belleği örneği olan ana bellekteki sayfa önbelleği işletim sistemi kernel tarafından yönetilir.

Sabit disk sürücüsünün tümleşik bir parçası olan disk arabelleği bazen yanıltıcı olarak "disk önbelleği" olarak adlandırılırken, ana işlevleri yazma sıralaması ve ön okuyucudur. Tekrarlanan önbellek isabetleri, sürücünün kapasitesine kıyasla arabellek boyutunun küçük olması nedeniyle nispeten nadirdir. Bununla birlikte, üst seviye disk denetleyicileri genellikle sabit disk sürücüsünün veri bloklarının kendi önbelleklerine sahiptir.

Son olarak, hızlı bir yerel sabit disk sürücüsü, uzak sunucular (web önbelleği) veya yerel teyp sürücüleri veya optik müzik kutuları gibi daha yavaş veri depolama aygıtlarında tutulan bilgileri de önbelleğe alabilir; Böyle bir program, hiyerarşik depolama yönetiminin ana konseptidir. Ayrıca, hızlı flash tabanlı katı hal sürücü ler (SSD'ler), hibrit sürücüler veya katı- olarak çalışan, daha yavaş dönme ortamı sabit disk sürücüleri için önbellek olarak kullanılabilir. durum hibrit sürücüleri (SSHD'ler).

Web tarayıcısı ve web proxy sunucuları, web sayfası ve görüntü gibi web sunucusu'dan önceki yanıtları saklamak için web önbelleklerini kullanır. Web önbellekleri, daha önce önbellekte depolanan bilgiler sıklıkla yeniden kullanılabildiğinden, ağ üzerinden iletilmesi gereken bilgi miktarını azaltır. Bu, web sunucusunun bant genişliğini ve işleme gereksinimlerini azaltır ve web kullanıcıları için duyarlılığı artırmaya yardımcı olur.

Web tarayıcıları yerleşik bir web önbelleği kullanır, ancak bazı İnternet servis sağlayıcı (ISS'ler) veya kuruluşlar da bu ağın tüm kullanıcıları arasında paylaşılan bir web önbelleği olan bir önbellek proxy sunucusu kullanır.

Diğer bir önbellek biçimi de, P2P aktarımını hızlandırmak için peer-to-peer uygulamalar tarafından en çok aranan dosyaların ISP önbellekte depolandığı P2P önbelleğe almasıdır. Benzer şekilde, toplulukların P2P trafiği için aynı görevi yerine getirmelerine izin veren, örneğin Corelli gibi, merkezi olmayan eşdeğerler de mevcuttur.

Bir önbellek, bir destek mağazasından almak yerine, talep üzerine hesaplanan verileri depolayabilir. Notlandırma, kaynak tüketen işlev çağrılarının sonuçlarını bir arama tablosu içinde saklayan ve ardından gelen aramaların saklanan sonuçları yeniden kullanmasına ve tekrarlanan hesaplamaları engellemesine izin veren bir optimizasyonu tekniğidir. Önbellekleme aracı olarak da düşünülebilecek dinamik programlama algoritma tasarım metodolojisi ile ilgilidir.

Yazma işlemi, güvenilir olmayan ağlar (Ethernet LAN gibi) üzerinden çalışırken, iletişimin güvenilmez olduğu durumlarda çoklu geri yazma önbellekleri arasında gerekli olan çok karmaşıklık nedeniyle, yaygındır. Örneğin, web sayfası önbellekleri ve istemci tarafı ağ dosya sistemi önbellekleri (NFS veya SMB'dekiler gibi) tipik olarak salt okunurdur veya özel olarak yazmaya devam eder ağ protokolü basit ve güvenilir.

Arama motorları da sık sık web sayfası dizine aldıklarını önbellekten kullanabiliyorlar. Örneğin, Google, her arama sonucunun yanında "Önbelleğe Alınmış" bir bağlantı sağlar. Bu, web sunucusundan web sayfalarına geçici veya kalıcı olarak erişilemediğinde yararlı olabilir.

Başka bir önbellekleme türü, tekrar gerekmesi gerekebilecek hesaplanmış sonuçları veya notları depolamaktır. Örneğin, ccache, daha sonraki derleme işlemlerini hızlandırmak için derlemenin çıktısını önbelleğe alan bir programdır.

Dağıtılmış önbellek Uygulamaya ölçeklenebilirlik, güvenilirlik ve performans sağlamak için ağ ana bilgisayarlarını kullanır. Ana bilgisayarlar, farklı coğrafi bölgelere birlikte yerleştirilebilir veya yayılabilir.

Bir "tampon" ve "önbellek" anlambilimi tamamen farklı değildir; Öyle olsa bile, önbellekleme işlemi ile önbellekleme işlemi arasında kasıtlı olarak temel farklılıklar vardır.

Temel olarak, önbellekleme, art arda aktarılan veri aktarımları için performans artışı gerçekleştirir. Bir önbellek sistemi, bir veri öğesinin ilk (tipik olarak yazarken) aktarılması üzerine bir performans artışı sağlayabilirken, bu performans artışı, önbellek sistemi içinde gerçekleşen tamponlamadan kaynaklanmaktadır.

Tipik önbellek uygulamalarında, ilk defa okunan veya yazılan bir veri maddesi etkili bir şekilde tamponlanır; ve bir yazı söz konusu olduğunda, çoğunlukla, yazının kaynaklandığı başvuru için performans artışı sağlamak. Ek olarak, bireysel yazmaların bir yığın yazma işlemine ertelendiği bir önbellek protokolünün kısmı bir tamponlama şeklidir. Bireysel okumaların bir yığın okumaya ertelendiği bir önbellek protokolünün kısmı ayrıca bir tamponlama şeklidir, ancak bu form en azından ilk okumaların performansını olumsuz yönde etkilese de (toplamın performansını olumlu yönde etkilese bile) Bireysel okur). Uygulamada, önbellekleme neredeyse her zaman bir tür tamponlama işlemi içerirken, katı tamponlama önbellekleme içermez.

Bellek geleneksel olarak kullanılan geçici bir bellek alanıdır çünkü CPU talimatı çevre birimlerinde depolanan verileri doğrudan adresleyemez. Dolayısıyla, adreslenebilir hafıza bir ara aşama olarak kullanılır. Ek olarak, böyle bir tampon, büyük bir veri bloğu toplandığında veya demonte edildiğinde (bir depolama cihazının gerektirdiği şekilde) veya veriler, üretilenden farklı bir sırayla iletildiğinde uygulanabilir. Ayrıca, bütün bir veri tamponu genellikle sırayla (örneğin sabit diske) aktarılır, bu nedenle tamponlama işlemi bazen aktarım performansını arttırır veya amacın gecikmeyi azaltmak olduğu yerde önbelleğe almanın aksine aktarım gecikmesinin varyasyonunu veya değişimini azaltır. Bu faydalar, tamponlanmış veriler bir kez belleki bir kez yazılsa ve tampondan bir kez okunursa bile mevcuttur.

Önbellek ayrıca aktarım performansını da artırır. Artışın bir kısmı da benzer şekilde, çok sayıda küçük transferin büyük bir blokta birleşmesi ihtimalinden kaynaklanıyor. Ancak ana performans kazancı, aynı verinin önbellekten birçok kez okunması veya yazılı verilerin yakında okunması ihtimalinin yüksek olması nedeniyle oluşur. Bir önbelleğin tek amacı, temelindeki yavaş depolamaya erişimi azaltmaktır. Önbellek ayrıca genellikle komşu katmanların bakış açısından görünmeyecek şekilde tasarlanmış bir soyutlama katmanıdır.