Собственно я про это несколько раз писал, про отличие времени исполнения в ОЗУ ЦП, ОЗУ ПП и ПЗУ. Самая быстрая - это ПЗУ. А вот контроллер ОЗУ делит доступ к памяти между видеоадаптером и процессором. При этом у ЦП частота 8 Мгц, а у контроллера ОЗУ 6,25 Мгц, небольшая рассинхронизация. Таким образом выходит, что доступ к ОЗУ ЦП минимум за 320 нс (3T для ЦП), максимум - 960 нс (8T для ЦП). В ПП ситуация похуже - минимум 960 нс (6T), максимум - 1280 нс (8T), хотя более гладкая. Так что как-то не получается, что программа в ПП работает в 2 раза медленнее, учитывая еще предвыборку. Еще кстати частота сетевого таймера в УКНЦ не 50 Гц, а 50,08 Гц, между импульсами не 20000 мкс, а 19968 мкс, различие мизерное, но мало ли что.
Теперь несколько слов про тайминги, которые появились в эмуляторе УКНЦ. Сами тайминги взяты из архива эмулятора PDP-11 на Forth. Там в каталоге pdpemu есть файл 1806VM2.TIM, а сами смещения в этой таблице расписаны в файле pdpbeg.f, конкретные времена по командам - файл pdpinstr.f. В этом архиве есть файлик readme.txt с контактной информацией, но я с автором не связывался. Кстати в этом эмуляторе было кое-что по особенностям исполнения команд, которое подтвердилось на реальных тестах, но которое не отражено в техническом описании на процессор 1801ВМ2.
Отличия состоят в разности исполнения словных и байтовых команд MOV, MOVB, CLR, CLRB, MFPS. Словные команды MOV и CLR для dst исполняют только цикл записи, а вот байтовые команды MOVB, CLRB, MFPS для dst в памяти производят цикл чтение-пауза-вывод. Это практически подтвердилось на реальной УКНЦ.



Ответить с цитированием
