Anasayfa Makale İşlemcilerde L1, L2 ve L3 Önbellek Nedir?

İşlemcilerde L1, L2 ve L3 Önbellek Nedir?

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

İşlemcilerde sıkça karşımıza çıkan L1 , L2 ve L3 Önbellek kavramlarını nedir, ne işe yarar?

Ucuz bir dizüstü bilgisayardan tutun, pahalı ve çok işlemcili bir sunucuya kadar, herhangi bir bilgisayarda bulunan her işlemcide önbellek bulunmaktadır. Aynı zamanda önbelleğin birçok seviyesi de bulunmaktadır. Peki, önbellek ne işe yarar ve neden farklı seviyelerde önbelleğe ihtiyaç vardır? 12 yollu ilişkisel küme ne anlama geliyor? Bu yazımızda bu soruları cevaplayacağız.

Önbellek tam olarak nedir?

Kısaca; işlemcinin çekirdeklerinin hemen yanında bulunan, küçük ama çok hızlı bir bellek türüdür. Elbette, önbellek hakkında öğrenebileceğimiz daha çok şey var.

Hayali, sihirli bir depolama sistemiyle başlayalım: Son derece hızlıdır, aynı anda sonsuz sayıda veri işleminin üstesinden gelebilir ve verileri her zaman emniyette tutar. Maalesef böyle bir sistem mümkün değil ancak olsaydı işlemci tasarımı çok daha kolay olurdu.

İşlemcilerin sadece, 4 işlem gibi basit matematik hesaplamalarını yapabilecek birimlere ve bu birimlere gelecek verileri kontrol eden bir sisteme sahip olmaları gerekir. Bunun nedeni, teoride sistemdeki depolama birimlerinin gerekli tüm veriyi anında alıp gönderebilmesidir, yani teoride işlemcinin içinde verilerin beklemesi gerekmez, veriler hızlı bir şekilde gelip gittiğinden işlemcinin yapması gereken tek şey gelen verileri anında işlemektir.

Ancak hepimizin bildiği gibi, bu derece hızlı, sihirli bir depolama teknolojisi günümüzde ve yakın gelecekte bulunmamaktadır. Bunun yerine, sabit (HDD) veya katı hal (SSD) sürücüleri vardır ve bunların en iyileri bile, standart bir işlemci için gereken tüm veri aktarım hızlarının altından kalkamıyor.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

Veri Yönetimi

Modern işlemcilerin inanılmaz derecede hızlı olmasının nedeni, iki 64 Bit tamsayı değerini birbirine ekleme işlemini sadece bir saat döngüsü kadar sürede gerçekleştirmeleridir. 4 GHz’de çalışan bir işlemci için bu süre sadece 0.00000000025 saniye kadardır, yani çeyrek nanosaniye.

Tüm bunlar olurken sabit diskler veri aktarmak bir yana, sadece içlerinde bulunan disklerdeki verileri bulmak için bile binlerce nanosaniye harcar. Katı hal sürücülerinde durum daha iyi olsa da veriyi bulmak ve iletmek hâlâ onlarca veya yüzlerce nanosaniye sürer.

Bu tür sürücüler açıkça işlemcilerin içine yerleştirilemez, bu nedenle iki donanım arasında her zaman fiziksel bir ayrım olacağı anlamına gelir. Bu da sadece, verilerin bir yerden bir yere taşınmasına daha fazla zaman ekleyerek, işleri daha da kötüleştirir.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

RAM

Bu noktada ihtiyacımız olan şey, işlemci ile ana depolama birimi arasında bulunan başka bir veri depolama sistemidir. Bir sürücüden daha hızlı olması, çok sayıda veri aktarımını aynı anda gerçekleştirebilmesi ve işlemciye çok daha yakın olması gerekir. Bu görevi üstlenen bileşene RAM denir ve her bilgisayarda bu amaç için bir miktar RAM bulunmaktadır. Bu tür depolamanın neredeyse tamamı DRAM’dir (Dinamik Rastgele Erişim Belleği) ve verileri herhangi bir sürücüden çok daha hızlı aktarabilir. RAM hakkında daha detaylı bilgi edinmek için RAM Nedir makalemize göz atabilirsiniz.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

