Önbellek (bilgi işlem)

Önbellekleme, bilgisayar bilimlerinde kullanılan bir terimdir. Bir önbelleğin ("cash" /ˈkæʃ/ KASH olarak telaffuz edilir) arkasındaki fikir çok basittir: Çoğu zaman, bir hesaplama için bir sonuç elde etmek çok zaman alıcıdır, bu nedenle sonucu saklamak genellikle iyi bir fikirdir. İki tür depolama ortamı kullanılır: Biri genellikle oldukça büyüktür, ancak ona erişmek "yavaştır"; diğerine çok daha hızlı erişilebilir, ancak genellikle küçüktür. Önbelleğe almanın arkasındaki en temel fikir, verilerin kopyalarına sahip olmak için erişimi hızlı olan ortamı kullanmaktır. Kopya ile orijinal arasında hiçbir fark yoktur. Orijinal veriye erişmek uzun zaman alabilir veya bunu yapmak pahalı olabilir (örneğin: çözülmesi uzun zaman alan zor bir problemin sonuçları). Bu nedenle, verinin kopyasını önbellekten kullanmak çok daha "ucuzdur". Başka bir deyişle önbellek, sık kullanılan verilerin kopyalarının bulunduğu geçici bir depolama alanıdır. Verinin bir kopyası bu önbellekte olduğunda, orijinal veriyi yeniden almak veya yeniden hesaplamak yerine bu kopyayı kullanmak daha hızlıdır. Bu, verilere erişmek için gereken ortalama süreyi kısaltacaktır. Bir önbelleğe yeni bir değer koymak genellikle eski bir değerin değiştirilmesi gerektiği anlamına gelir. Değiştirilecek değerin nasıl seçileceğine ilişkin farklı fikirler (genellikle "stratejiler" olarak adlandırılır) vardır.

Tampon, önbelleğe çok benzer. Ara bellekteki verilere erişen istemcinin bir ara bellek olduğunu bilmesi bakımından farklıdır; ara bellek uygulama tarafından yönetilir. Bir önbellekte, veriye erişen istemcinin bir önbellek olduğunu bilmesi gerekmez.

Tipik bilgisayar uygulamaları verilere çok benzer şekillerde erişir. Verilerin ayrı ayrı erişilebilen "bloklar" halinde yapılandırıldığını varsayalım. Bir uygulama bir bloğa eriştiğinde, orijinal bloğa "yakın" bir bloğa da erişmesi (veya referans vermesi) çok muhtemeldir. Bu, referansın yerelliği olarak bilinir. Bu tür "yerelliğin" farklı türleri vardır. Referansın yerelliği, önbelleklerin bilgi işlemin birçok alanında iyi çalışmasının nedenlerinden biridir.

İyi çalışabilmek için, önbellekler tüm veri miktarına kıyasla küçüktür. Önbellek ne kadar büyük olursa, bir girdiyi aramak o kadar uzun sürer. Daha büyük önbelleklerin oluşturulması da daha pahalıdır.

Önbellekler nasıl çalışır?

Önbellek, muhtemelen tekrar kullanılacak verilerin depolanması için kullanılan bir bellek bloğudur. CPU ve sabit disk, web tarayıcıları ve web sunucuları gibi genellikle bir önbellek kullanır.

Bir önbellek, havuz adı verilen birçok girdiden oluşur. Her giriş, başka bir yerdeki bir verinin kopyası olan bir veriyi (bir veri parçası) tutar. Önbellekler genellikle yedekleme deposu adı verilen bir depo kullanır. Yedek depolara erişim, önbelleğe kıyasla yavaş veya pahalıdır. Örneğin bir disk önbelleği destek deposu olarak bir sabit disk kullanır. Her girdinin ayrıca etiket adı verilen küçük bir bilgisi vardır. Bu etiket, orijinal verilerin depolandığı konumu bulmak için kullanılır.

Okumak için önbellekler

Bir istemci (CPU, web tarayıcısı, işletim sistemi) yedekleme deposunda olduğuna inandığı bir veri parçasına erişmek istediğinde, önce verinin önbellekte bulunup bulunmadığını kontrol eder. Eğer veri önbellekte bulunabiliyorsa, istemci onu kullanabilir ve ana belleği kullanmasına gerek kalmaz. Bu, önbellek isabeti olarak bilinir. Örneğin, bir web tarayıcı programı, belirli bir URL'deki 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 etiket, web sayfasının içeriği ise veridir.

