Ara

Modern Bilgisayarların Gizli Kahramanı: Bellek Performansı Neden Bu Kadar Önemli Hale Geldi?

Yıllardır bilgisayar performansını belirleyen temel unsurlar hep aynıydı: CPU'lar için saat hızı ve çekirdek sayısı, GPU'lar için shader işlem gücü ve teraFLOP'lar, bellek için frekans, depolama için ise sıralı aktarım hızları. Elbette bu değerler hala önemini koruyor ancak günümüz işlemcileri o kadar güçlü hale geldi ki, teorik performansın ne kadarının gerçekte kullanılabileceğini belirleyen anahtar faktör, verinin ihtiyaç duyulduğu anda doğru yere ulaşması haline geldi.

Modern bir CPU çekirdeği, her saat döngüsünde birden fazla komutu işleyebilir. Üst düzey bir GPU, binlerce paralel işlem birimine sahiptir. Yapay zeka hızlandırıcıları ise petaFLOP'lar seviyesinde matris çarpma işlemleri gerçekleştirebilir. Ancak bu birimlerin hiçbiri, veri olmadan (operantlar, komutlar, dokular, geometri, model ağırlıkları, ara sonuçlar vb.) faydalı bir hesaplama yapamaz.

Bu durum temelde bir dengesizlik yaratıyor. Yıllar içinde işlem gücü devasa ölçüde artarken, veriyi taşımak gecikme, bant genişliği, enerji ve fiziksel çip kaynakları açısından nispeten çok daha pahalı hale geldi. Bu dengesizliğin bir sonucu olarak, birçok modern iş yükü, işlem birimlerini veriyle beslemeye çalışarak şaşırtıcı derecede fazla çaba harcıyor.

Bu, her iş yükünün 'bellek bağımlı' olduğu anlamına gelmez. Performans hala işlem gücü, komut bağımlılıkları, dal tahmini, senkronizasyon, yazılım yükü, depolama, ağ veya sayısız başka faktörden kısıtlanabilir. Ancak değişen şey, modern bilgisayar performansını anlamak için bellek davranışını anlamanın vazgeçilmez hale gelmiş olmasıdır.

Ve 'bellek performansı' tek başına frekans veya kapasitenin çok ötesine geçer. Gecikme, bant genişliği, yerellik, önbellek kapasitesi, bellek seviyesi paralelliği, erişim modelleri, önceliklendirme, kapasite, ara bağlantı topolojisi ve hatta verinin fiziksel olarak nerede bulunduğu gibi tüm bu faktörler birbiriyle etkileşim halindedir.

Nedenini anlamak için, belki de en önemli ayrım olan verinin nasıl erişildiği ile başlamalıyız.

Sıralı ve Rastgele Erişim Tamamen Farklı İş Yükleri Gibi Davranabilir

1 GB'lık bir dosyayı baştan sona okuduğunuzu hayal edin. Bir sonraki veri parçasının konumu tamamen tahmin edilebilir. Sistem ne yaptığınızı fark ettiğinde, gelecekteki verileri açıkça istenmeden önce getirmeye başlayabilir.

Bu, sıralı erişim modelidir ve modern bilgisayarlar bunu yönetmede son derece iyidir.

CPU'lar, tahmin edilebilir bellek akışlarını tanımak için özel olarak tasarlanmış donanım önceliklendiricilerine sahiptir. DRAM denetleyicileri birden fazla işlemi aktif tutabilir ve istekleri yeniden sıralayabilir. SSD denetleyicileri, erişimleri birçok NAND yongası ve kanalı arasında dağıtır. GPU'lar, komşu iş parçacıklarından gelen bellek isteklerini daha büyük işlemlerde birleştirebilir.

Donanım temelde bir boru hattı oluşturabilir. Ne yazık ki, rastgele erişim çok daha zorlu bir engeldir.

Bir bağlı listede gezinmeyi düşünün; her giriş bir sonraki girdinin adresini içerir. İşlemci, mevcut erişim tamamlanana kadar bir sonraki erişimin nereye gideceğini bilemeyebilir. Bu, önceliklendirme fırsatlarının çoğunu ortadan kaldırır ve makinenin erişimleri verimli bir şekilde örtmesini engeller. Bu yüzden iki iş yükü aynı miktarda veri taşısa bile dramatik olarak farklı hızlarda çalışabilir.