Bununla birlikte, DRAM süper hızlı olsa da bu kadar çok verinin hepsini saklayamaz.

Lider DRAM üreticilerinden biri olan Micron tarafından üretilen en büyük DDR4 bellek yongalarından (RAM modülü üzerindeki tek bir çip) bazıları, 32 Gbit veya 4 GB veri depolayabilmekte. Büyük sabit diskler ise bundan 4.000 kat daha fazlasını saklayabilir.

Dolayısıyla, veri ağımızın hızını artırmış olsak da sınırlı miktarda DRAM’de hangi verilerin işlemci için hazır tutulması gerektiğini hesaplamamız gerekir. Bunun için de ek sistemlere (donanım ve yazılım) ihtiyacımız vardır.

Bazı senaryolarda, RAM modülleri işlemciyle beraber olacak şekilde üretilebilir. Ancak işlemciler küçük olduğundan, aynı PCB üzerine pek de fazla RAM koyamazsınız.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Xbox 360’ın grafik işlemcisi ve hemen solunda 10 MB DRAM.

SRAM

RAM modüllerinin büyük çoğunluğu işlemcinin hemen yanında yer alır, anakarta takılır ve bir bilgisayar sisteminde her zaman işlemciye en yakın bileşenlerden biridir. Ancak yine de yeterince hızlı değildir…

DRAM’in verileri bulması hâlâ yaklaşık 100 nanosaniye sürmekte. Ancak en azından her saniye milyarlarca Bit veri aktarabiliyor. Görünüşe göre işlemcinin birimleri ile DRAM arasına girmek için başka bir bellek türüne daha ihtiyacımız olacak.

Bir başka aşama: SRAM (Statik Rasgele Erişim Belleği). DRAM, verileri elektrik yüklü biçimde depolamak için mikroskobik kapasitör kullanırken, SRAM aynı şeyi yapmak için transistör kullanır. Ve bunlar neredeyse bir işlemci çekirdeğinde bulunan transistörler kadar hızlı çalışabilir (DRAM’den kabaca 10 kat daha hızlıdır).

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

Elbette SRAM için de bazı dezavantajlar var; Alan.

Transistör tabanlı SRAM bellekler, DRAM’den çok daha fazla yer kaplar. Aynı boyuttaki 4 GB bir DDR4 bellek yongası boyutuna, 100 MB değerinden daha az kapasiteli SRAM sığdırabilirsiniz. Ancak SRAM, işlemci ile benzer üretim aşamalarından geçtiğinden ve benzer temellere dayandığından, işlemci içine yerleştirilebilir. Bu sayede çekirdeklere daha yakın bir konumda da bulunmuş olur.

Üzerinden geçtiğimiz her aşamada veri taşıma hızını, depolama genişliği pahasına yükselttik. Her biri daha hızlı ancak daha küçük olacak şekilde, daha fazla bölüm eklemeye devam edebiliriz.

Ve böylece önbelleğin ne olduğuna dair daha teknik bir tanıma ulaşıyoruz: Hepsi işlemcinin içinde bulunan birden fazla SRAM bloğu, süper yüksek hızlarda veri gönderip depolayarak işlemci çekirdeklerinin mümkün olduğunca daha fazla veri işlemesini sağlamak için kullanılırlar. Buraya kadar anladıysan mükemmel, çünkü bundan sonra çok daha karmaşık bir hal alacak!

Önbellek: Veriler için bekleme alanı

