İki işlemci arasında karar verirken teknik listelerde tuhaf bir satır göze çarpar: "12 MB L3 cache" ya da "L2: 8x1.25 MB". Çekirdek sayısı ve frekans tanıdıktır ama cache satırı çoğu zaman atlanır. Oysa iki işlemcinin çekirdek sayısı ve saat hızı aynıysa, aradaki farkı büyük ölçüde bu satır belirler.
İşlemci, işleyeceği veriyi bir yerden almak zorunda. Bu veri diskte (SSD ya da HDD), oradan RAM'e, RAM'den de işlemciye taşınıyor. Sorun şu: işlemci saniyede milyarlarca işlem yaparken RAM'den veri gelmesini beklemek onun için sonsuzluk gibi. Cache, işlemcinin içine gömülü, çok küçük ama çok hızlı bir bekleme odası. Sık kullanılan veriyi burada tutar ve RAM'e gitmek zorunda kalmaz.
Fark ölçek farkı: RAM'e erişim işlemci için onlarca nanosaniye sürerken, L1 cache'e erişim bir nanosaniyenin altındadır. Depolamada SSD ve HDD arasındaki uçurumun, bir kat daha küçük ölçekte yaşanan hali diyebilirsiniz.
Çünkü hız ile kapasite ters çalışır. Bir belleği hızlandırmak istiyorsanız küçük ve çekirdeğe yakın tutmanız gerekir; büyütürseniz yavaşlar ve pahalılaşır. Bu yüzden üretici tek bir bellek yerine kademeli bir yapı kurar.
| Seviye | Tipik boyut | Kim kullanır | Rolü |
|---|---|---|---|
| L1 | Çekirdek başına 32–128 KB | Tek çekirdek, özel | En sıcak veri ve komutlar; en hızlı katman |
| L2 | Çekirdek başına 512 KB – 4 MB | Genelde tek çekirdek | L1'de bulunamayanı yakalar, orta tampon |
| L3 | 4 – 128 MB (toplam) | Tüm çekirdekler paylaşır | Son durak; RAM'e gitmeyi engeller, çekirdekler arası veri paylaşımı |
İşleyiş basit: işlemci veriyi önce L1'de arar, yoksa L2'ye, sonra L3'e, en son RAM'e bakar. Her başarısız arama gecikme ekler. "Cache hit oranı" dediğimiz şey, verinin kaçta kaç oranda RAM'e gitmeden bulunduğudur ve bu oran birkaç puan artsa bile hissedilir performans getirir.
Hayır, iş yüküne bağlı. Cache'in işine yaraması için programın aynı veriyi tekrar tekrar kullanması ya da verinin küçük bir alanda yoğunlaşması gerekir.
Karşılaştırmayı şöyle kurgulayın:
| Durum | Öncelik |
|---|---|
| Çekirdek ve frekans benzer, L3 farkı büyük | Oyun ağırlıklıysa büyük L3'lü olan |
| L3 benzer, çekirdek sayısı farklı | Render/derleme ağırlıklıysa çok çekirdekli olan |
| Çekirdek başına L2 farkı var | Genelde yeni mimari işareti; yeni nesli seç |
| Toplam cache aynı ama biri "birleşik" değil | Parçalı L3'te çekirdekler arası gecikme artabilir |
Bir tuzağa dikkat: farklı nesillerin ya da farklı üreticilerin cache sayılarını doğrudan kıyaslamak yanıltıcı. Cache'in gecikmesi, ilişkilendirme yapısı ve ön getirme (prefetch) algoritması da en az boyutu kadar etkili. 32 MB L3'ü olan eski bir işlemci, 16 MB'lı yeni bir mimariyi geçemeyebilir. Bu yüzden sayıya değil, ilgilendiğiniz iş yükünde ölçülmüş gerçek test sonuçlarına bakın.
Hayır. Cache işlemci kalıbının içindedir; RAM gibi takıp çıkarma ya da SSD gibi büyütme imkânı yok. Aldığınız işlemcinin cache'i, o işlemciyi kullandığınız sürece sabittir. Bu da cache'i satın alma anında düşünülmesi gereken bir kalem yapıyor — RAM miktarını sonradan çözebilirsiniz, cache'i çözemezsiniz.
Farklı problemleri çözerler. RAM yetersizse sistem diske taşar ve her şey tıkanır; bu yüzden önce yeterli RAM şart. RAM yeterliyse asıl darboğaz, RAM ile işlemci arasındaki mesafedir ve orayı ancak cache ile hızlı bellek kapatır. Bellek hızını (örneğin daha yüksek frekanslı bir kit) artırmak, cache'in kaçırdığı erişimlerin maliyetini düşürerek dolaylı yardım eder.