Önbellek satırı ile bellek sayfası arasındaki ilişki


9
  1. Doğruysam, ana bellekteki bir sayfa, ana bellek ile sabit disk gibi harici bir depolama aygıtı arasında veri aktarımı için en küçük birim birimidir. Ana belleğin önbellek satırı, ana bellek ve işlemci önbellekleri arasında veri aktarımı için en küçük birimdir.

  2. Bir sayfa boyutunun her zaman veya en iyi şekilde önbellek satır boyutunun doğal olup olmadığını merak ediyorum. Önbellek satır boyutu 64 bayt ve bellek sayfa boyutu 4KB ise, her sayfada 4KB / 64 bayt == 64 önbellek satırı bulunur.

  3. Bir sayfa ve önbellek satırı hem bellekteki sabit nesneleri mi? Yoksa sadece belirli bir boyutta, belleğin herhangi bir yerinde başlayıp yüzebilen herhangi bir bitişik blok mu?

  4. Her zaman bir önbellek satırı birden fazla sayfaya yayılamaz mı, yani önbellek satırının bir kısmı bir sayfada ve önbellek satırının diğer kısmı başka bir sayfada mıdır?

Teşekkürler.


2
Sorularınızın cevapları büyük ölçüde CPU mimarisine bağlıdır.
TMN

Yanıtlar:


8
  1. Önbellek hattı, fiziksel belleğe dokunabileceğiniz en küçük birimdir. 1 bayt okuduğunuzda / yazdığınızda, onu içeren tam bir önbellek satırı cpu önbelleğine okunur ve geri yazılır. Yazmak için önbelleği atlayan talimatların bile (geçici akış talimatları) önbellek satır boyutlarında yazıldığını unutmayın. CPU'ya bağlı olarak, önbellek hattı boyutları genellikle 32/64/128 bayttır. Bellek sayfaları diske yazıldığında, bütün olarak yazılır. Bu, bellek basıncı çok yüksek olduğunda veya hazırda bekletme işlemleriyle (ve muhtemelen diğer kullanımlar için) gerçekleşir. Ayrıca gerektiğinde tekrar okunacaklardır. Bunun nedeni, çekirdeğin sayfanın kısmen mi yoksa tamamen mi kullanıldığını bilmesinin bir yolu olmamasıdır. Diğer harici depolama okuma / yazma işlemleri keyfi bir ayrıntı düzeyine sahip olabilir (örneğin: fwrite (..)).

  2. Sayfa boyutu CPU / GPU'ya bağlıdır. Çoğu CPU için, sayfa boyutları en az 4KB olacaktır ve genellikle 4KB / 64KB / 2MB / 4MB / 16MB / 1GB'lık bir karışımı destekler (hepsi aynı anda desteklenmez). Boyut her zaman iki kişilik bir güç olacaktır.

  3. Hem sayfa hem de önbellek çizgisi bitişiktir ve ilgili boyutlarına göre hizalanmaları gerekir. 64 bayt önbellek satırı her zaman 64 bayt hizalanır ve 2 MB sayfa her zaman 2 MB hizalanır.

  4. # 3 nedeniyle, sayfa boyutları her zaman bir önbellek satırından daha büyük olacağından ve her zaman bir önbellek satırının katlarından biri olacağından, bir önbellek satırı hiçbir zaman 2 sayfaya yayılamaz.

Bellekle ilgili zengin bilgi için bu mükemmel kaynağa bakın: http://lwn.net/Articles/250967/

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.