Biraz önce de bahsettiğimiz gibi bir işlemcideki çekirdeklerin, işlem birimlerinin veri taleplerini karşılayabilecek sihirli bir depolama sistemi olmadığı için önbelleğe ihtiyacımız vardır. Modern işlemciler ve grafik işlemcileri, dahili olarak belirli bir hiyerarşi içinde düzenlenmiş, bir dizi SRAM bloğu içerir. Kısaca aşağıdaki gibi sıralanan bir dizi önbellek çeşidi gibi:

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Önbellek veri akış diyagramı

Yukarıdaki görselde, işlemci yapısı siyah kesikli dikdörtgen ile temsil edilmektedir. ALU’lar (Aritmetik Mantık Birimleri) en soldadır. Bunlar işlemciye güç veren, işlemcinin yaptığı matematiği işleyen birimlerdir. Teknik olarak önbellek olmasa da ALU’lara en yakın bellek birimi Girdiler’dir. Bu girdiler hep birlikte bir girdi dosyasında toplanırlar.

Girdiler

Bunların her biri 64 Bit’lik bir tam sayı tarzı tek bir sayı içerir: Değerin kendisi bir dosya hakkında bir veri parçası, belirli bir talimat için bir kod veya diğer bazı verilerin nerede tutulduğuyla alakalı hafıza adresi olabilir.

Bir masaüstü işlemcisindeki girdi dosyası oldukça küçüktür. Örneğin Intel’in Core i9 9900K işlemcisinin her çekirdeğinde girdiler için iki banka vardır. Tamsayılar için olanı sadece 180 adet 64 Bit kayıt içerir. Vektörler için (küçük sayı dizileri) ayrılan diğer banka ise sadece 168 adet 256 Bit kayıt tutabilir. Yani her bir çekirdek için toplam kayıt dosyası 7 kB’nin biraz altındadır. Karşılaştırıldığında, bir Nvidia GeForce RTX 2080 Ti ekran kartının Streaming Multiprocessors birimlerindeki (GPU’nun bir işlemci çekirdeğinin eşdeğeri niteliğindeki birimi) kayıt dosyasının boyutu 256 kB’dir.

Girdiler, tıpkı önbellek gibi SRAM temellidir. Ancak hizmet ettikleri ALU’lar kadar hızlıdırlar ve verileri tek bir saat döngüsünde içeri ve dışarı aktarmayı başarabilirler. Ancak çok fazla veri tutacak şekilde tasarlanmamışlardır (sadece tek bir parça), bu yüzden yakınlarında her zaman daha büyük bellek bloklarına ihtiyaçları vardır. Bu, L1 Önbelleğidir.

L1 Önbellek Nedir?

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Skylake mimarisine ait 4 çekirdekli bir işlemci yongası

Yukarıdaki fotoğrafta, Skylake mimarisine ait 4 çekirdekli bir işlemcinin, işlemci yongası kesidini görüyorsunuz. Sağ üstteki çekirdekte bulunan bazı yerleri işaretledik.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Skylake mimarisinin çekirdek yapılarından biri

ALU’lar ve kayıt dosyaları en sağda sarıyla vurgulanmış olarak görülebilir. Resmin üst orta kısmında, beyaz renkte L1 D (D, Data, Veri) Önbelleği yer alır. Bu çok fazla miktarda bilgi tutamaz, sadece 32 kB’lık bir boyuta sahiptir. Ancak girdiler gibi mantık birimlerine çok yakındır ve onlarla aynı hızda çalışır.

Sol alttaki beyaz dikdörtgen, yine 32 kB boyutunda olan L1 Instruction (talimat) Önbelleğini gösterir. Adından da anlaşılacağı gibi bu bellek, ALU’ların yerine getirmesi için daha küçük, mikro işlem parçalarına (genellikle μ-Ops olarak etiketlenir) bölünmeye hazır çeşitli komutları depolar. Onlar için de bir önbellek vardır, L 0 olarak adlandırılır. Daha küçüktür (sadece 1.500 işlem tutabilir) ve mantık birimlerine L1 önbelleklerinden daha yakındır.

