Apa itu "penggabungan memori"?

16

Saya jadi tahu bahwa unit pemrosesan grafis memiliki sesuatu yang disebut memory coalescing. Saat membacanya saya tidak jelas tentang topiknya. Apakah ini ada hubungannya dengan Memory Level Parallelism.

Saya telah mencari di Google tetapi tidak dapat memperoleh jawaban yang memuaskan.

Akan sangat membantu jika seseorang memberikan penjelasan yang lebih komprehensif, mudah dipahami.

sai kiran grandhi
sumber
Memory-Level Parallelism (MLP) adalah kemampuan untuk melakukan beberapa transaksi memori sekaligus. Dalam banyak arsitektur, ini memanifestasikan dirinya sebagai kemampuan untuk melakukan operasi baca dan tulis sekaligus, meskipun itu juga umumnya ada sebagai mampu melakukan banyak membaca sekaligus. Jarang melakukan beberapa operasi tulis sekaligus, karena risiko potensi konflik (mencoba menulis dua nilai berbeda ke lokasi yang sama). Perhatikan bahwa ini tidak sama dengan operasi memori yang di-vektor, seperti membaca 4 nilai 8-bit yang terpisah tetapi bersebelahan dalam pembacaan 32-bit tunggal.
sai kiran grandhi

Jawaban:

11

"Penggabungan" juga bisa merujuk pada penggabungan pola akses memori . Dalam penggunaan ini, penggabungan digunakan untuk memastikan bahwa utas berjalan secara bersamaan, cobalah untuk mengakses memori yang ada di dekatnya. Ini biasanya karena:

  • Memori biasanya diambil dalam blok besar dari RAM.
  • Beberapa unit pemrosesan akan mencoba untuk memprediksi akses memori dan cache yang akan datang, sementara masih memproses bagian memori yang lebih lama.
  • Memori di-cache dalam hierarki cache yang lebih besar namun lebih lambat.

Oleh karena itu, membuat program yang dapat menggunakan pola memori yang dapat diprediksi sangat penting. Ini bahkan lebih penting dengan program berulir, sehingga permintaan memori tidak melompati semuanya; jika tidak, unit pemrosesan akan menunggu permintaan memori dipenuhi.

Diagram yang terinspirasi oleh Pengantar Pemrograman Paralel: Pelajaran 2 Perangkat Keras GPU dan Pola Komunikasi Paralel :

Bawah: Empat utas, dengan akses memori yang seragam. Kotak hitam putus-putus mewakili permintaan memori 4 kata tunggal.

masukkan deskripsi gambar di sini

Akses memori dekat, dan dapat diambil dalam satu go / blok (atau jumlah permintaan paling sedikit).

Namun, jika kita meningkatkan " langkah " akses antara utas, itu akan membutuhkan lebih banyak akses memori. Bawah: empat utas lagi, dengan dua langkah.

4 memory coalesced threads, dan 4 thread dengan langkah 2

Di sini Anda dapat melihat bahwa 4 utas ini membutuhkan 2 permintaan blok memori. Semakin kecil langkah semakin baik. Semakin lebar langkahnya, semakin banyak permintaan yang berpotensi diperlukan.

Tentu saja, lebih buruk daripada langkah memori besar adalah pola akses memori acak. Ini hampir tidak mungkin untuk disalurkan, disimpan, atau diprediksi.

Sumber TikZ:

Realz Slaw
sumber
2
Beberapa utas juga dapat mengakses item data yang sama (bukan hanya elemen dalam bongkahan besar yang sama), agak mirip dengan (tetapi lebih umum daripada) operasi SPLAT dalam arsitektur SIMD. Sebagai prosesor throughput yang toleran terhadap latensi, GPU mampu meningkatkan latensi akses bila memungkinkan peningkatan bandwidth efektif.
Paul A. Clayton
Tautan yang diberikan rusak.
Daniel Soutar
3

Saya rasa saya melihat dua penggunaan kata "penggabungan" di internet, keduanya berkaitan dengan memori. Salah satunya adalah penggabungan alokasi memori yang dibebaskan , yang disebut dalam halaman wikipedia yang tertaut dalam pertanyaan.


Menggabungkan alokasi memori yang dibebaskan

Saat mengalokasikan memori, kadang-kadang manajer memori dapat memiliki situasi di mana ada dua blok memori yang berdekatan yang dibebaskan. Menggabungkan ini akan membuat mereka satu blok memori yang dibebaskan - ini disebut "penggabungan". Contoh:

Dimulai dengan 4 blok yang dialokasikan:

4 blok yang dialokasikan

Kemudian, salah satu dari mereka dibebaskan:

Sekarang 1 blok gratis

Dan kemudian yang lain dibebaskan:

Sekarang 2 blok gratis yang berdekatan

Sekarang, mengapa memiliki dua blok gratis yang berdekatan? Menggabungkan mereka:

Menggabungkan blok yang dibebaskan, sekarang 2 blok yang dialokasikan, 1 dibebaskan

Penggabungan dapat terjadi sesegera mungkin, atau, misalnya, di pengumpul sampah, saat pengumpul berjalan.

Sumber TikZ:

Realz Slaw
sumber
Saya pikir jawaban ini tidak sesuai dengan yang saya inginkan. Memory coalescing adalah membaca blok memori yang berdekatan seperti yang Anda berikan dalam jawaban lain. Jika memungkinkan silakan hapus jawaban ini dan tautan yang Anda edit
sai kiran grandhi
@saikirangrandhi saya akan menyimpan jawaban untuk referensi. Anda dapat merevisi / membatalkan hasil edit sesuai pertanyaan yang Anda inginkan; Anda cukup menekan "edit" di bawah pertanyaan.
Realz Slaw