Если бы внимательно читали ветку, то знали бы - то, что реализовано в ВМ1 - сложно назвать микрокодом, в отличии от ВМ2
https://zx-pk.ru/threads/23978-tsifr...l=1#post993768
Изменилась, часть полей поменяла назначение, изменилось количество стадий (предекодер появился), ну и это все та же ПЛМ, понятие микрокод чоень условно.
Блок это блок, логический, предоставляет пару дополнительных регистров и счетчик. Но работает (управляется) микропрограммой. И может управлять АЛУ совместно с микропрограммой, при выполнении операций расширенной арифметики.
выходит, что ВМ1 и ВМ2 по устройству микропрограммного управления организованы одинаково и расширенная арифметика - микропрограммная, а не аппаратная.
Кстати - видел формат микропрограмм в котором в каждой команде в явном виде указан адрес следующей микропрограммы. Не зная этого, глядя на схему тоже может показаться.
Пофиксил я баг с предвыборкой. Оказалось что оно достаточно критично с скорости шины,
100МГц процессор на SDRAM будет на эту проблему попадать, фикс необходим.
; В процессоре 1801ВМ2 есть ошибка микрокода, наблюдается при следующих условиях:
; - выполняется двухадресная команда
; - источник имеет метод адресации @PC (17 восьмеричное)
; - приемник не имеет индекс, использующий PC (x7)
; - приемник не использует дополнительные слова инструкции (E(Rn), @E(Rn))
; - предвыборка из памяти достаточно медленная (много тактов до RPLY)
; и не успевает завершиться до момента обработки выборки источника
;
; В момент выборки источника происходит передача адреса из регистра PC
; в регистр адреса для выполнения транзакции чтения @PC, при этом PC выдается
; на шину X АЛУ, код операции АЛУ равен X (просто транслировать аргумент X
; на выход) с обратной записью результата в PC/PC1/PC2 (одновременно). При
; этом PC2 получает старое значение PC (PC2 уже был обновлен при запуске
; предыдущей предвыборки PC+2). Если в этот момент предыдущая предвыборка
; на завершена, микрокод не будет рестартовать предвыборку кодом ЧК (io_cmd,
; чтение команды) и извлечение последующих команд будет происходить по
; неверному отстающему значению PC2. Если же предвыборка успела завершиться
; до модификации PC, то микрокод рестартует новую превыборку по PC2 с
; признаком ЧК и далее исполнение команд будет корректны
;
; Предложен и реализован фикс, при выполнении двухадресных команд с методом
; адресации источника @PC и не использовании PC в приемнике, а также
; отсутствии дополнительных слов в инструкции, блокировать запись в PC2,
; тем самым позволяя корректно продолжать предвыборку. Метод более простой
; и предсказуемый с ограниченной областью действия, по сравнению с модификацией
; микрокода и рестартом предвыборки по признаку ЧК (io_rcd)
Может быть позже попробую модифицировать микрокод чтобы он явно рестартовал
предвыборку при адресации источника @PC в двухадресных командах. Запретить запись
PC2 в микрокоде достаточно сложно - придется PC куда-то предварительно копировать
или менять адрес получателя результата АЛУ.
В теме "Расчёт точного времени выполнения команд различными процессорами архитектуры PDP-11" начиная со страницы 19 обсуждался глюк с адресацией @PC. Много различных тестов.
P.S. Свои рисунки восстановил.
Картинки, увы, все еще недоступны. Читал я ту тему, не очень информативно, подробности выискивать приходится, многие ссылки протухшие. А можно все обнаруженные проблемные инструкции в одном месте собрать? Я бы свое исправление потестировал. Или ничего кроме двухадресных с источником @PC не получилось обнаружить?
Картинки я восстанавливал только с 19-й по 29-ю страницы, ссылки на облако Mail.RU. По данному глюку только адресация @PC в качестве источника в двухадресных командах. По поводу информативности - проблема была обнаружена и исследовалась методом научного тыка с построением различных гипотез. А из команд - есть команда с кодом 030 в режиме HALT. Что она делает описано в моем руководстве по процессору. Естественно алгоритм её исполнения также исследовался методом научного тыка, но вроде всё сходится.
В процессоре 1806ВМ2 этих глюков уже нет.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)