Процессор из 90-х ожил в чипе размером с ноготь: как энтузиаст воскрешает 486-й
Проект под названием 486Tang стал необычным примером того, как старые архитектуры могут обрести новую жизнь на современных платформах. Его автору удалось реализовать процессор уровня 486SX-20 на миниатюрной плате ПЛИС Sipeed Tang Console 138K, которая по размерам сопоставима с обычной банковской картой. И хотя на первый взгляд подобная задача кажется невыполнимой, результат показал, что даже компактные FPGA способны воссоздать сложные архитектуры, если грамотно обойти технические ограничения.
Как возникла идея
Основой для 486Tang послужил проект ao486 MiSTer PC — известный порт ядра 486 для FPGA. Однако он изначально создавался для ПЛИС Altera, а здесь речь шла о Gowin GW5A, куда менее мощном чипе. Автор честно подчёркивает, что это первая попытка запустить ao486 на FPGA, не относящейся к линейке Altera, и она потребовала серьёзной адаптации.
Главным испытанием стала работа с памятью. Если на MiSTer применялась DDR3, то на Tang доступна только SDRAM с 16-битной шиной. Процессору 486 нужен 32-битный доступ, поэтому разработчик реализовал так называемый "double-pumping": логика SDRAM работает в два раза быстрее системного такта, что позволяет обрабатывать 32-битные операции за один цикл CPU.
Решение проблемы с дисками
Ещё одним отличием от MiSTer стало отсутствие быстрого ARM HPS-интерфейса, который обычно берёт на себя функции чтения образов дисков. Tang лишён такой связки, поэтому пришлось задействовать SD-карту как основное хранилище. FPGA напрямую обращается к ней, а необходимые BIOS-файлы и IDE-данные загружаются в момент старта. Для этого был создан собственный загрузчик, который берёт первые 128 КБ с карты и подготавливает систему: BIOS, VGA BIOS, IDE-идентификаторы и CMOS-настройки.
Оптимизация архитектуры
Меньшие ресурсы FPGA привели к необходимости глубокой оптимизации. Пришлось убирать длинные логические пути за счёт вставки дополнительных регистров и конвейерных стадий, а также дублировать цепи, чтобы снизить нагрузку на отдельные сигналы. Отдельное внимание потребовалось при работе с инструкциями переменной длины: здесь разработчик переработал блок выборки команд, чтобы снизить задержки.
Значимым изменением стала модификация TLB. Если в оригинале он был полностью ассоциативным, то теперь использована схема с четырьмя путями (4-way set associative). Это решение уменьшило нагрузку на FPGA и позволило поднять частоты.
В итоге проведённые улучшения дали заметный эффект: производительность выросла примерно на 35%, и система достигла уровня процессора Intel 486SX-20, что соответствует заявленной цели.
Сравнение решений
| Характеристика | MiSTer (ao486) | Tang (486Tang) |
| Тип памяти | DDR3, 32-бит | SDRAM, 16-бит |
| Работа с дисками | ARM HPS | SD-карта напрямую |
| Структура TLB | Полностью ассоциативный | 4-way set associative |
| Оптимизация | Меньше ограничений | Пайплайнинг, репликация |
| Производительность | Выше из-за ресурсов | 486SX-20 после оптимизации |
Советы шаг за шагом
-
Перед началом работы важно оценить ограничения конкретной FPGA — частота, объём памяти и доступные блоки.
-
Для узкой шины памяти используйте техники вроде double-pumping, чтобы компенсировать разрядность.
-
При отсутствии выделенного контроллера дисков можно использовать SD-карту и написать собственный загрузчик.
-
Критические пути лучше разрывать дополнительными регистрами, а нагрузку на сигналы — снижать за счёт репликации.
-
Если ресурсы ограничены, отдайте приоритет увеличению тактовой частоты, а не внедрению сложных кэшей.
Ошибка → Последствие → Альтернатива
-
Ошибка: попытка оставить полностью ассоциативный TLB.
Последствие: избыточная нагрузка на FPGA и задержки.
Альтернатива: 4-way set associative. -
Ошибка: работа с SD-картой через MCU.
Последствие: низкая скорость и зависания.
Альтернатива: прямое обращение FPGA к карте. -
Ошибка: игнорирование критических путей.
Последствие: падение тактовой частоты.
Альтернатива: пайплайнинг и дублирование цепей.
А что если…
Что было бы, если бы автор взял FPGA покрупнее? Возможно, удалось бы реализовать уровень Pentium и задействовать более сложные механизмы кэширования. Но тогда проект потерял бы свою главную фишку — компактность и минимализм.
Плюсы и минусы
| Плюсы проекта | Минусы проекта |
| Компактная плата | Ограниченные ресурсы FPGA |
| Прямое обращение к SD-карте | Нет ARM-сопроцессора |
| Рост производительности | Требуется сложная оптимизация |
| Достижение уровня 486SX-20 | Зависимость от частоты памяти |
FAQ
Как выбрать FPGA для подобных проектов?
Нужно учитывать соотношение ресурсов и задач: для эмуляции 486 достаточно Tang, но для Pentium потребуется более мощная плата.
Сколько стоит Sipeed Tang Console 138K?
Цена варьируется, но обычно находится в диапазоне 40-60 долларов, что делает её доступной для энтузиастов.
Что лучше для проектов ретро-эмуляции — MiSTer или Tang?
MiSTer предлагает больше мощности и стабильности, но Tang выигрывает в цене и компактности.
Мифы и правда
-
Миф: SDRAM на 16 бит не подходит для эмуляции 486.
Правда: с double-pumping она вполне справляется. -
Миф: без ARM-сопроцессора невозможно работать с дисками.
Правда: SD-карта решает задачу напрямую. -
Миф: только крупные FPGA подходят для таких проектов.
Правда: грамотная оптимизация позволяет использовать даже малые чипы.
3 интересных факта
• Первые процессоры 486SX не имели встроенного математического сопроцессора, что делало их дешевле.
• Многие современные FPGA по производительности превосходят оригинальные процессоры 90-х.
• Ao486 используется в MiSTer как основа для запуска Windows 95 и старых DOS-игр.
Исторический контекст
-
1989 год: Intel выпускает первый 486DX.
-
1991 год: появляется упрощённый 486SX без FPU.
-
2014 год: создаётся проект ao486 для FPGA.
-
2025 год: представлен 486Tang, доказывающий, что архитектура 486 жива и сегодня.
Подписывайтесь на NewsInfo.Ru