Решение простое - явный запрет использования абстрактной модели в никогда не используемых режимах. Вряд ли запрет использования модели при задержке снятия RPLY больше 2 тактов может как-то сильно ограничить потенциальных пользователей, если учесть, что ни в одной реальной системе с процессором 1801ВМ1 задержка снятия RPLY не превышает 2 тактов.
Но проблема сложного поведения в нереальных режимах вполне может проявиться и у ВМ2, поэтому лучше заранее учесть такую возможность, поскольку эмуляция логической схемы процессора в последовательном алгоритме оказалась на практике на один - два порядка медленнее, чем необходимо для достижения моделью быстродействия оригинала, а значит - для достижения эмулятором не только адекватной точности, но и адекватной скорости работы, у абстрактной симуляции нет альтернатив.
На ПЛИС синтезируемые модели 1801ВМ1 по результатам реверса вроде же ведут себя в точности как процессор? Фантомные циклы на месте и прочее. Небольшая рассинхронизация в пределах полутакта второстепенных сигналов типа BSY/SEL не считается.
Абстрактную модель можно попытаться построить на микромашине, то есть симулировать не весь верилог, а только исполнение микрокоманд и только по фронту тактового сигнала, тогда есть шанс что оно уложится в реальное время и не надо будет строить эмуляцию поведения, которую действительно достаточно сложно формализовать.
Я уже морально созрел для написания Verilog-движка, но относительно многопоточной реализации есть некоторые сомнения. Во-первых, логично предположить, что все вычислительные потоки должны создаваться только один раз на этапе загрузки модели и усыпляться до изменения любого из сигналов в их списке зависимостей. При изменении любого сигнала - он пробуждает все потоки из своего списка зависимостей и засыпает до завершения их всех. То же рекурсивно происходит и в каждом из разбуженных потоков. Когда вся толпа разбуженных потоков отработает - обработка изменения конкретного сигнала завершится. И так каждый раз при каждом изменении какого-то сигнала.
Для одноядерного процессора это будет ГОРАЗДО медленнее, чем простой циклический перебор списка зависимостей у каждого изменившегося сигнала. Для двухъядерного процессора большого выигрыша тоже может и не быть.
Поэтому для начала, скорее всего, есть смысл сделать циклический вариант движка и лишь в дальнейшем (возможно) многопоточный вариант.
Последний раз редактировалось Patron; 29.12.2015 в 23:08.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Это мы о своём - эмуляции сложных логических схем на PC и микроконтроллерах.
Долго ли, коротко ли, но спустя месяц нуднейшей работы и кучу прогонов сотни ПЗУ-тестов - 100% точные абстрактные модели поведения ВМ1А и ВМ1Г для реальных режимов через какое-то время будут готовы.
После этого можно заняться и эмулятором микромашины.
Последний раз редактировалось Patron; 29.12.2015 в 23:06.
А теперь практический вопрос - сколько нс ( например, по сигналу "запись данных" ) достаточно 580ВВ55А для уверенной записи данных с шины ?
И еще - через сколько нс ( практически ) появляются данные на шине при чтении 580ВВ55А сигналом "чтение данных" ?
п.с. С ТО и даташитами на ИС знаком, интересна практическая сторона.
Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения [email protected]
Что-то я как-то не натыкался на реализацию Java на наших машинках.
LodeDome: http://lodedome.no-ip.com/lodedome.php - Lode Runner 2010 Game Archive. KryoFlux, FluxEngine, Gotek boards
Ищу пересылкой любые (неисправные/дефективные/некомплектные) платы и узлы корпуса Электроники-85 (МС-0585); дискеты 5,25".
По_трошки: Поиск, УКНЦ, БК0010, МС1502, П-н 128, Вектор 06Ц, C64, MAC LC475, Львов ПК-01, ДВК-3Ш (ВМ2, ВМ3, MX, MY, КСМ, КЦГД, КТлК, MY4)
Контакты: скайп: ana-sana, почта: [email protected], email: [email protected], TG: https://t.me/adesodesa
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)