CPU önbelleğini ana bellekten daha hızlı yapan şey nedir? Katmanlı bir önbellek sisteminde bazı avantajlar görebiliyorum. Daha küçük bir önbellek aramak daha hızlı olduğu anlamına gelir. Ama daha fazlası olmalı.
CPU önbelleğini ana bellekten daha hızlı yapan şey nedir? Katmanlı bir önbellek sisteminde bazı avantajlar görebiliyorum. Daha küçük bir önbellek aramak daha hızlı olduğu anlamına gelir. Ama daha fazlası olmalı.
Yanıtlar:
Bir CPU önbelleği durumunda, daha hızlıdır çünkü işlemciyle aynı kalıptadır. Başka bir deyişle, istenen verilerin işlemciye aktarılması gerekmez; zaten orada.
Sabit sürücüdeki önbellek durumunda, daha hızlıdır çünkü katı halde bellektedir ve hala dönen plakalarda değildir.
Bir web sitesindeki önbellek durumunda, veriler daha önce veritabanından alındığı için daha hızlıdır (bazı durumlarda dünyanın herhangi bir yerinde bulunabilir).
Bu yüzden çoğunlukla, yerellik hakkında . Önbellek veri aktarma adımını ortadan kaldırır .
Yerellik, zaman içinde veya uzayda "birbirine yakın" olan verileri söylemenin süslü bir yoludur. Daha küçük, daha hızlı (ancak genellikle daha pahalı) bir bellekle önbellekleme çalışır, çünkü genel olarak göreceli olarak küçük miktarda bir veri en az erişilen veridir.
Wikipedia'da Daha Fazla Okuma
Önbelleği (Bilgi İşlem)
Daha hızlı çünkü hem daha yakın hem de SRAM DRAM değil.
SRAM, DRAM'den oldukça hızlıdır ve değerler statik olarak tutulur ( S RAM'deki S ), böylece döngüleri ortadan kaldıran yenilenmeleri gerekmez. DRAM dinamiktir, minik şarj edilebilir piller gibi, pilleri düzenli olarak yeniden şarj etmeniz gerekir; böylece boşalmaz ve sıfır olurlar. Bu, bitlere vs. nasıl erişmeniz gerektiğine ek olarak döngü süresini de çalar.
İşlemci ile aynı kalıba yakın olan işlemci, gidiş dönüşü azaltır, hem L1 hem de L2, erişim açısından DRAM'den daha hızlıdır.
SRAM, DRAM'den elmaları elmalara götürmekten daha hızlıdır ve önbellekler genellikle çip veya daha yakın veya DRAM'den daha hızlı otobüslerdedir ve erişim süresini de hızlandırır.
Açıkça belirtilmesi gereken bir şey, ışık hızının etkisidir. Gelen bu video Grace Hopper bir elektrik sinyali * Bir nanosaniye seyahat edebilirsiniz ne kadar uzakta uzun bir ayak, yaklaşık bir tel parçasını gösterir. Bir CPU 3GHz'de çalışıyorsa, bu saat devri başına 4 "mesafeye işaret eder. Bu, bellek erişim hızlarında zor bir fiziksel sınırdır. Bu, CPU'ya (L1 önbellek olduğu gibi) yakın olmanın nedeninin büyük bir parçasıdır. hafızanın daha hızlı olması için.
EDIT * aslında ışığın vakumda ne kadar uzağa gidebildiğini, bakır / silikon ile arasındaki mesafe daha azdır.
Diğer cevaplar halihazırda tüm ilgili bitleri kapsamıştır: yerellik (ve ilgili veri transfer maliyeti, veri yolu genişliği ve saati vb.); ışık hızı (yine, transfer maliyetleri ve veri yolu genişliği ve verimi ile ilişkili); farklı bellek teknolojisi (SRAM vs.DRAM). Bütün bunlar maliyet / performans dengesi ışığında görülüyor .
Dışarıda bırakılan bir bit ve sadece Darkhogg'un yorumunda belirtildi: daha büyük önbelleklerin daha iyi isabet oranları var ancak daha uzun gecikme süresi var. Bu tradeoffu ele almak için tanıtılan çoklu önbellek seviyeleri.
Elektronik SE bu konuda mükemmel bir soru ve cevap var
Cevaplardan, bana vurgulanması gereken bir nokta olduğu anlaşılıyor: Önbellek okuması için gerekli tüm işlemleri gerçekleştiren mantık o kadar basit değil (özellikle önbellek günümüzde çoğu önbellek gibi). Kapıları ve mantığı gerektirir. Öyleyse, masrafları ekarte edip mekandan ölsek bile
Birisi gülünç derecede büyük bir L1 önbelleği uygulamaya çalışırsa, önbellek okuması için gerekli tüm işlemleri yapan mantık da büyük olacaktır. Bir noktada, tüm bu mantık boyunca yayılma gecikmesi çok uzun olacak ve önceden sadece bir saat döngüsü almış olan işlemlerin birkaç saat döngüsüne bölünmesi gerekecektir. Bu gecikmeyi artıracak.
Diğer cevaplarda ortaya çıkan birçok iyi nokta var, ancak bir faktör eksik görünüyor: adres çözme gecikmesi.
Aşağıdakiler, hafıza adres kod çözme işleminin nasıl yürüdüğüne dair geniş bir basitleştirmedir, ancak büyük DRAM yongalarının neden genellikle oldukça yavaş olduğu konusunda iyi bir fikir verir.
İşlemci belleğe erişmesi gerektiğinde, kullanmak istediği sözcüğü seçmek için bellek yongasına bir komut gönderir. Bu komut bir Sütun Adres Seçimi olarak adlandırılır (şimdilik satır adreslerini yok sayacağız). Bellek yongası şimdi, sütunu tüm hücrelere bağlanan tek bir yazı yazmak için adresi bir mantık geçitleri çağlayanına göndermek suretiyle istenen sütunu etkinleştirmelidir. Nasıl uygulandığına bağlı olarak, sonuç diğer sona erene kadar her adres için belirli bir gecikme süresi olacaktır. Buna hafızanın CAS gecikmesi denir. Bu bitlerin sırayla incelenmesi gerektiğinden, bu işlem bir işlemci döngüsünden çok daha uzun sürer (bu genellikle bekleyecek sırayla yalnızca birkaç transistöre sahiptir). Aynı zamanda veri yolu döngüsünden çok daha uzun sürüyor (bu genellikle bir işlemci döngüsünden birkaç kez daha yavaş). Tipik bir bellek yongası üzerindeki bir CAS komutunun 5ns (IIRC - zamanlamalara baktığımdan beri) işlemiş olması muhtemel.
Neyse ki, adresleri üç parçaya ayırırız (sütun, satır ve sıra), her bir parçanın daha küçük olmasına ve bu parçaları aynı anda işlemesine izin verir, aksi takdirde gecikme daha uzun olur.
İşlemci önbelleği, ancak, bu sorun yok. Sadece çok daha küçük değil, bu yüzden adres çevirisi daha kolay bir iş, aslında adresin küçük bir parçasından daha fazlasını çevirmek zorunda kalmayacak (bazı değişkenlerde, hiçbiri değil) ilişkisel. Bu, her bir önbelleğe alınmış bellek satırı boyunca, adresin bir kısmını (veya tümünü) depolayan fazladan bellek hücrelerinin olduğu anlamına gelir. Açıkçası bu, önbelleği daha da pahalı hale getiriyor, ancak bu, tüm hücrelerin aynı anda istediğimiz belirli bir bellek satırına sahip olup olmadıklarını görmek için sorgulanabilecekleri anlamına geliyor ve sonra doğru veriye sahip olan tek kişi (umarım) tüm belleği ana işlemci çekirdeğine bağlayan bir veriyolu üzerine. Bu, bir döngüden daha kısa sürede gerçekleşir, çünkü çok daha basittir.
Çalıştığım felsefelerden biri, herhangi bir önbellek temelli hafızadan bahsettiğimizde, bu amaçla CPU önbelleği, önbellek önbelleği veya bellek önbelleği olduğunda, elde edilen maksimum verim-minimum-donanım hareketi idi. Temel gerekçe, veri almak / okumak / yazmak için en az donanım hareketi olduğunda veya hiç olmadığında ve işlem daha hızlı tamamlandığında elde edilir.
Veri, disk -> ana bellekten (RAM) (geçici depolama) -> CPU önbelleğinden (sık erişilen veriler için CPU'nun yakınında daha küçük geçici depolama) -> CPU'dan (işleme) aktarılır.
CPU önbelleği, en son kullanılan ana bellek konumlarından verilerin kopyalarını saklayan daha küçük ve daha hızlı bir bellek alanıdır.
Tampon önbellek, verilerin kopyalarını en son kullanılan disk konumlarından saklayan bir ana hafıza alanıdır.
Tarayıcı önbelleği, kullanıcılar tarafından en son ziyaret edilen web sitelerinden verilerin kopyalarını saklayan dizin veya benzeri bir alandır.
Başvuru: Bilgisayar Belleği Nasıl Çalışır?