Возникают ли банковские конфликты на оборудовании без графического процессора?

В этом блоге объясняется, как конфликты банков памяти убивают производительность функции транспонирования.

Теперь я не могу не задаться вопросом: происходит ли то же самое на "нормальном" процессоре (в многопоточном контексте)? Или это специфично для CUDA/OpenCL? Или это даже не появляется в современных процессорах из-за их относительно больших размеров кэша?

1 ответ

Решение

С самых ранних процессоров векторной обработки 1960-х годов возникли банковские конфликты. Это вызвано чередованием памяти или многоканальным доступом к памяти.

Чередующийся доступ к памяти или MCMA решает проблему замедления доступа к ОЗУ путем поэтапного доступа к каждому слову памяти из разных банков или по разным каналам. Но есть побочный эффект: доступ к памяти из одного и того же банка занимает больше времени, чем доступ к памяти из соседнего банка.

Из Википедии о Cray 2 1980-х годов http://en.wikipedia.org/wiki/Cray-2

"Банки основной памяти были расположены в квадрантах для одновременного доступа, что позволяло программистам распределять свои данные по памяти для повышения параллелизма. Недостатком этого подхода является то, что стоимость установки модуля разброса / сбора в процессоре переднего плана был довольно высоким. Страйд-конфликты, соответствующие количеству банков памяти, подвергались снижению производительности (задержке), что иногда происходило в алгоритмах FFT на основе степени 2. Поскольку у Cray 2 объем памяти был намного больше, чем у Cray 1 или X-MP, эту проблему легко исправить, добавив дополнительный неиспользуемый элемент в массив, чтобы распределить работу "

Другие вопросы по тегам