что такое rsx в ps3
Архитектура PlayStation 3, часть 2: RSX
3. Графика
Если вы подумали, что Cell со своими особенностями мог бы справится со всеми задачи этой консоли, то позвольте мне сказать нечто истеричное: Sony установила отдельный чип для 3D-графики.
Примеры игр с PS3 (скриншоты)
Большая часть игр выводятся консолью в разрешении 1280×720 пикселей
Uncharted 3: Drake’s Deception (2011)
The Elder Scrolls V: Skyrim (2011)
Killzone 3 (2011)
One Piece: Pirate Warriors (2012)
Похоже, что даже с чипом от суперкомпьютеров, Sony все же пришлось добавить GPU для завершения PlayStation 3. Это заставляет задуматься, не попали ли IBM/Sony/Toshiba в тупик, пытаясь дальше масштабировать Cell, и потому у Sony не было другого выбора, кроме как обратиться за помощью к графической компании. Это всего лишь предположение, однако я не уверен, что когда-нибудь узнаю ответ.
Теперь я проведу тот же уровень анализа, который ранее проводился с Cell, на этот раз сосредоточившись на RSX и его графических возможностях.
3.1. Общие сведения
Прошло пять лет с тех пор, когда Nvidia представила линейку GeForce3 (NV30) в 2001 году. К тому времени на арене сражались такие сильные игроки, как 3dfx, S3, ArtX и ATI. Однако, в последующие годы число компаний постепенно сократилось до такой степени, что к 2006 году только ATI и Nvidia остались ведущими поставщиками видеокарт на рынке ПК.
Чип RSX рядом с чипом Cell
RSX наследует существующую технологию Nvidia, которая, как сообщается, базируется на модели 7800 GTX для ПК. Модель реализует архитектуру GeForce 7 (NV47) [24] под кодовым именем «Сurie».
В моем предыдущем анализе первого Xbox, я говорил о чипе GeForce 3 и дебютировавших в нём пиксельных шейдерах. Так что же изменилось с тех пор? Были и взлеты, и падения, но в основном изменения происходили постепенно, ничего революционного нет по сравнению с пиксельными шейдерами Geforce3.
Режим BIC для подключения других процессоров Cell (для использования в многопроцессорных системах).
Медленный режим IOIF для подключения до двух периферийных устройств: «быстрого» и «медленного».
Увы, RSX это не Cell, поэтому первый работает через протокол IOIF, используя быстрый слот. Но для сравнения, IOIF ведет себя как 32-битная параллельная шина с теоретической пропускной способностью до 20 ГБ/с, в то время как PCI-Express, используемый в 7800 GTX (версия 1.0, x16 линий), представляет собой 16-битную последовательную шину с теоретической пропускной способностью до 4 ГБ/с.
3.2. Организация контента
RSX имеет в своем распоряжении 256 МБ GDDR3 SDRAM памяти. Удивительно то, что этот же тип памяти используется в Nintendo Wii. Шина памяти работает на частоте в 650 МГц с теоретической пропускной способностью до 20.8 ГБ/с.
Пример того, как данные организованы в доступной памяти. Обратите внимание на то, что RSX может получить доступ к своему содержимому с разных чипов памяти.
Внутри этих 256 МБ памяти Cell может разместить всё, что требуется RSX для отрисовки кадра. Это включает в себя данные вершин, шейдеры, текстуры и команды. Теперь, благодаря шине Flex I/O в Cell, RSX также может использовать вышеупомянутые 256 МБ XDR памяти (главная память процессора) как рабочую область, хоть это и будет снижать производительность. Это удобно в том случае, если, например, через SPU надо наложить пост-обработку на отрисованный кадр.
Как вы можете видеть, хоть эта консоль и не реализует унифицированную шейдерную архитектуру (Unified Shader Architecture, UMA), она все еще может распределять графические данные по разным микросхемам памяти, если это нужно программистам.
Я упоминаю об этом, потому что мне хотелось бы, чтобы “технические эксперты” прочитали больше об этой особенности, прежде чем делать обобщающие заявления в духе “PS3 была ограниченной из-за отсутствия UMA”. В некоторых случаях это может быть правдой, но если они не упоминают об этом, то такое общее утверждение, на мой взгляд, вводит в заблуждение.
Наконец, RSX поддерживает множество форм оптимизации данных для увеличения пропускной способности, например, цветовое сжатие 4:1, Z-сжатие и тайловый режим (я расскажу о нём подробнее позже).
3.3. Построение кадра
Давайте посмотрим на то, как чип RSX обрабатывает и рисует 3D-сцены.
Обзор конвейера RSX
Его модель конвейера очень похожа на GeForce 3, но была сильно обновлена за пять лет технического прогресса. Поэтому я предлагаю заранее ознакомиться с той статьей, поскольку в этой основное внимание будет уделено новым функциям. Я также рекомендую прочитать о графическом процессоре PlayStation Portable, потому что многие новые разработки и потребности частично совпадают с тем чипом.
Итак, посмотрим, что у нас здесь есть… [26]
3.3.1. Команды
Как и в любом другом GPU, должен быть блок, отвечающий за прием команд снаружи. В RSX это происходит с помощью двух блоков, хоста и Graphics Front End.
Хост отвечает за чтение команд из памяти (либо локальной, либо основной) и их перевод во внутренние сигналы, которые понимают другие компоненты в RSX. Это делается с помощью четырех подблоков:
Pusher: извлекает графические команды из памяти и интерпретирует инструкции ветвления. Также содержит 1 КБ буфера предвыборки (prefetch buffer). Обработанные команды отправляются в кэш FIFO.
Кэш FIFO: хранит до 512 команд, декодированных из Pusher в FIFO для быстрого доступа.
Puller: берёт команды из кэша FIFO всякий раз, когда RSX готов к отрисовке, и отправляет их в следующий блок.
Графический FIFO: хранит до восьми команд, которые потом будут читаться Graphics Front End.
Затем Graphics Front End считывает данные из графического FIFO и подает сигнал необходимым блокам внутри RSX для вычисления операций. Если помните, то это эквивалент «pfifo» в GeForce3.
Как можете видеть, команды и данные проходят через множество буферов и кэшей, прежде чем достичь конечного пункта назначения. Это сделано специально, поскольку препятствуется остановка конвейера из-за различных блоков и шин, работающих на разных скоростях. Таким образом, кэшированная память использует преимущества быстрой пропускной способности тогда, когда это возможно.
3.3.2. Вершинный шейдер
Блок, который выполняет шейдеры, называется Vertex Processing Engine (VPE), и он может обрабатывать одну вершину за такт. Если этого показалось мало, то существуют восемь VPE, которые работают параллельно.
По сравнению с GeForce 3 появились новые инструкции для ветвления и вызова подпрограмм. Также VPE содержит четыре текстурных сэмплера, которые извлекают цвета текстур на этом этапе в случае, если программисты захотят использовать этот блок для выполнения некоторых операций.
Блок Geometry Processing работает так:
Index Vertex Processor (IDX) извлекает и кэширует вершины и текстуры из VRAM. После этого он отправляет данные в VAB.
Vertex Attribute Buffer (VAB) берёт данные из кэша IDX и перенаправляет их в каждый VPE.
Каждый VPE обрабатывает данные на основе загруженного шейдера. Он вычисляет одну инструкцию шейдера за такт.
Результат каждого VPE отправляется в кэш Post Transform Cache, который кэширует результаты, чтобы пропустить идентичные вычисления над одной и той же вершиной. Это применимо только в том случае, если вместо данных вершин используются индексы вершин.
Конечный результат сохраняется в блок Viewport Cull Unit (VPC) и в память атрибутов (Attribute RAM, ATR). VPC убирает вершины, найденные за пределами области видимости. ATR кэширует атрибуты вершин (текстуру, цвет, туман и далее) для чтения на следующих этапах.
3.3.3. Растеризация
Двигаясь дальше, пришло время преобразовать вершины в пиксели (растеризация). Растеризатор RSX довольно быстрый, и он может преобразовать до 8×8 пикселей (64) за такт и работать с буферами кадров размером до 4096×4096 пикселей (хотя разработчикам может потребоваться и меньше).
Растеризатор принимает точки, линии (включая полосы и замкнутые типы), треугольники (включая веера), четырехугольники и правильные многоугольники.
Естественно, как и в текущем поколении консолей, растеризатор работает с суб-пиксельными координатами, где точки семплирования являются полу-координатами ( 0.5 ) пикселей. Это позволяет впоследствии использовать методы сглаживания, такие как мульти-сэмплинг (multisampling).
Данный метод растрирует одну и ту же геометрию несколько раз, но смещает несколько суб-пикселей друг от друга в каждом батче (batch) (RSX поддерживает четыре различных режима смещения), а затем вычисляет среднее значение. Это приводит к сглаженному изображению.
Более того, этот блок применяет z-culling, используя отдельную память внутри RSX (емкость которой около 3 миллионов пикселей). Это экономит обрабатываемые пиксели и трафареты, которые уже были отрисованы, и позволяет выполнить ранний z-тест для входящей геометрии.
Отдельный блок используется для растеризации 2D-объектов (спрайтов), хоть и он изолирован от 3D-конвейера. Следовательно, RSX работает в режимах 2D и 3D, но периодическое переключение между ними обходится дорого с точки зрения производительности.
3.3.4. Пиксельный шейдер
Следующий по нашему списку идёт блок Fragment Shader & Texture. Это программируемый блок (с помощью “фрагментных программ” или “шейдеров”), который применяет текстурирование и другие эффекты.
Диаграмма пиксельной или фрагментной стадии
Являясь продвинутым наследником текстурных юнитов из чипа GeForce 3, новый блок содержит шесть фрагментных юнитов (в оригинале «pipes», далее «каналы”), каждый из которых обрабатывает 2х2 текселя (далее “квады”).
Для организации нескольких юнитов, работающих параллельно, был размещен другой подблок Shader Quad Distributor (SQD), чтобы отправлять квады каждому фрагментному юниту. После этого юнит загружает фрагментную программу.
Для вычислительных операций каждый канал содержит огромное количество 128-битных регистров (всего их 1536). Помимо этого, каждый канал может обрабатывать несколько квадов параллельно (многопоточность), хотя их количество, обрабатываемых параллельно, зависит от количества регистров, выделенных фрагментной программе:
кол-во. потоков = 1536 / кол-во регистров для шейдера
Глобально, параллельно может обрабатываться до 460 квадов. Кроме того, до трех фрагментных каналов могут обработать две инструкции одновременно (как и, например, двойная обработка у PPU) до тех пор, пока инструкции не зависят друг от друга.
Фрагментные юниты предоставляют арифметические и текстурные инструкции. Первые похожи на инструкции для вершинных блоков, а вторые, например, могут извлекать и распаковывать множество типов текстур (поскольку текстуры могут быть закодированы с помощью структур, а затем сжаты).
Наконец, так как юниты постоянно извлекают части текстур из VRAM или ОЗУ, то этот блок содержит три кэша для текстур: 4 КБ кэша L1 для каждого канала, 48 КБ кэша L2 для выборок из видеопамяти и 96 КБ кэша L2 для основной памяти. Заметьте, что кэш основной памяти значительно больше остальных. Это было сознательное решение, принятое для компенсации более высокой задержки.
3.3.5. Пиксельные операции
Финальный блок Raster Operation Block (ROP) выполняет финальные тесты для полученных пикселей перед записью результатов в буфер кадра (который хранится в VRAM или в главном ОЗУ).
Стадия пост-обработки
Есть два набора ROP, по четыре блока каждый (всего восемь блоков). Каждая группа выполняет z-тестирование, альфа-смешивание и финальную запись в память.
В целом, эта схема может обрабатывать до 16 z-значений и 8 цветов пикселей за такт.
Любопытно, что ПК-вариант Nvidia 7800 GTX поддерживает 16 ROP вместо 8. Может быть, это сокращение было сделано, чтобы приоритизировать пропускную способность памяти, потребляемой блоками SPU? Для увеличения пропускной способности ROP также обеспечивает цветовое сжатие и Z-сжатие.
Кроме того, есть тайловый режим для оптимизации доступа к памяти с помощью видео-кодера. В этом режиме, буфер кадра хранится в непрерывных блоках по 128 байт, которые упорядочены так, как они будут транслироваться или сканироваться. Из-за этого GPU избавляется от необходимости подкачки страниц (для адресации памяти) при передаче буфера кадра для вывода на экран, что, следовательно, улучшает пропускную способность. Эти тайлы хранятся в отмеченных в памяти местах исключительно для этого типа адресации.
3.4. Единый видеовыход
Прошли времена проприетарных видео-разъемов для консолей и десятков аналоговых сигналов, скомпонованных в одном разъеме для учета каждого региона Земли. В PlayStation 3, наконец-то, встроили единый видеосигнал, который вскоре будет принят во всем мире: High Definition Media Interface (HDMI). Он используется для одновременной передачи аудио и видео.
Обратная сторона PS3, слева выход на HDMI, справа старый выход на Multi A/V для аналогового видео.
По сей день протокол HDMI постоянно обновляется. Новые версии спецификации предлагают больше возможностей (высокое разрешение изображения, большая частота обновления, альтернативные цветовые пространства и так далее), сохраняя при этом тот же физический носитель для обратной совместимости.
3.5. 3D-эффект в “реальном времени”
Что же это было за “трёхмерное телевидение” (3D television), о котором я упоминал ранее?
За кулисами происходит то, что кодировщик транслирует два кадра за раз, а телевизор чередует их аналогично тому, как это делали 3D-очки для Master System 30 лет назад.
4. Аудио
Боюсь, что вы не увидите в этой секции много информации, потому что начиная с последнего портативного изобретения, аудио тихо сместилось в сторону ПО. Другими словами, больше нет выделенных аудио-чипов.
Видите ли, в то время как потребность в лучшей графике имеет тенденцию расти экспоненциально (потребители хотят больше декораций, лучшей детализации и различных цветов), к звуку вы больше не услышите требования такого же уровня.
Краткое описание звукового конвейера
Итак, аудио теперь полностью реализовано с помощью ПО и обрабатывается блоками SPU (я имею в виду Synergistic Processor Unit, а не Sound Processing Unit! это немного иронично, что оба названия имеют одни и те же буквы). Далее, Sony предоставляет множество библиотек в своем SDK, которые инструктируют блоки SPU выполнять секвенирование и микширование звука, и потоковую передачу. И если этого недостаточно, то они могут также применить множество эффектов.
После этого куда передается звуковой сигнал для вещания? В чип RSX. Он также содержит порты, используемые для трансляции звуковых сигналов в телевизор. Перед отправкой сигнал кодируется в различных форматах, в зависимости от выбранного выхода (аналоговый, HDMI или S/PDIF, последний также называется “цифровым аудио”).
Источники
Графика и RSX:
Michael Gschwind, Bruce D’Amora, Alexandre Eichenberger, Cell BE – enabling density computing for data rich environments. IBM Corporation. ↩︎
Архитектура PlayStation 3, часть 3: Три «ОС»
В данной части описывается устройство обратной совместимости от PlayStation 2, операционной системой самой PS3, а также возможность OtherOS для установки второй операционной системы. Из-за этого в названии и появилось три «ОС» 🙂
5. Ввод/вывод и обратная совместимость
Большой чип южного моста, контролирующий небольшие микросхемы ввода-вывода и интерфейсы
То же самое изображение, но с важными обозначениями
Как и IOP в PS2, южный мост полностью проприетарный, и на этот раз он изготовлен Toshiba (они назвали его “Super Companion Chip” [37] ). Хоть он и по-прежнему остается малоизвестным куском кремния, но он выполняет превосходную работу по объединению множества интерфейсов и протоколов, как внешних (будь то USB, Ethernet и прочее), так и внутренних (SATA).
Для справки, в прошлом низкая тактовая частота IOP создавала узкое место для быстрых интерфейсов, таких как ATA и Ethernet, значительно снижая их полную пропускную способность. Кроме того, в южный мост добавили алгоритмы шифрования, чтобы беспрепятственно защитить между стандартными протоколами обмен данными, такими как данные жесткого диска.
Диаграмма соединений южного моста
В целом, Southbridge встраивает огромное количество интерфейсов. Это связано с тем, что эта консоль была разработана во время тренда на «мультимедийные комбайны«. Недостаточно, чтобы игровые консоли запускали только игры. Они также должны быть плеерами DVD и Blu-ray, ресиверами ТВ (частично), средствами для просмотра фотографий (импортируя фото с камеры через карт-ридер) и, возможно, ещё большим по мере развития потребностей (благодаря своей обновляемой ОС).
5.1. Внешние интерфейсы
В случае с доступными портами для пользователя, к южному мосту подключены:
Хаб USB 2.0: обеспечивает четыре передних порта USB A. Они могут быть использованы для аксессуаров и для соединения или зарядки контроллеров.
Интерфейс Serial ATA (SATA): соединяет привод Blu-ray и жесткий диск 2.5″.
Контроллер Gigabit Ethernet 1000/100/10: в виде разъема RJ45 сзади. К контроллеру была подключена плата для Wi-Fi 802.11 b/g и Bluetooth 2.0.
Карт-ридеры: имелись порты для карт Memory Stick, SD, MultiMediaCard (MMC), Microdrive и Compact Flash.
5.1.1. Беспроводное оборудование
Благодаря широкому внедрению технологии Bluetooth проводное управление теперь ушло в прошлое. Новая форма контроллера Dualshock 2 от PS2 теперь называется Sixaxis.
Хоть это и не радикальное изменение, на которое решились другие, но в нём есть гироскоп для новых типов человеческого ввода. Однако это произошло за счет отказа от тактильной обратной связи (вибрации). Год спустя Sony удивила игроков контроллером Dualshock 3, в который вернулся тактильный мотор.
Также теперь вы можете включить консоль с помощью беспроводного контроллера.
5.2. Внутренние интерфейсы
Что касается внутренних компонентов, то южный мост соединяет:
Чипсет PlayStation 2: в углу материнской платы находится привлекающий внимание чип, в котором объединены и Emotion Engine, и Graphics Synthesizer. Комбо EE+GS подключается к 32 МБ памяти RDRAM и мосту ввода-вывода, («мост PS2”). Всё это вместе составляет примерно 90% оригинальной PlayStation 2.
Чип EE+GS посылает видеосигнал непосредственно в RSX.
Эти чипы недоступны разработчикам, они используются только для обратной совместимости!
5.2.1. Обратная совместимость
Упомянув чипы PS2, полагаю, что это мой намек на то, чтобы надо поговорить об обратной совместимости PlayStation 3 раз и навсегда. Для начала, позвольте мне рассказать то, как обычно работает обратная совместимость: консоли могут либо играть в игры своих предшественников с помощью программного или аппаратного обеспечения:
ПО инструктирует существующему оборудованию консоли вести себя так, как ожидала бы старая игра на предыдущей консоли.
Существующее в консоли оборудование обеспечивает полную или частичную обратную совместимость
Были добавлены дополнительные чипы для воссоздания старой системы на новой материнской плате
При той вычислительной мощности, которую демонстрирует PS3, можно было бы ожидать, что Sony выпустит эмулятор PS2, работающий в Cell и ускоренный RSX. Ну, по какой-то причине этого не произошло. Вместо этого Sony установила чипсет PS2 в одном углу материнской платы.
Большой чип EE+GS, два чипа по 16 МБ памяти RDRAM и “мост PS2”.
То же изображение, но с важными обозначениями.
С другой стороны, отсутствующие, но не столь критичные чипы (IOP, SPU и прочее) эмулируются с помощью Cell. В случае игровых сохранений изначально пользователям приходилось приобретать адаптер карты памяти. Но после выхода нового обновления ПО карты памяти теперь эмулируются как образы дисков, хранящиеся на жестком диске, а Magic Gate (система шифрования) обрабатывается одним SPU.
Поскольку Cell и RSX все ещё “включены” во время игры на PS2, то система предлагает два метода масштабирования для увеличения площади экрана во время геймплея: метод “ближайших соседей” и “антиалиасинг” (antialiasing).
Интерфейс PS3 показывает значок игры после вставки диска от PS2.
В общем, благодаря данным решениям, PS3 запускает игры PS2 с впечатляющей совместимостью. Вдобавок ко всему, вы можете воспользоваться новыми функциями консоли (беспроводное управление, интерфейс HDMI, отсутствие карт памяти).
5.2.2. Странная смена курса
Sony на протяжении всего жизненного цикла консоли медленно убирала чипы для PS2 из материнской платы PS3. В итоге обратная совместимость была реализована только через программную эмуляцию (со многими ограничениями, такими как запуск PS2 игр, купленных только через их онлайн-магазин).
Поскольку Sony так и не заменила чипсет PS2 (как это было раньше с железом PS1 в PS2), то это заставляет задуматься о техническом и исполнительном обосновании этого. Что ж, в качестве примера, вот мое краткое мнение о причинах этого:
Сроки: Sony, скорее всего, рассчитывала, что владельцы PS2 приобретут новинку в качестве замены своей консоли, так как это более доступно для потребителей (они могут продать свою старую систему). Однако по какой-то причине у Sony не было готового программного эмулятора к дню выпуска, поэтому вначале они прибегли к добавлению дополнительных чипов. Позже, по мере того как программная эмуляция удовлетворительно развивалась, они постепенно удаляли чипы в последующих ревизиях.
В дополнение к этому разработчик ‘M4j0r’ прокомментировал:
Я понимаю, что в снижении энергопотребления участвуют и другие факторы, например, новые ревизии Cell и RSX. Однако я по-прежнему считаю, что чипсет PS2 играет здесь важную роль.
Лично я считаю, что чистая программная эмуляция является наиболее приемлемым вариантом в долгосрочной перспективе благодаря её масштабируемости, настройке и независимости от проприетарного оборудования. Но как показывает текущая разработка PCSX2 сообществом добровольцев, это требует больше усилий для точной реализации (обратите внимание, что вышеупомянутый эмулятор работает только на ПК с x86).
5.2.3. Поздняя совместимость
Мы ещё не закончили говорить о совместимости! Возможно, вас удивит тот факт, что Sony также позволила пользователям запускать подмножество игр от Playstation Portable. Но эмуляция осуществлялась полностью с помощью ПО, как и совместимость PS2 в более поздних моделях.
Поскольку PS3 не может читать UMD диски, то пользователи должны получить доступ к каталогу игр из интернет-магазина Sony, чтобы загрузить и установить любую игру для PSP.
6. Операционная система
Теперь, когда домашние консоли стали мощными мультимедийными центрами, то нужна более сложная операционная система (ОС), чтобы предоставить пользователям с более толстым слоем абстракции больше сервисов и игр при сохранении безопасности и производительности на должном уровне.
6.1. Привилегированная безопасность Cell
Тем не менее, для защиты от несанкционированного доступа к конфиденциальным данным и/или ресурсам, Cell реализует уровни привилегий, унаследованных от спецификации PowerPC. Другими словами, Cell выполняет программы в двух режимах:
Более того, Cell также был подготовлен к одновременному запуску нескольких ОС. Для достижения этого на аппаратном уровне “режим привилегий” может быть дополнительно разделен на Привилегию 1 и 2.
«Привилегия 1» используется гипервизором, который осуществляет арбитраж ресурсов между различными ядрами, работающими одновременно.
«Привилегия 2» предназначена для использования ядром.
Операционная система Sony, которую я собираюсь описать в следующих параграфах, использует все описанные режимы для обеспечения безопасности.
6.2. Общие сведения
Как я уже говорил ранее, ОС довольно комплексная. Чтобы без проблем следовать этому разделу, мы можем разделить типы файлов, которые мы найдем в ОС этой консоли, на различные уровни:
Некоторые загрузчики обновляются Sony (через обновления ПО), в то время как другие не могут быть изменены. Это не зависит от того, установлены ли они в перезаписываемое хранилище или нет. Поскольку некоторые загрузчики зашифрованы специфическими для каждой консоли ключами, то их нельзя изменить после того, как консоль покинет завод (по крайней мере, традиционными средствами).
Системные файлы: они содержат низкоуровневые двоичные файлы (выполняемые через загрузчики), метаданные для организации аппаратного обеспечения, утилиты и другие ассеты (assets) (шрифты и изображения). Как и загрузчики, для каждой консоли есть свои системные файлы, которые не могут быть заменены или сгенерированы автоматически.
Контент пользователей: это файлы конфигурации, данные, используемые играми, и данные, автоматически генерируемые консолью (это могут быть настройки Интернета, файлы установки игр, сохранения, информация о жестком диске).
В отличие от других слоев, уничтожение этих данных не приводит к катастрофическим последствиям.
6.3. Иерархия безопасности ОС
В целом, ОС для PS3 разработана с использованием того же модульного подхода, что и в PSP. Если вспомнить предыдущую статью, то ОС состоит из множества модулей. Они могут обслуживать пользователей (игра или приложение) или находиться в памяти неопределенное время для обслуживания других модулей (в виде системных вызовов и/или драйверов). Некоторые модули имеют больше привилегий, чем другие (модуль ядра против модуля пользователя).
Диаграмма, показывающая, как компоненты операционной системы Playstation соответствуют уровням привилегий Cell. “OtherOS” объясняется в следующих разделах.
ОС на протяжении своего жизненного цикла будет обращаться ко многим модулям, некоторые из них будут обладать большими привилегиями, чем другие. Sony создала свою ОС таким образом, чтобы модули работали под тремя уровнями привилегий Cell:
Уровень 2: естественно, зарезервирован для ядра, привилегированной программы, также известной как lv2 или “супервизор”. Ядро абстрагирует гипервизор, поэтому программы третьего уровня не имеют прямого доступа с нему. Ядро предоставляет функции многопоточности для PPU и SPU. В конечном счете, ядро загружает модули из пользовательского пространства.
Уровень 3: на это уровне работают остальные программы, включая игры и визуальная оболочка (пространство пользователя). Эти плебеи подчиняются воле ядра для связи с железом консоли, и они не могут породить новый процесс или программу в одностороннем порядке.
6.4. Носители информации
С учетом всего сказанного выше, где хранятся все эти данные? С точки зрения обычного пользователя, есть только два видимых средства: диски Blu-ray для игр и жесткий диск для сохранений. Есть еще несколько, и сейчас мы рассмотрим каждый из них!
6.4.1. Cell BootROM
Оказывается, что производители спрятали внутри Cell маленький ROM, в котором хранится “защищенный” загрузчик (boot-loader). IBM дает это пространство, чтобы избавить любую компанию (не только Sony) от необходимости вручную применять обфускацию для защиты своего загрузочного кода, поскольку готовые компоненты не всегда готовы к конкретным потребностям.
Поскольку эта часть уже физически защищена обфускацией, её не нужно шифровать. Таким образом, он идеально подходит для первоначального загрузчика (first-stage boot-loader) (который не может быть зашифрован), и PlayStation 3 хранит свой ранний этап загрузки именно там.
6.4.2. Флеш-память NAND или NOR
Помните о тех 256 МБ флэш-памяти NAND, о которых я кратко упоминал ранее? Здесь находится бóльшая часть операционной системы. Так было до тех пор, пока в конце 2007 года Sony не выпустила модель CECHH, заменив 256 МБ NAND на ничтожные 16 МБ NOR. Как следствие, некоторые файлы пришлось перенести в другое место. Для простоты давайте сначала посмотрим, что хранят эти чипы [51] :
CoreOS: первая половина операционной системы. В основном она состоит из дополнительных загрузчиков, которые продолжат процесс загрузки и в конечном итоге загрузят вторую половину ОС (GameOS). CoreOS дает доступ к меню восстановления (Recovery Menu), альтернативной оболочке, содержащую утилиты обслуживания, которые пользователи могут использовать для (попытки) ремонта своей консоли.
Уникальные ID: подобно IDStorage в PSP, они используются консолью для управления защищенным оборудованием, таким как привод Blu-ray; или компанией Sony для аутентификации консоли на своих онлайн-серверах (ключ IDPS).
Элементы безопасности: некоторые программы зависят от них для выполнения операций безопасности. Например, фильмы Blu-ray с DRM проверяют блок под названием Virtual Table Rights Management (VTRM). Sony также хранит специальные инструменты и записи для внесения в черный список сертификатов безопасности, которые были скомпрометированы в прошлом.
Из-за большего объема флэш-памяти NAND такие модели также хранят оставшуюся часть ОС (GameOS или devflash ). Сюда входит:
Визуальная оболочка (Visual Shell, VSH): продолжение фирменного интерфейса PSP, которое также включает в себя кучу модулей (плагинов) и ассетов.
Эмуляторы: вышеупомянутые программы, позволяющие PS3 запускать игры от PS1, PS2 или PSP. Конкретный загружаемый эмулятор PS2 зависит от ревизии консоли (имеет ли она полное железо PS2, частичное или вообще не использует железо предыдущей консоли).
Библиотеки среды выполнения: программы, разработанные с помощью SDK от Sony, динамически связываются с набором библиотек, которые хранятся в этой части.
Проигрыватель Blu-ray: программы, обеспечивающие взаимодействие с приводом Blu-ray и декодирование фильмов.
Системные ассеты: например, это шрифты и сертификаты, от которых зависит работа двоичных программ.
Как будто этого было мало, но консоли с NAND также содержат другие данные, такие как xRegistry (коллекция сетевых настроек, учетных записей PlayStation Network и список устройств Bluetooth), ещё больше инструментов и записей для возврата сертификатов; и загрузчик для OtherOS (действительно интересная часть, о которой мы поговорим подробнее в следующих параграфах).
6.4.3. Жесткий диск
Дебютный 2,5-дюймовый жесткий диск объемом от 20 до 500 Гб (по мере выпуска новых версий) обеспечивает постоянное хранение следующих данных:
Пользовательский контент: включая сохранения игр, трофеи и другие данные, связанные с пользователями.
Игровые ассеты: игры могут копировать файлы с оптического диска на жесткий диск, чтобы улучшить время загрузки. ОС рассматривает их как “игровые данные”.
Кэш: отдельный раздел размером 2 ГБ доступен для игр для временного хранения (в случае, если им недостаточно объема основной оперативной памяти).
Системы с NOR, однако, также хранят GameOS на жестком диске. Как следствие, каждый раз, когда пользователь меняет жесткий диск, консоль запрашивает файл обновления для переустановки GameOS на диск. Как бы то ни было, системы ни с NOR, ни с NAND не загружаются без жесткого диска.
Некоторые пользовательские данные можно сохранить с помощью USB-накопителя, а затем при необходимости перенести на другую консоль. Однако этот процесс переформатирует новую консоль перед копированием старых данных.
6.4.4. eMMC
Довольно любопытно, что если пользователь решит установить жесткий диск в модель eMMC, консоль перенесет все пользовательские данные с памяти eMMC на новый жесткий диск. Как следствие, пользователь может полностью использовать жесткий диск, хотя пустое место в eMMC теперь остается незанятым.
6.5. Процесс загрузки
Итак, используя все предыдущие знания, вы узнаете, как загружается система. И это довольно сложный процесс, скажу я вам. Причина проста: Sony не хочет, чтобы вы возились с их железом или ПО. Поэтому они создали множество уровней обфускации и шифрования, чтобы помешать вам взломать систему и загрузить свой собственный код (и, возможно, отказаться от этой затеи и продолжать покупать игры / фильмы / прочее медиа). Но, как покажет история, произошло совершенно обратное.
В следующем разделе я опишу, что делает эта консоль после нажатия кнопки питания. Обратите внимание, что этот процесс радикально изменился только один раз (после того, как хакеры взломали его). Итак, для простоты мы начнем с “оригинального” процесса загрузки (реализованного до версии системы 3.60 ) [54] [55] [56] :
Отдельный чип на материнской плате (Syscon) активируется и выполняет инструкции из внутреннего ROM. Потом он отправляет “кольцо конфигурации” в Cell через SPI (последовательное соединение), которое инициализирует процессор и деактивирует восемь SPU. Затем, он переключает линию питания и дает жизнь Cell.
Вектор сброса PPU в Cell указывает на его скрытый ROM, в котором хранятся процедуры поиска и расшифровки bootldr из флэш-памяти. Потом расшифрованный фрагмент загружается блок SPU в режиме изоляции.
appldr расшифровывает и загружает vsh (визуальную оболочку) и другие зависимости. vsh позже позволит пользователю загрузить игру.
isoldr расшифровывает и загружает модули, которые будут работать в третьем SPU в изолированном модуле. Эти модули критически важны для безопасности и выполняют множество криптографических функций на протяжении всего жизненного цикла консоли. Следовательно, третий SPU зарезервирован для функций безопасности, и игры не могут его использовать (для игр остается только шесть SPU).
6.5.1. Измененный процесс загрузки
6.6. Визуальная оболочка
Успели устать от всей этой теории? Что-ж, позвольте мне переключиться на то, что на самом деле может увидеть каждый: Визуальная оболочка.
XMB в PSP (2004) Разрешение 480×272
XMB в PS3 (2006) Разрешение 1920×1080
Хоть пользователи PSP и найдут много что знакомого, но Sony добавила новый набор приложений, использующих потенциал Cell, RSX и привода Blu-ray.
Многие из них связаны с мультимедиа (видеоплеер и слайд-шоу изображений), телевидением (приложения для телевидения, такие как BBC iPlayer), социальным профилем (онлайн-аватары) и онлайн-покупками (PlayStation Now, PlayStation Store и другие).
Кроме того, поскольку это домашняя консоль, которая может быть общей для нескольких пользователей, XMB поддерживает множество пользователей, где каждый может использовать свою учетную запись PlayStation Network и хранить отдельные пользовательские данные (купленные игры и сохранения).
Скриншоты интерфейса XMB
6.6.1. Одолжи мне свою PS3
Впечатляет то, что не все приложения, поставляемые в комплекте с этой консолью, преследовали потребительские цели. С появлением распределенных вычислений и возможностей Cell для проектов по изучению данных Стэнфордский университет объединил усилия с Sony, чтобы владельцы PlayStation 3 могли внести свой вклад в медицинские исследования. Результатом стало приложение Folding@home.
Folding@Home отображает работу, выполненную с момента запуска приложения
Это мое личное мнение, но мне нравится читать о проектах, которые вносят глобальный вклад, используя возможности распределенных вычислений, в отличие от бесконечных сенсационных статей о майнинге криптовалюты. Думаю, не стоит забывать, что с каждой новой мощной технологией всегда будут разрабатываться бескорыстные приложения для неё.
6.7. Несколько ОС
Функция, в двух словах, предоставляет собой менеджер разделов (XMB просто направляет пользователя для изменения размера раздела GameOS и выделения нового места для второй ОС) и кнопку для загрузки со второй ОС (благодаря загрузочным файлам OtherOS, уже установленным во флэш-памяти). Таким образом, пользователю просто нужно заполнить новый раздел системой. Многие дистрибутивы Linux (например, Ubuntu и Fedora) добавили PS3 в качестве еще одной возможной платформы для установки. Считайте это духовным преемником Linux for PS2.
С другой стороны, хоть привилегии OtherOS и могут превосходить привилегии GameOS (на уровне ядра), они не превосходят гипервизор, который все ещё находится в памяти. Таким образом, любой аппаратный доступ из OtherOS по-прежнему зависит от воли гипервизора Sony.
Так получилось, что гипервизор блокирует доступ к командным буферам RSX (препятствуя использованию шейдерных блоков и прочих компонентов для ускорения графических операций). Следовательно, в результате дистрибутив Linux прибегает к программному рендерингу (вся графика рисуется через Cell), а затем передает кадровый буфер в RSX для отображения. Разочаровывает то, что OtherOS не может использовать все возможности этой консоли. Вероятно, это было сделано для уменьшения поверхности атаки. По иронии судьбы, использование Cell в OtherOS похоже на то, как IBM/Toshiba/Sony, возможно, изначально представляли себе PS3!
Разделив судьбу Folding@home, OtherOS в конечном итоге была удалена в последующем обновлении, но по другим причинам (в основном, связанных с безопасностью). Вскоре после этого OtherOS была неофициально восстановлена благодаря программным эксплойтам и усилиям по обратной разработке.
В настоящее время OtherOS доступна, если пользователь устанавливает кастомную прошивку. Подробнее об этом я рассказываю в разделе «Борьба с пиратством и хоумбрю» (часть 4).
6.8. Обновляемость
В заключительной части этого длинного раздела поговорим о возможностях обновления GameOS.
Файлы PUP распространялись через официальный сайт Sony, помощника по обновлению XMB или находились в содержимом диска с игрой (все игры содержат файл PUP, отражающий версию SDK, для которой они разработаны). Поскольку модели с флэш-памятью NAND содержат всего 256 МБ и хранят там всю ОС, Sony никогда не выпускала файлы обновлений размером более 256 МБ.
Источники
Ввод / вывод:
PS3 Developer Wiki Contributors, Starship2. PS3 Developer Wiki. ↩︎