Физический процессор ( PPU ) — это специализированный микропроцессор, предназначенный для обработки физических расчетов , особенно в физическом движке видеоигр . Это пример аппаратного ускорения .
Примерами расчетов с использованием PPU могут быть динамика твердого тела , динамика мягкого тела , обнаружение столкновений , динамика жидкости , моделирование волос и одежды , анализ методом конечных элементов и разрушение объектов.
Идея заключается в том, чтобы специализированные процессоры разгружали трудоемкие задачи с центрального процессора компьютера, подобно тому, как графический процессор выполняет графические операции вместо основного центрального процессора. Этот термин был придуман Ageia для описания своего чипа PhysX . Несколько других технологий в спектре CPU-GPU имеют некоторые общие черты с ним, хотя продукт Ageia был единственным полностью разработанным, продаваемым, поддерживаемым и помещенным в систему, являясь исключительно PPU.
Ранний академический исследовательский проект PPU [1] [2] под названием SPARTA (Simulation of Physics on A Real-Time Architecture) был реализован в Университете штата Пенсильвания [3] и Университете Джорджии. Это был простой PPU на базе FPGA , ограниченный двумя измерениями. Этот проект был расширен до значительно более продвинутой системы на базе ASIC под названием HELLAS.
В феврале 2006 года Ageia ( позже слилась с Nvidia ) выпустила первый специализированный PPU PhysX . Устройство наиболее эффективно в ускорении систем частиц , с небольшим улучшением производительности, измеренным для физики твердого тела. [4] Ageia PPU подробно описан в их патентной заявке США № 20050075849. [5] Nvidia/Ageia больше не выпускает PPU и аппаратное ускорение для обработки физики, хотя теперь оно поддерживается некоторыми из их графических процессоров.
Первый процессор, который был объявлен как PPU, был назван чипом PhysX , представленным компанией AGEIA , не имеющей собственных производственных мощностей . Игры, желающие воспользоваться преимуществами PhysX PPU, должны использовать PhysX SDK от AGEIA (ранее известный как NovodeX SDK).
Он состоит из ядра RISC общего назначения, управляющего массивом пользовательских SIMD -процессоров с плавающей точкой VLIW , работающих в локальной банковской памяти, с коммутационной фабрикой для управления передачами между ними. Здесь нет кэш-иерархии , как в CPU или GPU.
PhysX был доступен от трех компаний, подобно тому, как производятся видеокарты . ASUS , BFG Technologies , [6] и ELSA Technologies были основными производителями. ПК с уже установленными картами были доступны от сборщиков систем, таких как Alienware , Dell и Falcon Northwest . [7]
В феврале 2008 года, после того как Nvidia купила Ageia Technologies и в конечном итоге отключила возможность обработки PhysX на AGEIA PPU и NVIDIA GPU в системах с активными ATi/AMD GPU, казалось, что PhysX на 100% перешел к Nvidia. Но в марте 2008 года Nvidia объявила, что сделает PhysX открытым стандартом для всех, [8] поэтому основные производители графических процессоров получат поддержку PhysX в видеокартах следующего поколения. Nvidia объявила, что PhysX также будет доступен для некоторых из выпущенных ими видеокарт, просто загрузив несколько новых драйверов.
См. Physics Engine для обсуждения академических исследовательских проектов PPU.
Компании ASUS и BFG Technologies приобрели лицензии на производство альтернативных версий PPU компании AGEIA, PhysX P1 с 128 МБ GDDR3:
Havok SDK является основным конкурентом PhysX SDK, используемым в более чем 150 играх, включая такие известные игры, как Half -Life 2 , Halo 3 и Dead Rising . [12]
Чтобы конкурировать с PhysX PPU, версия, известная как Havok FX, должна была использовать преимущества многопроцессорной технологии от ATI ( AMD CrossFire ) и NVIDIA ( SLI ), используя существующие карты для ускорения определенных физических вычислений. [13]
Havok разделяет симуляцию физики на физику эффектов и игровую физику, при этом физика эффектов выгружается (если возможно) на графический процессор в виде инструкций Shader Model 3.0 , а игровая физика обрабатывается на центральном процессоре в обычном режиме. Важное различие между ними заключается в том, что физика эффектов не влияет на игровой процесс (например, пыль или мелкий мусор от взрыва); подавляющее большинство физических операций по-прежнему выполняется программно. Этот подход существенно отличается от PhysX SDK, который переносит все вычисления на карту PhysX, если она присутствует.
После приобретения Havok корпорацией Intel , проект Havok FX, по всей видимости, был отложен или отменен. [14]
Движение в сторону GPGPU сделало графические процессоры более подходящими для работы PPU; DX10 добавил целочисленные типы данных, унифицированную архитектуру шейдеров и этап геометрического шейдера, который позволяет реализовать более широкий спектр алгоритмов; Современные графические процессоры поддерживают вычислительные шейдеры , которые работают в индексированном пространстве и не требуют никаких графических ресурсов, а только буферы данных общего назначения. NVidia CUDA обеспечивает немного больше в плане межпоточной коммуникации и рабочего пространства в стиле блокнота, связанного с потоками.
Тем не менее, графические процессоры построены на основе большего количества более длительных задержек, более медленных потоков и спроектированы с учетом путей данных текстур и кадрового буфера, а также плохой производительности ветвления; это отличает их от PPU и Cell , поскольку они менее оптимизированы для выполнения задач моделирования игрового мира.
Компилятор Codeplay Sieve поддерживает PPU, указывая на то, что чип Ageia physX подойдет для задач типа GPGPU. Однако Ageia вряд ли будет стремиться к этому рынку.
Хотя VU0 от PlayStation 2 сильно отличается от PhysX, можно утверждать, что это ранняя, ограниченная реализация PPU. И наоборот, программисту PS2 можно описать PPU как усовершенствованную замену VU0. Его набор функций и размещение в системе направлены на ускорение задач обновления игр, включая физику и ИИ; он может выгружать такие вычисления, работая с собственным потоком инструкций, пока ЦП работает над чем-то другим. Однако, будучи DSP, он гораздо больше зависит от ЦП для выполнения полезной работы в игровом движке и не сможет реализовать полный физический API, поэтому его нельзя классифицировать как PPU. Также VU0 способен обеспечивать дополнительную мощность обработки вершин, хотя это скорее свойство путей в системе, а не самого устройства.
Такое использование похоже на Havok FX или физику графического процессора, поскольку универсальная вычислительная мощность вспомогательного блока с плавающей запятой используется для дополнения ЦП в графических или физических задачах.