2013-10-28 2 views
10

Как работает кеш L2 в графических процессорах с архитектурой Кеплера с точки зрения локальности ссылок? Например, если поток обращается к адресу в глобальной памяти, если предположить, что значение этого адреса отсутствует в кэше L2, как кэшируется значение? Это временное? Или другие близкие значения этого адреса, которые были добавлены в кэш L2 (пространственный)?Кэш L2 в Kepler

Ниже приведено изображение от газеты NVIDIA.

Picture is from NVIDIA whitepaper

+1

кэш L2 был введен с вычислительной способностью 2,0 и выше, и продолжает поддерживаться на архитектуре Kepler. Используемая политика кэширования - это LRU (наименее недавно использованная), основной целью которой было избежать узкого места в пропускной способности глобальной памяти. Я прочитал это из книги «Cuda Application design and development». Не уверен, что это ответит на ваш вопрос. –

+3

Кэш L1 имеет размер кеширования 128 байт. Кэш L2 имеет размер кэша 32 байта. Таким образом, промах L2 вызывает 32-байтовую нагрузку. Kepler обычно не поддерживает L1 для обычных глобальных нагрузок. –

ответ

10

кэш L2 Унифицированных был введен с вычислительной способностью 2,0 и выше, и продолжает поддерживаться на архитектуре Kepler. Используемая политика кэширования - это LRU (наименее недавно использованная), основной целью которой было избежать узкого места в пропускной способности глобальной памяти. Приложение GPU может отображать оба типа местоположения (временные и пространственные).

Всякий раз, когда есть попытка прочитать определенную память, он смотрит в кеш L1 и L2, если не найден, тогда он будет загружать 128 байт из строки кэша. Это режим "по умолчанию". То же самое можно понять из приведенной ниже диаграммы о том, почему шаблон с 128-битным доступом дает хороший результат.

enter image description here

+2

Первый абзац вышеуказанного сообщения отвечает на вопрос. Что касается второго абзаца этого ответа, я думаю, что это верно только тогда, когда (в режиме по умолчанию) архитектура устройства Fermi. Как отметил в комментариях @Robert Crovella в комментариях, в Kepler ошибка кэша L2 приводит к 32-байтовой нагрузке. Кроме того, я думаю, что диаграмма вводит в заблуждение. Когда SM недоиспользуется низким количеством потоков, более широкие запросы глобальной памяти могут насыщать глобальную пропускную способность памяти. Когда SM становится все более/полностью занятым большим количеством потоков, пропускная способность глобальной памяти может быть насыщена даже с 4-байтовыми нагрузками. – Farzad

Смежные вопросы