Часть УУ работает
2019-03-12 11:06МЭСМ-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
Я добавил в фазу decode автоматическое приращение счётчика команд (PC), теперь некоторые команды выполняются за один такт (vtm, utm, mtj. j+m).
Описание микроархитектуры по мере разработки постепенно образуется на странице: https://github.com/besm6/mesm6/wiki/Microarchitecture

no subject
Date: 2019-03-15 02:19 (UTC)AVX будет делаться в УУ путем условного выбора A-X или X-A в зависимости от знака операнда, и подаче 0 в качестве мантиссы операнда, и порядка сумматора в качестве порядка операнда, тогда нормализовывать вправо будет нечего.
no subject
Date: 2019-03-15 03:09 (UTC)А я пока запутался с ITA. Похоже, придётся переделать мультиплексор адресов для M[i] и M[j]. С нынешним ничего не получается.
no subject
Date: 2019-03-15 05:15 (UTC)no subject
Date: 2019-03-15 05:23 (UTC)Доделаю ITA, и после этого наверное совсем уж больших изменений не ожидается. Регистр режимов добавится и группы операций.
no subject
Date: 2019-03-23 04:04 (UTC)no subject
Date: 2019-03-23 04:44 (UTC)А мультик logisim умеет записать?
Чтобы видеть, как сигналы по проводам бегают.
no subject
Date: 2019-03-23 05:01 (UTC)Я пока делал запись с экрана только общей части "платы" с процессором.
YouTube
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-03-23 05:09 (UTC)Вот правда не знаю толи это вести как отдельный проект у себя на github (как сейчас), толи форкнуть Ваш и потом пулл-реквестом к Вам добавить папку logisim в общее дерево и wiki страничку с картинками и описанием в besm6/mesm6. Всё таки logisim модель сильно зависит от содержимого mesm_defines и microcode.v
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-03-15 05:16 (UTC)no subject
Date: 2019-03-15 07:03 (UTC)А настоящая нормализация вправо бывает после выполнения операции только на 1 разряд.
Т. к. представление мантиссы - без скрытого бита, просто в дополнительном коде, то диапазон значений мантиссы - от -1 до 1-2-40. Поэтому, например, при изменении знака числа -1 (представленного как -1*20, 4020 0000 0000 0000) сначала получается псевдопредставление 1*20, которое нормализуется на 1 разряд вправо, и выходит 0.5*21 (4050 0000 0000 0000).
no subject
Date: 2019-03-15 07:20 (UTC)Еще такой вопрос по общему алгоритму выполнения операций в АЛУ MESM6 с плавающими числами. Возможно я забегаю вперед.
Будет примерно как в IEEE754? То есть я имею ввиду порядок действий конечного автомата:
1. Защелкивание аргументов
2. Распаковка (порядки / мантиссы на регистры)
3. Отработка спец. случаев (сложение/умножение на 0, деление на 0, возможно еще что-то)
4. Выравнивание порядков
5. Отработка выхода порядков за пределы
6. Выполнение операций с мантиссой
7. Нормализация
8. Округление (регистр Y /РМР )
9. Упаковка
10. Выдача на выходной регистр АСС и РМР (Y)
no subject
Date: 2019-03-15 17:53 (UTC)Умножение я надеюсь делать с помощью аппаратного умножителя, поэтому распознавание нуля много тактов не сэкономит.
В остальном всё практически так и есть (кроме упаковки, которая тривиальна).
Оригинальный алгоритм деления я не буду пытаться воспроизводить, скопирую из эмулятора.
no subject
Date: 2019-03-18 07:34 (UTC)no subject
Date: 2019-03-18 19:30 (UTC)Попробуй для примера переписать ARX в двухтактном виде.
no subject
Date: 2019-03-18 19:34 (UTC)Когда всё заработает, можно будет подумать насчёт оптимизации.
no subject
Date: 2019-03-18 20:08 (UTC)Кстати, AAX и AOX обнуляют Y, а AEX делает Y := ACC. :) Тесты это не проверяют?
no subject
Date: 2019-03-18 21:01 (UTC)Трудность с UZA и U1A: они тоже должны ставить Y := ACC, но поскольку они выполняются в УУ, они не могут влиять на регистр Y, который находится в АУ. Может быть придётся специальный сигнал тащить в АУ для этого.
(no subject)
From:no subject
Date: 2019-03-18 21:10 (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-03-18 21:43 (UTC)Переписал: https://github.com/besm6/mesm6/commit/439921d93bd9d618ebb5ade64b38186c0e81d503
no subject
Date: 2019-03-20 05:14 (UTC)Ты у себя научился тесты запускать?
Там есть скрипт:Надо только, чтобы Altera Modelsim находился в пути. Должно получиться такое:Бесплатную версию Modelsim можно скачать и поставить отсюда: http://fpgasoftware.intel.com/?product=modelsim_ae#tabs-2
no subject
Date: 2019-03-20 17:56 (UTC)no subject
Date: 2019-03-20 18:57 (UTC)no subject
Date: 2019-03-20 21:10 (UTC)Специальный интерес представляют только команды, инкрементирующие SP.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2019-03-27 03:21 (UTC)Но тест "stack" пока не проходит: не хватает команд APX, AUX, ACX и ANX.
no subject
Date: 2019-03-28 00:24 (UTC)ACX уже почти готова, нужен только микрокод, вызывающий потом ARX; остальные 3 можно для начала просто содрать из эмулятора. Пусть выполняются в 1 такт; оптимизировать синтез будем потом.
Код для сложения/умножения с нормализацией уже есть, осталось только интегрировать.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: