Компания
33,53
рейтинг
5 июня 2013 в 22:01

Разное → Начался реверс-инжиниринг процессора PlayStation 1: безумству храбрых поём мы песню!

Вероятно многие из вас уже слышали о проекте Visual6502 — в котором умельцы отсняли по слоям легендарный процессор 6502 (а затем и 6800), восстановили электрическую схему, и написали визуальный эмулятор процессора на JavaScript. Помимо академической ценности, это также позволяет реализовать абсолютно точный эмулятор любых компьютеров, построенных на этих процессорах.

Однако наши соотечественники решили поднять планку выше, намного выше — и начали проект по восстановлению электрической схемы процессора Playstation 1 (MIPS R3051). Этот процессор — изготовлен по намного более тонким нормам чем 6502 (~800нм против ~5000нм), содержит 3 слоя металлизации (вместо 1), и имеет бОльшую площадь (~250тыс транзисторов против 3.5тыс у 6502) — потому объем работы обещает быть по меньшей мере в 100 раз больше.

Цель проекта — создание абсолютно точного эмулятора Playstation 1.

Фотография процессора

Чтобы была понятна серьезность проблемы — приведенная фотография самого процессора (9600x9600 пикселей) по площади в 16 раз меньше той, что используется для восстановления схемы. «Большую» фотографию, созданную из 831 кадра крайне проблематично даже сшить одним куском, потому схему восстанавливают разбив процессор на несколько зон.

Внимание, кликайте осторожно — JPEG на 39 Мб тяжеловат даже для настольных компьютеров!
Update: Двойная осторожность, Firefox-у при открытии этой картинки у меня удалось 1 раз скрэшить Windows 8.
Update: Онлайн тайловый просмотрщик от pehat


Что сейчас делается

3 приставки передали мне, я открыл процессор и отснял первый слой металлизации. Сейчас начата работа по «векторизации» первого слоя металлизации — этим занимается Bakari и ogamespec.



Когда векторизация будет закончена (и будет видно, что на первом слое больше смотреть ничего не нужно) — первый слой будет стравлен в плавиковой кислоте, и будет отснят второй и затем третий слои металлизации.

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

Тем не менее — работы ожидается очень много — и дополнительные руки очень не помешают. Если вам этот проект интересен, вы усидчивы, и у вашего компьютера больше 2Гб памяти — вы также можете поучаствовать (пишите на форум).

Проект на данный момент обитает на форуме emu-russia.ru. Там же и соседние проекты по реверс-инжинирингу NES (Денди) и другие. А если интересен сам процесс, то видео с процессом восстановления схемы 6502 и других микросхем можно увидеть тут.
Update: Сайт проекта — psxdev.ru
Автор: @BarsMonster
Zeptobars
рейтинг 33,53
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Комментарии (96)

  • +1
    Вопрос только зачем? В игры можно и на эмуляторах поиграть. Также интересует, не подадут ли Nintendo и Sony в суд? Как они это любят делать…
    • +23
      Бесспорно, в игры можно и на эмуляторах поиграть. Вопрос в том, какая у этих эмуляторов точность эмуляции?
      Цель проекта — создание абсолютно точного эмулятора Playstation 1.

      • 0
        Сложнее всего сэмулировать аналоговую часть.

        Даже если добиться полного соответствия цифрового потока до ЦАПов, звук будет всё равно другой.
        А уж про эмуляцию аналоговых искажений видео (особенности цветокодирования PAL, цветовые и геометрические искажения ЭЛТ) и не заикаюсь.
        • 0
          ?! И на фига тут процессор восстанавливать?
          • 0
            Процессор необходимо, но не достаточно
            • +11
              Зачем? Берём программируемую логи и за месяц-другой не напрягаясь делает точную копию. Это цифровая техника. Её поведение детерминировано и описано — ничего не мешает сделать функциональный аналог по совершенно иной технологии.
              • 0
                Зачем?
                Картинка выглядит неестественно на FullHD LCD-мониторе. Авторы эмуляторов таки пытаются воссоздать ламповый ЭЛТ, применяя весьма сложные фильтры. Зачем-то это нужно?

                Моя посылка была в том, что цифровая часть уже эмулируется достаточно хорошо, чтобы в 99% случаев не было разницы, а вот аналоговая мало развивается (задача больше творческая, неформальная)

                Берём программируемую логи и за месяц-другой не напрягаясь
                А есть исходники? Не только процессорного ядра, но и видеокарты.
                Кроме того, у PLM может просто не хватить ёмкости.
                • +1
                  Не только процессорного ядра, но и видеокарты.

                  Похоже, на плате два крупных чипа: CPU 8606 и чипсет 8561. Я поням ваше недоумение: почему начали с CPU, о котором больше информации. Для точной эмуляции нужно реверсить оба чипа.
      • +5
        Эм, просветите человека далекого от тонкостей эмуляции, что дает абсолютно точный эмулятор? Как это скажется на запускаемых играх?
        • +5
          APE escape english не идет ни на одном эмуляторе. Первая игрушка для dual shock.
          • +1
            Она видимо на какой-то из ранних версий ассемблера написана. На всех приставках запускалась?
            • +2
              Скачать можно с рутрекера, я заливал. Английскую только. Запускалась она только на нечипованых приставках. Там идет заставка но ни один джойстик не работает. Дальше меню — вобщем никак.
        • +2
          Зачем нужна точная эмуляция хорошо написал byuu. Есть перевод его статьи emulate-su.livejournal.com/663058.html
    • +5
      Вопрос только зачем?

      Хороший вопрос, но грустный. Не стоит слишком на нём зацикливаться. Анекдот про «я и так жую бананы и ничего не делаю», надеюсь, напоминаит не надо.
    • 0
      Не думаю, что цель именно в самих играх. Тут скорее следующие факторы:
      1) Им нравится это занятие.
      2) Получить кучу знаний и новый опыт.
      3) Получить определенную известность и популярность.
      4) Доказать себе, что: «мы можем».
      5) Отработать технологию, чтобы позже реализовать эмуляторы других устройств.
      6) В случае успеха, с подобным опытом, перед ребятами вероятнее всего откроются дороги в крупные компании.
      7) Иные причины.
  • +3
    Очень. Удачи вам в этом нелегком деле. Насколько я понимаю это исключительно for fun, ибо эмуляторов PS1 хватает? Кстати, интересно, как будут обстоять дела с эмуляцией и взломом PS4/XBOX1, все-таки переход на x86 архитектуру должен упростить процесс работы в разы, и нас будет ждать GTA V на PC раньше официального релиза, хехе.
    • 0
      Насчет зачем — ответ выше.

      Даже с Playstation 2 уже не реально: На Playstation 1 объем данных уже сейчас с трудом подъемен для современных компьютеров и софта, Playstation 2 еще на 1.5-2 порядка сложнее. А PS4/XBOX — вообще за гранью возможного без лишнего миллиарда долларов

      • +2
        Векторизация ручная? Как дела обстоят с автоматической трассировкой подобных фото высокого разрешения? Про PS4/XBOX1 завел речь исключительно в силу смены архитектуры на родную игровым PC.
        • 0
          Насколько я понимаю ручная — но тут лучше подскажут виновники торжества, когда подойдут.
          Для автомата как я понимаю нужно было бы намного более высокое разрешение и качество снимков.
        • +1
          Были попытки автоматической трассировки у ребят с Visual6502, но одно небольшое пятнышко — и всё коту под хвост.

          visual6502.org/docs/6502_in_action_14_web.pdf

          Там в самом конце есть примеры.

          Поэтому мы не стали заморачиваться с этим )
          • +2
            Ну тут исключительно тюнинг. На примерах из статьи можно четко сформулировать критерии для отсечения проблемных мест + принудительная ортогонализация. В любом случае режим полуавтоматический, но профит на объемных схемах должен быть хороший.
          • +5
            Сделать капчу по типу reCaptcha — разбить на кусочки и подсовывать юзерам, чтобы соединяли полоски :) Для валидации давать два куска — один решенный, другой — нет.
            • +2
              Конгениально!!!
      • +1
        Интереса ради, там выше фрагмент 2-4 оттрассирован? Updated: Да, это он, надо было дочитать топик на emu-russia.
        • 0
          Что за «фрагмент 2-4»? Updated: Ну вот, уже не актуально :-)
      • 0
        На Playstation 1 объем данных уже сейчас с трудом подъемен для современных компьютеров и софта, Playstation 2 еще на 1.5-2 порядка сложнее.

        Замахнусь на лавры К.О.: распределённые вычисления, не?
        • 0
          Да, проблемы безусловно решаемые, в том числе и этим путем.
          И терабайт данных переработать можно, но уже стандартным софтом будет не обойтись — а значит затраты времени (=денег) будут существенно выше.
    • +2
      Ну фиг знает. Даже для Xbox 1 (именно первый, который до 360) выпущено всего 2 почти неработоспособных эмулятора, а там обычный пентиум 3 и видео от нвидия.
      • +1
        Да, но для 360 не было ни одного (для Xbox на самом деле был один эмулятор cxbx и его дельфовый порт dxbx). Все-таки, согласитесь, что родная архитектура упрощает работу. И, да, там действительно запускается от силы пара-тройка игр, вы правы. Интересно на чем затык вышел. По-моему, особых проблем нынче не должно быть с этим.
  • +1
    Шикарное начало. Удачи вам, ребята! У меня тоже есть PS One, еще играю иногда. Игр хороших много осталось, а вот приставки выпускать перестали.
  • +1
    А есть ли смысл в создании эмулятора ps1 (кроме интереса), если 5 лет назад эмуляторы ps1 на том железе выдавали стабильный fps?
    • +2
      Ну тут дело принципа, насколько я понял. Сомневаюсь, что существующие эмули на 100% покрывают особенности процессора, пускай оно и юзабельно в итоге, по сути, писалось в формате костылей. Ребята идут в чистую, с нуля и к идеальному решению.
  • +1
    Когда ожидается работа с PS2? :)
    Я вот год назад и раньше пытался запустить Gran Turismo на эмуляторе PS2 — все без толку :(
    • 0
      К сожалению, не судьба :-)
    • НЛО прилетело и опубликовало эту надпись здесь
  • +8
    Думаю, все же основная цель — получение удовольствия от процесса, слишком дорогой ценой достигается точная эмуляция :)
  • +15
    А потом ррраз — и все три приставки на процессорах разных ревизий…
  • +10
    PSOne… Много для неё эмулов уже разношерстных… Ребята, сделали бы вы подобное для Panasonic 3DO — вам бы памятник поставили нерукотворный.

    3DO'шка — это, пожалуй, единственная консоль на которую не сыщешь нормальный адекватный эмулятор днём с огнём, а тот, что есть и вроде бы работает — безбожно бажный.

    Так бы вы вернули к жизни целое поколение олдскульных геймеров. У самого приставка эта уже 15 лет лежит полу-живая с оставшейся парой дисков — иногда подключаю и пускаю скупую слезу, а если дело доходит до Wing Commander 3 (от которого не хватает одного из дисков), то и не одну скупую, а реву навзрыд…
    • 0
      У меня тоже Panasonic 3DO, но я не грущу. Качаю образы игр с торрентов и на болваночки пишу.
      Главное правильно записать. Инструкции можно найти в сети.
  • –3
    Зачем?! Ну, взяли FPGA и сделали точную копию. А потом при желании ещё и чип по описанию заказать можно Но восстанавливать топологию-то зачем?! Сейчас по тому техпроцессу чипы делать будет сложно и дорого!
    • +1
      А описание то есть, чтобы заказать?)
      • 0
        На этот процессор нет описания?
        • 0
          Описание вот и восстанавливают.
  • 0
    Скажите, а для чего понадобилось сшивать фотку 9600x9600, если ее совершенно невозможно смотреть в удобоваримом виде?
    • +1
      Почему невозможно — вполне возможно, скачать файл на компьютер и посмотреть в обычном просмотрщике картинок. Или рискнуть — и кликнуть.
      Изначально — это был тестовый снимок в низком разрешении, прежде чем делать «боевой» снимок.
      • +1
        Как совет, сохранить ее в bmp и в архив, памяти на распаковку jpg уж точно не нужно будет системе. Останется только кеш, который с тормозами, но откроется)
      • +10
        А если завтра понадобится сфотографировать плату в четырехкратном увеличении? Если не понадобится, то хорошо, фотка – не самоцель. Но Вы задели во мне тонкие эстетические чувства, поэтому я тут на скорую руку порезал этого гиганта на тайлики, да позаимствовал немного кода из песочницы Яндекс.Карт, да положил это все на свой хостинг. Пользуйтесь на здоровье, да и поделитесь с хабраюзверями – из браузера все-таки будет чуточку удобнее и быстрее.
        • +1
          Готово, спасибо :-)
    • +2
      Отлично все смотрится. Памяти надо больше просто.
    • +1
      Опера под Линуксом легко открыла лишь призадумавшись секунд на 5.
    • 0
      Хром, макось. Грузил долго, но смотреть можно абсолютно нормально.
      • 0
        Хром, макось, быстро и просто. (16 Gb)
        • 0
          Это у меня интернет медленный.
  • 0
    >А PS4/XBOX — вообще за гранью возможного без лишнего миллиарда долларов
    а почему? там же обычный х86 процессор, который всякими VmWAre эмулируется даже сейчас на ура.
    • 0
      Эмулируется не само железо, а инструкции, которые оно исполняет. Уровни эмуляции разные. Так-то и для PS1 эмуляторов вагон и маленькая тележка.
      • 0
        >а инструкции, которые оно исполняет.
        поясните для тех кто совсем не понимает.
        • +2
          Тайминги выполнения комманд, особенности конвеера, etc.
    • +1
      VMware не эмулирует, а виртуализует, это разные вещи. Эмулируются в какой-то степени только инструкции, выполняемые в режиме ядра, а инструкции, выполняемые в режиме пользователя, исполняются как есть.

      Но действительно, если там x86, то вполне можно и виртуализовать. Тайминги сейчас не должны быть проблемой (особенно если использовать идентичное по характеристикам аппаратное обеспечение), запустил операционку — скорее всего можно играть в игры. Вот если там DRM с железом связан, то это проблема, надо DRM эмулировать.
  • 0
    BarsMonster, у вас отменные посты. Как фанат именно первой PlayStation обеими руками поддерживаю затею.
    Может, когда-нибудь её можно будет напечатать на 3D-принтере, а электронику — на специализированном, но тоже персональном устройстве.
    И поиграть на своей собственной PS-ке в Tenchu. Было бы очень круто.
    • +2
      Если просто поиграть, то в таком случае проще купить оригинальную. Благо их полно на том же eBay и других борохолках.
  • +1
    А чем делаются такие снимки?
  • +1
    Пылинки и грязь на изображениях не мешают работе?
    • +3
      не мешают, если не закрывают области с плотной интеграцией
  • +1
    Мне вот не совсем понятно — восстановили топологию, из нее восстановили структуру на вентильном уровне. Что дальше? Моделировать работу процессора на таком уровне — FPS будет меньше нуля. Восстанавливать с нуля систему команд с учетом всех задержек?
    • 0
      Они за FPS и не говорят, я так понимаю, что это больше PoC, чем попытка выйти на играбельный эмуль.
    • +2
      Как вариант: по топологии восстановить принципиальную схему, которую уже заливать в FPGA, либо да, по модели восстановить функционал с точностью, недоступной нынешним эмуляторам.
    • +5
      В эмуляции первой плейстейшн есть немало пробелов:

      Неизвестно назначение регистров тайминга и прочих регистров конфигруации, которые инициализируются при загрузке BIOS (так называемые "delay"-регистры). Неизвестно назначение непонятного регистра 0xFFFE0130 (или как-то так), есть предположения что он управляет работой кеша. Точные алгоритмы декодирования MDEC тоже неизвестны (таблица квантизации в частности). Есть вопросы по root counters (хотя edgbla провёл исследование, всё равно интересно как они на самом деле работают). Много пробелов в системном сопроцессоре (CP0). Ну и естественно GTE.

      Как минимум цель работы — закрыть эти пробелы, чтобы все эмуляторы смогли работать без хаков.
      • +2
        Т.е. на этот процессор нет полного даташита? А как программисты тогда софт писали?
      • 0
        Или я чего-то не понимаю, или кто-то что-то путает. Вот я взял и скачал даташит на MIPS R3051. Последняя ревизия 1994 года. Вполне нормальное описание процессора. Временные диаграммы, регистры — всё есть. Никаких неясностей. CP0 нормально описан. Что и логично. Раз под него массово софт писали, значит есть доступные описания.
        Все вопросы по инициализации и регистрам скорее относятся к чипсету, а не к процессору и процессору тут не поможет — нужно искать даташит на чипсет. И сдаётся мне, что намного проще, дешевле и правильнее будет.
        Там стоял некий LSI LR333x0 чип. На первый взгляд Гугель говорит, что даташиты на это семейство доступны. Я категорически не понимаю в чём проблема!
        • 0
          Подозреваю, что проблема в следующем: вероятно, для приставки использовались специальные заказные микросхемы, которые имели некоторые отличия, которые не описаны в документации, имеющейся в свободном доступе.
          • +4
            Михаил написал что там R3051, на самом деле этот процессор кастомный, который только основан на R3051 (некоторые источники утверждают что это был R3000A). Выводы процессора и внутренняя начинка заточены исключительно под нужды PSX. В состав процессора кроме непосредственно (измененного опять же) ядра входят:
            — системный сопроцессор 2 (GTE)
            — MDEC (декодер MPEG видео)
            — контроллер DMA (8 каналов)
            — контроллер прерываний
            — контролер DRAM
            — контроллер шины (интерфейс для ROM BIOS / GPU)
            — контроллер SIO (последовательный интерфейс похожий на RS-232)
            — контроллер PIO (порт расширений для дополнительных устройств)
            — Root counters (4 аппаратных счетчика, один работает на частоте ядра)
            — встроенные кеш инструкций и кеш данных (кеш данных с возможностью прямого доступа)
  • +23
    Всем привет! Мой первый пост в этой секте :)

    Ответа на вопрос «Зачем?» целых два:
    1. Не всё же водку бухать.
    2. Союзпечать поднял цены на сборники японских кроссвордов и мы решили найти альтернативные способы их получения.

    На самом деле просто интересно узнать подробные детали работы внутренних узлов процессора )
  • +1
    Скажите пожалуйста, а за чей счет банкет? Оборудование, я так понимаю, не дешевое нужно. А коммерческая выгода — сомнительна.
    • +2
      Оборудование для съемки и вскрытия чипа — у меня уже давно есть, т.к. самому интересно было.
      А дальше только руки нужны и графический редактор.

      Так что денежных затрат как таковых нет, но нужно огромное количество времени.
      • 0
        А что за оборудование, можете описать? Крайне интересно.
        • 0
          Обычный китайский металлографический микроскоп, с 5mp USB камерой.
          Чипы — травятся в серной кислоте.
          • 0
            Однако. Даже не представлял, что все так доступно. А можете более подробно описать процесс стравливания слоев?
            • 0
              Бросаем кристалл в раствор плавиковой кислоты в воде, или в буферный травитель (плавиковая + фторид аммония) — каждую минуту достаем и смотрим под микроскопом — готово или нужно дальше травить.

              Так можно только небольшое количество слоев металлизации травить, неравномерность травления будет накапливаться. Когда много слоев металлизации — остается только шлифовать (это я пока не умею).
              • +1
                Шлифовка очевидно делается аналогично шлифовке зеркал для микроскопа (специальными суспензиями). Там насколько мне известно (используя нож Фуко) можно шлифовать с точностью до нанометров.
                Имея в наличии электрогравир (дремель) процесс можно значительно ускорить.
                Я бы попробовал, если бы у меня был надлежащий микроскоп, чтобы проверять качество шлифовки.
    • +3
      Оборудование предоставил habrahabr.ru/users/BarsMonster/, а коммерческой выгоды не ищем. Мы и так ужо работаем)
  • +3
    Векторизацию можно автоматизировать утилитой degate www.degate.org/ и github.com/nitram2342/degate
  • +2
    Молодцы, интересный проект! Только труд это титанический. Будет обидно если через пару лет Sony сама выпустит подобный эмулятор. Вообще, в подобных проектах самое обидное то, что ищешь ответы на загадки, придуманные другими людьми, ответы, которые, по сути, уже существуют.

    Думаю, это будет очень интересно. В молодости когда кодил под Z80 (инета тогда не было!), в руки попал журнал, где рассказывалось, что с расширенным набором регистров Z80 можно работать используя не только команды загрузки 16-разрядных регистров, но и любые иные команды, если использовать соответствующие префиксы. Фича эта не была нигде документирована, в ассемблере для неё мнемоники не были предусмотрены! :) И выглядело это примерно так: DEFB #DD; LD L,#13. В реальности константа 13 загружалась в младший бит регистра IX.

    В игрушках подобный код тоже использовался, поэтому все эмуляторы ZX Spectrum знают об этих командах. В случае же PS1, всё, конечно, намного сложнее и элементарным подбором кода ничего не найдёшь.

    Так что могу только пожелать удачи в вашем нелёгком труде! Ещё раз, молодцы!
  • –2
    Что там мелочиться, надо на уровне атомов эмулировать! Глядишь и выйдет побочным продуктом Матрица.
  • –5
    идея достойна уважения — но другой вопрос — ЗАЧЕМ? Ведь сейчас проще на Arduino или RaspPi сделать софт эмулятор.
    • +6
      Да. На arduino.
  • +1
    Для тех кто подписался на мой канал Youtube, сейчас я стримлю на платформе Twitch.tv

    twitch.tv/ogamespec
    • –4
      Вы бы лучше хранили это дело на D:, а не на C:, чтобы если придётся форматировать, не потерять всю работу.
      • 0
        У меня один физический диск, а вообще я уже давно ничего не храню на дисках — всё хранится в интернете. Так надежнее.
  • 0
    Неплохо было бы еще и amiga 1200 разобрать на куски. Включая чипсеты.
    • 0
      Амига отличная система, но я её в живую даже не видел. Соответственно никаких впечатлений от неё нет, а поэтому и мотивации что-либо делать тоже :)
  • 0
    Запущен сайт и выложены некоторые материалы.

    psxdev.ru/
  • +4
    Докопались до стандартных ячеек:
    image
    image
    image
    image image
    image
    wiki.psxdev.ru/
  • +3
    Начался реверс схем процессора:

    image
    • +1
      Сколько же это работы…
      • 0
        Схем подобного размера в процессоре порядка 400 (на глазок). Но у нас распределенный реверс идёт, активно работают два человека и подключился третий. Если делать командой из 10 человек, то нужно разобрать по 30-40 схем каждому, а это примерно месяц (если не напрягаться)

        По времени одна схема занимает один вечер после работы :) (при наличии стандартных ячеек, мы ещё не все ячейки идентифицировали).

        wiki.psxdev.ru/index.php/CPU_CELLS

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное