L1 önbelleği neden L2 önbelleğinden daha hızlı?


14

Bazı CPU önbelleklerinin neden diğerlerinden daha hızlı olduğunu anlamaya çalışıyorum. Önbellek ana bellek gibi bir şeyle karşılaştırıldığında, bellek türlerinde (SRAM vs DRAM) ve konum sorunlarında (çipte bir bellek veriyolunu çaprazlamak zorunda kalırken) erişim hızlarını etkileyebilir. Ancak L1 ve L2 genellikle aynı çip üzerinde ya da en azından aynı kalıp üzerinde ve bence aynı tür bellekler. Peki neden L1 daha hızlı?


9
Çünkü bu şekilde inşa edilmiş.
Ignacio Vazquez-Abrams

Aynı RAM türünü oluşturmanın birden fazla yolu vardır. Bazı yollar, diğer yollarla oluşturulan RAM'den daha hızlı olan RAM ile sonuçlanır.
Ignacio Vazquez-Abrams


1
ilgili: önbellek boyutları hakkındaki cevabım ve SO sorusu , çok seviyeli önbelleklere sahip olmanın bazı hız / güç tüketimi dengesizlik nedenlerini de açıklıyor. Temel olarak, bir önbelleği süper hızlı hale getirmek, paralel olarak daha fazlasını yapmak için güç ve kalıp alanına mal olur ve son düzey bir önbellekte istediğiniz büyük boyutlar / ilişkilendirme ile uyumsuzdur.
Peter Cordes

Yanıtlar:


24

Hayır, aynı üretim sürecini kullanan aynı çipte olmalarına rağmen aynı tür RAM değiller.

Tüm önbellekler arasında, L1 önbelleğinin, mümkün olan en hızlı erişim süresine (en düşük gecikme süresine) sahip olması ve yeterli bir "isabet" oranı sağlamak için ne kadar kapasiteye sahip olması gerekir. Bu nedenle, daha büyük transistörler ve daha geniş metal paletler kullanılarak üretilir, alan ve hız için işlem yapar. Üst düzey önbelleklerin daha yüksek kapasitelere sahip olması gerekir, ancak daha yavaş olabilirler, bu nedenle daha sıkı paketlenmiş daha küçük transistörler kullanırlar.


3
Aradığım şey bu, teşekkürler. Farklılıklar hakkında daha fazla bilgi edinebileceğim iyi kaynaklar biliyor musunuz?
ConditionRacer

Hayır, hazırlıksız değil. Bu alan / güç / zaman değiş tokuşlarının ayrıntıları ve önbellek kapasitesi ve mimarisi ile ilgili seçimler, üreticinin süreçlerinin özel ayrıntılarına çok yakındır, bu nedenle çok az (varsa) yayınlanır. Sadece genel anlamda konuşabiliyorum.
Dave Tweed

10
L1 de daha küçüktür, yani sinyal yayılımı daha az saat döngüsü gerektirir: genellikle L1'in boyutu 1 (veya 2) saatte erişilebilen en büyük bellek olarak belirlenir.
Brian Drummond

6
Brian Drummond'un noktasına ek olarak, L1 tipik olarak veri etiketi paralel erişimini de kullanır. L2 tipik olarak ilk önce etiketlere erişir (herhangi bir isabet olursa hangi şekilde olduğunu belirler), gecikmeyi arttırır, ancak enerji tasarrufu sağlar (daha büyük boyut, daha yüksek ilişkilendirilebilirlik ve daha yüksek kaçırılma oranı göz önüne alındığında önemli). (L2 erişimi de tipik olarak etkili gecikmeyi artıran bir L1 kaçırmasının onaylanmasından sonra başlar .)
Paul A. Clayton

@BrianDrummond - tel yükü ve kapı derinliği açısından daha küçük (yorumunuzda bunun açık olduğunu düşünmüyorum).
Sean Houlihane

5

L1 genellikle kodu çözülen komutlar için bir depolama alanı olarak kullanılırken, L2 tek bir çekirdek için genel bir önbellektir. Önbellek ne kadar düşükse o kadar küçük boyuttadır ve genellikle daha hızlıdır. PC işlemcileri için kaba bir kural olarak:

L1 Önbellek: 2-3 saat döngü erişimi

L2 Önbellek: ~ 10 saat döngü erişimi

L3 Önbellek: ~ 20-30 saat çevrim erişimi

L1 önbelleğinin tasarımı, önbellek gecikmesini olabildiğince düşük tutarken isabet oranını (istenen talimat adresinin veya veri adresinin önbellekte olma olasılığı) en üst düzeye çıkarmak olmalıdır. Intel, 3 döngü gecikmeli bir L1 önbellek kullanır. L2 önbellek bir veya daha fazla L1 önbellek arasında paylaşılır ve genellikle çok, çok daha büyüktür. L1 önbellek isabet oranını en üst düzeye çıkarmak için tasarlanırken, L2 önbellek, kaçırılan cezayı en aza indirecek şekilde tasarlanmıştır (bir L1 kaçırıldığında meydana gelen gecikme). L3 önbellekleri olan yongalar için amaç yonganın tasarımına özgüdür. Intel için L3 önbellekleri ilk kez 2002 yılında 4 yollu çok işlemcili sistemlerde (Pentium 4 Xeon MP işlemciler) ortaya çıktı. Bu anlamda L3 önbellekleri çok iş parçacıklı ortamlardaki gecikmeleri büyük ölçüde azalttı ve FSB'den yük aldı. Zamanında,

Alıntı burada "Pinhedd's" yanıt kaynaklanmıştır.


1
L1 genel olarak veriler için de kullanılır, ancak L2 paylaşılırken genellikle L1 verilerinin ve L1 komutunun ayrı olduğu doğrudur: programmers.stackexchange.com/questions/44731/… ( paylaşılabilmesinin bir nedeni daha fazla yolu olmasıdır. ).
Guy Sirton

1
İşlemcilerin L1 düzeyinde ayrı talimat ve veri önbelleklerine sahip olması yaygındır. Kesinlikle daha sonra x86 ve SPARC çipleri için geçerlidir. Ve bazı L1 talimat önbellekleri kodu çözülmüş talimatları saklamaz. Pentium 4 kod çözme talimatlarını sakladı, ancak Intel normal I-önbelleklerine geri döndü, daha sonra yakın zamanda çözülmüş talimat önbelleklerini yongalarına geri ekledi.
Craig S. Anderson

3

Hızın boyutla ters orantılı olmasının birkaç nedeni vardır. Akla ilk gelen, sinyal yayılımının i ışık hızından kaynaklanan bir faktörle sınırlı olduğu iletkenlerin fiziksel hakimiyeti. Bir işlem, bellek döşemesinin ve arkasının en uzun mesafesini katetmek için bir elektrik sinyali alacağı sürece sürebilir. İlgili diğer bir neden, saat alanlarının ayrılmasıdır. Her CPU, kendi saat üretecini çalıştırır, bu da CPU'nun çoklu GHz saatlerinde çalışmasını sağlar. Seviye-1 önbellek, sistemdeki en hızlı CPU saatinde çalışır ve bu saatle senkronize edilir. Seviye-2 önbellek ise birçok CPU'ya hizmet vermek zorundadır ve farklı (daha yavaş) bir saat alanında çalışmaktadır. Sadece L2 saat daha yavaş (daha büyük kutucuk) değil, bir saat etki alanı sınırını aşmak başka bir gecikme ekler. Sonra elbette fan-out sorunları var (daha önce bahsedilen).


1

Doğal performans özelliklerinin yanı sıra, konumun da bir rolü vardır (L1 CPU'ya daha yakındır). Her programcının bellek hakkında bilmesi gerekenlere göre :

Kalıpta L2 önbellek için erişim süresinin büyük bir kısmının (muhtemelen çoğunluğunun) kablo gecikmelerinden kaynaklandığını belirtmek ilginçtir. Bu, artan önbellek boyutlarıyla daha da kötüleşebilecek fiziksel bir sınırlamadır. Yalnızca işlem daralması (örneğin, Merom için 60nm'den Intel'in serisinde Penryn için 45nm'ye gitmek) bu sayıları artırabilir.


Bu çoğunlukla önbelleklerin büyük olduğu durumlarda geçerli olduğunu düşünüyorum - Bu, tüm işlemci türleri için geçerli değildir (kablo gecikmesi önemli olsa da).
Sean Houlihane
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.