- БК-0010 в FPGA by AlexFreed/svofski
- [+] Старые сообщения (41)
-
? anonymous - 18.12.2010 03:33
Еще подсказка: у контроллера ОЗУ нет средств задержать выход процессора на шину и обмен с иным устройством, есть средства только растянуть цикл доступа в собственный массив памяти, а вывод изображения/регенерация происходят за буфером данных (2х589ИР1 в БК0010 или 2х555ИР23 в 11й) - т.е. если ДОЗУ откликается без waitstate'ов, процессор теряет время только на линии задержки, образованной схемой выравнивания входных сигналов по тактовой частоте (D11/D8.2 по схеме БК0011М), схемой формирования задержки сигналов чтения и записи (D1.2-D7.1 и D1.4 по схеме БК0011М), ну и собственным микрокодом. Разместив весь тест в адресах ДОЗУ мы получим задержки только от вышеупомянутых узлов.
-
? Александр Тишин (Sandro)@ - 18.12.2010 03:55
Ну да, естественно. На "голову" цикла, то есть запрос процессора, контроллер никак повлиять не может. Всё, что он может - это выдать данные и поставить RPLY. 1-37 делает это по жёсткой циклограмме, поэтому в БК-0010 процессор получает данные строго раз в 4 цикла (если успеет запросить). Отсюда времена исполнения команд, кратные 4 циклам.
И отсюда моё недоумение про времена на ДВК-1. Если циклограмма (в тактах) та же, то почему такие числа?
Про дополнительное ОЗУ: да, так и есть. Поэтому я и говорил про факторизацию, при исполнении на устройстве с регулируемой задержкой памяти можно вычислить затраты на каждый этап исполнения команды микрокодом в тактах, и обойтись без возни с осциллографом/логическим анализатором.
Мне интересно эмулировать не просто машину, а машину, сделанную вокруг корректно эмулируемого процессора. Жёстко забитые времена исполнения команд тут не катят ...
-
? Александр Тишин (Sandro)@ - 18.12.2010 04:00
То есть, я писал сейчас не про дополнительное (статическое) ОЗУ, а про родную динамику в первую очередь. Меня это озадачивает!!! Откуда у ДВК-1 13 с половиной циклов?
-
? anonymous - 18.12.2010 04:07
Да, тут не помешала бы схема процессора и таблица его микрокода... Интересно, они где-нибудь сохранились ^^?
"Голову" цикла можно рулить сигналом DMGI, если процессор не главный в системе (PA0, PA1 != +5v). Если очень приспичит, то можно и такую спаять схемку на макетке...
-
? anonymous - 18.12.2010 04:15
Вдруг подумалось: а всегда ли таймер процессора считает абсолютную частоту? Т.е. не частота ли секвенсора микрокода на него внутри подается? В процессоре М6, например, тактовая на чипы процессора "придерживается" в определенных местах...
-
? Александр Тишин (Sandro)@ - 18.12.2010 04:19
Спаять-то ладно, как тестировать? Нужно же получить для всех возможных опкодов диаграммы зависимостей от каждого доступа в память, причём в зависимости от задержки "головы" и "хвоста" в пределах до 5 тактов хотя бы. То есть, нужен какой-то автоматизированный стенд на FPGA, руками такое делать - проще убиться веником.
-
? Александр Тишин (Sandro)@ - 18.12.2010 04:22
Интересный вопрос про частоту и секвенсор. Но думаю, таки реальная. Использующих таймер программ было не так уж мало, и вроде по измерениям всегда получалось, что его частота счёта - F/128, и никаких гвоздей.
-
? anonymous - 18.12.2010 04:39
У процессора могут иметь место микропрограммы ожидания не привязанные к тактовой, как в сериях секционных PDP-11-совместимых МПК 583 и 588 - там быстродействие обеспечивается за счет внутренних только задержек, а тактовая используется для формирования циклов шины, и то, в некоторых реализациях схемы только, в "штатном" варианте по ОСТ все обеспечивается именно быстродействием вентилей кристаллов.
-
? Александр Тишин (Sandro)@ - 18.12.2010 04:44
Могут, сразу NMos 6502 вспоминается, как коммерчески успешный пример. Но без того самого FPGA-стенда с переключением частоты ...
Сдохнешь такие вещи руками ловить.
-
? anonymous - 18.12.2010 05:02
Кстати, циклы регенерации у ВП1-119 активизируются по тактовому входу, асинхронному по отношению с тактовой процессора, а у ВП1-030 и -013 - по внутреннему счетчику. Из ОСТ на ВП1-030:
「Счетчик адресов регенерации включает делитель тактовой частоты (разряды 0..6) и счетчик адресов (разряды 7..13). В режиме регенерации содержимое разрядов 7..13 через мультиплексор адресов поступает на выводы а0..а6 и является адресом регенерации.」
「УОЗУ производит регенерацию информации в памяти динамического типа по принципу один цикл регенерации по одному адресу строки в течение 15.6 мкс. Полная регенерация информации в памяти по всем адресам происходит за 2 мкс. Кроме того, в блок синхронизации введена схема подсинхронизации запуска текущего цикла регенерации к окончанию цикла обмена информацией. В случае отсутствия циклов обмена с памятью в течение 8 мкс после получения блоком синхронизации запроса на регенерацию очередной цикл регенерации производится принудително, без подсинхронизации.」
-
? anonymous - 18.12.2010 05:04
"за 2 мс", а не 2 мкс.
-
? anonymous - 18.12.2010 16:16
「PS: Может, заодно вавку выкладывать для загрузки по аудиокабелю? Мне это не сложно, только объём архива возрастёт.」 - А чем сделать какой-нибудь ogg или mp3 из кода? Что-то когда был ажиотаж вокруг таких утилит, я не заинтересовался, т.к. "чистых" БКшек у меня нет, а сейчас не находятся... Тогда на музейных БКшках, не тронутых доработками, можно запустить будет.
-
? anonymous - 18.12.2010 19:01
Записал в 573РФ3 на адрес 0120000 код, разворачивающий программку в ОЗУ с адреса 01000 и передающий на нее управление, вернул, естественно, работу по ЕМТ, проверил образ ПЗУшки на эмуляторе Брухиса, там дает 11.99 для регистровой адресации, доеду до музея-клуба - потыкаю ее в реальные десятки...
-
? Александр Тишин (Sandro)@ - 18.12.2010 22:09
Я где-то в сети видел похожую программу, но на самом деле я же могу и из эмулятора записать через CF50, а потом бинаризовать в редакторе. Идея насчёт ogg/mp3 мне не нравится - это же форматы сжатия с потерями. Как бы не вышло, что 8 бит wav в зипе меньше занимает.
Спасибо, посмотреть на результаты было бы интересно.
-
? anonymous - 19.12.2010 19:37
Не в конкретном формате дело, ну пусть .важ будет, главное, чтоб коробочку для загрузки спаять было просто, например из плеера какого-нибудь.
До музея доеду завтра - посмотрим, что выйдет.
-
? anonymous - 20.12.2010 20:00
Исполнение на 3МГц БК0010Ш
instruction addressing mode 0 1 2 3 4 5 6 7
sob 20.0
clr 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
com 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
inc 12.01 28.01 28.01 36.0 28.0 36.0 36.0 44.0
dec 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
neg 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
adc 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
sbc 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
tst 12.0 24.0 24.0 32.01 24.0 32.0 32.0 40.01
ror 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.0
rol 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
asr 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
asl 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
swab 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
xor 12.0 32.0 32.0 40.01 32.01 40.0 40.0 48.01
mtps 24.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
mfps 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
instruction addressing mode 0 1 2 3 4 5 6 7
sob 20.0
clr 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
com 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
inc 12.01 28.01 28.01 36.0 28.0 36.0 36.0 44.0
dec 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
neg 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
adc 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
sbc 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
tst 12.0 24.0 24.0 32.01 24.0 32.0 32.0 40.01
ror 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.0
rol 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
asr 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
asl 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
swab 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
xor 12.0 32.0 32.0 40.01 32.01 40.0 40.0 48.01
mtps 24.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
mfps 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
instruction addressing mode 0 1 2 3 4 5 6 7
sob 20.0
clr 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
com 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
inc 12.01 28.01 28.01 36.0 28.0 36.0 36.0 44.0
dec 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
neg 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
adc 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
sbc 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
tst 12.0 24.0 24.0 32.01 24.0 32.0 32.0 40.01
ror 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.0
rol 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
asr 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
asl 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
swab 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
xor 12.0 32.0 32.0 40.01 32.01 40.0 40.0 48.01
mtps 24.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
mfps 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
instruction addressing mode 0 1 2 3 4 5 6 7
sob 20.0
clr 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
com 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
inc 12.01 28.01 28.01 36.0 28.0 36.0 36.0 44.0
dec 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
neg 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
adc 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
sbc 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
tst 12.0 24.0 24.0 32.01 24.0 32.0 32.0 40.01
ror 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.0
rol 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
asr 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
asl 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
swab 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
xor 12.0 32.0 32.0 40.01 32.01 40.0 40.0 48.01
mtps 24.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
mfps 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
instruction addressing mode 0 1 2 3 4 5 6 7
sob 20.0
clr 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
com 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
inc 12.01 28.01 28.01 36.0 28.0 36.0 36.0 44.0
dec 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
neg 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
adc 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
sbc 12.01 28.01 28.01 36.0 28.0 36.01 36.0 44.0
tst 12.0 24.0 24.0 32.01 24.0 32.0 32.0 40.01
ror 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.0
rol 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.01
asr 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
asl 12.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
swab 12.0 28.0 28.0 36.01 28.0 36.0 36.0 44.01
xor 12.0 32.0 32.0 40.01 32.01 40.0 40.0 48.01
mtps 24.0 28.0 28.0 36.0 28.0 36.0 36.0 44.0
mfps 12.0 28.0 28.0 36.01 28.01 36.0 36.0 44.01
-
? anonymous - 20.12.2010 20:01
хм, копи/паста сглючила, с чужого компа пишу.
-
? Александр Тишин (Sandro)@ - 20.12.2010 23:58
anonymous, огромное спасибо!
Какие интересные числа. Хотя они в общем-то совпадают с измерениями Зальцмана, но ...
MTPS показывает неожиданные величины - мало того, что для режимов с памятью она показывает времянки для цикла R-M-W, а не как TST, так ещё и регистровый вариант выбивается из общей схемы.
И таки да, похоже, что CLR и MFPS зачем-то читают свой аргумент. А иначе - откуда такие времянки? Жаль, забыл SXT добавить.
В общем, ясно, что следующий этап - добивать тест до полного.
-
? anonymous - 21.12.2010 07:08
На счет mfps не знаю, может оно ждет окончания работы каких-то внутренних узлов перед изъятием статуса, а вот про clr - вспоминается реализация в KDT11, где запись циклом чтения предворяется, с умыслом запустить логику прерывания по ошибке магистрали, отсутствующую в микрокоде самого процессора, из-за чего много проблем у разработчиков железа на нем с доступом к регистрам устройств, а в ядрах ОС, для него собираемых, прерывание по 4 вектору откладывается на 1 инструкцию (например, в RT11 после каждого обращения к регистрам, существование которых под вопросом для загрузчика и/или ядра, вставляется nop, на котором и трапнется по ошибке шины машинка на KDT11).
-
? Александр Тишин (Sandro)@ - 21.12.2010 07:40
anonymous, так ведь нестандартно себя ведёт именно mTps, а не mFps. Я даже с перепугу код проверил - всё нормально, 1064XX
Насчёт CLR: вроде как у ВМ1 такой проблемы нет, ошибку шины он ловит сам. А команду вроде бы поправили в ВМ2, он только пишет.
-
? anonymous - 21.12.2010 08:59
Да, это я уже спросонья... А MTPS также может тратить время на какие-то "догонялки" во внутренних цепях - писать для этого код в какую-либо внутреннюю ячейку с целью запустить затем механизм обновления статуса как после выполнения обычной команды с реальным операдом, это уже дебри микрокода внутренние, если зациклить MTPS Rx, то оно только команду читает из памяти, на шине псевдооперандов, тормозящих выпонение, не появляется.
- << Форум