В центре этой консоли находится мощный блок под названием Emotion Engine или 'EE', совместный проект Toshiba и Sony , работающий с частотой ~294.91 МГц .

Emotion Engine, как видно на первой ревизии материнской платы этой консоли.
Этот чипсет содержит множество компонентов, одним из которых является основной процессор. Остальные находятся в распоряжении процессора для ускорения выполнения определённых задач. Для этого анализа мы разделим EE на три секции:
- Лидер: основной компонент, который контролирует весь чип.
- Доступная память: важнейший ингредиент, чтобы процессоры могли выполнять значимые операции.
- Сопроцессоры: они ускоряют выполнение определённых вычислений.
Ведущий
В двух словах, основной процессор - это MIPS R5900, эксклюзивное ядро MIPS, разработанное для этой консоли. Вы можете вспомнить, когда Sony начала экспериментировать с MIPS с самой первой PlayStation (где мы можем найти MIPS R3000A, вторично произведённый LSI). Для следующего поколения мы получили MIPS 'R5900'... но что это имя значит для нас?
Чтобы понять, что скрыто за этими новыми числами, давайте взглянем на историю того времени.
Опередив все ожидания
MIPS R4000 был популярной серией процессоров, принятой широким рядом систем, включая близкого конкурента. Благодаря своему успеху, MIPS привнесла ранее недоступные достижения (64-битные вычисления, 8-ступенчатые конвейеры и так далее) в массы.
Перенесёмся вперёд, следующий большой шаг вперёд случился в 1995 году с выпуском R10000. Теперь при финансировании от SGI MIPS выпустила новый процессор, который значительно улучшил параллелизм R4000, впервые внедрив такие техники, как :
- Спекулятивное выполнение: процессор предсказывает результат условных ветвлений до их вычисления. Прогнозы основываются на предыдущих результатах, хранящихся во внутренней таблице на 512 записей. Как только условие вычислено, если прогноз оказался верным, процессор сэкономил драгоценное время. В противном случае, дополнительные вычисления отбрасываются.
- Благодаря этому, MIPS наконец-то превратила повторяющуюся проблему (опасности управления) в преимущество.
- В других процессорах вы можете найти аналогичную функциональность под названием "динамическое прогнозирование ветвлений".
- Конвейер с поддержкой 4 операций: Помимо конвейерной архитектуры, процессор будет теперь извлекать до четырёх инструкций в начале конвейера и распределять их по отдельным блокам, позволяя процессору выполнять эти инструкции одновременно. Таким образом, процессор достигает большей степени параллелизма.
- Выполнение вне порядка: процессор также будет изменять последовательность инструкций, чтобы максимально загружать свои блоки (при условии, что не добавляются опасности).
- Кэш L2 с 128-битной шиной, что позволяет загружать больше данных в процессор одновременно, что становится необходимостью в связи с предыдущими усовершенствованиями.
Тем не менее, такое новшество стоило сложного дизайна, и конечный продукт оказался совсем не дешевым. SGI включала его только в высококлассное оборудование, и любая попытка интегрировать его в домашнюю консоль была исключена.
Высококлассное для массов
Уже осознавая коммерческие ограничения R10000, SGI/MIPS наняли Quantum Effect Devices (QED) для разработки доступной версии R10000 для рынка среднего и низкого ценового сегмента. QED, будучи компанией, основанной бывшими сотрудниками MIPS, занималась разработкой вариантов ядер MIPS для бюджета.
В конечном итоге QED вернулась с новым ядром под названием R5000, это был R10000, подвергшийся значительным сокращениям :
- Выполнение команд вне порядка заменено на выполнение команд в порядке.
- Спекулятивное выполнение команд удалено.
- Суперскалярность ограничена двумя инструкциями (двухпутевая) и больше не параллелизует целочисленные инструкции. Однако команды с плавающей запятой все еще могут быть совмещены с другими.
- В результате предыдущих снижений, L2 сокращается до 64-битной шины.
Таким образом, это стало идеальным процессором для экономичного оборудования, такого как низкопроизводительные рабочие станции SGI. В любом случае, обратите внимание, что урезанная конвейерная линия все еще выполняла параллельные операции с плавающей запятой, как будто QED планировали сохранить его привлекательным продуктом для векторных/3D приложений. Скоро вы увидите, что еще одна компания быстро заметила это.
Стоит отметить, что на другой стороне океана были похожие достижения, но в противоположном направлении: ARM объединилась с DEC в стремлении поднять ARM-чипы на рынок высококлассного оборудования.
Спецзаказ для Sony
Toshiba уже некоторое время была лицензиатом MIPS и хорошо знала, как производить варианты MIPS и комплекты. В какой-то момент Sony и Toshiba объединились, чтобы создать процессор, специально разработанный для предстоящей консоли Sony. Это было огромным преимуществом для Toshiba: часто процессоры должны удовлетворять широкий спектр требований, поступающих от различных заинтересованных сторон, что ограничивает возможности для специализации. Теперь была только одна цель: 3D-игры. Таким образом, предоставляя достаточно места для всех видов инноваций.
Тогда Toshiba взяла доступный дизайн R5000 и изменила его, чтобы ускорить векторные операции. Новое ядро называется R5900 и включает следующие '3D' улучшения :
- Вариация ISA MIPS III. Это включает оригинальную 64-битную ISA, ранее видимую на Nintendo 64, но расширенную с интересными опкодами. Sony добавила несколько инструкций из MIPS IV (предвыборка и условное перемещение), а также собственное расширение SIMD, названное мультимедийные инструкции, чтобы ускорить векторные расчеты (аналогично SH-4, но только целочисленные).
- Мультимедийные инструкции все еще широки 32 битами, но могут работать одновременно с тремя 128-битными векторами. Они предлагают такие операции, как векторная арифметика, min/max и многие виды скалярных комбинаций для формирования новых векторов.
- 32 128-битных общих регистра: Еще одно значительное улучшение от Toshiba. Забудьте о типичном 32-битном хранилище, мы теперь вошли в 128-битную сферу. Тем не менее, большинство операций вряд ли будут использовать все доступное пространство (слова MIPS все еще длиной в 64 бита). Здесь на сцену выходит упомянутое ранее мультимедийное расширение, так как его набор позволит полностью использовать расширенный регистровый файл.
- При использовании новых инструкций каждый регистр может хранить векторы, состоящие из множества типов скаляров (от двух 64-битных целых чисел до шестнадцати 8-битных).
- Чтобы избежать потерь производительности, эти регистры доступны через 128-битную шину, в то время как остальная часть ЦП использует внутреннюю 64-битную шину данных.
- Два 64-битных АЛУ. Каждый из них может работать с 64-битными целыми числами независимо, но также могут объединяться, образуя 128-битный АЛУ. Последний является «мозгом» за счет этих блестящих мультимедийных опкодов.
Кроме этого, мы находим и другие улучшения, которые разработчики могут также приветствовать:
- 6-ступенчатый конвейер: Это одна дополнительная ступень по сравнению с предшественниками.
- 2-канальное суперскалярное выполнение: Благодарю двух АЛУ, теперь выполняются до двух 64-битных целочисленных операций параллельно.
- Это восстанавливает еще одно потерянное преимущество MIPS R10000.
- 24 КБ L1 кэша: Разделены на 16 КБ для инструкций и 8 КБ для данных.
- Схемотехника также реализует функцию предвыборки для кэширования инструкций и данных перед запросом. Это достигается за счет добавления логики, которая может определить, какие места в памяти чаще запрашиваются.
- 16 КБ ОЗУ Scratchpad, также известное как 'Быстрая оперативная память'.
- Управление памятью: Интерфейсирует доступ к памяти с остальной частью системы.
Кроме того, ядро дополнено специализированным блоком с плавающей запятой (обозначенным как 'COP1'), который ускоряет операции с 32-битными числами с плавающей запятой (также известными как floats в C). Это своеобразный блок, так как он не следует стандарту IEEE 754, наиболее очевидный отсутствием бесконечности (вычисляется как 0 вместо этого) . В дополнение к этому, он имеет 32 32-битных регистра.
Узнаваемый выбор памяти
Рядом с Emotion Engine расположены два блока по 16 МБ ОЗУ, что в сумме дает 32 МБ основной памяти. Используется тип памяти RDRAM (déjà vu!), который доступен через 16-битную шину.

Дизайн памяти Emotion Engine. Можете догадаться, где возникнут заторы.
Сначала это может разочаровать, учитывая, что внутренняя шина Emotion Engine имеет ширину до 128 бит. Однако, чипы оперативной памяти стратегически размещаются, соблюдая двухканальную архитектуру, которая состоит из подключения обоих чипов с использованием двух независимых 16-битных шин (по одной шине на чип) для улучшения пропускной способности данных. Полученная установка обеспечивает теоретическую скорость 3,2 ГБ/с, так что будьте уверены, что задержка памяти не является проблемой в этой консоли!
В одном углу Emotion Engine находится мощный DMA-контроллер или 'DMAC', который передает данные между основной памятью и Scratchpad; или между основной памятью и любым компонентом внутри EE.
Передача данных осуществляется пакетами по 128 бит, но вот интересная часть: каждые восемь пакетов основная шина временно разблокируется. Это оставляет небольшое окно возможностей для выполнения других передач DMA параллельно (до десяти) или позволяет ЦП использует основную шину. Этот modus operandi называется режим резки и является одним из многих режимов, доступных на этом блоке DMA. Имейте в виду, что режим резки уменьшает задержки на основной шине, но делает это за счет замедления общей передачи DMA.
Предотвращение прошлых ошибок
Независимо от того, хотим мы этого или нет, при таком объеме трафика внутри Emotion Engine этот дизайн в конечном итоге будет страдать от последствий унифицированной архитектуры памяти или 'UMA'. Речь идет о: нескольких независимых компонентах, пытающихся получить доступ к основной памяти одновременно, вызывая перегрузку. Чтобы исправить эти проблемы, Sony ослабила постоянную потребность в памяти следующим образом:
- Обертывание их процессоров большим количеством кэша. Таким образом, доступ к основной памяти требуется только в случае крайней необходимости.
- 99% упоминаний кэша/оперативной памяти в этой статье будут по этой причине.
- Добавление 128-байтового буфера записи: Очень похоже на Write Gather Pipe, но вместо ожидания, пока он заполнится на 25%, он сначала проверяет состояние шины (т.е. занята или свободна).
Это звучит очень удобно для приложений, которые могут извлечь пользу из кэша, но что насчет тех задач, таких как манипуляция списками отображения, которые вообще не должны использовать кэш? К счастью, ЦП предоставляет другой режим доступа к памяти, называемый UnCached, который только использует буфер записи. Таким образом, он не будет терять такты на корректировку кэша (продукт промахов кэша).
Более того, также доступен ускоренный режим UnCached. Этот добавляет буфер для ускорения чтения непрерывных адресов в памяти.
Другие интересные моменты
В том же пакете Emotion Engine есть еще один процессор под названием Image Processing Unit или 'IPU', который предназначен для декомпрессии изображений. Как преемник MDEC, IPU может быть полезен, когда игре нужно декодировать видео MPEG2 без блокирования основного ЦП.
Короче говоря, игра отправляет сжатые потоки изображений на IPU (надеюсь, используя DMA), которые затем декодируются в формате, который GPU может отображать. Операционная система PS2 также использует IPU для обеспечения воспроизведения DVD.
Наконец, IPU также обрабатывает сжатые высококачественные текстуры, что экономит использование ЦП и уменьшает большие передачи данных.