Bu SRAM bloklarının neden bu kadar küçük olduğunu merak ediyor olabilirsiniz; neden Megabayt boyutlarında değiller? Birlikteyken veri ve talimat önbellekleri çipte neredeyse ana mantık birimlerinin kapladığı miktarda yer kaplar, bu nedenle onları büyütmek işlemci çipinin toplam boyutunu da artırır.

Ancak sadece birkaç kB tutmalarının aslı ve temel nedeni, bellek kapasitesi arttıkça verileri bulmanın ve almak için gereken sürenin ciddi derecede artmasıdır. L1 önbelleğinin gerçekten hızlı olması gerekir ve bu nedenle boyut ve hız arasında bir uzlaşmaya varılmalıdır En iyi durumda, verileri bu önbellekten kullanıma hazır hale getirmek için yaklaşık 5 saat döngüsü karşılığında (tamsayı olmayan -kayan nokta- değerler için daha uzun) zaman gerekir.

L2 Önbellek Nedir?

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

Bu önbellek tipi, bir işlemcinin içindeki tek önbellek olsaydı, performansı herhangi bir zamanda aniden dibe çakılırdı. Bu nedenle, her işlemcinin, çekirdeklerinde yerleşik başka bir bellek düzeyi daha vardır: L2 önbelleği. L2 önbellek, talimatları ve verileri tutan genel bir depolama bloğudur.

Her zaman L1 önbelleğinden biraz daha büyüktür: AMD Zen 2 işlemcilerinde 512 kB’ye kadar L2 önbelleği bulunabilir, bu nedenle daha düşük öneme sahip veriler de iyi bir şekilde saklanabilir. Bu ekstra boyutun bir bedeli de vardır ve bu önbellekteki verileri bulmak ve aktarmak, L1’e kıyasla kabaca iki kat daha uzun sürer.

Zamanda geriye gidip, ilk Intel Pentium günlerine dönersek, L2 önbelleği, küçük bir eklenti devre kartında bulunan bir RAM-DIMM gibi veya anakartta yerleşik olarak gelen ayrı bir yonga ile görürdük. Sonunda Pentium III ve AMD K6-III işlemciler ile birlikte, L2 önbelleği işlemci çipi içindeki yerini aldı.

Bu gelişmeyi kısa süre sonra, diğer alt seviyeleri desteklemek için başka bir önbellek seviyesi izledi. Bu seviyeye ihtiyaç, çok çekirdekli yongaların yaygınlaşması nedeniyle ortaya çıktı.

L3 Önbellek Nedir?

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Intel Kaby Lake mimarisine ait bir çip

Bir Intel Kaby Lake yongasının bu görüntüsü, 4 CPU çekirdeği göstermektedir. Dahili olarak bulunan Intel HD Graphics GPU’su, sağda yonganın neredeyse yarısını kaplamaktadır. Her çekirdeğin kendi özel L1 ve L2 önbellekleri (beyaz ve sarıyla vurgulanmış alanlar) vardır. Ancak bunlar aynı zamanda üçüncü bir SRAM blok birimiyle birlikte gelir.

L3 önbellek, doğrudan tek bir çekirdek etrafında olmasına rağmen, diğer çekirdeklerle tamamen paylaşılır. Her biri diğerinin L3 önbelleğinin içeriğine serbestçe erişebilir. Diğer bellek tiplerine göre çok daha büyüktür (2 ile 32 MB arasında değişebilir) ancak aynı zamanda çok daha yavaştır, ortalama okuma ve işlem süresi 30 saat döngüsünün üzerindedir; özellikle de bir çekirdeğin biraz uzaktaki bir önbellek bloğunda bulunan verileri kullanması gerekiyorsa süre daha da artar.

Aşağıda, AMD’nin Zen 2 mimarisinden tek bir çekirdek yapısını görebiliriz. 32 kB L1 Veri ve Talimat önbellekleri beyaz, 512 KB L2 önbelleği sarı ve muazzam büyüklükte bir 4 MB L3 önbellek bloğu kırmızı olarak işaretlenmiştir.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
AMD Zen 2 mimarisine ait tek bir çekirdek kesidi

