Önbellek (Cache) Nedir? Nasıl Çalışır ve Ne İşe Yarar?
Önbellek, daha önce kullanılan veya yakında yeniden istenmesi beklenen verileri hızlı erişilebilen bir yerde geçici olarak tutar. Böylece yavaş bir kaynağa tekrar tekrar ulaşmak yerine veri önbellekten alınabilir. Ancak önbellekteki kopya eski kalabileceği için güncellik kontrolü önemlidir.
Bu yazıda (8)
- ›Önbelleğin tanımı ve temel amacı
- ›Önbelleğin çalışma mantığı
- ›Önbellek isabeti ve önbellek kaçırması
- ›Önbelleğin performans ve kaynak kullanımı üzerindeki etkisi
- ›Önbelleğin geçici olması ve güncellik sorunları
- ›Günlük kullanımda önbellek örnekleri
- ›Önbellek ile kalıcı depolama arasındaki temel fark
- ›Önbelleğin temizlenmesi
Önbellek (cache), bilgisayar sistemlerinin verilere daha kısa sürede ulaşmasını sağlamak için kullandığı geçici bir depolama alanıdır. Donanım veya yazılım biçiminde bulunabilir; temel amacı, sık kullanılan verileri ana kaynaktan yeniden almak yerine daha hızlı bir konumdan sunmaktır.
Önbelleğin tanımı ve temel amacı
Önbellek, başka bir yerde bulunan verinin kopyasını ya da daha önce yapılmış bir hesaplamanın sonucunu geçici olarak saklayan donanım veya yazılım bileşenidir. Ana kaynak; ana bellek, disk, uzak sunucu veya yeniden hesaplama gerektiren bir işlem olabilir. Önbellek bu kaynağın yerine geçmez; ona yapılacak erişimlerin bir bölümünü azaltan hızlı bir ara katman olarak çalışır.
Bir program aynı veriye tekrar ihtiyaç duyduğunda, veriyi her defasında yavaş kaynaktan almak yerine önbellekteki kopyayı kullanabilir. Bu yaklaşım özellikle yakın zamanda kullanılan verilere veya birbirine yakın konumlarda bulunan verilere yeniden erişildiğinde işe yarar. Örneğin bir uygulama daha önce hesapladığı bir sonucun kopyasını önbellekte tutarsa, aynı istek tekrar geldiğinde hesaplamayı baştan yapmak zorunda kalmaz. Böylece bekleme süresi azalır ve ana kaynağın üzerindeki iş yükü hafifler.
Önbelleklerin kapasitesi genellikle ana kaynaktan daha küçüktür; çünkü amaç tüm verileri saklamak değil, en çok fayda sağlayacak verileri hızlı erişime hazır bulundurmaktır. Bu nedenle önbelleğe hangi verilerin alınacağı ve yer açmak gerektiğinde hangilerinin çıkarılacağı önem taşır.
Önbelleğin çalışma mantığı
Önbellek kullanan bir istemci önce istenen verinin hızlı depolama alanında bulunup bulunmadığını kontrol eder. Önbellekteki her kayıt, sakladığı verinin ana kaynaktaki kimliğini belirleyen bir etiketle ilişkilidir. İstenen verinin etiketiyle eşleşen kayıt bulunursa sistem kopyayı doğrudan önbellekten okur; ana kaynağa gitmesine gerek kalmaz.
Eşleşen kayıt yoksa veri ana kaynaktan alınır. Bu erişim daha uzun sürebilir, fakat veri alındıktan sonra genellikle önbelleğe de kopyalanır. Aynı veri daha sonra istenirse ikinci erişim hızlı katmandan karşılanabilir. Önbellek doluysa yeni veriye yer açmak için mevcut kayıtlardan biri çıkarılır. Çıkarma kararı, örneğin daha uzun süredir kullanılmayan kaydı seçen bir politika ile verilebilir.
Bu mantık, programların veriye tamamen rastgele değil, belirli tekrarlarla erişmesinden yararlanır. Yakın zamanda kullanılan bir verinin yeniden istenmesi zamansal yakınlık; istenen verinin yanında bulunan verilerin de kısa süre sonra kullanılabilmesi mekânsal yakınlık olarak düşünülebilir. Örneğin bir program bir veri bloğunu okuduğunda, ona yakın bölümlerin de kısa süre içinde gerekebileceği varsayımıyla bu bölümlerin bir kısmı önceden hızlı alana taşınabilir.
Önbellek isabeti ve önbellek kaçırması
İstenen veri önbellekte bulunuyorsa buna önbellek isabeti (cache hit) denir. Sistem bu durumda veriyi hızlı katmandan okur ve ana kaynağa erişim maliyetinden kaçınır. İstenen verinin uygun kaydı bulunmuyorsa önbellek kaçırması (cache miss) gerçekleşir; veri ana kaynaktan alınır ve çoğu durumda sonraki erişimler için önbelleğe yerleştirilir.
İsabet oranı, erişimlerin ne kadarının önbellekten karşılandığını gösterir. İsabet oranı yükseldikçe sistem daha fazla isteği hızlı yoldan tamamlar. Kaçırma oranı arttığında ise yavaş kaynağa yapılan erişimler çoğalır ve önbelleğe veri yerleştirme ile gerekirse başka bir kaydı çıkarma işlemleri de devreye girer. Bu yüzden önbelleğin yalnızca varlığı değil, sakladığı verilerin isteklerle ne kadar örtüştüğü de performans açısından belirleyicidir.
Önbelleğin performans ve kaynak kullanımı üzerindeki etkisi
Önbelleğin başlıca performans katkısı gecikmeyi azaltmasıdır. Hızlı katmandaki veriyi okumak, daha yavaş bir depolamaya erişmekten veya aynı sonucu yeniden hesaplamaktan daha kısa sürebilir. Bu, tek bir isteğin daha çabuk tamamlanmasını sağlar. Çok sayıda istek önbellek isabetiyle karşılandığında ana kaynak daha az meşgul olur ve sistem aynı zaman içinde daha fazla iş yapabilir.
Önbellek, veri aktarımını da daha verimli hâle getirebilir. Küçük ve sık erişimleri tek tek yavaş kaynağa göndermek yerine bazı veriler birlikte alınarak hızlı alanda tutulabilir. Ancak önbellek sınırsız değildir: kapasitesini büyütmek her zaman daha yüksek hız anlamına gelmez; daha büyük kaynaklara erişim daha fazla gecikme getirebilir ve gereksiz veriler saklanırsa isabet oranı düşebilir. Ayrıca bir kaçırma yaşandığında ana kaynaktan veri çekme maliyeti yeniden ortaya çıkar. Bu nedenle önbelleğin faydası, hızlı erişimin kazancı ile kullanılan bellek ve yönetim maliyetleri arasındaki dengeye bağlıdır.
Önbelleğin geçici olması ve güncellik sorunları
Önbellekteki veri, ana kaynaktaki bilginin geçici bir kopyasıdır. Ana kaynak güncellendiğinde önbellekteki kopya aynı anda değişmeyebilir. Bu durumda sistem doğru biçimde önbellekten hızlı cevap verse bile cevap artık güncel olmayan bir bilgi içerebilir. Benzer sorun, aynı verinin birden fazla önbellekte tutulduğu ve kopyalardan yalnızca birinin değiştirildiği durumlarda da ortaya çıkabilir.
Bu uyuşmazlığı azaltmak için sistemler verinin ne kadar süre saklanacağını belirleyebilir, değişiklikleri ana kaynağa belirli bir yazma düzeniyle aktarabilir veya kopyaların tutarlılığını izleyen iletişim kuralları kullanabilir. Örneğin bazı düzenlerde değişiklik hem önbelleğe hem ana kaynağa hemen yazılır; bazı düzenlerde ise önce önbellek değiştirilir ve ana kaynağa aktarım daha sonra yapılır. İkinci yaklaşım hızlı olabilir, fakat önbellekteki değişiklik henüz ana kaynağa yazılmadan sistem kesilirse yönetilmesi gereken bir fark oluşabilir. Önbellek alanı dolduğunda kayıtların silinmesi de normaldir; bu, kalıcı verinin yok olduğu anlamına gelmez, ancak sonraki istekte veri ana kaynaktan yeniden alınabilir.
Günlük kullanımda önbellek örnekleri
Web tarayıcıları daha önce alınmış sayfa içeriklerinin bazı kopyalarını yerel önbellekte tutabilir; uygulamalar da sık kullanılan sonuçları yeniden hesaplamamak için önbellekten yararlanabilir. İşlemciler, ana belleğe göre daha hızlı çalışan küçük bellek alanlarıyla sık erişilen verileri beklemeye hazır tutar. Tarayıcı ve HTTP önbelleklemesinin ayrıntıları, işlemci önbelleğinin L1, L2 ve L3 seviyeleri ile CDN ve dağıtık sistemlerdeki önbellekleme ise ayrı konulardır.
Önbellek ile kalıcı depolama arasındaki temel fark
Önbellek hızlı erişim için kullanılan geçici bir kopya alanıdır; kapasitesi dolduğunda kayıtlar çıkarılabilir ve ana verinin kaynağı değildir. Kalıcı depolama ise dosya ve verileri sistem kapatıldıktan sonra da saklamak üzere kullanılır. Bu nedenle önbelleğin temizlenmesi genellikle ana kaynaktaki veriyi silmez; yalnızca hızlı erişim için tutulan kopyaların kaldırılmasını ifade eder.
Önbelleğin temizlenmesi
Önbelleğin temizlenmesi, geçici olarak saklanan kopyaların kaldırılması işlemidir; alan açmak veya eski verilerin yeniden alınmasını sağlamak için kullanılabilir.
Bir web sayfasının daha önce açılmış bazı kaynakları tarayıcı önbelleğinden alması, aynı sayfanın sonraki açılışını hızlandırabilir. Telefon uygulamaları da görselleri veya hesaplanmış sonuçları geçici olarak saklayabilir; işlemcinin hızlı önbelleği ise sık kullanılan komut ve verilerin ana bellekten daha çabuk alınmasına yardımcı olur.
Sık sorulan sorular
Önbellek isabeti ile önbellek kaçırması arasındaki fark nedir?
İstenen veri önbellekte bulunuyorsa önbellek isabeti, bulunmuyorsa önbellek kaçırması gerçekleşir. Kaçırma durumunda veri ana kaynaktan alınır ve çoğu zaman sonraki erişimler için önbelleğe kopyalanır.
Önbellek neden sistemi hızlandırır?
Veriyi daha yavaş bir depolamadan okumak veya sonucu yeniden hesaplamak yerine, hızlı erişilebilen bir konumdaki kopyayı kullanır. Böylece gecikme ve ana kaynağa yapılan erişim sayısı azalabilir.
Önbellekteki veri neden güncel olmayabilir?
Önbellek ana kaynaktaki verinin geçici bir kopyasını tuttuğu için ana kaynak değiştiğinde kopya hemen yenilenmeyebilir. Bu durumda eski veri sunulabilir.
Önbellek temizlenince asıl veri silinir mi?
Genellikle hayır. Temizleme işlemi hızlı erişim için tutulan geçici kopyayı kaldırır; veri ana kaynakta veya kalıcı depolamada bulunmaya devam eder.
- •Wikipedia (EN) — Cache (computing) — Cache (computing) / girisen.wikipedia.org