vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2018-01-22 08:37 pm

Микро-БЭСМ: план разработки

Год назад я закончил разработку процессора микро-БЭСМ. Проект не получил никакого резонанса в социуме, тем не менее надо будет когда-нибудь довести его до реализации в железе. К примеру на плате DE10-Lite с чипом Altera MAX 10. Получится нечто вроде Arduino, но с системой команд типа БЭСМ-6.



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

План следующий.
1. Создать ассемблер , который бы работал под Линуксом и понимал системы команд 64-битного режима и 48-битного (бэсм6).
2. Переписать имеющийся комплексный тест на новый ассемблер.
3. Разбить огромный комплексный тест на отдельные составляющие, для упрощения тестирования и модификации.
4. Поправить архитектуру: перенести бит режима бэсм6 и биты защиты в таблицу страниц (регистры приписки).
5. Поправить соответствующие тесты.
6. Изменить процессор (RTL) нужным образом.
7. Изменить микрокод. Поправить тесты микрокода.
8. Изменить внешнюю шину (RTL) так, чтобы она стала совместимой с реализацией на FPGA.
9. Добавить интерфейс к внешней памяти RAM. На плате DE10-Lite её как раз 8 мегабайт.
10. Переделать контроллер прерываний.
11. Добавить периферийные устройства: внешние кнопочки, светодиоды и UART.
12. Запустить на реальной плате.

Как заработает, дальше набор внешних устройств можно расширять: SD-карточка, графический дисплей, SPI, PWM и т.д. Параллельно неплохо бы еще сделать софтверный симулятор на основе SIMH: сильно помогает в отладке софта.
x86128: (Default)

[personal profile] x86128 2018-01-23 10:29 am (UTC)(link)
План следующий.
1. Создать ассемблер , который бы работал под Линуксом и понимал системы команд 64-битного режима и 48-битного (бэсм6).
2. Переписать имеющийся комплексный тест на новый ассемблер.

А где можно посмотреть "правильный" синтаксис этого ассемблера. Я пока разбирался с БЕМШ насчитал аж 3 диалекта (если можно так сказать). И как будет изменяться синтаксис этого ассемблера, если будет ассемблироваться программа для БЭСМ-6? Каков формат HEX файла, который должен выдавать ассемблер?

Может стоит за основу взять самый популярный вариант современно синтаксиса ассемблера и добавить только мнемоники от БЭСМ? Мнемоники в английском варианте я видел, а вот откуда они пошли от какой машины?

Нельзя ли для реализации тегированной памяти для хранения тегов использовать, например, внутреннюю память FPGA? А если её мало, то использовать не 8Мбайт, а только 1Мбайт адресуемой внешней памяти?

Если будем менять микрокод, то понадобиться еще и кроссассемблер микрокода? Есть ли пример (маленький) микрокода в виде теста? Какой объем памяти микропрограмм?