Страница 1: GTC17: все подробности архитектуры NVIDIA Volta

nvidia-gtc

На пленарном докладе GPU Technology Conference NVIDIA представила новую архитектуру Volta. Также были объявлены и первые решения на базе новой архитектуры – вычислительные ускорители Tesla V100. Но первая информация была ограничена базовыми спецификациями GPU, подробностей архитектуры не было. Мы исправляем этот недостаток.

Конечно, GPU GV100 – наиболее мощный и сложный чип, когда-либо производившийся NVIDIA. GPU содержит 21 млрд. транзисторов, 5.120 потоковых процессоров, 16 Гбайт памяти HBM2 (на подложке) и более 100 млрд. межсоединений (GPU, подложка и память).

Вместе с тем архитектура Volta была серьезно доработана во многих областях, где изменения последний раз происходили два-четыре поколения назад. С архитектурой Volta NVIDIA вновь нацеливается на сегмент высокопроизводительных вычислений HPC. И пока не совсем понятно, когда архитектура Volta станет доступна для домашних систем. С памятью HBM2 по-прежнему наблюдаются проблемы доступности, поэтому у NVIDIA вряд ли есть возможность вывести ее на розничный рынок. Но SK Hynix собирается начать производство новых чипов памяти GDDR6 с начала 2018 года, возможно, тогда мы и увидим их вместе с GPU на архитектуре Volta.

Архитектура GPU GV100

Подобно предшествующим архитектурам, Volta или GPU GV100 состоит из кластеров обработки графики (Graphics Processing Clusters, GPC), обработки текстур (Texture Processing Clusters, TPC), потоковых мультипроцессоров (Streaming Multiprocessors, SM) и контроллеров памяти. Полная версия GPU GV100 как раз содержит шесть кластеров GPC, 84 Volta SM, 42 TPC (каждый по два SM) и восемь 512-битных контроллеров памяти (4.096 бит в сумме). У каждого SM доступны 64 ядра FP32, 64 ядра INT32, 32 ядра FP64 и восемь новых ядер Tensor. Также отметим наличие четырех текстурных блоков на SM.

В полной версии GPU GV100 имеются 84 SM, мы получаем 5.376 ядер FP32, 5.376 ядер INT32, 2.688 ядер FP64, 672 ядер Tensor и 336 текстурных блоков. Каждый контроллер памяти работает с 768 кбайт кэша L2, к каждому стеку памяти HBM2 подключены два контроллера памяти. В данной версии GPU GV100 мы получаем 6.144 кбайт кэша L2.

Volta SM (Streaming Multiprocessor)

В отличие от перехода с Maxwell на Pascal, на этот раз изменения произошли и в самих потоковых мультипроцессорах SM. Цель заключалась в снижении задержек выполнения инструкций и обращений в кэш, она была достигнута разными путями.

Перечислим наиболее важные инновации Volt SM:

  • Ядра Tensor со смешанной точностью FP16/FP32 (мы вернемся к ним позже)
  • Улучшенный кэш L1, снижающий задержки и увеличивающий пропускную способность
  • Уменьшенный набор инструкций для упрощения декодирования и снижения задержек
  • Более высокие частоты, увеличенная эффективность энергопотребления

Как и GPU GP100, Volta SM имеет 64 ядра FP32 и 32 ядра FP64. Но архитектура Volta использует более современный способ распределения нагрузки по доступным ядрам, что повышает их загруженность и производительность в целом. SM в GPU GP100 содержали два вычислительных блока, каждый по 32 ядра FP32, 16 ядер FP64, буфер инструкций, Warp Scheduler, два блока диспетчеризации и файл регистров на 128 кбайт, но сейчас архитектура изменилась.

SM в GPU GV100 разделяются уже на четыре вычислительных блока. Каждый содержит 16 ядер FP32, 8 ядер FP64, 16 ядер INT32, два новых ядра Tensor со смешанной точностью, новый кэш инструкций L0, Warp Scheduler, блок диспетчеризации и файл регистров на 64 кбайт.

Файл регистров не изменился в размере при переходе с архитектуры Pascal на Volta. Но поскольку в GPU GV100 присутствует намного больше SM, суммарная емкость всех файлов регистров увеличивается. Объем общей памяти (Shared Memory) увеличился до 96 кбайт, у архитектуры Pascal он составлял 64 кбайт.

В отличие от архитектуры Pascal, которая не позволяла одновременно выполнять инструкции FP32 и INT32, теперь в архитектуре Volta это возможно, что тоже увеличивает производительность рендеринга.