PDA

Просмотр полной версии : Вечер в Музее. Аппаратные эмуляторы — вторая жизнь ретрокомпьютеров



GreyWolf
20.07.2024, 23:02
Вечер в Яндекс музее. Аппаратные эмуляторы — вторая жизнь ретрокомпьютеров и игровых приставок

Ретрокомпьютеры и игровые приставки становятся всё популярнее! Однако некоторым машинам больше 40 лет, и их количество неизбежно сокращается. Возродить исчезающие платформы можно с помощью аппаратной эмуляции.

На встрече мы рассмотрим архитектурные особенности популярных компьютеров 70-х — начала 90-х годов, обсудим современные методы аппаратной эмуляции и способы построения и отладки реплик ретрокомпьютеров с использованием интегральных микросхем программируемой логики (ПЛИС). Эта лекция Максима Власова будет интересна и профессионалам, и любителям в области микроэлектроники и системного программирования. А также — энтузиастам и всем, кто делает первые шаги в самостоятельной постройке компьютеров

https://museum.yandex.ru/event/emulators_7august

GreyWolf
24.08.2024, 12:56
Загрузил запись вечера (https://vk.com/video797413233_456239021) на VK

Titus
25.08.2024, 02:39
Не могу согласиться с определением, что одно из основных отличий программного эмулятора и аппаратного, что на программном обязательно будут какие-то дискретности, лаги, подергивания и т.д. Это все зависит исключительно от качества эмулятора и особенностей железа, на котором он реализован. Единственное его отличие - это то, что он параллельные процессы делает последовательно, и поэтому раздает железу их пакетами. Для конечного пользователя это может совершенно не быть заметным. Любой современный монитор тоже работает пакетами и с задержкой относительно CRT. Да и потактово точно программный эмулятор может эмулировать систему запросто. Все зависит от разработчика.

MaxisMSX
25.08.2024, 14:17
Не могу согласиться с определением, что одно из основных отличий программного эмулятора и аппаратного, что на программном обязательно будут какие-то дискретности, лаги, подергивания и т.д. Это все зависит исключительно от качества эмулятора и особенностей железа, на котором он реализован. Единственное его отличие - это то, что он параллельные процессы делает последовательно, и поэтому раздает железу их пакетами. Для конечного пользователя это может совершенно не быть заметным. Любой современный монитор тоже работает пакетами и с задержкой относительно CRT. Да и потактово точно программный эмулятор может эмулировать систему запросто. Все зависит от разработчика.

Добрый день! Лекция была из разряда научно-популярных. Поэтому в упрощённом виде рассказал про разницу. Действительно, программный эмулятор с оптимальным распределением процессов может тоже обеспечить потактовую эмуляцию. Вопрос в частоте тактов. Для ретрокомпов эта частота не превышает 50 МГц. По ограничениям, при аппаратной эмуляции ограничений не меньше. Например, доступ эмулятора к динамической внешней памяти ломает все модели, т.к. не хватает прокачки для эмуляуции полной асинхронности. Использовать столько асинхронных между собой банков, сколько на эмулируемом компьютере сложно, так как, например, в аркадах может применяться отдельная память и на спрайты, и на фон, и на видео аттрибуты. А внутренней памяти ПЛИС на всё не хватает.
Об этом рассказал бы по-подробнее, но совсем не было времени. И, кстати, на примере многих платформ на сегодня некоторые софтверные эмуляторы поддерживаются лучше и обеспечивают более точную эмуляцию (openMSX лучше OneChipMSX - более точно эмулируется диаграмма обращения V9938/58 к видео ОЗУ).
Сравнивая затраты по времени, например, разработка контроллера SDRAM для моего аппаратного эмулятора 9958 - 100 часов. Для софтверного OpenMSX - scheduler - примерно 60 часов.

Но! Если эмулировать более быстрое железо, то паралеллизм аппаратного эмулятора однозначно возьмёт верх (и CUDA не поможет), ПМСМ.

Titus
25.08.2024, 14:31
Но! Если эмулировать более быстрое железо, то паралеллизм аппаратного эмулятора однозначно возьмёт верх (и CUDA не поможет), ПМСМ.
Мы тут ретрокомпьютерщики скорее, а не ретроприставочники, поэтому у нас запросы поменьше, всякие Спектрумы, УКНЦ и т.д. Да даже если и Амига - все это вполне возможно эмулировать потактово точно в программных эмуляторах на современных машинках, я думаю.

^m00h^
25.08.2024, 14:35
Amiga с ppc так себе эмулируется программно, тут все же без железа не обойтись, когда уже процы будут 0.5 нм и с ии, тогда возможно да, лет через 10-20, а интереса похоже уже не будет.

MaxisMSX
25.08.2024, 15:15
Потактовая точность эмулятора - это еще и возможность (даже теоретическая) заместить оригинальную микросхему эмулятором. Предположим у нас есть супер шустрый микроконтроллер, на ARM64 на 3 ГГц. Вытаскиваем Агнус, Дениз, или, даже Лизу из платы и вставляем эмулятор в оригинальную плату. С PC/XT получилось еле-еле. А в этом случае? Нужно, чтобы время отклика, Tsetup/Thold на входе и Tdelay на выходе совпадали с оригиналом.
Думаю, будет очень сложно эмулировать железо.

- - - Добавлено - - -

Titus
25.08.2024, 16:43
Потактовая точность эмулятора - это еще и возможность (даже теоретическая) заместить оригинальную микросхему эмулятором.
Для меня потактовая эмуляция - это прежде всего возможность не держать для эмуляции любимых платформ всякие сторонние железяки на FPGA, а иметь просто компьютер, и на нем запускать и играться) Удобно и комфортно)

- - - Добавлено - - -

Другой вопрос, что потактово точных эмуляторов сейчас практически нет.
Потому что для этого нужен реверс всех чипов и желание программиста написать потактово точную эмуляцию.
От Спектрума реверса нет (реверс Z80 в процессе причесывания).
От УКНЦ реверс всех чипов есть, но потактового эмулятора еще никто не написал.
И т.д.

Кстати, сложность программного эмулятора еще и в том, что нужен не просто реверс чипов, а полное понимание их работы. Тогда как в FPGA можно просто засунуть реверс, даже не понимая всех нюансов его работы.
Понятно, что вариант, когда программно тупо симулируется работа вентилей описанная на Верилоге - это в эмулятор не засунешь, будет сверхмедленно на современных машинах.

MaxisMSX
26.08.2024, 00:40
Для меня потактовая эмуляция - это прежде всего возможность не держать для эмуляции любимых платформ всякие сторонние железяки на FPGA, а иметь просто компьютер, и на нем запускать и играться) Удобно и комфортно)

- - - Добавлено - - -

От Спектрума реверса нет (реверс Z80 в процессе причесывания).

Кстати, сложность программного эмулятора еще и в том, что нужен не просто реверс чипов, а полное понимание их работы. Тогда как в FPGA можно просто засунуть реверс, даже не понимая всех нюансов его работы.
Понятно, что вариант, когда программно тупо симулируется работа вентилей описанная на Верилоге - это в эмулятор не засунешь, будет сверхмедленно на современных машинах.

T80 проходит тест ZEXALL. Т.е. это уже почти 100% эквивалент. Во время встречи как раз говорил про то, что ранние процессоры основывались на динамическом дизайне и двухфазном тактовом сигнале. Даже, если он вырабатывается внутри, не все процессы происходят от нарастающей кромки входного тактового сигнала. Поэтому здесь главное понять как правильно эмулировать. Ещё одна проблема - внутренние шины с 3 состоянием. Сейчас такие методы невозможно применить, т.к. нет современных ПЛИС с подобной архитектурой, да и подобный дизайн не синтезируется. Т.е. netlist всё равно необходимо адаптировать.
Тем не менее, реверс на системном уровне лучше программный, т.к. можно более-менее быстро разобраться, как все работает.

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

Titus
26.08.2024, 00:58
Тем не менее, реверс на системном уровне лучше программный, т.к. можно более-менее быстро разобраться, как все работает.
Не понимаю, что такое 'реверс на системном уровне'.

Реверс - это только восстановление схемы по кристаллу. И ничего другого.

- - - Добавлено - - -


T80 проходит тест ZEXALL. Т.е. это уже почти 100% эквивалент.
Это еще не показатель. Близко к 100% функционально, это не 100%.

MaxisMSX
26.08.2024, 01:46
Не понимаю, что такое 'реверс на системном уровне'.

Реверс - это только восстановление схемы по кристаллу. И ничего другого.


А вот и нет. Есть функциональный эквивалент, например, поведенческая модель. Синтезировать её нельзя. Эта модель генерится автоматически из С++ модели. Далее по желанию. Либо сами, либо на откуп toolchain.
В большинстве случаев топологию отреверсить нельзя. Как только количество металлических слоёв больше 2, всё, приехали. Но, если прицепиться логическим анализатором и анализатором прототипа, то можно получить:
- тестовые векторы
- статистические зависимости (как запись в тот или иной порт влияет на дисперсию событий)
Затем из этих двух элементов делаем rule checker или маску проверки. И продолжаем гонять железку.
Цель - получение достаточно точной функциональной копии.

Пример1: Yamaha V9938 обратно совместим с TMS 9918. Чем эта совместимость была обеспечена? Функциональным реверсом. Топология не изучалась (т.к. не было необходимых утилит, также нарушение патентного права). Дата выхода TMS9918 - 79 год. 9938 - 1984 год. Начало работ 1982 год, т.е. через 3 года после выхода 9918.

