Нова архітектура для обчислень на відеокартах - NVIDIA Fermi

четверг, 28 января 2010, Kos

Розглянемо список архітектурних нововведень:

  • Уніфікований 64-бітний простір адрес
  • Підтримка автоматичної корекції помилок (Errors Check and Correction)
  • Ієрархічний паралельний кеш (Parallel DataCache)
  • Конкурентне виконання шейдерів (NVIDIA GigaThread™ engine) та швидка зміна контексту виконання
  • Швидкі атомарні операції з пам'ятю

Розглянемо наслідки вище наведених нововведень:

  • Уніфікований простір адресс дозволяє використовувати мову програмування С++ для програмування шейдерів у повному об'ємі, тобто з вказівниками, стандартною бібліотекою і не обмежує програміста у виборі структур даних. Також це дозволяє звертатися з відеокарти до інших пристроїв за глобальню адрессою - тобто процесор та відеокарта тепер можуть обмінюватися вказівниками на дані . Простір адресс є 64 бітним для того відображати простір адресс системи в якій використовується відеокарта навіть якщо вона 64 бітна, також це дозволяє встановлювати більший об'єм відеопам'яті на відеокарту. Можливість компіляції С++ програм дозволяє спростити процес переносу коду з процесору на відеокарту, що може дозволити перести на відеокарти виконання інтерпретованих програм, інтерпретатори яких написані на С або С++. Наприклад, Erlang який було створено компанією Ericson для програмування розподілених систем за принципом конкурентних самостійних потоків. Компілятори деяких мов програмування також були написані на С++. Отже, незабаром ми зможемо побачити більшу кількість мов для програмування відеокарт.
  • Підтримка автоматичної корекції помилок звільняє програміста від необхідності перевіряти результати виконання шейдера.
  • Наявність Ієрархічного кешу дозволяє програмісту абстрагуватися від архітектіри чіпа та користуватися усіма перевагами кешування даних у SIMD-блоках, що спрощує процес написання програми. Також залишається можливість втручатися в процес кешування даних використовуючи розподілену локальну пам'ять у SIMD-блоках.
  • Конкурентне виконання шейдерів дозволяє оптимізувати час виконання усієї програми, оскільки коли закінчуються назначені на виконання потоки першого шейдеру, на звільнених SIMD-блоках починають виконуватися потоку наступного шейдеру. Швидка зміна контексту (20-25 мс) виконання дозволяє SIMD-блоку переключатися між задачами при завершенні виконання одного шейдера та початку виконання іншого, але й у той час коли група потоків одного шейдеру виконала звертання до пам'яті (зовнішньої, звертання до внутрішньої пам'яті виконується набагато швидше) і не може виконати жодної інструкції доки не дочекається даних. Це дуже схоже на виконання операцій поза чергою у сучасних процессорах.
  • Атомарні операції виконуються швидко, тому що їх атомарність реалізована та контролюється на рівні апаратного забезпечення. Атомарність інструкцій дозволить використовувати відеокарти не тільки для програм паралельних відносно даних, але й для програм паралельних відносно задач, які виконуються конкурентно. Не тільки потоків в межах одного шейдеру, але й між шейдерами, що одночасно виконуються на відеокарті. Таким чином з появою архітектури Fermi програмування відеокарт стало набагато ближче до звичного програмування процесорів за рівнем абстракції від апаратного забезпечення. Також слід звернути увагу на можливий союзe функціональних мов програмування таких як Haskell, Erlang та архітектури Fermi, оскільки перший вже успішно використовується для програмування більш старих архітектір відеокарт (проект Warp speed Haskell), а другий є еталоном у світі конкурентного програмування. Використання функціональних мов для програмування відеокарт може зробити його набагато легше.


Ищите нас в интернетах!

Комментарии

Свежие вакансии