Meydana gelebilecek diğer bir durum ise etiketli verinin önbellekte bulunamamasıdır. Bu durum önbellek ıskalama olarak bilinir. Verinin yedekleme deposundan getirilmesi gerekir. Genellikle önbelleğe kopyalanır, böylece bir dahaki sefere artık destek deposundan getirilmesine gerek kalmaz.

Önbellek yalnızca sınırlı bir boyuta sahiptir. Önceden önbelleğe alınmamış girdiye yer açmak için, önbelleğe alınmış başka bir girdinin önbellekten silinmesi gerekebilir. En iyi şekilde silinmesi gereken girdiyi bulmak için özel kurallar kullanılır. Bu kurallar genellikle Sezgisel olarak adlandırılır. Girişi bulmak için kullanılan sezgisel yöntemlere değiştirme politikası denir. Kullanılan çok basit bir kurala Least recently used (veya LRU) denir. Basitçe en uzun süre önce kullanılmış olan girişi alır. Diğer sezgisel yöntemler önbellek algoritmasında listelenmiştir...

Yazmak için önbellekler

Önbellekler veri yazmak için de kullanılabilir; bunun faydası, giriş önbelleğe yazıldıktan sonra istemcinin işlemine devam edebilmesidir; giriş yedekleme deposuna yazılana kadar beklemek zorunda değildir.

Ancak, girdinin zaman içinde bir noktada yedekleme deposuna yazılması gerekir. Bunun ne zaman gerçekleşeceği yazma ilkesi tarafından kontrol edilir.

Bir write-through önbellekte, her girdi önbellekte saklanmanın yanı sıra hemen destek deposuna yazılır.

Diğer seçenek ise yalnızca önbelleğe yazmak ve yedekleme deposuna daha sonra yazmaktır. Bu, geri yazma (veya arkaya yazma) önbelleği olarak bilinir. Önbellek, henüz destek deposuna yazılmamış girdileri işaretler; kullanılan işaret genellikle kirli bayrak olarak adlandırılır. Girdiler önbellekten silinmeden önce yedekleme deposuna yazılır. Bu tembel yazma olarak bilinir. Geri yazma önbelleğindeki bir ıskalama (bir bloğun başka bir blokla değiştirilmesini gerektirir) genellikle iki bellek erişimine ihtiyaç duyacaktır: biri gerekli veriyi almak için, diğeri de değiştirilen veriyi önbellekten depoya yazmak için.

Önbellekleme politikası, belirli bir verinin önbelleğe yazılması gerektiğini de söyleyebilir. İstemci önbellekteki veri üzerinde birçok değişiklik yapmış olabilir. İşi bittikten sonra, önbelleğe veriyi geri yazmasını açıkça söyleyebilir.

Yazma yok tahsisi, yalnızca okumaların önbelleğe alındığı bir önbellek politikasıdır. Bu, geri yazma veya yazma yoluyla önbelleğe alma ihtiyacını ortadan kaldırır. Yazmalar her zaman yedekleme deposuna yapılır.

İstemci, yedekleme deposundaki verileri değiştiren uygulama değildir. Yedekleme deposundaki veriler değişirse, önbellekteki kopya güncelliğini yitirir veya eski olur. Alternatif olarak, istemci önbellekteki verileri güncellediğinde, bu verilerin diğer önbelleklerdeki kopyaları eski hale gelecektir. Verileri anlamlı tutmak için önbellek yöneticilerinin birbirleriyle konuşmasına olanak tanıyan özel iletişim protokolleri vardır. Bunlar tutarlılık protokolleri olarak bilinir.

Bir CPU bellek önbelleğinin şemasıZoom
Bir CPU bellek önbelleğinin şeması

Değiştirilecek girişi seçme

Önbellek küçüktür ve çoğu zaman dolu ya da neredeyse dolu olacaktır. Dolayısıyla yeni bir değer eklendiğinde, eski bir değerin kaldırılması gerekir. Bu seçimin yapılabileceği farklı yollar vardır:

  • İlk giren ilk çıkar: Önbelleğe en uzun süre önce eklenen girdiyi değiştirmeniz yeterlidir
  • En son kullanılan: Bu fikir yukarıdaki FIFO'ya benzer, ancak bir girdi kullanıldığında zaman damgası/yaşı güncellenir.
  • En az kullanılan: Yine FIFO örneğine benzer şekilde, zaman damgası kullanmak yerine, bir giriş her kullanıldığında artırılan bir sayaç kullanın
  • Rastgele bir giriş seçin