Пример2: Yamaha YM2602 где-то 1983 год. Тоже фунциональный ревес.

Почему так? Потому что не 100% эквивалент был нужен, а примерная фунциональная обратная совместимость (также позволяет получить патентную чистоту). Видео интерфейс другой и видео память тоже.

Топологический реверс нужен чтобы из I8080A сделать кр580ик80. Да и то эта задача достаточно сложная.

Titus
27.08.2024, 13:07
А вот и нет. Есть функциональный эквивалент, например, поведенческая модель.
Хорошо, не будем спорить)
Для меня полный стопроцентный реверс не может быть без реверса кристалла) Все остальное - это приближение, наблюдая поведение 'черного ящика' извне. Даже если это приближение на 99.99%.

AlexG
27.08.2024, 13:47
Топологический реверс нужен чтобы из I8080A сделать кр580ик80. Да и то эта задача достаточно сложная.
Для него УЖЕ решена, как и некоторых других процессоров.

MaxisMSX
28.08.2024, 04:01
Хорошо, не будем спорить)
Для меня полный стопроцентный реверс не может быть без реверса кристалла) Все остальное - это приближение, наблюдая поведение 'черного ящика' извне. Даже если это приближение на 99.99%.

Согласен, что для 100% реверса необходима топология и доскональное знание особенностей техпроцесса (грубо говоря модель транзисторов). Только начиная с 2х металлических слоёв - дело затруднительное. С 4х - почти невозможное. Т.е. все современные микросхемы, вышедшие из середины 90х на 100% отреверсить нельзя, да и бессмысленно.
Например в процессорах начала 90х - первых Пентиумах, PowerPC, MIPS R4000+, Sparc используется 4х портовая память в большинстве случаев full custom design, т.е. netlist на транзисторном уровне используются проходные вентили, Dtype Latch и другие нехорошести. Т.е. даже если есть топология, реверс в синтезируемый RTL напрямую не получится. Проще взять готовую функциональную модель.

Пример из индустрии: ARM7 - не синтезируется (full custom design), ARM7S - синтезируется (semicustom design), MIPS32 синтезируется, ColdFire синтезируется. Но это только процессоры средней производительности синтезируются (обычно выпускаются fabless компаниями). Высокопроизводительные обычно нет (дизайн имеет динамическое управление по питанию на уровне регистров и TTA на транзистрорах, а также совершенно сумасшедшее управление тактовым сигналом для снижения динамического потребления).

Вывод: анализ топологии необходим и возможен, но только для сравнительно небольших микросхем (SoC до начала 90х).

Мы же все покупали и Cyrix586, и AMD486 вместо Intel, и не замечали разницы. Т.е. все программы работали. При этом и TI, и AMD, и NEXGEN не пользовались топологическим реверсом ядра Intel. Только функциональным, а какой результат!

И последнее, во всех фирмах сначала делают синхронную модель процессора (что ложится на ПЛИС), а потом разными формальными методами пытаются ускорить ее (и это уже на ПЛИС не ложится).

CodeMaster
28.08.2024, 08:57
Вместо вступления: аппаратную реализацию реверса всё же принято называть симуляцией (если это не софтядро).


Согласен, что для 100% реверса необходима топология и доскональное знание особенностей техпроцесса (грубо говоря модель транзисторов). Только начиная с 2х металлических слоёв - дело затруднительное. С 4х - почти невозможное.
Это не отменяет правильности формулировки.


все современные микросхемы, вышедшие из середины 90х
В каком плане "вышедшие", идеологически? И насколько современные, какое они имеют отношение к ретро?


реверс в синтезируемый RTL напрямую не получится.
Это ограничение имеющихся ПЛИС, а не идеалогии 100% реверса.


Высокопроизводительные обычно нет
Какое отношение они имеют к ретро?


Мы же все покупали и Cyrix586, и AMD486 вместо Intel, и не замечали разницы. Т.е. все программы работали.
Программы да (хотя не очень интересовался вопросом), если повезло с аппаратной совместимостью, а она была не 100% (насколько мне помнится до 486 включительно AMD решением правительства США получала документацию от Intel. Самостоятельная работа началась с Am5x86 и там начались проблемы совместимости).


но только для сравнительно небольших микросхем (SoC до начала 90х).
Основное направление этого форума.


разными формальными методами пытаются ускорить ее (и это уже на ПЛИС не ложится).
Только потому, что современные ПЛИС на это не заточены (ибо нет особого спроса на это направление), но это вполне возможно реализовать технологически.

GreyWolf
22.10.2024, 22:30
Максим Власов предоставил файл с презентацией (http://meteor-m.com/img/uploads/EveningYandexEmulatorsMV.pdf).