Gecikme bağımlılıkları söz konusu olduğunda bu ayrım daha da önem kazanır. Bir CPU, dört ilişkisiz önbellek satırı isterse, birden fazla önbellek kaçırmasını aktif tutabilir ve gecikmelerinin çoğunu örtüşebilir. Ancak A isteğinin sonucu B isteğine bağlıysa, B A bitmeden başlayamaz.

Bu durum genellikle işaretçi kovalamaca ile gösterilir. Her yük, bir sonraki yükün adresini ortaya çıkarır, bu da işlemcinin spekülasyon veya paralellik yoluyla gizleyebileceği gerçek bellek gecikmesinin çok daha fazlasını ödemesini gerektirir.

Aynı prensip bilgisayarın her yerinde karşımıza çıkar. Bir veritabanı küçük ve öngörülemeyen aramalar yaptığında, büyük bir dosyayı kopyalamaktan çok farklı bir zorluk sunar. Komşu doku örneklerini işleyen bir GPU, ilgisiz adresleri kovalayan binlerce iş parçacığından farklı davranır. Sıralı olarak yüzlerce kilobayt okuyan bir SSD, dağınık 4 KB blokları almaktan temelde farklı bir iş yükü görür.

Bu, neden performansı artırmak için basitçe "rastgele erişimi sıralı erişime dönüştüremediğimizi" de açıklar. Yine de, yazılım geliştiricileri kesinlikle bunu yapmaya çalışırlar. Veritabanları verileri yeniden düzenler. Oyun motorları işleri gruplar. GPU algoritmaları istekleri yeniden sıralar. Derleyiciler veri düzenlerini değiştirir. Dizilerin yapıları bazen yapıların dizilerini değiştirebilir. Sıralama, dağınık erişimleri nispeten tutarlı olanlara dönüştürebilir.

Ancak bunu yapmak her zaman mümkün değildir. Aslında, bir sonraki adres mevcut işlemin sonucuna bağlıysa, bağımlılık gerçektir. Bir ışın, 3B sahnenin öngörülemeyen bir bölgesine yansıyabiliyorsa, GPU gelecekteki tüm erişimleri önceden bilemez. Bir veritabanı kullanıcısı belirli bir kaydı istiyorsa, önce bitişik kayıtların bir terabaytını okumak açıkça amacına aykırı olur.

Bu nedenle amaç, rastgele erişimleri ortadan kaldırmaktan çok, pahalı erişimleri mümkün olduğunca nadir, öngörülebilir ve eşzamanlı hale getirmektir.

Yerellik, Önbellek Hiyerarşilerinin Çalışmasının Nedenidir

Neyse ki, gerçek yazılımlar sürekli olarak tamamen rastgele verilere erişmez. Aslında, programlar genellikle hem uzamsal yerellik hem de zamansal yerellik sergiler.

Uzamsal yerellik, bir program bir veri parçasına erişirse, kısa süre sonra yakındaki verilere ihtiyaç duyma olasılığının nispeten yüksek olduğu anlamına gelir. Zamansal yerellik, yakın zamanda erişilen verilerin tekrar erişilme olasılığının makul olduğu anlamına gelir.

Bir diziyi işleyen bir döngü mükemmel uzamsal yerelliğe sahiptir. Sıkça başvurulan oyun dünyası verileri güçlü zamansal yerelliğe sahip olabilir. Sıcak bir döngüdeki komutlar (çok sık çalışan bir bilgisayar kodu bölümü) her iki tür yerelliği de sergiler. Bu özellikler önbellekleri geçerli kılar.

Bir CPU'nun DRAM'den bir bayt'a ihtiyacı olduğunda, genellikle yalnızca o bayt'ı aktarmaz. Veriler, önbellek satırları adı verilen sabit boyutlu bloklar halinde önbellek hiyerarşisi boyunca hareket eder. Ana akım x86 CPU'larda bunlar tipik olarak 64 bayt'tır. Örneğin, AMD'nin optimizasyon belgeleri, 64 baytlık önbellek satırları etrafındaki yazılım yerleşimi ve erişim hususlarını açıklar.

Program daha sonra komşu verilere erişirse, bu veri önbellekte zaten bulunabilir. Bu, kritik bir kavram daha tanıtır: çalışma kümesi.