Tarih

Önbellek kelimesi bilgi işlem alanında ilk kez 1967 yılında IBM Systems Journal'da yayınlanmak üzere bilimsel bir makale hazırlanırken kullanılmıştır. Makale, Model 85'teki belleğin yeni bir iyileştirmesi hakkındaydı. Model 85, IBM System/360 ürün serisinin bir bilgisayarıydı. Derginin editörü, makalede kullanılan yüksek hızlı tampon için daha iyi bir kelime istedi. Hiçbir yanıt alamadı ve Fransızca cacher kelimesinden gelen ve "saklamak" anlamına gelen cache kelimesini önerdi. Makale 1968'in başlarında yayınlandı ve yazarlar IBM tarafından onurlandırıldı. Çalışmaları geniş çapta memnuniyetle karşılandı ve geliştirildi. Cache kısa sürede bilgisayar literatüründe standart kullanım haline geldi.

Önbelleklerin kullanıldığı yerler

CPU önbellekleri

CPU çipi üzerindeki veya yakınındaki küçük bellekler, çok daha büyük olan ana bellekten daha hızlı hale getirilebilir. 1980'lerden bu yana çoğu CPU bir ya da daha fazla önbellek kullanmıştır. Kişisel bilgisayarların içindeki modern genel amaçlı CPU'larda yarım düzine kadar bellek bulunabilir. Her önbellek, programları yürütme görevinin farklı bir kısmı için uzmanlaşmış olabilir.

Disk önbellekleri

CPU önbellekleri genellikle tamamen donanım tarafından yönetilirken, diğer önbellekler farklı bir yazılım türü tarafından yönetilir. İşletim sistemi genellikle ana bellekteki bir sayfa önbelleğini yönetir. Bilgisayar bilimi dışındaki kullanıcılar genellikle bu önbelleği sanal bellek olarak adlandırır. İşletim sisteminin çekirdeği tarafından yönetilir.

Modern sabit disklerin disk arabellekleri vardır. Bunlar bazen "disk önbelleği" olarak adlandırılır, ancak bu yanlıştır. Bu tamponların ana işlevi disk yazma işlemlerini sıralamak ve okuma işlemlerini yönetmektir. Tekrarlanan önbellek vuruşları nadirdir, çünkü arabellek sabit sürücünün boyutuna kıyasla çok küçüktür.

Yerel sabit diskler, uzak sunucular, yerel teyp sürücüleri veya optik müzik kutuları gibi diğer depolama aygıtlarına kıyasla hızlıdır. Yerel sabit disklerin önbellek olarak kullanılması hiyerarşik depolama yönetiminin ana konseptidir.

Web önbellekleri

Web tarayıcıları ve web proxy sunucuları, web sayfaları gibi web sunucularından gelen önceki yanıtları saklamak için önbellekleri kullanır. Web önbellekleri, ağ üzerinden iletilmesi gereken bilgi miktarını azaltır. Daha önce önbellekte saklanan bilgiler genellikle yeniden kullanılabilir. Bu, web sunucusunun bant genişliğini ve işlem gereksinimlerini azaltır ve web kullanıcıları için yanıt verme hızını artırmaya yardımcı olur.

Modern web tarayıcıları yerleşik bir web önbelleği kullanır, ancak bazı internet servis sağlayıcıları veya kuruluşlar da bir önbellek proxy sunucusu kullanır. Bu, söz konusu ağın tüm kullanıcıları arasında paylaşılan bir web önbelleğidir.

Arama motorları ayrıca indeksledikleri web sayfalarını genellikle önbelleklerinden erişilebilir hale getirir. Örneğin, Google her arama sonucunun yanında bir "Önbellek" bağlantısı sağlar. Bu, web sayfalarına bir web sunucusundan geçici olarak erişilemediğinde kullanışlıdır.

Güvenilir olmayan ağlarda önbelleğe alma

Write-through işlemi güvenilir olmayan ağlarda (Ethernet LAN gibi) yaygındır. Böyle bir durumda, birden fazla yazma önbelleği kullanıldığında yazma önbelleğindeki verilerin anlamlı olmasını sağlamak için kullanılan protokol çok karmaşıktır.

