Введение

Тип выделенного микропроцессора
Физический процессор (ФПУ) — это выделенный микропроцессор, разработанный для выполнения расчетов, связанных с физикой, особенно в физических движках видеоигр. Это пример аппаратного ускорения. Примеры вычислений, выполняемых с помощью ФПУ, включают динамику твёрдых тел, динамику мягких тел, обнаружение столкновений, динамику жидкостей, моделирование волос и одежды, конечно-элементный анализ и разрушение объектов. Идея заключается в том, чтобы специализированные процессоры снимали с центрального процессора (CPU) ресурсоемкие задачи, подобно тому, как графический процессор (GPU) выполняет графические операции вместо основного процессора. Термин был введен компанией Ageia для описания своего чипа PhysX. Ряд других технологий в диапазоне между CPU и GPU имеют некоторые общие черты с ФПУ, однако продукт Ageia был единственным полностью разработанным, коммерциализированным, поддерживаемым и интегрированным в систему, предназначенным исключительно для выполнения функций физического процессора.

История

Ранний академический исследовательский проект PPU под названием SPARTA (Simulation of Physics on A Real Time Architecture) был выполнен в Университете штата Пенсильвания и Университете Джорджии. Это был простой PPU на базе FPGA, ограниченный двумя измерениями. Этот проект был расширен и превратился в значительно более продвинутую систему на основе ASIC под названием HELLAS. В феврале 2006 года был выпущен первый специализированный PPU PhysX от Ageia (позже вошедшей в состав Nvidia). Устройство наиболее эффективно при ускорении систем частиц, в то время как прирост производительности для физики твердых тел был незначительным. PPU Ageia подробно описан в их заявке на патент США №20050075849. Nvidia/Ageia больше не выпускает PPU и аппаратное ускорение для обработки физики, хотя сейчас эта функция поддерживается некоторыми из их графических процессоров.

AGEIA PhysX

Первый процессор, рекламируемый как PPU, назывался чипом PhysX и был представлен компанией AGEIA, производителем полупроводников, не имеющим собственных производственных мощностей. Игры, желающие использовать преимущества PhysX PPU, должны были использовать PhysX SDK от AGEIA (ранее известный как NovodeX SDK). Он состоял из универсального RISC-ядра, управляющего массивом специализированных SIMD-процессоров VLIW с плавающей точкой, работающих в локальной банковской памяти, с коммутационной матрицей для управления обменом данными между ними. В отличие от CPU или GPU, иерархии кэша в нем не было. PhysX выпускался тремя компаниями, аналогично производству видеокарт. Основными производителями были ASUS, BFG Technologies и ELSA Technologies. Компьютеры с уже установленными картами были доступны от системных интеграторов, таких как Alienware, Dell и Falcon Northwest. В феврале 2008 года, после приобретения Ageia Technologies компанией Nvidia и последующего отключения возможности обработки PhysX на AGEIA PPU и NVIDIA GPU в системах с активными GPU ATi/AMD, казалось, что PhysX полностью перешел под контроль Nvidia. Однако в марте 2008 года Nvidia объявила о превращении PhysX в открытый стандарт, что означало поддержку PhysX основными производителями графических процессоров в картах следующего поколения. Nvidia также заявила, что PhysX станет доступен для некоторых уже выпущенных графических карт путем загрузки новых драйверов. Подробности об академических исследовательских проектах PPU можно найти в статье о физических движках.

Хавок FX

Havok SDK является основным конкурентом PhysX SDK, используемым более чем в 150 играх, включая такие известные проекты, как Half Life 2, Halo 3 и Dead Rising. Чтобы конкурировать с PhysX PPU, была разработана версия под названием Havok FX, которая должна была использовать возможности многочиповых графических технологий от ATI (AMD CrossFire) и NVIDIA (SLI), применяя существующие видеокарты для ускорения определенных физических расчетов. Havok разделяет физическое моделирование на физику эффектов и физику игрового процесса, при этом физика эффектов, если это возможно, переносится на GPU в виде инструкций Shader Model 3.0, а физика игрового процесса обрабатывается на CPU как обычно. Ключевое отличие заключается в том, что физика эффектов не влияет на игровой процесс (например, пыль или мелкие обломки после взрыва); подавляющее большинство физических операций по-прежнему выполняется программно. Этот подход существенно отличается от PhysX SDK, который при наличии карты PhysX переносит все вычисления на нее. После приобретения Havok компанией Intel разработка Havok FX, по всей видимости, была приостановлена или отменена.

PPU против GPU

Движение в сторону GPGPU сделало графические процессоры более подходящими для задач PPU; DX10 добавил целочисленные типы данных, унифицированную архитектуру шейдеров и стадию геометрического шейдера, что позволило реализовать более широкий спектр алгоритмов. Современные графические процессоры поддерживают вычислительные шейдеры, которые выполняются в индексированном пространстве и не требуют графических ресурсов, а только буферы данных общего назначения. NVidia CUDA предоставляет дополнительные возможности для межпоточной коммуникации и рабочего пространства, подобного кэшу, связанного с потоками. Тем не менее, графические процессоры построены на основе большего числа потоков с большей задержкой и меньшей скоростью, и спроектированы с учетом путей данных текстур и буфера кадров, а также имеют низкую производительность при ветвлении; это отличает их от PPU и Cell, делая менее оптимизированными для выполнения задач симуляции игрового мира. Компилятор Codeplay Sieve поддерживает PPU, что указывает на то, что чип Ageia physX подходит для задач, подобных GPGPU. Однако Ageia, по всей видимости, не планирует выходить на этот рынок.

PS2 VU0

Хотя VU0 PlayStation 2 сильно отличается от PhysX, можно утверждать, что это ранняя, ограниченная реализация PPU. И наоборот, программисту PS2 PPU можно описать как продвинутую замену VU0. Его функциональность и место в системе предназначены для ускорения задач обновления игры, включая физику и ИИ; он может перекладывать такие вычисления на себя, работая по собственному потоку инструкций, пока процессор занят другими задачами. Однако, будучи DSP, он в гораздо большей степени зависит от процессора для выполнения полезной работы в игровом движке и не способен реализовать полноценный физический API, поэтому его нельзя отнести к PPU. Кроме того, VU0 может обеспечивать дополнительную мощность обработки вершин, хотя это скорее связано с архитектурой системы, чем с самим блоком. Это применение аналогично Havok FX или GPU-физике, поскольку общая вычислительная мощность с плавающей точкой вспомогательного устройства используется для дополнения процессора в задачах графики или физики.