vak: (Default)
[personal profile] vak
МЭСМ-6 уже проходит несколько тестов: работают команды uj, vtm, utm, mtj, vzm, v1m, j+m, vjm, vlm, utc, wtc.

Я добавил в фазу decode автоматическое приращение счётчика команд (PC), теперь некоторые команды выполняются за один такт (vtm, utm, mtj. j+m).

Описание микроархитектуры по мере разработки постепенно образуется на странице: https://github.com/besm6/mesm6/wiki/Microarchitecture

Date: 2019-03-15 05:15 (UTC)
x86128: (Default)
From: [personal profile] x86128
Ух, параллельно пробую это всё нарисовать в Logisim-evolution. Там, конечно, глобальные изменения будут болезненно вноситься, но пока есть запал продолжать.

Date: 2019-03-23 04:04 (UTC)
x86128: (Default)
From: [personal profile] x86128
Модель logisim заработала. Протестировал пока только на тесте команды UJ.

Date: 2019-03-23 05:01 (UTC)
x86128: (Default)
From: [personal profile] x86128
Сам по себе хорошо не умеет. Там вроде как есть встроенный осциллограф но заставить его работать именно с этой схемой у меня не удалось. Буду разбираться в чем причина.

Я пока делал запись с экрана только общей части "платы" с процессором.
YouTube

Date: 2019-03-23 05:16 (UTC)
x86128: (Default)
From: [personal profile] x86128
https://youtu.be/o7EftbjlXFE

Да, программа записи пропускает сигнал clk :)
Edited Date: 2019-03-23 05:18 (UTC)

Date: 2019-03-23 05:36 (UTC)
x86128: (Default)
From: [personal profile] x86128
Тут вот как раз есть над чем подумать.
Либо сделать панель на общей схеме и смотреть. Либо сделать панель внутри процессора и там смотреть.

Сейчас big picutre без эстетики такой:


Надо модули подвигать и выполнить остальные тесты - ведь наверняка там еще куча ошибок. Только в команде UJ было 2 ошибки поскольку в коде написан был селектор источника PC не в порядке значений констант в условии. Ну и ошибки в вычислении upc_next так как я срисовал с wiki а не из кода. Потом еще микрокод менялся и пришлось чуть чуть переделать секвенсер.

Date: 2019-03-23 09:40 (UTC)
x86128: (Default)
From: [personal profile] x86128
Я об этом думал. Сам Logisim хранит модель в виде xml файлов с достаточно простой структурой.
Сложность представляет алгоритм автоматического layout по поверхности. Я там понял там совсем всё не тривиально судя по активности в проектах типа nextpnr и др. для реальных ПЛИС и ASIC.

Да и особо смысла нет, так как моделирование очень медленное получается.

Date: 2019-03-24 07:53 (UTC)
x86128: (Default)
From: [personal profile] x86128
Если посмотреть внутренности xml-файла который сохраняет logisim, то там видно что провода привязаны не к пинам элементов, а к координатам.
Если бы там хранился обычный netlist то я думаю была бы уже целая куча подобных тулов.
В Digital так же привязано к координатам всё.

Date: 2019-03-23 05:09 (UTC)
x86128: (Default)
From: [personal profile] x86128
Я планирую в ближайшее время навести эстетику на внутренности CPU и разродиться в обновляемый пост на wiki с картинками компонентов схемы и роликами "интересных" участков схемы на мой взгляд.
Вот правда не знаю толи это вести как отдельный проект у себя на github (как сейчас), толи форкнуть Ваш и потом пулл-реквестом к Вам добавить папку logisim в общее дерево и wiki страничку с картинками и описанием в besm6/mesm6. Всё таки logisim модель сильно зависит от содержимого mesm_defines и microcode.v

Date: 2019-03-24 18:17 (UTC)
x86128: (Default)
From: [personal profile] x86128
Оказалось что в github wiki хранится как отдельный проект, но связанный с основным репозитарием. Форкнуть wiki нельзя. Из-за этого не сделать простым способом pull-request. Для этого приходится мейнтейнеру вручную файлы каким-то образом получать от участников и руками подкладывать.

Отдельно доступ к wiki тоже не дать... В общем, хотелось красиво как-то организовать процесс участия в wiki. Но не судьба.

Завтра (по нашему, сегодня по вашему времени) попробую заполнить ROMы в новой системе моделирования. Для это чуть чуть придется переделать питоновские скрипты конвертации jumptbl-ов и microcode.v

Схемы выглядят в Digital по аккуратней и по современней что-ли. Благо 64 бита шины можно делать :)

Заглушку на белом фоне можно тут посмотреть https://github.com/x86128/mesm6/wiki