Кэш L2 в Кеплере

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

Ниже изображен технический документ NVIDIA.

Picture is from NVIDIA whitepaper

Ответ 1

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

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

enter image description here