Что такое «объединение памяти»?

16

Я узнал, что в графическом процессоре есть нечто, называемое объединением памяти. Читая об этом, я не был ясно по теме. Это как-то связано с параллелизмом уровня памяти.

Я искал в Google, но не смог получить удовлетворительный ответ.

Было бы полезно, если бы кто-то дал более полное и понятное объяснение.

Сай Киран Гранди
источник
Параллелизм на уровне памяти (MLP) - это возможность выполнять несколько транзакций памяти одновременно. Во многих архитектурах это проявляется в способности выполнять операции чтения и записи одновременно, хотя также существует возможность выполнять несколько операций чтения одновременно. Редко выполнять несколько операций записи одновременно из-за риска потенциальных конфликтов (попытка записать два разных значения в одно и то же место). Обратите внимание, что это не то же самое, что операции векторизованной памяти, такие как чтение 4 отдельных, но смежных 8-битных значений в одном 32-битном чтении.
Сай Киран Гранди

Ответы:

11

«Объединение» может также относиться к объединению шаблонов доступа к памяти . В этом случае объединение используется для того, чтобы убедиться, что потоки работают одновременно, и попытаться получить доступ к памяти, которая находится поблизости. Это обычно потому что:

  • Память обычно извлекается большими блоками из оперативной памяти.
  • Некоторые процессоры будут пытаться предсказать будущие обращения к памяти и кешировать заранее, в то же время обрабатывая более старые части памяти.
  • Память кэшируется в иерархии последовательно увеличивающихся, но более медленных кэшей.

Поэтому важно создавать программы, которые могут использовать предсказуемые шаблоны памяти. Это даже более важно для многопоточной программы, чтобы запросы памяти не перепрыгивали; в противном случае блок обработки будет ожидать выполнения запросов памяти.

Диаграммы, вдохновленные введением в параллельное программирование: урок 2 Аппаратное обеспечение графического процессора и шаблоны параллельной связи :

Ниже: четыре потока, с единообразным доступом к памяти. Черный пунктирный прямоугольник представляет один запрос памяти из 4 слов.

введите описание изображения здесь

Доступ к памяти близок и может быть получен за один раз / блок (или наименьшее количество запросов).

Однако, если мы увеличим « шаг » доступа между потоками, это потребует гораздо большего доступа к памяти. Ниже: еще четыре нити, с шагом два.

4 слитые в памяти нити и 4 нити с шагом 2

Здесь вы можете видеть, что эти 4 потока требуют 2 запроса блока памяти. Чем меньше шаг, тем лучше. Чем шире шаг, тем больше запросов потенциально требуется.

Конечно, хуже, чем большой шаг памяти, является шаблон произвольного доступа к памяти. Это будет почти невозможно передать, кэшировать или прогнозировать.

Источники TikZ:

Реал Слав
источник
2
Несколько потоков могут также обращаться к одному и тому же элементу данных (не только к элементу в пределах одного и того же большего фрагмента), чем-то похожим (но более общим, чем) на операции SPLAT в архитектурах SIMD. Будучи процессорами с высокой пропускной способностью, допускающими задержку, графические процессоры могут позволить увеличить задержку доступа, если это позволяет увеличить эффективную пропускную способность.
Пол А. Клэйтон
Данная ссылка не работает.
Даниэль
3

Я думаю, что вижу два использования слова «объединение» по сети, оба связаны с памятью. Одним из них является объединение свободных выделений памяти , о чем говорится на странице википедии, связанной в вопросе.


Объединение освобожденных выделений памяти

При распределении памяти иногда диспетчер памяти может иметь ситуацию, когда есть два смежных блока памяти, которые освобождены. Объединение их сделало бы их единым освобожденным блоком памяти - это называется «объединением». Пример:

Начиная с 4 выделенных блоков:

4 выделенных блока

Позже один из них освобождается:

Теперь 1 бесплатный блок

И позже другой освобождается:

Теперь 2 смежных свободных блока

Теперь, почему есть два смежных свободных блока? Объединяя их:

Объединение освобожденных блоков, теперь 2 выделенных блока, 1 освобожденный

Объединение может произойти как можно скорее, или, например, в сборщике мусора, когда сборщик работает.

Источники TikZ:

Реал Слав
источник
Я думаю, что этот ответ не соответствует тому, что я хочу. Объединение памяти - это чтение смежных блоков памяти, как вы указали в другом ответе. Если возможно, удалите этот ответ и ссылку на вопрос, который вы редактировали
sai kiran grandhi
@saikirangrandhi Я оставлю ответ для справки. Вы можете изменить / отменить редактирование вашего вопроса, как вы хотите; Вы можете просто нажать «изменить» под вопросом.
Реал Слав