Bir program belirli bir aşamada yalnızca küçük bir bölümü üzerinde tekrarlı olarak çalışırken teknik olarak onlarca gigabayt bellek ayırabilir. Bu aktif çalışma kümesi hızlı bir önbelleğe sığarsa, performans mükemmel olabilir. Çalışma kümesini mevcut önbellek kapasitesinin biraz üzerine çıkarırsanız, aniden çok daha fazla erişim hiyerarşisinin daha yavaş bir seviyesine dökülür. Bu, şaşırtıcı derecede ani performans değişiklikleri yaratabilir.

Ayrıca, önbellek kapasitesi iyileştirmelerinin bazen muazzam kazançlar ve bazen de neredeyse hiç kazanç sağlamamasının nedeni budur. 32 MB'den 96 MB'ye bir önbelleği artırmak, 60 MB'lik sıkça yeniden kullanılan bir çalışma kümesinin yongada kalmasını sağlıyorsa son derece değerlidir. Asla tekrar dokunmadığı birkaç gigabayt veri akışı yapan iş yükü için faydası önemli ölçüde daha azdır.

Bu nedenle önbellekler, yazılım onlara hatırlanmaya değer bir şey verdiğinde en iyi şekilde çalışır.

Neden CPU'lar Tek Bir Devasa Önbellek Yerine Birden Fazla Önbellek Seviyesine Sahiptir

Bu bariz bir soruyu gündeme getiriyor. Önbellek bu kadar faydalıysa, neden sadece devasa, ultra hızlı bir önbellek inşa edip daha yavaş belleği unutmayalım? Çünkü bellekten istediğimiz özellikler birbiriyle çelişir.

En yakın CPU önbellekleri, SRAM'den yapılmıştır ve son derece düşük erişim gecikmesi ve çok yüksek bant genişliği için optimize edilmiştir. Ancak SRAM önemli miktarda silikon alanı tüketir. Daha büyük yapılar ayrıca daha fazla kablo, daha uzun fiziksel yollar, daha fazla arama mantığı ve erişim için genellikle daha fazla enerji gerektirir.

Kapasite arttıkça, küçük bir yerel önbelleğin hızını korumak giderek zorlaşır ve bu, hiyerarşinin ana nedenidir.