Örneğin, web sayfası önbellekleri ve istemci tarafı ağ dosya sistemi önbellekleri (NFS veya SMB'dekiler gibi), ağ protokolünü basit ve güvenilir tutmak için genellikle salt okunur veya yazılabilirdir.

Tampon ve önbellek arasındaki fark

Tampon ve önbellek birbirini dışlamaz; sıklıkla birlikte de kullanılırlar. Ancak kullanılma nedenleri farklıdır. Tampon bellekte geleneksel olarak kullanılan bir konumdur çünkü CPU talimatları çevresel aygıtlarda depolanan verileri doğrudan adresleyemez. Bilgisayar belleği bir ara depo olarak kullanılır.

Ayrıca böyle bir tampon, büyük bir veri bloğu bir araya getirildiğinde veya parçalarına ayrıldığında (bir depolama cihazının gerektirdiği gibi) ya da veriler üretildiklerinden farklı bir sırada teslim edildiğinde uygulanabilir olabilir. Ayrıca bir veri tamponunun tamamı genellikle sırayla aktarılır (örneğin sabit diske), bu nedenle tamponlamanın kendisi bazen aktarım performansını artırır. Bu faydalar, tamponlanmış veriler tampona bir kez yazılsa ve tampondan bir kez okunsa bile mevcuttur.

Önbellek ayrıca aktarım performansını da artırır. Artışın bir kısmı benzer şekilde birden fazla küçük transferin tek bir büyük blokta birleşmesi olasılığından kaynaklanır. Ancak asıl performans artışı, aynı verinin önbellekten birkaç kez okunması ya da yazılan verinin yakında okunması olasılığının yüksek olmasından kaynaklanır. Önbelleklerin tek amacı, altta yatan daha yavaş depolama alanına erişimi azaltmaktır. Önbellek ayrıca genellikle komşu katmanların bakış açısından görünmez olacak şekilde tasarlanmış bir soyutlama katmanıdır. Bu şekilde, uygulamalar veya istemciler bir önbellek olduğunun farkında olmayabilir.

Sorular ve Yanıtlar

S: Önbellekleme nedir?


C: Önbelleğe alma, bilgisayar bilimlerinde kullanılan bir terimdir ve orijinal veriyi yeniden almak veya yeniden hesaplamak yerine daha hızlı erişmek için sık kullanılan verilerin kopyalarını saklama uygulamasını ifade eder.

S: Önbellekleme nasıl çalışır?


C: Önbellekleme, biri genellikle oldukça büyük ancak erişimi yavaş olan, diğeri ise çok daha hızlı erişilebilen ancak genellikle daha küçük olan iki tür depolama ortamı kullanarak çalışır. Önbelleğe almanın arkasındaki fikir, verilerin kopyalarını saklamak için hızlı ortamı kullanmaktır, böylece orijinal verilere erişmek daha az zaman alır veya daha ucuza mal olur.

S: Tampon nedir?


C: Tampon, daha hızlı erişim için verilerin kopyalarını saklaması açısından önbelleğe benzer, ancak tamponda veriye erişen istemci bir tampon olduğunu ve bunun bir uygulama tarafından yönetildiğini bilirken, önbellekte istemcilerin bir önbellek olduğundan haberdar olması gerekmez.

S: Referansın yerelliği ne anlama gelir?


C: Referansın yerelliği, bir uygulama yapılandırılmış verilerin belirli bloklarına eriştiğinde, ilk erişilenlere yakın diğer bloklara da erişme olasılığının yüksek olduğu anlamına gelir. Bu, mevcut tüm verilere kıyasla tipik olarak küçük oldukları için önbelleklerin iyi çalışmasına yardımcı olur.

S: Daha büyük önbelleklerin girişleri araması neden daha uzun sürer?


C: Daha büyük önbellekler daha uzun sürer çünkü daha fazla depolanmış bilgi içerirler ve bu nedenle arama için daha fazla zaman gerekir. Ayrıca depolama için daha fazla kaynak gerektirdiklerinden daha pahalıdırlar.

S: Yerellik önbelleklerin daha iyi çalışmasına nasıl yardımcı olabilir?


C: Yerellik önbelleklerin daha iyi çalışmasına yardımcı olur, çünkü uygulamalar belirli yapılandırılmış veri bloklarına eriştiklerinde, muhtemelen yakındaki diğer bloklara da ihtiyaç duyacaklardır ve bu bloklar başka bir yerden getirmek veya yeniden hesaplamak yerine önbellekten hızlı bir şekilde alınabilir.

AlegsaOnline.com - 2020 / 2023 - License CC3