> > > > NVIDIA пояснила отличия Maxwell и Kepler

NVIDIA пояснила отличия Maxwell и Kepler

Опубликовано:

nvidia 2013NVIDIA для новой архитектуры "Maxwell" взяла в качестве основы "Kepler" и доработала её в нескольких областях. Но пока что NVIDIA воздерживалась от пояснения деталей, ограничившись набросками особенностей новой архитектуры. Но в своем блоге NVIDIA всё же решила описать основные изменения в новой архитектуре, в том числе опубликовав и ряд интересных деталей.

Но перед тем, как мы к ним перейдём, позвольте напомнить уже известную информацию: вместе с архитектурой "Kepler" были представлены мультипроцессоры SMX на 192 потоковых процессора (ядра CUDA), которые были перепланированы. Дело в том, что управляющая логика для 192 потоковых процессоров получалась слишком сложной. В архитектуре "Maxwell" потоковые мультипроцессоры SMX были переименованы в SMM (Maxwell streaming multiprocessor), теперь они разделяются на четыре блока по 32 потоковых процессора. В общей сложности кластер SMM теперь содержит 128 потоковых процессоров. Менее сложная логика управления обеспечивает более эффективное распределение задач по ядрам CUDA. NVIDIA указывает, что сами по себе шейдеры теперь будут работать до 35 процентов быстрее по сравнению с архитектурой "Kepler". Площадь чипа увеличилась на 25 процентов со 118 мм² до 148 мм². В то же время число транзисторов увеличилось с 1,3 до 1,87 млрд., что соответствует приросту на 49 процентов. Причина кроется в изменении компоновки чипа. В полной версии чип будет содержать до 66 процентов больше потоковых процессоров.

Kepler по сравнению с Maxwell
Kepler по сравнению с Maxwell

Планировщик инструкций (Instruction Scheduling)

Чтобы отдельные шейдеры работали эффективно, NVIDIA внесла некоторые изменения в сферах балансировки нагрузки (Workload Balancing), Clock-Gating Granularity, планировании инструкций (Instruction Scheduling) и количестве исполняемых инструкций за такт (Instructions Issued per Clock Cycle). Последний параметр не изменился по сравнению с "Fermi" и "Kepler", но NVIDIA снизила задержки для повышения эффективности. Улучшения балансировки нагрузки также связаны и с разделением warp-планировщиков. На каждый кластер SMM по-прежнему используется четыре warp-планировщика (Warp Scheduler)", как и в кластерах SMX архитектуры "Kepler", но четыре warp-планировщика больше не являются общими для всех потоковых процессоров, а работают только со своей группой ядер CUDA (они адаптированы по ширине к warp-планировщику). Кроме того, warp-планировщик может по-прежнему в один такт (dual-issue) распределять математические операции на потоковые процессоры, а также операции работы с памятью на блоки "Load / Store units". Впрочем, и в режиме single-issue warp-планировщик может полностью нагружать потоковые процессоры.

Лучшее использование потоковых процессоров с существующим кодом

Оптимизации, приведенные выше, связаны с аппаратным обеспечением. Но плохой код может и не раскрыть преимуществ архитектуры. Исходя из предположения, что существующий код меняться не будет, NVIDIA внесла улучшения в регистры. Между архитектурами "Maxwell" и "Kepler" не произошло изменений по числу 64K 32-битных регистров на SMM/SMX, 64 warp и, максимум, 255 регистров на поток. Удвоилось количество активных потоковых блоков на потоковый мультипроцессор SMM до 32. От этого шага можно ожидать повышения эффективности нагрузки.

Выделенная общая память

У архитектур "Maxwell" и "Kepler" предусмотрено 64 кбайт общей памяти. Но у "Kepler" она разделяется 48/16 кбайт между кэшем L1 и общей для кластера памятью. У "Maxwell" кэш L1 и текстурный кэш объединены, ограничение на потоковый блок по-прежнему составляет 48 кбайт, но повышение объёма общей памяти должно привести к улучшению эффективности.

Сравнение архитектур "Kepler" и "Maxwell"
GPU GK107 GM107
Максимальное количество потоковых процессоров 384 640
Базовая частота 1.058 МГц 1.020 МГц
Частота Boost - 1.085 МГц
GFLOPs 812,5 1305,6
Вычислительный интерфейс 3.0 5.0
Shared Memory / SM 16 kB / 48 kB 64 kB
Register File Size 256 kB 256 kB
Active Blocks / SM 16 32
Текстурные блоки 32 40
Текстурная скорость заполнения 33,9 Гтексель/с 40,8 Гтексель/с
Частота памяти 1.250 МГц 1.350 МГц
Пропускная способность 80 Гбайт/с 86,4 Гбайт/с
ROPs 16 16
Объём кэша L2 256 кбайт 2.048 кбайт
Количество транзисторов 1,3 млрд. 1,87 млрд.
Площадь кристалла 118 мм2 148 мм2
Техпроцесс 28 нм 28 нм
TDP 64 Вт 60 Вт

Чтобы эффективно использовать общую память у "Maxwell" применяются так называемые атомарные операции для 32-битных целочисленных вычислений, а также операции "Native Shared Memory 32 Bit and 64 Bit compare-and-swap (CAS)". В случае "Kepler" и "Fermi" приходилось использовать сложный принцип "Lock/Update/Unlock", что приводило к дополнительным издержкам.

Динамический параллелизм

Команды и данные, которые поставляются на GPU, могут быть взаимозависимыми (например, если расчеты зависят от результатов других вычислений), таким образом, части разных потоков могут блокироваться от выполнения на GPU некоторый промежуток времени. NVIDIA постаралась внести и улучшения обработки подобных ситуаций в интерфейс CUDA.

Dynamic Parallelism
Dynamic Parallelism

Технология динамического параллелизма (Dynamic Parallelism) на GPU может решать подобные проблемы зависимости. Впрочем, от программистов тоже требуются усилия, поскольку им следует учитывать неравномерности обработки GPU и запросы из памяти. Если созданные потоки превысят возможности доступной памяти GPU, то будет проводиться обращение через шину памяти PCI Express, что может вновь замедлить весь процесс. GPU самостоятельно определяет, в каких пропорциях он будет допускать существование зависимостей. Всё это позволит Nvidia избежать сценариев, ограничивающих производительность.

В конце марта в Сан-Хосе будет проводиться конференция GTC 2014. На ней мы ожидаем получить дополнительную информацию о "Maxwell".