Önbellek boyutları ile erişim gecikmesi arasında bir yazışma var mı? Diğer tüm şeyler eşit olduğunda, daha büyük bir önbellek daha yavaş çalışır mı? Öyleyse neden? Ne kadar yavaş?
Önbellek boyutları ile erişim gecikmesi arasında bir yazışma var mı? Diğer tüm şeyler eşit olduğunda, daha büyük bir önbellek daha yavaş çalışır mı? Öyleyse neden? Ne kadar yavaş?
Yanıtlar:
Ellerinizdeki öğelere erişmek, ceplerinizdeki öğelere göre daha hızlıdır; bu, dolabınızdaki öğelere göre daha hızlıdır; bu da Digikey'deki öğelere göre daha hızlıdır. Listelediğim her bir ardışık depolama türü, öncekinden daha büyük ancak daha yavaştır.
Öyleyse her iki dünyanın da en iyisini alalım, ellerinizi bir Digikey deposu kadar büyük yapalım! Hayır, işe yaramıyor çünkü artık gerçekte eller değiller. Onlar senin ağırlığındaki bir top mermisi.
Daha büyük depolama alanına erişimin yavaş olmasının nedeni mesafedir . Daha büyük depolama alanı ortalama olarak sizden daha uzaktadır. Bu fiziksel öğeler ve RAM için geçerlidir.
Bilgisayar belleği fiziksel yer kaplar. Bu nedenle, daha büyük anılar fiziksel olarak daha büyüktür ve bu bellekteki bazı konumlar fiziksel olarak daha uzakta olacaktır. Uzaktaki şeylere erişim, hız sınırlamaları ne olursa olsun, daha uzun sürer. Cepleriniz ve Digikey durumunda, hız sınırları kollarınızın hızı ve otoyol hız sınırlarıdır.
RAM durumunda, hız sınırları elektrik sinyallerinin yayılma hızı, kapıların ve sürücülerin yayılma gecikmesi ve senkron saatlerin ortak kullanımıdır. Para bir nesne olmasa ve bugün mevcut olan en hızlı RAM teknolojisinden istediğiniz kadar satın alabilseniz bile, hepsinden yararlanamazsınız. İsterseniz A4 boyutunda bir L1 önbellek sayfası yerleştirin ve CPU'nuzu tam ortasına yerleştirin. CPU, belleğin tam köşesinde bir miktar belleğe erişmek istediğinde, kelimenin tam anlamıyla oraya ulaşması için bir nanosaniye ve geri gelmesi için bir nanosaniye alır. Ve bu tüm yayılım gecikmelerini ve kapılar ve sürücüler dahil değildir. Bu, 3GHz CPU'nuzu ciddi şekilde yavaşlatacaktır.
Eşzamanlı mantık tasarımı eşzamansız mantığa göre çok daha kolay olduğundan, bir RAM bloğu aynı saatle saatlenir. Tüm belleği bir L1 önbelleği yapmak istiyorsanız, bellekteki en uzak konumun en kötü durum zamanlamasıyla başa çıkmak için tüm lotu yavaş bir saatle saatlendirmeniz gerekir. Bu, uzak bellek konumlarının artık daha hızlı saatlendirilebilecek yerel konumları geri tuttuğu anlamına geliyor. Yani, yapılacak en iyi şey hafızayı bölmek olacaktır. Önbelleğin en yakın ve en küçük bölümü en hızlı saati kullanır. Bir sonraki en yakın ve en küçük bölüm biraz daha yavaş bir saat vb. Kullanır.
Ve şimdi L1 ve L2 önbellek ve RAM var.
Bu da bizi bir sonraki nedene, güç tüketimine getiriyor.
Önbellek aslında önemli miktarda güç tüketir. Sadece belleğin kendisi değil, onu çevreleyen tüm mantık, önbellek çizgileri ve ana bellek arasındaki eşlemeyi işler. Bu ekstra mantığın performansını artırmak güç tüketiminde artışa neden olabilir. Şimdi, belirli uygulamalar için (mobil, gömülü) önbelleği küçük tutmak için daha da teşvik edersiniz.
Bkz . Güç ve Performans Optimizasyonu için Önbellek Tasarımı Değişimleri: Bir Vaka Çalışması (Ching-Long Su ve Alvin M. Despain, 1995).
Tüm ekonomik / performans / güç tüketimi faktörlerini bırakarak, sorunuzun cevabı: birçok mikro mimari faktöre bağlıdır.
Örnek olarak bu referansa bakın - test edilen tüm işlemciler için ölçülen L1 erişim gecikmesi 4 saat döngüsüdür. İşlemcilerin frekansları neredeyse aynıdır, ancak L1 önbelleğinin boyutları 3 faktöre kadar farklılık gösterir.
Yukarıdaki testte birkaç farklı işlemcide L1'e sabit gecikmenin nedeni, önbelleğin mikro mimarisine dayanır: önbellek erişiminin kendisi (bellekten veri alma) sadece tek bir saat döngüsü alır. Erişimin kodunu çözmek, veri varlığını kontrol etmek ve daha fazlası için üç döngü daha harcanır ... İlave aşamaların sayısı test edilen işlemcilerde aynıdır, bu nedenle erişim gecikmeleri aynıdır.
Yukarıdaki örneğe rağmen, önbellek gecikmesinin önbellek boyutundan bağımsız olduğu sonucuna varılmamalıdır. Birisi gülünç derecede büyük bir L1 önbellek uygulamaya çalışırsa, önbellek okuması için gerekli tüm işlemleri gerçekleştiren mantık da büyük olur. Bir noktada, tüm bu mantık boyunca yayılma gecikmesi çok uzun olurdu ve önceden tek bir saat döngüsü almış olan işlemlerin birkaç saat döngüsüne bölünmesi gerekecektir. Bu gecikmeyi artıracaktır.
Söz konusu önbelleğin SRAM'de uygulandığı varsayıldığında, önbellek boyutundan en fazla etkilenen modüller şunlardır: satır kod çözücüleri ve mux'ler. Bununla birlikte, duyu amperleri bile çok büyük önbellekler için etkilenecektir: daha yüksek kapasitans nedeniyle bir bit çizgisinde daha küçük voltaj salınımı "daha güçlü" bir duyu amperini gerektirecektir. Bununla birlikte, mantık hızı üzerindeki en şiddetli etki tel ara bağlantı kapasitansı ile eklenecektir - bu kapasitansın SRAM boyutuna doğrusal bir bağımlılıktan daha fazlası vardır. Kesin ayrıntılar uygulamaya özeldir.
Şimdi, L1 önbellekleri gecikmelerinde oldukça kararlıdır, çünkü performansları çok önemlidir. L2 ve L3 önbelleklerini analiz etmeye çalışırsanız, resim çok karmaşıklaşır.
Çok çekirdekli işlemcileri düşündüğünüzde resim çok daha karmaşıktır - önbellek tutarlılığını sağlamak için ek mantığı vardır . Bu, önbellek erişiminin gecikmesini etkileyen ek bir faktöre yol açar: tüm çekirdeklerin belleğine erişim geçmişi .
özet
Gördüğünüz gibi sorunuz önemsiz olmaktan çok uzak ve tamamen cevaplanamıyor. Ancak, ekonomik ve performans tercihli önbellekleri göz önünde bulundurursanız, boyutlarının gecikmeyi kayda değer bir şekilde etkilemeyeceğini söyleyebilirim.
İlgili okuyucular için:
Bu referans , modern CPU'ların performans faktörlerinin derinlemesine bir analizidir. İçinde önbellekle ilgili çok fazla malzeme var. Bilgisayar mimarisi ve mikro mimari ilkeleri konusunda derinlemesine anlayış gerektirir (alternatif olarak - bu alanda profesyonel olabilmek için bilmeniz gereken konuların iyi bir özeti).
CPU önbellek testi mühendisi burada - Dave Tweed yorumlarda doğru açıklamalara sahip. Önbellek, CPU'nun beklenen fiyat noktasındaki performansı en üst düzeye çıkarmak için boyutlandırılmıştır. Önbellek genellikle kalıp boşluğunun en büyük tüketicisidir ve bu nedenle boyutu büyük bir ekonomik (ve performans) fark yaratır.
Intel'in Ivy Bridge CPU aile sayfasına bir göz atın: http://ark.intel.com/products/codename/29902/Ivy-Bridge
Üst uç Xeon 30MB önbellek ile geliyor, 12 çekirdeğe sahip ve maliyeti yaklaşık 2700 $. 3MB önbellekli (i3-3217) alt uç i3, tüm dizüstü bilgisayar için sadece 500 $ 'dır (ayrı ayrı bulamıyorum).
Xeon en üst düzey performansı sunar, ancak üretim ve test etme maliyeti daha yüksektir. İ3 çok daha ucuz ama takas önbellek en büyük parçası olan daha küçük bir kalıp boyutu.