« Архитектура PlayStation 2 (index)

Архитектура PlayStation 2

Chapter 4: Сопроцессоры


Содержание

  1. Архитектура
  2. Функционал
    1. Векторный вычислительный блок 0
    2. Векторный вычислительный блок 1
  3. Бесконечные миры
  4. Вы определяете рабочий процесс

Прошло два года с тех пор, как конкуренты представили свои последние предложения. Если вы читали предыдущую статью и только начали читать эту, я полагаю, вы все еще ждете 'того самого', что делает PS2 такой мощной, как это казалось тогда. А теперь позвольте мне представить очень важный набор компонентов, установленных Sony в Emotion Engine, векторные вычислительные блоки или 'VPU'.

Архитектура

Векторный вычислительный блок — это маленький независимый процессор, предназначенный для работы с векторами, в частности, с векторами, состоящими из четырех плавающих точек. Эти процессоры настолько быстрые, что тратят всего один такт на операцию, что может быть чрезвычайно удобно для обработки геометрии. Хотя они демонстрируют схожее нестандартное поведение с FPU ЦП.

ВПУ состоят из следующих компонентов:

Функционал

Чтобы начать работать, векторному блоку нужно 'запуститься'. Для этого главный ЦП отвечает за предоставление микрокода.

В Emotion Engine установлены два ВПУ, но они расположены по-разному, что позволяет использовать их для разных задач и оптимизаций.

Векторный вычислительный блок 0

Image
Архитектура VPU0.

Первый ВПУ, VPU0, расположен между ЦП и другим векторным блоком (VPU1). Он выполняет вспомогательную роль для основного ЦП.

У VPU0 два режима работы:

Карта памяти VPU0 также имеет доступ к некоторым регистрами и флагам другого ВПУ, предположительно для проверки его состояния или быстрого чтения результатов некоторых операций, выполненных другим ВПУ.

Векторный вычислительный блок 1

Image
Архитектура VPU1.

Второй найденный VPU, VPU1, является улучшенной версией VPU0 с увеличенным количеством микро и VU памяти в четыре раза. Более того, этот блок включает в себя дополнительный компонент, называемый элементарным функциональным блоком или 'EFU', который ускоряет выполнение экспоненциальных и тригонометрических функций.

VPU1 расположена между VPU0 и Графическим интерфейсом (ворота к GPU), поэтому она включает в себя дополнительные шины, чтобы как можно быстрее передавать геометрию к GPU, не используя главную шину.

С другой стороны, из-за её расположения, VPU1 работает только в микрорежиме.

Очевидно, что эта VPU была разработана для тригонометрических операций и может служить предобработчиком для GPU. Поэтому её часто ставят ответственным за передачу знаменитых Списков отображения.

Бесконечные миры

Полезный подход, который можно использовать с этими блоками, - это процедурная генерация. Другими словами, вместо построения сцены с использованием жёстко закодированной геометрии, позвольте VPUs генерировать её с помощью алгоритмов. В этом случае, VPU вычисляет математические функции для создания геометрии, которая затем интерпретируется GPU (то есть треугольники, линии, квадраты и т. д.) и в конечном итоге используется для отрисовки сцены.

По сравнению с использованием явных данных, процедурный контент идеально подходит для параллельных задач, освобождает пропускную способность, требует очень мало хранения и является динамическим (программисты могут устанавливать параметры для достижения различных результатов) . Многие области могут существенно выиграть от этой техники:

С другой стороны, процедурный контент может испытывать трудности с анимацией, и если алгоритм слишком сложен, VPU может не создать геометрию вовремя.

Резюмируя, процедурный рендеринг - это не новая техника, но благодаря VPUs открываются двери для дальнейших оптимизаций и более насыщенной графики. Тем не менее, это не простая техника для реализации, и отдел исследований и разработок Sony опубликовал множество статей, описывающих различные подходы к использованию на их консоли .

Вы определяете рабочий процесс

С этими новыми дополнениями у программистов теперь есть большая гибкость в разработке своих графических движков. Для помощи в этом компания Sony потратила дополнительные ресурсы на разработку и документирование эффективных конструкций конвейеров. Ниже приведены примеры графических конвейеров, оптимизированных для различных типов рабочих нагрузок :

Image
Параллельная конструкция конвейера.

Image
Последовательная конструкция конвейера.

В первом примере, Параллельной конструкции, CPU совмещается с VPU0 в макрорежиме для создания геометрии параллельно с VPU1. Группа CPU/VPU0 полностью использует свободное ОЗУ и кэш, чтобы избежать использования главной шины, которую VPU1 использует для получения данных из основной памяти. В конце обе группы рендеринга отправляют свои соответствующие Списки отображения на GPU одновременно.

Во втором примере, Последовательной конструкции, предлагается иной подход, при котором группа CPU/VPU0 работает как предобработчик для VPU1. На первом этапе будет извлечена и обработана вся геометрия, которую VPU1 будет затем преобразовывать в Список отображения.

До сих пор это были примеры с теоретической точки зрения, но чтобы объяснить более 'практическую' реализацию, я обращусь к видео Джона Бертона, опубликованному по поводу разработки одной из их игр для PS2 .

Image
Crash Bandicoot: The Wrath of Cortex (2001). Частицы создают пламя свечи и свет, исходящий от оконного стекла.

Бывший директор Travellers Tales объяснил, как его команда разработала полностью инкапсулированную систему частиц в VPU1. В общих чертах, VPU1 сосредоточилась на чтении предварительно заполненной базы данных из своей VU-памяти, которая использовалась для вычисления координат частиц в любой момент времени без зависимости от других компонентов. Результат операции можно было преобразовать в Списки отображения и сразу же отправить.

С этим подходом CPU была значительно разгружена, что позволило ей выполнять другие задачи, такие как ИИ и физика.

Существует много других примеров, но чтобы подвести итог: Теперь всё зависит от программиста, чтобы найти оптимальную настройку, и это хорошая вещь.


Previous: 3. Процессор

Next: 5. Графика


Rodrigo Copetti © 2026 RSS Feed

Переключиться на современную версию

Домашняя страница · Статьи · Поддержка · Об авторе · О сайте