Bir saniye. 32 kB bir bellek, 512 kB bir bellekten nasıl daha fazla fiziksel alan kaplayabilir? L1 bu kadar az veri tutuyorsa, neden orantısız olarak L2 veya L3 önbelleğinden çok daha büyük?

Bir sayıdan daha fazlası

Önbellekler mantık birimlerine veri aktarımını hızlandırarak, sık kullanılan talimatların ve verilerin bir kopyasını çekirdek yakınlarında tutarak performansı artırır. Önbellekte depolanan bilgiler iki bölüme ayrılır: verinin kendisi ve sistem belleğinde ya da deposunda başlangıçta bulunduğu yer. Bu yer adresine önbellek etiketi denir.

Bir işlemci hafızadan veri almak ya da hafızaya veri yazmak isteyen bir işlemi çalıştırdığında, L1 önbelleğindeki veri etiketlerini kontrol ederek başlar. Gerekli olan etiketli veri mevcutsa (cache hit olarak da adlandırılır), bu verilere neredeyse hemen erişilebilir. Gerekli etiket en düşük önbellek düzeyinde olmadığında, bir önbellek kaybı oluşur.

Bu nedenle, L1 önbelleğinde yeni bir etiket oluşturulur ve işlemci yapısının geri kalanı, o etiketin verilerini bulmak için diğer önbellek düzeylerinde (gerekirse ana depolama sürücüsüne bile geri dönülür) geriye dönüp aramaya başlar. Ancak bu yeni etikette L1 önbelleğinde yer açabilmek için, L2 önbelleğinde her zaman başka bir işlemin başlatılması gerekir.

Önbellek veri yolları

Bu, verilerin neredeyse sabit bir şekilde karıştırılmasıyla sonuçlanır ve bunların tümü yalnızca birkaç işlemci saati döngüsü içerisinde halledilir. Bunu başarmanın tek yolu, veri yönetimini idare etmek için SRAM çevresinde karmaşık bir yapıya sahip olmaktır. Başka bir deyişle, bir işlemci çekirdeği yalnızca bir ALU’dan oluşuyorsa, L1 önbelleği çok daha basit olurdu. Ancak düzinelerce ALU olduğu için (çoğu, iki komut dizisini yürütüyor olacak) önbelleğin, her şeyi aktif halde tutabilmek adına birden fazla bağlantısı olması gerekir. Bir nevi birden fazla veri giriş-çıkış kapısı gibi.

Kendi bilgisayarınızda bulunan işlemcinin önbellek bilgilerini kontrol etmek için CPU-Z gibi ücretsiz programları kullanabilirsiniz. Peki, tüm bu bilgiler ne anlama geliyor? Önemli bir unsur, ilişkisel etiket kümesidir. Bu, sistem belleğindeki veri bloklarının önbelleğe nasıl kopyalandığının zorunlu kıldığı kurallarla ilgilidir.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
i7 6700K işlemcisine ait önbellek bilgileri

Yukarıda bulunan görseldeki önbellek bilgileri, Intel’in i7 6700K işlemcisine aittir. L1 önbelleklerinin her biri kümeler adı verilen 64 küçük bloğa bölünmüştür ve bunların her biri de önbellek satırlarına (64 bayt boyutunda) bölünmüştür. İlişkilendirilebilir Küme (Set Associative), sistem belleğindeki bir veri bloğunun, herhangi bir yerde eşleme yapmak için özgür olmak yerine, belirli bir kümedeki önbellek satırlarına eşlenmesi gerektiği anlamına gelir.

