Я узнал, что в графическом процессоре есть нечто, называемое объединением памяти. Читая об этом, я не был ясно по теме. Это как-то связано с параллелизмом уровня памяти.
Я искал в Google, но не смог получить удовлетворительный ответ.
Было бы полезно, если бы кто-то дал более полное и понятное объяснение.
terminology
reference-request
computer-architecture
memory-management
Сай Киран Гранди
источник
источник
Ответы:
«Объединение» может также относиться к объединению шаблонов доступа к памяти . В этом случае объединение используется для того, чтобы убедиться, что потоки работают одновременно, и попытаться получить доступ к памяти, которая находится поблизости. Это обычно потому что:
Поэтому важно создавать программы, которые могут использовать предсказуемые шаблоны памяти. Это даже более важно для многопоточной программы, чтобы запросы памяти не перепрыгивали; в противном случае блок обработки будет ожидать выполнения запросов памяти.
Диаграммы, вдохновленные введением в параллельное программирование: урок 2 Аппаратное обеспечение графического процессора и шаблоны параллельной связи :
Ниже: четыре потока, с единообразным доступом к памяти. Черный пунктирный прямоугольник представляет один запрос памяти из 4 слов.
Доступ к памяти близок и может быть получен за один раз / блок (или наименьшее количество запросов).
Однако, если мы увеличим « шаг » доступа между потоками, это потребует гораздо большего доступа к памяти. Ниже: еще четыре нити, с шагом два.
Здесь вы можете видеть, что эти 4 потока требуют 2 запроса блока памяти. Чем меньше шаг, тем лучше. Чем шире шаг, тем больше запросов потенциально требуется.
Конечно, хуже, чем большой шаг памяти, является шаблон произвольного доступа к памяти. Это будет почти невозможно передать, кэшировать или прогнозировать.
Источники TikZ:
источник
Я думаю, что вижу два использования слова «объединение» по сети, оба связаны с памятью. Одним из них является объединение свободных выделений памяти , о чем говорится на странице википедии, связанной в вопросе.
Объединение освобожденных выделений памяти
При распределении памяти иногда диспетчер памяти может иметь ситуацию, когда есть два смежных блока памяти, которые освобождены. Объединение их сделало бы их единым освобожденным блоком памяти - это называется «объединением». Пример:
Начиная с 4 выделенных блоков:
Позже один из них освобождается:
И позже другой освобождается:
Теперь, почему есть два смежных свободных блока? Объединяя их:
Объединение может произойти как можно скорее, или, например, в сборщике мусора, когда сборщик работает.
Источники TikZ:
источник