“Bellek birleştirme” nedir?


16

Grafik işleme biriminin bellek birleştirme olarak adlandırılan bir şeyi olduğunu öğrendim. Üzerine okuduğumda konuyla ilgili net değildim. Bellek Düzeyi Paralelliğiyle ilgili herhangi bir yol var mı?

Google'da arama yaptım ancak tatmin edici bir cevap alamadım.

Birisi daha kapsamlı, anlaşılması kolay bir açıklama yaparsa yararlı olur.


Bellek Düzeyi Paralellik (MLP), aynı anda birden çok bellek işlemi gerçekleştirme yeteneğidir. Birçok mimaride bu, aynı anda hem bir okuma hem de yazma işlemi gerçekleştirme yeteneği olarak kendini gösterir, ancak aynı anda birden fazla okuma gerçekleştirebildiği için yaygın olarak mevcuttur. Potansiyel çatışma riski nedeniyle aynı anda birden çok yazma işlemi yapmak nadirdir (aynı konuma iki farklı değer yazmaya çalışarak). Bunun tek bir 32 bitlik okumada 4 ayrı ancak bitişik 8 bitlik değerlerin okunması gibi vektörize bellek işlemleriyle aynı olmadığına dikkat edin.
sai kiran grandhi

Yanıtlar:


11

"Birleştirme" aynı zamanda birleştirme bellek erişim modellerini de ifade edebilir . Bu kullanımda, birleştirme iş parçacıklarının aynı anda çalıştığından emin olmak için kullanılır, yakınlardaki belleğe erişmeye çalışın. Bunun nedeni genellikle:

  • Bellek genellikle RAM'den büyük bloklar halinde alınır.
  • Bazı işlem birimleri gelecekteki bellek erişimlerini tahmin etmeye ve önbelleğe devam ederken, daha eski bellek parçalarını işlemeye çalışacaktır.
  • Bellek, ardışık olarak daha büyük ama daha yavaş önbellekler hiyerarşisinde önbelleğe alınır.

Bu nedenle, öngörülebilir bellek düzenlerini kullanabilen programlar yapmak önemlidir. İş parçacığı programı ile daha da önemlidir, böylece bellek istekleri her yere atlamaz; aksi takdirde işlem birimi bellek isteklerinin yerine getirilmesini bekleyecektir.

Paralel Programlamaya Giriş'ten ilham alan diyagramlar : Ders 2 GPU Donanımı ve Paralel İletişim Kalıpları :

Altta: Düzgün bellek erişimi olan dört iş parçacığı. Siyah kesikli dikdörtgen, tek bir 4 kelimelik bellek isteğini temsil eder.

resim açıklamasını buraya girin

Bellek erişimleri yakındır ve bir git / engelle (veya en az sayıda istekte) alınabilir.

Ancak, iş parçacıkları arasındaki erişimin " adımını " artırırsak, daha fazla bellek erişimi gerektirir. Aşağıda: iki adımda dört iplik daha.

4 bellek birleştirilmiş iplikler ve 2 adımlı bir adım

Burada bu 4 iş parçacığının 2 bellek bloğu isteği gerektirdiğini görebilirsiniz. Adım ne kadar küçükse o kadar iyidir. Adım ne kadar geniş olursa, potansiyel olarak o kadar fazla talep gerekir.

Tabii ki, büyük bir bellek adımından daha kötüsü rastgele bir bellek erişim paternidir. Bunlar boru hattı, önbellek veya tahmin etmek neredeyse imkansız olacaktır.

TikZ kaynakları:


2
Birden çok iş parçacığı aynı zamanda SIMD mimarilerindeki SPLAT işlemlerine benzeyen (ancak daha genel olan) aynı veri öğesine (yalnızca aynı büyük yığın içindeki bir öğeye değil) erişebilir. Gecikmeye toleranslı işlemciler olarak GPU'lar, etkin bant genişliğinin artırılmasına izin verdiğinde erişim gecikmesini artırabilir.
Paul A. Clayton

Verilen bağlantı koptu.
Daniel Soutar

3

Ben net etrafında "birleşiyor" kelimesinin iki kullanımı, her ikisi de bellek ile ilgili olduğunu düşünüyorum düşünüyorum. Biri, serbest hafıza tahsislerini birleştirmektir , bu da soruya bağlı wikipedia sayfasında atıfta bulunulan şeydir.


Serbest bellek ayırmalarını birleştirme

Bellek tahsis ederken, bazen bellek yöneticisinin iki bitişik bellek bloğunun serbest bırakıldığı bir durum olabilir. Bunları birleştirmek onları tek bir serbest hafıza bloğu haline getirir - buna "birleştirme" denir. Misal:

4 tahsisli bloktan başlayarak:

4 tahsis edilmiş blok

Daha sonra bunlardan biri serbest bırakıldı:

Şimdi 1 ücretsiz blok

Ve sonra bir başkası serbest bırakıldı:

Şimdi 2 bitişik ücretsiz blok

Şimdi, neden iki bitişik serbest blok var? Bunları birleştirmek:

Serbest blokları birleştirmek, şimdi 2 tahsis edilmiş blok, 1 serbest bırakmak

Birleştirme mümkün olan en kısa sürede veya örneğin bir çöp toplayıcıda, toplayıcı çalışırken gerçekleşebilir.

TikZ kaynakları:


Bence bu cevap istediğim şeye uymuyor. Bellek birleştirme, diğer yanıtta belirttiğiniz gibi bitişik bellek bloklarını okuyor. Mümkünse lütfen bu yanıtı ve düzenlediğiniz söz konusu bağlantıyı kaldırın
sai kiran grandhi

@saikirangrandhi Cevabı referans olarak saklayacağım. Düzenlemeyi istediğiniz gibi sorunuzda revize edebilir / geri alabilirsiniz; sorunun altındaki "düzenle" ye basmanız yeterlidir.
Realz Lahana Salatası
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.