8-Way yazan kısım, bize bir önbellek bloğunun bir sette 8 önbellek hattı ile ilişkilendirilebileceğini söyler. İlişkilendirme düzeyi ne kadar yüksekse (yani daha fazla yol varsa), işlemci veri aramaya başladığında ilgili önbellekte veriyi bulma şansı o kadar artar ve önbellekte veriyi bulamamanın neden olduğu gecikmelerde azalma olur. Dezavantajları, daha fazla karmaşıklık, daha fazla güç tüketimi ve ayrıca bir veri bloğu için işlenecek daha fazla önbellek hattı olduğundan, performansı düşürebilmesidir.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?

Veri karmaşası

Önbelleğin karmaşıklığının bir başka yönü de verilerin çeşitli düzeylerde nasıl tutulduğudur. Kurallar, “dahil etme politikası” (inclusion policy) adı verilen bir yöntemle belirlenir. Örneğin, Intel Core işlemcilerinde tam kapsamlı L1 + L3 önbelleği bulunur. Bu, örneğin L1’deki aynı verilerin L3’te de olabileceği anlamına gelir. Değerli önbellek alanını boşa harcanıyor gibi görünebilir ancak sağladığı avantaj, işlemci bir hata ile karşılaştığında, etiket daha düşük bir düzeyde aranırken, etiketi bulmak için daha üst düzeylere bakmasına gerek kalmamasıdır.

Aynı işlemcilerde, L2 önbelleği L1 ve L3 önbelleğiyle ilişkili değildir. Orada depolanan herhangi bir veri başka bir düzeye kopyalanmaz ya da taşınmaz. Bu, yerden tasarruf sağlar ancak yonganın bellek sisteminin gözden kaçan bir etiketi bulmak için (her zaman çok daha büyük olan) L3’te arama yapması gerekmesine neden olur. “Kurban” önbellekleri (victim cache) buna benzer ancak daha düşük bir seviyeden dışarı itilen bilgileri depolamak için kullanılırlar. Örneğin, AMD’nin Zen 2 işlemcileri, yalnızca L2’deki verileri depolayan L3 kurban önbelleğini kullanır.

Yazma İlkeleri

Önbellek için, verilerin önbelleğe ve ana sistem belleğine yazılması gibi başka politikalar da vardır. Bunlara yazma ilkeleri denir ve günümüz CPU’larının çoğu geri yazma önbelleklerini bu amaçla kullanır. Bu durum, veriler bir önbellek seviyesine yazıldığında, sistem belleğinin bir kopyasıyla güncellenmesinden önce bir gecikme olduğu anlamına gelir. Çoğunlukla bu duraklama, veriler önbellekte kaldığı sürece oluşur, RAM yalnızca veriler önyüklendikten sonra bilgileri alır.

L1 Önbellek, L2 Önbellek ve L3 Önbellek Nedir?
Nvidia’nın GA100 grafik işlemcisi, toplam 20 MB L1 ve 40 MB L2 önbelleğe sahiptir

İşlemci tasarımcıları için önbellek miktarını, türünü ve ilkesini seçmek, artan karmaşıklık ve gerekli yonga alanına karşı daha fazla işlemci kapasitesi ilkesini dengede tutmak ile ilgilidir. 20 MB’lık, 1000 yollu tamamen ilişkilendirilebilir L1 önbelleklerine, İstanbul kadar yonga alanı işgal etmeden sahip olmayı başarsaydık (ve tabii ki İstanbul kadar güç tüketmeden), o zaman daha hızlı ve verimli işlemcilere sahip bilgisayarlarımız olurdu.

Günümüz işlemcilerindeki en düşük önbellek miktarı ve seviyesi, son on yılda pek değişmedi. Bununla birlikte, L3 önbelleğinin boyutu büyümeye devam etti. On yıl önce, Intel i7-980X’e sahip olacak kadar şanslı olsaydınız, 12 MB’lık bir alan elde edebilirdiniz. Bugün bu miktarın yarısı kadar alanda, 64 MB L3 belleğine sahip bir işlemci almak mümkündür.

Kısaca önbellek: hayati derecede gerekli, mükemmel ve harika teknoloji ürünüdür.