Bir L1 önbelleği, bir işlem çekirdeğine son derece yakın olacak kadar küçüktür ve verileri çok düşük gecikmeyle sunar. L2, biraz daha yüksek gecikmeyle daha fazla kapasite sağlar. Son seviye (modern CPU'larda genellikle L3) önbellek, daha da fazla kapasite sağlar ve çekirdekler arasında paylaşılabilir, ancak ona erişmek genellikle daha yavaştır. Her seviyeyi kaçırırsanız, istek en sonunda çok daha yavaş olan DRAM'e gitmek zorunda kalır.

Önbellek tasarımı, kapasitenin çok ötesine geçer. Erişilebilirlik, veri bloklarının nereye yerleştirilebileceğini etkiler ve çakışma kaçırmalarını azaltabilir, ancak daha fazla arama esnekliği karmaşıklık katar. Önbellek bankacılığı paralel erişim yeteneğini artırabilir. Birden fazla port, verimliliği artırır ancak alan ve güç maliyeti vardır. Özel önbellekler bireysel çekirdeklere hızlı yerel erişim sağlarken, paylaşılan önbellekler toplam kapasiteyi daha verimli kullanabilir ve belirli veri paylaşım biçimlerini basitleştirebilir.

Intel, önbellek organizasyonunu boyut, erişilebilirlik, gecikme, bant genişliği, özel veya paylaşılan organizasyon, ölçeklenebilirlik ve enerji verimliliği arasındaki bir denge eylemi olarak tanımlayarak, mimari araştırmalarında tam olarak bu tasarım gerilimini tartıştı.

Sonra tutarlılık var. Birden fazla CPU çekirdeği aynı belleğin kopyalarını önbelleğe aldığında, sistemin çelişkili veri sürümleriyle sonsuza kadar çalışmadığından emin olması gerekir. Bu tutarlı görünümü sürdürmek, özellikle çekirdek sayısı arttıkça ek iletişim ve defter tutma üretiyor. Bu nedenle daha fazla önbellek evrensel bir bedava öğle yemeği sağlamaz.

AMD'nin 3D V-Cache teknolojisi, mühendislerin bu ödünleşmeyi aşmak için başka bir yol bulduğunun harika bir modern örneğidir. CPU çekirdek yongasını yatay olarak önemli ölçüde genişletmek yerine, AMD dikey olarak ek bir önbellek yongası istifler. İkinci nesil uygulaması, doğrudan bakır-bakır bağlama ve silikon içi vias (TSV) kullanarak 64 MB L3 önbellek yongası ekler.

Ryzen X3D işlemcilerin oyunlardaki popülerliği, ek önbelleğin bir iş yükünün çalışma kümesiyle uyum sağladığında neler olabileceğinin pratik bir gösterimidir. Oyunlar sürekli olarak dünya durumunu, çizim çağrı verilerini, fiziksel yapıları, animasyonu, görünürlük bilgilerini ve sayısız başka veri yapısını manipüle eder. Bu sıkça yeniden kullanılan bilgilerin daha fazlasını CPU'ya yakın tutmak, DRAM'e pahalı gezileri azaltabilir.

Ancak burada bile, kazançlar oyunlar arasında önemli ölçüde değişir. Bazıları kritik verilerini zaten geleneksel/daha küçük önbelleklere sığdırır. Diğerleri başka yerlerde kısıtlıdır. Bazıları büyük fayda sağlar.

Bu değişkenlik, bellek hiyerarşisi teorisinin öngördüğü şeydir.

DRAM Performansı Frekans ve CAS Gecikmesinden Çok Daha Fazlasıdır

Sonunda, önbellekte bulunmayan veriler ana/sistem belleğinden veya DRAM'den gelmek zorundadır.

DRAM, SRAM'e kıyasla çok daha büyük bir kapasite sunar ve bit başına maliyeti düşüktür, ancak önemli ölçüde daha yavaştır. Bu nedenle mühendisler bunu bant genişliği ve paralellik ile telafi eder.

Modern DRAM dahili olarak bankalara ve banka gruplarına ayrılır. Bu bankalar içinde bellek hücrelerinin sıraları bulunur. Veriye erişmek tipik olarak istenen sütunları okumadan veya yazmadan önce bir satırı satır arabelleğine etkinleştirmeyi içerir.

Bu, üç basitleştirilmiş senaryoya yol açar: Gerekli satır zaten aktifse, denetleyici bir satır-arabellek isabeti alır. İlgili bir satır açık değilse, bir tane etkinleştirilmesi gerekir. Mevcut bankada yanlış satır açıksa, yeni satır etkinleştirilmeden önce mevcut satırın kapatılması gerekebilir.

Bellek denetleyicisi bu nedenle CPU isteklerini körü körüne iletmekten çok daha fazlasını yapar. Bekleyen işlemleri takip eder ve kanallar, sıralar, banka grupları ve bankalar arasında verimli bir şekilde zamanlamaya çalışır, aynı zamanda çok çeşitli bellek zamanlama kısıtlamalarına uyar.

Bellek bant genişliği ve bellek gecikmesinin birbirinin yerine geçemez ölçümler olarak ele alınmaması için bir neden budur.

Aslında, gecikme belirli bir işlemin ne kadar sürdüğünü açıklar. Bant genişliği ise zaman içinde ne kadar veri aktarılabileceğini açıklar. Bir sistem devasa toplu bant genişliğine sahip olabilir ve yine de bir dizi bağımlı rastgele bellek erişimine hizmet etmede nispeten zayıf olabilir.

Tersine, yüzlerce bağımsız işlemi aktif tutabilen bir iş yükü, yine de etkileyici genel verimliliğe yaklaşırken önemli gecikmeyi tolere edebilir.

DDR5 bellek, modern bellek tasarımının paralelliğe ne kadar güçlü bir şekilde bağlı olduğunu gösteriyor. DDR4 ile karşılaştırıldığında DDR5, banka gruplarının sayısını artırır, varsayılan patlama uzunluğunu sekizden on ikiye çıkarır ve bir DIMM'i iki bağımsız alt kanala böler. Micron özellikle banka gruplarını artırmanın daha az kısıtlayıcı banka grubu zamanlamalarını kullanma olasılığını artırdığını ve daha fazla bellek sayfasının eşzamanlı olarak açık kalmasına izin verdiğini belirtiyor.

Ayrıca, DRAM ayarının neden bazen sinir bozucu derecede tutarsız sonuçlar verdiğini de açıklar. Aktarım hızını artırmak teorik bant genişliğini yükseltir. Zamanlamaları sıkılaştırmak çeşitli gecikmeleri azaltabilir. Sıraları eklemek mevcut paralelliği etkileyebilir. Bellek denetleyicisi, CPU mimarisi ve uygulama davranışı daha sonra herhangi bir iyileştirmenin gerçek yazılıma ne kadarının ulaştığını belirler.

Bu nedenle bir sıkıştırma karşılaştırması, oyun, veritabanı ve büyük dosya kopyası, aynı bellek yükseltmesine çok farklı tepki verebilir.

GDDR ve HBM Sorunun Farklı Versiyonlarını Çözüyor

GPU'lar devasa bant genişliği gerektirir çünkü binlerce işlem hattı eşzamanlı olarak veri talep edebilir. Bu nedenle tüketici GPU'ları, nispeten geniş arayüzler aracılığıyla bağlanan ve çok yüksek aktarım hızlarında çalışan GDDR bellek kullanır.

Yapay zeka ve HPC hızlandırıcıları, Yüksek Bant Genişlikli Bellek veya HBM ile bunu daha da ileri götürüyor.

Bellek paketlerini işlemcinin etrafına yerleştirmek ve bunları geleneksel kart seviyesi arayüzler aracılığıyla sürmek yerine, HBM DRAM yongalarını istifler ve gelişmiş paketleme yoluyla işlem cihazına çok yakın konumlandırılmış son derece geniş arayüzler kullanır.

Sonuç, olağanüstü bant genişliği ve aktarılan bit başına iyi enerji verimliliğidir, ancak önemli ölçüde daha büyük paketleme karmaşıklığı ve maliyetiyle birlikte.

AMD'nin Instinct MI355X'i, bugün söz konusu ölçeğin faydalı bir göstergesini sunuyor. Tek bir hızlandırıcı 288 GB HBM3E taşıyor ve 8 TB/s'ye kadar teorik bellek bant genişliği sunuyor. Bu nedenle sekiz GPU'lu sistemler 2.3 TB HBM içeriyor.

Bu rakamlar, bir masaüstü CPU'su için absürt derecede fazla olurdu. Ancak modern yapay zeka için, işlem donanımını beslemek merkezi mimari sorunlardan biri haline geldi.

Yapay Zeka Veri Hareketini Birinci Sınıf Bir Performans Sorunu Haline Getirdi

Modern üretken yapay zeka — başlıca Büyük Dil Modelleri (LLM'ler) biçiminde — ham işlem gücünün hikayenin yalnızca bir parçasını anlatabileceğini neden daha açık bir örnekle sunuyor.

Büyük sinir ağları, çok sayıda matris işlemi içerir; bu, modern GPU'ların ve özel yapay zeka hızlandırıcılarının yürütmek için tasarlandığı işlemdir. Ancak işlemci, o aritmetik birimlerin faydalı işler yapabilmesinden önce hala model ağırlıklarını, aktivasyonlarını ve ara verileri almalıdır.

Eğitim özellikle bellek yoğunluğundadır çünkü sistem yalnızca bir modelin ağırlıklarından çok daha fazlasını korumalıdır. Eğitim tekniğine ve optimizasyon aracına bağlı olarak, gradyanları, optimizasyon aracı durumlarını, geri yayılım için saklanan aktivasyonları ve geçici çalışma alanını da gerektirebilir.

Çıkarım bu gereksinimlerin bazılarını ortadan kaldırır ancak kendi bellek zorluklarını yaratır.

Yedi milyar parametreli büyük bir dil modeli düşünün. 16-bit hassasiyette, yalnızca ağırlıklar KV önbelleği ve çalışma zamanı ek yükü hesaba katılmadan önce yaklaşık 14 GB gerektirir.

Nicemleme yardımcı olur çünkü her parametreyi 16 bitten 8 veya 4 bite indirmek, modeli depolamak ve taşımak için gereken bellek miktarını azaltır. Bu nedenle düşük hassasiyetli biçimler depolama kapasitesinden daha fazla iyileşir. Bellekten seyahat eden daha az bayt, bellek trafiği sınırlayıcı faktör olduğunda doğrudan performansı artırabilir.

Daha büyük ders, yapay zekanın çok ötesine uzanır. Yeniden hesaplama ve veri hareketi genellikle değiştirilebilir maliyetlerdir. Bazen bir sonucu saklamak, onu tekrar hesaplamaktan daha ucuzdur. Bazen bir değeri yeniden hesaplamak, onu uzak bellekten almak daha ucuzdur.

Modern mimari giderek artan bir şekilde bu takasın hangi tarafının kazanacağını belirlemeye çalışıyor.

Oyunlar En Karışık Bellek İş Yüklerinden Biridir

Oyunlar özellikle ilginçtir çünkü tek bir "oyun iş yükü" yoktur.

Bir an CPU, görünürlük/kesme yapılarını tarıyor ve çizim çağrılarını hazırlıyor olabilir. Başka bir iş parçacığı fizik veya yapay zekayı güncelliyor olabilir. GPU eşzamanlı olarak geometriyi işliyor, dokuları örnekliyor, malzeme verilerini okuyor, render hedeflerini yazıyor, shader'ları değerlendiriyor ve hızlandırma yapılarına erişiyor. Açık dünya bir başlıkta, varlıklar arka planda depolamadan sistem belleğine ve VRAM'e akış yapabilir. Bu işlemlerin bazıları son derece tutarlıdır, ancak diğerleri değildir. Bu, birkaç donanım trendini açıklamaya yardımcı olur.

CPU tarafında, AMD'nin X3D işlemcileri, oyunlar tarafından kullanılan çalışma kümelerinin daha fazlasını yakalamak için büyük son seviye önbellekler kullanır. Kritik oyun verileri aksi takdirde tekrar tekrar DRAM'e seyahat edecekse fayda önemli olabilir.

GPU'larda, büyük son seviye önbellekler benzer şekilde harici VRAM trafiğini azaltır, etkili bellek bant genişliğini artırır ve kritik veri için erişim gecikmesini önemli ölçüde düşürür. NVIDIA, AMD ve Intel, fiziksel bellek bant genişliğinde eşit derecede büyük bir artış gerektirmeden yonga dışı işlemleri önlemek etkili bellek performansını artırabileceğinden, GPU nesilleri boyunca önbellek yapılarını önemli ölçüde değiştirdi.

Gerçek zamanlı ışın izleme, veri davranışını daha da zorlaştırır. Aslında, ışınlar, hangi sahne geometrisi parçalarıyla kesişebileceklerini belirleyen ağaç tipi veri yapıları olan Sınır Hacmi Hiyerarşilerini (BVH'ler) geçer. Geleneksel rasterize iş yüklerinin aksine, ışınlar sapabilir ve sahnenin tamamen farklı bölgelerine doğru ilerleyebilir.

NVIDIA bunu hem yürütme hem de veri sapması olarak tanımlıyor: komşu GPU iş parçacıkları farklı kod yollarını izleyebilirken aynı zamanda birleştirilmesi veya önbelleğe alınması zor bellek adreslerine erişebilir. Shader Yürütme Yeniden Düzenleme teknolojisi kısmen ışın izleme işini yürütme ve veri yerelliğini iyileştirecek şekilde yeniden gruplamak için tasarlanmıştır.

Bu önemli bir örnektir çünkü daha hızlı belleğin her zaman bir bellek sorunu için tek çözüm olmadığını gösterir, çünkü bazen daha iyi seçenek, mevcut bellek alt sisteminin daha verimli kullanılmasını sağlayacak şekilde işi yeniden organize etmektir.

Oyunlar ayrıca bant genişliği veya gecikme yerine kapasite tarafından kısıtlanabilir. Gerekli dokular, geometri ve render kaynakları VRAM kapasitesini aşarsa, sistem kaynakları PCI-Express veri yolu üzerinden sistem belleğinden taşımak veya bunları çıkarmak ve yeniden yüklemek zorunda kalabilir. Devasa teorik bant genişliğine sahip bir GPU, en başta yerel belleğinde bulunmayan verileri telafi edemez.

Bu nedenle bellek performansı, tek bir kare içinde bile birden fazla boyuta sahiptir: yerel olarak ne kadar veri sığar, ne kadar hızlı erişilebilir, erişimler ne kadar etkili bir şekilde birleşir, önbellekler yeniden kullanımı ne kadar iyi yakalar ve mimari ne kadar paralel trafiği sürdürebilir.

SSD'ler Sıralı Bant Genişliğinin Gerçek Depolama Performansını Neden Açıklayamadığını Kanıtlıyor.

Depolama, tek bir bant genişliği rakamının ne kadar yanıltıcı olabileceğinin belki de en kolay gösterimidir.

Modern PCIe NVMe SSD'ler muhteşem sıralı verimlilikler ilan eder, ancak sıralı aktarımlar son derece elverişli bir iş yükünü temsil eder. Büyük, bitişik istekler, denetleyicinin NAND kanalları, yongalar ve düzlemler arasında işi verimli bir şekilde dağıtmasına ve birçok işlemi aktif tutmasına olanak tanır. Ancak gerçek uygulamalar genellikle çok farklı bir şey ister.

İşletim sistemleri, oyunlar, veritabanları ve uygulamalar, sürücünün farklı yerlerine dağılmış binlerce nispeten küçük veri parçası talep edebilir. Bu nedenle SSD özellikleri, sıralı verimliliği rastgele IOPS, kuyruk derinliği ve gecikmeden ayırır.

Solidigm'in kendi iş yükü belgeleri, sıralı erişimleri bitişik bloklar, rastgele erişimleri medya boyunca dağılmış bloklar ve kuyruk derinliğini bekleyen G/Ç isteklerinin sayısı olarak tanımlar. Kritik olarak, kuyruk derinliğini artırmak daha fazla paralel iş ortaya çıkararak verimliliği artırabilir, ancak bu gecikme pahasına gelir.

Bu, DRAM'e kavramsal olarak çok benzer. Aslında, NAND flash bellek tabanlı bir SSD, bir denetleyicinin arkasında paralel olarak çalışan birçok flash yongası içerir. NAND'ın kendisi sayfalara ve daha büyük silme bloklarına ayrılır ve yazmalar DRAM'deki bir baytı üzerine yazmak gibi işlenemez. Denetleyici, NAND'ı sıradan bir blok aygıtı gibi göstermek için adres çevirisi, aşınma dengeleme, çöp toplama ve diğer arka plan işlemleri gerçekleştirir.

Bu işlemler, SSD'nin ana bilgisayarın istediğinden daha fazla veri fiziksel olarak yazması anlamına gelen yazma çoğaltma olarak bilinen ek dahili trafiğe neden olabilir. Çöp toplama ayrıca sürekli iş yükleri sırasında gecikme sivri uçları üretebilir.

Tüketici SSD'leri genellikle hızlı yazma önbelleği aracılığıyla hiyerarşiye başka bir katman ekler. Aslında, veriler daha sonra daha yoğun TLC veya QLC depolamaya katlanmadan önce, NAND'ın bir kısmı geçici olarak bir SLC benzeri modda çalışabilir. Bazı sürücüler ayrıca haritalama verileri için DRAM içerirken, DRAM'siz tasarımlar, eşleme yapılarının bir kısmını sistem belleğinde tutmak için Ana Bilgisayar Belleği Tamponu (HMB) gibi teknolojiler kullanabilir.

Bir kez daha, depolama aygıtı etkin bir şekilde kendi bellek hiyerarşisini oluşturdu. Ve hızlı önbellek tükendiğinde, sürekli yazma performansı, bir ürün sayfasında gösterilen kısa benchmark patlamasından çok farklı görünebilir.

Aynı Donanım İş Yüküne Bağlı Olarak Hızlı veya Yavaş Olabilir

Bu noktada, bellek karşılaştırmalarının neden bağlam gerektirdiğini netleştirmek gerekir.

Büyük bir dosya kopyası, sürekli sıralı bant genişliği ister.

Gecikmeye duyarlı bir veritabanı, küçük rastgele erişimler ve kuyruk gecikmesi ile çok daha fazla ilgilenebilir.

Yoğun diziler üzerinde çalışan bir bilimsel simülasyon, akış bant genişliği ve vektörleştirmeden mükemmel şekilde yararlanabilir.

Bir derleyici, nispeten zayıf uzamsal ve/veya zamansal yerelliğe sahip karmaşık veri yapılarını kovalayarak önemli zaman harcayabilir.

CPU sınırlı bir oyun, sıcak çalışma kümesi içine sığıyorsa büyük bir son seviye önbellekten büyük fayda sağlayabilirken, başka bir oyun zar zor tepki verebilir.

Yapay zeka eğitimi, muazzam işlem gücü, kapasite ve bant genişliğini eşzamanlı olarak gerektirir. Düşük eşzamanlı LLM kod çözme, bellek bant genişliğine çok daha fazla dayanabilir. Uzun bağlamlı çıkarım, KV önbelleğini ekler ve mevcut bellek kapasitesini başka bir merkezi kaynak haline getirir.

Hatta bant genişliği kelimesinin bile nitelenmesi gerekir. Teorik arayüz bant genişliği, sürekli uygulama bant genişliği, önbellek bant genişliği, DRAM bant genişliği, depolama bant genişliği ve ara bağlantı bant genişliği vardır. Bir iş yükü birini doyururken diğerini zar zor kullanabilir.

Performansı nihayetinde belirleyen şey, uygulamanın veri erişim modelinin tüm hiyerarşiyle nasıl etkileşime girdiğidir.

Modern Bilgisayar İşlemcileri Sadece Daha Hızlı Veri Taşımak Değil, Daha Az Veri Taşımakla İlgilidir

Bu yüzden modern işlemcilerdeki en ilginç gelişmelerden bazıları sadece daha hızlı aritmetik birimler değildir.

Önbellekler yeniden kullanılan verileri işlem kaynaklarına yakın tutar, önceliklendiriciler gelecekteki erişimleri tahmin eder, bellek denetleyicileri DRAM paralelliğini ortaya çıkarmak için istekleri yeniden sıralar, GPU iş parçacığı zamanlaması tutarlılığı iyileştirmeye çalışır, karolama büyük sorunları daha küçük belleklerdeki çalışma kümelerine böler, sıkıştırma aktarılması gereken bayt sayısını azaltır, nicemleme yapay zeka modelleri için aynı şeyi yapar, HBM büyük miktarda belleği son derece geniş arayüzler aracılığıyla hızlandırıcılara fiziksel olarak yaklaştırır, 3D yığma, her bellek baytını aynı düz yongaya zorlamadan kapasite ekler, çipletler tasarımcıların özel işlem, önbellek ve G/Ç yapılarım daha esnek bir şekilde birleştirmesini sağlar ve giderek karmaşıklaşan ara bağlantılar, CPU'lar, GPU'lar ve hızlandırıcılar arasındaki iletişimin bir sonraki duvar olmasını önlemeye çalışır.

Ortak tema basittir: pahalı veri hareketini mümkün olduğunca verimli kullanın.

Ham işlem gücü yükselmeye devam edecek. Bellek bant genişliği de yükselecek, önbellekler büyüyecek, HBM daha hızlı olacak, SSD'ler onlu gigabaytlar/saniye seviyesine ulaşacak ve gelişmiş paketleme daha önce ayrı olan bileşenleri birbirine yaklaştıracak.

Ancak, fiziksel mesafe, enerji, kapasite ve gecikme, tek bir bellek teknolojisinin eşzamanlı olarak devasa kapasite, devasa bant genişliği, ihmal edilebilir gecikme ve ihmal edilebilir maliyet sağlayamayacağını garanti eder.

Bu nedenle bellek hiyerarşisi ortadan kalkmayacak ve hatta daha da derin ve karmaşık hale geliyor.

Modern performans, giderek artan bir şekilde, doğru veriyi işlemci onu istemeden önce o hiyerarşinin doğru seviyesine koymaya ve aynı verinin tekrar taşınmak yerine yeniden kullanılabilmesi için yazılımı organize etmeye bağlıdır.

Bağımlı bir bellek erişimi için yüzlerce saat döngüsü bekleyen bir CPU çekirdeği faydalı bir işlem değildir. Binlerce boşta işlem birimi VRAM'i bekleyen bir GPU faydalı bir işlem değildir. Model verisinden mahrum kalan petaFLOP yetenekli bir yapay zeka hızlandırıcısı faydalı bir işlem değildir. Uygulamanın onu kullanmak için gereken istekleri verimli bir şekilde yayınlayıp işleyemiyorsa, 14 GB/s'lik bir SSD de öyle değildir.

Sonuçta en hızlı işlem, veriyi daha hızlı almak değil, veriyi almaktan kaçınmaktır.

Önceki Haber
Laptop RTX 5090'dan Çığır Açan Performans! M5 Max'i Geride Bıraktı, Ama Bir Şartla...
Sıradaki Haber
Avrupa'nın Uzay Arenası Karar Anı: Ariane 6'nın Geleceği Belirsizleşti

Benzer Haberler: