Bilgisayarda tam olarak L1, L2 ve L3 Önbellekleri nerede bulunur?


32

Bilgisayarda tam olarak L1, L2 ve L3 Önbellekleri nerede bulunur?

Biliyorum, Ana Bellek yerine Önbellekten VERİ ve TALİMATI seçerek performansı artırmak için Önbellek kullanıyoruz.

Aşağıdaki benim sorularım

  1. Tam olarak L1 Önbellek nerede bulunur? . CPU çipinde mi?
  2. Tam olarak L2 Önbellek Bulunan Nerede?

  3. L3 Önbellek tam olarak nerede bulunur? Ana tahtada mı?

Sanırım en yeni SMP işlemciler 3 seviyeli önbellek kullanıyorlar, bu yüzden Cache seviye hiyerarşisini ve mimarisini anlamak istiyorum.


1
Kesin hiyerarşi, farklı işlemciler arasında değişir. Kendi makine üzerinde önbellek hiyerarşisi öğrenmek için, Sysinternal en CoreInfo.exe programını (kullanabilirsiniz technet.microsoft.com/en-us/sysinternals/cc835722.aspx )

2
Ayrıca, önbellek büyüdükçe (L3> L2> 1) çekirdeğin kendisinden uzaklaştıkça (L3'e erişim gecikmesi L1'den daha yüksek olur).

Yanıtlar:


48

Şununla başlayalım:

Sanırım en yeni SMP işlemciler 3 seviyeli önbellek kullanıyorlar, bu yüzden Cache seviye hiyerarşisini ve mimarisini anlamak istiyorum.

Önbellekleri anlamak için birkaç şeyi bilmeniz gerekir:

Bir CPU kaydına sahiptir. Bunun içindeki değerler doğrudan kullanılabilir. Hiçbir şey daha hızlı değil.

Ancak bir yonga sonsuz kayıt ekleyemiyoruz. Bu şeyler yer kaplar. Çipi büyütürsek daha pahalı hale gelir. Bunun bir kısmı daha büyük bir talaşa (daha fazla silikon) ihtiyacımız olduğu, fakat aynı zamanda sorunlu talaşların sayısının artmasıdır.

(Şekil 500 cm olan bir hayali gofret 2 . Ondan, her çip 50cm 10 fiş kesilmiş 2 . Bunlardan biri kırılır. Boyutunda bunu atmak ve bunu 9 çalışma fiş sol am. Şimdi aynı gofret ve kesilmiş almak ondan küçük birer adet olmak üzere 100 fiş, onlardan biri küçükse, eğer biri kırılırsa, kırılmış fişi atarım ve 99 iş fişi ile kalırdım, aksi halde sahip olacağım zararın bir kısmıdır. cips daha yüksek fiyatlar sormam gerekecekti.

Bu küçük, uygun fiyatlı cipsler istememizin nedenlerinden biri.

Ancak önbellek CPU'ya ne kadar yakınsa, o kadar hızlı erişilebilir.

Bunu açıklamak da kolaydır; Elektrik sinyalleri ışık hızına yakın hareket eder. Bu hızlı ama yine de sınırlı bir hız. Modern CPU GHz saatler ile çalışır. Bu da hızlı. 4 GHz'lik bir CPU alırsam, bir elektrik sinyali saat tik başına yaklaşık 7,5 cm ilerleyebilir. Düz çizgide 7.5 cm. (Cipsler düz bağlantılardan başka bir şey değildir). Uygulamada çiplerin istenen verileri sunması ve sinyalin geri dönmesi için hiçbir zaman izin vermediğinden bu 7.5 cm'den daha azına ihtiyacınız olacak.

Alt satırda, önbelleği olabildiğince fiziksel olarak istiyoruz. Bu büyük cips demektir.

Bu ikisinin dengeli olması gerekir (performansa karşılık maliyet).

Bilgisayarda L1, L2 ve L3 Önbellekleri tam olarak nerededir?

Yalnızca PC stili donanım olarak varsayılırsa (performans ile maliyet dengesi dahil ana bilgisayarlar oldukça farklıdır);

IBM XT
Orijinal 4,77Mhz one: Önbellek yok. CPU belleğe doğrudan erişir. Bellekten bir okuma bu modeli takip eder:

  • CPU okumak istediği adresi hafıza yoluna yerleştirir ve okuma bayrağını verir.
  • Hafıza, verileri veri yoluna yerleştirir.
  • CPU verileri veri yolundan dahili kayıt defterine kopyalar.

80286 (1982)
Hala önbellek yok. Bellek erişimi, düşük hızlı sürümler (6Mhz) için büyük bir sorun değildi, ancak daha hızlı model 20Mhz'ye kadar çıktı ve belleğe erişirken ertelemek için sık sık gerekli oldu.

Daha sonra şöyle bir senaryo elde edersiniz:

  • CPU okumak istediği adresi hafıza yoluna yerleştirir ve okuma bayrağını verir.
  • Hafıza, verileri veri yoluna koymaya başlar. CPU bekler.
  • Hafıza veri almayı tamamladı ve şimdi veri yolunda kararlıdır.
  • CPU verileri veri yolundan dahili kayıt defterine kopyalar.

Bu, hafızayı beklemek için harcanan ilave bir adımdır. Kolayca 12 adım olabilen modern bir sistemde, bu yüzden önbelleğe sahibiz .

80386 : (1985)
İşlemciler daha hızlı hale geliyor. Her ikisi de saat başına ve daha yüksek saat hızlarında çalıştırarak.
RAM daha hızlı, ancak CPU'lar kadar hızlı değil.
Sonuç olarak daha fazla bekleme durumuna ihtiyaç vardır. Bazı anakartlar önbellek ekleyerek bu geçici bir çözüm (yani 1 olur st anakart üzerinde seviye önbellek).

Bellekten bir okuma şimdi veri zaten önbellekte olup olmadığını kontrol ile başlar. Eğer öyleyse, çok daha hızlı bir önbellekten okunur. 80286 ile açıklanan prosedürün aynısı değilse

80486 : (1989)
Bu, CPU üzerinde bir miktar önbelleğe sahip olan bu neslin ilk işlemcisi.
Veri ve talimatlar için kullanıldığı anlamına gelen 8KB birleşik önbellekdir.

Bu süre zarfında ana kart üzerine 256 KB'lik hızlı statik bellek koymak, 2. seviye önbellek olarak yaygınlaşıyor . Böylece 1 st CPU üzerindeki seviye önbellek, 2 nd anakart üzerinde seviye önbelleği.

CPU konumlu ve 2. seviye önbellek işaretli 486 anakart

80586 (1993)
586 veya Pentium-1 bölünmüş seviye 1 önbellek kullanıyor. Veri ve talimatlar için her biri 8 KB. Önbellek, veri ve talimat önbelleklerinin kendi kullanımları için ayrı ayrı ayarlanabilmesi için bölünmüştür. Hala küçük ama çok hızlı 1 var st CPU yakın önbelleği ve daha büyük ama daha yavaş 2 nd anakart üzerinde önbelleği. (Daha büyük bir fiziksel mesafede).

Aynı pentium 1 bölgesinde Intel, Pentium Pro'yu ('80686') üretti. Modele bağlı olarak, bu yonga yerleşik önbellekte 256 KB, 512 KB veya 1 MB değerinde. Ayrıca aşağıdaki resimle açıklanması kolay olan daha pahalıydı.

Pentium Pro CPU'nun resmi, 256KB önbellek modeli

Çip içindeki boşluğun yarısının önbellek tarafından kullanıldığına dikkat edin. Ve bu 256KB modeli içindir. Daha fazla önbellek teknik olarak mümkündü ve bazı modellerde 512KB ve 1 MB önbellek üretildi. Bunlar için pazar fiyatı yüksekti.

Ayrıca bu çipin iki kalıp içerdiğine dikkat edin. Gerçek CPU ve 1 Tek st önbelleği ve 256KB 2 ile ikinci bir kalıba nd cache.

Pentium-2

Pentium 2, bir pentium pro çekirdeğidir. Ekonomik nedenlerden dolayı CPU'da hiçbir 2. önbellek yoktur . Bunun yerine aa CPU bize CPU (ve 1 için ayrı cips ile bir PCB ne satılır st cache) ve 2 nd cache.

Teknoloji ilerledikçe ve daha küçük bileşenlere sahip cipsler oluşturmaya başladığımızda, 2. önbelleği asıl CPU kalıbına geri koymak mali olarak mümkün olmaktadır . Ancak hala bir bölünme var. Çok hızlı 1. st önbellek CPU'ya takıldı. Biri 1 ile st işlemci çekirdek başına önbellek ve daha büyük ama daha az hızlı 2 nd çekirdek yanındaki cache.

Pentium 2 'CPU' resmi (kapaklı ve kapaksız)

Pentium-3
Pentium-4
Bu, pentium-3 veya pentium-4 için değişmiyor.

Bu süre zarfında CPU'ları ne kadar hızlı satabileceğimize dair pratik bir sınıra ulaştık. Bir 8086 veya 80286'nın soğutmaya ihtiyacı yoktu. 3.0GHz'de çalışan bir pentium-4, çok fazla ısı üretiyor ve o kadar çok güç kullanıyor ki, iki ayrı CPU'yu anakart üzerine tek bir hızlı işlemci yerine koymak daha pratik hale geliyor.

(İki adet 2,0 GHz CPU aynı tek 3,0 GHz CPU'dan daha az güç kullanır, ancak daha fazla iş yapabilir).

Bu üç şekilde çözülebilir:

  1. İşlemcileri daha verimli hale getirin, böylece aynı hızda daha fazla çalışırlar.
  2. Birden fazla CPU kullanın
  3. Aynı 'çipte' birden fazla CPU kullanın.

1) Devam eden bir süreçtir. Yeni değil ve durmayacak.

2) Erken yapıldı (örneğin, ikili Pentium-1 anakartları ve NX yonga seti ile). Şimdiye kadar bu daha hızlı bir bilgisayar oluşturmak için tek seçenek oldu.

3) Birden fazla 'cpu çekirdeğinin' tek bir yonga haline getirildiği işlemcileri gerektirir. (Daha sonra karışıklığı artırmak için bu CPU'yu çift çekirdekli bir CPU olarak adlandırdık. Teşekkür ederim pazarlama :))

Bu günlerde, karışıklığı önlemek için sadece CPU'yu “çekirdek” olarak adlandırıyoruz.

Artık aynı yonga üzerinde temel olarak iki pentium-4 çekirdeği olan pentium-D (ikilisi) gibi fişler alıyorsunuz.

Erken pentium-D (2 P4 çekirdek)

Eski pentium-Pro'nun resmini hatırlıyor musunuz? Büyük önbellek boyutu ile?
Bkz iki Resimdeki geniş alanları?

Her iki CPU çekirdeği arasında 2. önbelleği paylaşabileceğimiz ortaya çıktı . Hız biraz düşecek, ancak 512KiB paylaşılan 2. önbellek, yarı boyutta iki bağımsız 2. seviye önbellek eklemekten daha hızlı .

Bu, sorunuz için önemlidir.

Bu, bir CPU çekirdeğinden bir şey okuduğunuzda ve daha sonra bir önbellek isabetiyle aynı önbelleği paylaşan başka bir çekirdekten okumaya çalışacağınız anlamına gelir. Belleğe erişilmesine gerek kalmayacak.

Programlar CPU'lar arasında değiştiğinden, yüke, çekirdeğin sayısına ve zamanlayıcının sayısına bağlı olarak, aynı verileri kullanan programları aynı CPU'ya (önbellek vuruşları L1 ve daha düşük isabet alır) veya aynı CPU'lara sabitleyerek ek performans elde edebilirsiniz. L2 önbelleğini paylaşır (ve böylece L1’de özlemler alır, ancak L2 önbellek okur)

Böylece daha sonraki modellerde paylaşılan seviye 2 önbelleklerini göreceksiniz.

Açık Core2 işlemcinin görüntüsü

Modern CPU'lar için programlama yapıyorsanız iki seçeneğiniz vardır:

  1. Rahatsız etmeyin. İşletim sistemi işleri planlayabilmelidir. Zamanlayıcının bilgisayarın performansı üzerinde büyük etkisi vardır ve insanlar bunu optimize etmek için çok çaba sarf etmişlerdir. Garip bir şey yapmazsanız veya belirli bir PC modeli için optimize ediyorsanız, varsayılan zamanlayıcı ile daha iyi durumda olursunuz.
  2. Her son performansa ihtiyaç duyuyorsanız ve daha hızlı donanım bir seçenek değilse, aynı verilere aynı çekirdekte veya bir çekirdeğin üzerinde paylaşılan önbelleğe erişen bir çekirdekte bırakmayı deneyin.


Henüz L3 önbellekten bahsetmediğimin farkındayım, ancak farklı değiller. L3 önbellek aynı şekilde çalışır. L2'den daha büyük, L2'den daha yavaş. Ve genellikle çekirdekler arasında paylaşılır. Eğer varsa, L2 önbellekten çok daha büyükse (başka bir anlamı yoktur) ve çoğu zaman tüm çekirdeklerle paylaşılır.

modernCPUwithL3.png


Ne kadar güzel bir yazı!
lukas.pukenis

"512 MB paylaşılan 2. önbellek" diye düşünüyorum 512 KB.
lukas.pukenis

Böyle mükemmel bir cevap! adam paylaştığınız için teşekkür ederiz
samsamara 22:16

14

Bu önbellekler işlemcinin içindeler. Bazıları çekirdekler arasında paylaşılır, bazıları bireyseldir, uygulamaya bağlıdır. Ancak hepsi çipte bulunur. Bazı ayrıntılar: burada alınan Intel Intel® Core ™ i7 İşlemci :

  • Her çekirdek için bir 32 KB komut ve 32 KB veri birinci seviye önbellek (L1)
  • Her bir çekirdek için 256 KB paylaşımlı komut / veri ikinci seviye önbellek (L2)
  • Tüm çekirdekler arasında paylaşılan 8 MB paylaşılan komut / veri son seviye önbellek (L3)

İşlemci yongasının fotoğrafı (üzgünüm, kesin modeli bilmiyorum). Önbellek yonga üzerinde önemli bir alana sahip olduğunu görebilirsiniz:

alt metin


1
Çip ile silikon ölmeyi kastediyorsanız, son önbellek seviyesi çip dışı olabilir. Örneğin, IBM'in zEC12'si ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ), altı işlemci yongası ve L4 önbelleği olan iki paylaşılan önbellek yongası içeren bir çok çipli modül kullanır. Intel'in Crystal Well'si ayrıca L4 çipsiz önbellek sağlar (ayrıca eDRAM kullanarak).
Paul A. Clayton

5

Önbellek, en hızlı erişim için neredeyse her zaman çiptedir. Dört çekirdekli Intel CPU ölümü L3 önbellek vurgulanmış olarak gösteren güzel bir şema. Bir CPU kalıbı gibi resimlere baktığınızda, büyük tek biçimli alanlar tipik olarak önbellek olarak kullanılan yonga belleğidir.

Nehalem Die (http://www.legitreviews.com/article/824/1/)


5

Bu günlerde, önbelleklerin hepsi CPU ölüme geçiyor. Bazen anakartta ya da CPU ek kartında bulunurlardı, ancak talaş önbelleklerini kullanan mevcut işlemciler olduğunu sanmıyorum.


1
Bu gün kısmı için +1 . Eski günlerde farklıydı. (örn. Cyrix / Pentium-1 zamanında anakartta L2 önbellek)
Hennes

0

L3 hakkında emin değilim, ancak L1 / L2 her zaman CPU'da bulunur. Hiyerarşi açısından, temel olarak, L1 genellikle komut önbelleğidir, L2 ve L3 veri önbellekleridir.


L1 paylaşılan önbellek (talimat ve veri önbelleği) olabilir. Ayrıca L1 veri ve L1 komut önbelleğine sahip CPU'lar da vardır. Ve L2 önbellek her zaman CPU'da bulunmaz (L1'in bile CPU'da olması gerekmez, ama sadece durumun olduğu bir bilgisayarı hatırlarım).
Hennes

0

L1 CPU çipinde, L2 işlemci ve ana bellek arasında bulunur, ancak bazı sistemlerde L2'nin CPU çipinde bulunduğunu, diğer bazı sistemlerde ise L2'nin ana kartta bulunduğunu ve L3'ün sürekli olduğunu bilmek için bir nokta vardır. Ana kart çipinde bulunur.

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.