Важная информация

User Tag List

Страница 85 из 86 ПерваяПервая ... 818283848586 ПоследняяПоследняя
Показано с 841 по 850 из 859

Тема: PDP-11 на FPGA

  1. #841
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На новый механизм переведена RTS. RT-11 и XXDP грузятся, тесты от PDP-11/03 и тест памяти - ок, за исключением той же проблемы из https://zx-pk.ru/threads/28952-pdp-1...=1#post1185969 . Ну, она пока не сильно мешает, так что - пока разборки с ней отложены

    Была сделана некоторая оптимизация выполнения (с учётом полученного опыта) RTI/RTT/RTS. Попробую тоже сделать с цепочкой TRAP.

  2. #841
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #842
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде как ок, но надо тесты погонять. Чуть позже

  4. #843
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тесты - ок, начинаю двигаться по прерванному - JMP, SWAB, CLR. Возможно, с определённой оглядкой на операции с двумя операндами. Как подопытного кролика - возьму BIC (наоболее универсальный вариант по алгоритму).

    Подход такой же, как и с RTI/RTT/RTS - расписываются микрооперации, учитывается порядок и возможность параллельного выполнения. Учитывая, что могу читать в паралель source и destinations регистры

    Вот при написании предыдущего предложения заметил интересное - после написания "source и" и начала написания de браузер подсказал мне - destination? с предложением нажать таб Похоже, MS и в Edge начала добавлять intellisense

    - - - Добавлено - - -

    Как пример - как выглядит описание для RTS:
    Код:
        -- -------------------------------------------------------------------------
        --
        -- RTS reg
        --   SrcReg - reg, DestReg - SP
        --
        -- -------------------------------------------------------------------------
    
        -- чтение (DestReg) будет выполнено до микрошага addrRTSa
        -- PC <- SrcReg | чтение  @Destreg | SrcReg <-  @Destreg
        mrom(addrRTSa)  := MRomEntry(                                                              -- 016
            NextAddr                       => addrRTSz
          , isGet                          => Yes -- читаем
          , isGetAtDestReg                 => Yes -- читаем (DestReg)
          , isPC_SrcReg                    => Yes -- PC     <- SrcReg
          , isSrcReg_AtDestReg             => Yes -- SrcReg <- (DestReg)
          , isDataSpaceUsing               => Yes -- адрес возврата в стеке - в D пространстве (для процессоров с поддержкой I-D)
        );
        -- post operation (в том числе DestReg <- DestReg+2)
        mrom(addrRTSz) := MRomEntry(                                                               -- 017
            NextAddr                       => addrNextOp
          , isPostRTS                      => Yes -- пост операции для RTS
          , isCommonPrefetch               => Yes -- пост операции - общий набор
        );
    Небольшая расшифровка, скажем, для isPC_SrcReg => Yes -- PC <- (SrcReg)
    На этапе выполнения по тактовому импульсу сработает сохранение считанного содержимого SrcReg в PC (если, конечно, выполняется не оператор RTS PC - тогда данное действие будет заблокировано, хотя ничего страшного не будет, если не блокировать).

    Всё, ушёл спать, дальше уже с утра буду развлекаться
    Последний раз редактировалось Hunta; 24.09.2023 в 01:14.

  5. #844
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Умею я, блин, ошибки сажать..
    Предыстория Начал пилить JMP-SWAB-CLR под новую схему. Расписал микрооперации. Посмотрел. Понял, что пока ничего в голову на предмет повтороного использования расписанного не приходит, поэтому для начала решил в лоб реализовать, а там посмотрим. Ок. Нарисовал код под SWAB reg. Не работает. То есть в принципе код отрабатывает, но неправильно. Почесал почесуемое. Слегка подправил. И...

    Вообще перестало работать!

    Ну, я же знаю, то сначала надо свои ошибки искать. Вот с примерно вчерашних часов четырёх (дня) искал Ошибка тупая Поправил, посмотрим, что будет на выходе

    - - - Добавлено - - -

    Да, после фикса ошибки стало лучше - RT-11 грузится и даже работает.
    На очереди, как обычно, XXDP с тестами.

    И, технически, теперь я могу подцепить другие одноадресные команды в варианте работы с регистрами.

    Но для начала сделаю остальные режимы адресации - и для JMP-CLR. И, возможно, так же что-то подпилю с учётом возможного опыта

  6. #845
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оптимизация работы с регистрами (теперь и запись и чтение идут быстрее), что позволит удалить некоторые шаги, связанные с ожиданием записи в регистры (ну, по мере переделки) - с новым мехазмом выполнение данная проблема прям в глаза полезла.

    И вроде как нашёл причину ошибки https://zx-pk.ru/threads/28952-pdp-1...=1#post1185969, по крайне мере мой тестовый код на ней не спотыкается. Но как обычно - надо проверить тестами XXDP.

    Так что - сейчас синтезируется и посмотрим на тесты. Некоторые сомнения вызывает RTS (после оптимизации), так что вполне возможно, что после тестов будет поиска ошибки

    - - - Добавлено - - -

    В целом - ситуация лучше, но есть ещё ошибки. Ищу...

  7. #846
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ошибка обнуления регистра найдена и пофиксина - результат невнимательной доработки кода под новый подход

    Дальше вылезла ошибка XOR. Сначала подумал, что из-за более быстрой работы регистров (и не сохранение результата ALU), но оказалось - изменение из разряда - "а вот так лучше". Не в этот раз. Вернул - XOR заработал

    Дальше вылезла ошибка yellow stack trap - сложно было понять, что именно она. Думаю над исправлением...

    - - - Добавлено - - -

    Сбой в тестах прерывани (VKAD). Бум разбираться и фиксить

    - - - Добавлено - - -

    Аха, для начала накосячил в JMP reg - прерывание не отработывается
    Последний раз редактировалось Hunta; 27.09.2023 в 00:00.

  8. #847
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все тупости и корявости были найдены и пофиксины, теперь снова все тесты PDP-11/03 проходят.
    Попробую слегка оптимизировать (см ускорение работы с регистрами), если получится - хорошо, если нет - верну как было и в любом случае - двинусь дальше

  9. #848
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Из хороших новостей - в новом "микрокоде" убраны последние задержки (для завершения чтения и записи регистров), доставшиеся в наследство от PDP-2011 - тесты PDP-11/03 проходят без проблем.

    Из плохий - решил собрать для проверки PDP-11/04 и.. зависание на ровном месте - RTI не отрабатывает. Причём - отличий в работе RTI между /03 и /04 я (пока) не вижу, а внешне - после завершения микрокода RTI /03 читает следующую инструкцию, а /04 не читает, видит, естественно, ещё RTI, начинает её выполнять, но вот по завершению что делать дальше - не знает - нет у неё перехода (естественно) дальше.. Начал воевать вчера вечером, пока ясности нет...

  10. #849
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я тут уже третий день хожу под вирусом, которые мелкие притащили плюс вчера был "жаркий" день на работе - голова протестует против вдумчивого думанья, так что слегка попричёсывал код (убрал последние следы задержек - были в описании констант, не использовались - так что, как-то неаккуратненько, доктор) а потом для проверки концепии перевёл на микрокод не только SWAB reg, но и CLR, COM, INC, DEC, NET. ADC, SBC, ROR, ROL, ASR, ASL - пока все тоже для варианта - Op reg, так как данное изменение - тупое редактирование описаний этих команд и никакого нового микрокода. Ну и сказалось то, что управление ALU идёт давно уже из "PLM". Синтезирую, посмотрю - как заработаю, пофиксю ошибки, потом погоняю тесты.

    Потом, скорее всего, допилю микрокод для TST. Его ещё не допили из-за следующих факторв:
    - все одноадресные команды можно разбить на три группы (только читают (пример - TST), только пишут (CLR), читают-что-то делают-пишут)
    - внутрянка сейчас работает так, что нужные регистры для выполнения команды читаются ещё на этапе пред-декодинга
    - поэтому, несмотря на то, что для, скажем, CLR - формально регистр читать не требуется - вся дальнейшая работа идёт как у читай-пиши команд. И поэтому в варианте - работа с регистрами - микрокод один и тот же.
    - а вот для TST надо блокировать запись, что, в принципе, делается элементарно, но (по крайне мере пока) - отдельной веткой микрокода. Которую ещё надо написать. А у нас - ВИРУС

    - - - Добавлено - - -

    RT-11 загрузилась без проблем, формальный тест прошёл, на очереди XXDP

    - - - Добавлено - - -

    Занимательно Падает тест на такой последовательности:
    Код:
    	JMP	ODD+1
    ..
    
    ODD:	DEC PC
    ...
    Последовательность, конечно, специфическая (и по докам PDP-11/03 игнорит нечётное обращение), но, получается, что преддекодинг берёт не то значение PC
    Будем посмотреть

    Ну а тесты инструкций (включая EIS) проходят беЗпроблем

    - - - Добавлено - - -

    Нашёлся ещё один тест (это был VKAD, а нашёлся VKAL), где проверяется такая же последовательность. Остальные проходят.

    - - - Добавлено - - -

    Хороший, кстати, пример того, что, в принципе, все регистры у PDP-11 равны, но некоторые "равнее" других.
    Особенно "ровный" - R7 aka PC.
    Чуть менее "ровный" - R6 aka SP

    - - - Добавлено - - -

    И ещё одна мысль.
    Судя по этой последовательности - посл JMP ODD+1 нечётность PC СОХРАНЯЕТСЯ Хоть команды и будут выбираться по чётному (сброшен бит 0) адресу Но когда PC будет использоваться как источник или приёмник в команде - бит 0 участвует По крайне мере - на PDP-11/03

    - - - Добавлено - - -

    Чёт мне надоело для запуска тестов грузить XXDP, а потом ещё ждать, пока она найдёт файл.. Уже начинаю больше задумываться на добавку в FullODT прямой работы с ФС, хотя бы с ФС RT-11 - благо она - не бином RSX

    - - - Добавлено - - -

    Поведение PC поправил. VKAD и VKAL проходят. Начинаю гонять тесты сначала

    - - - Добавлено - - -

    Все тесты PDP-11/03 проходят.

    Нуууу... почти все - одна из редакций VKAC - VKACB0 - некоторое время назад начала выпендриваться. Но! Её более новая редакция - VKACC1 - как часы. Если учесть, что не проходит тест прерываемости FIS (а эти инструкии пока никаким боком в новом механизме) - пока забил. Когда совсем будет нечего делать (скажем - очередной ступор) - может и подумая над его поведением

    - - - Добавлено - - -

    Жжжж.. Про байтовые варианты забыл. Так что на очереди они.

    - - - Добавлено - - -

    Ещё и накосячил с реализацией байтовых вариантов Поправил, синтезируется...

    - - - Добавлено - - -

    Поправил. И второй раз попал в ситуацию, когда XXDP грузится, тесты проходят, а RT-11 падает. Ну, в прошлый раз она не падала, а говорила (через драйвер VM), что у вас ДП неправильно работает Так что - ишууууу, иде ошибка порылась..

  11. #850
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,006
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал разные варианты изменения кода - фсё равно фигВам.. Придётся всё таки лезть в код и смотреть - чего там. Проблема в том, что RT уже успевает переключиться на работу через драйвер - соотвественно - поиск проблемного места будет не тривиальный.
    И да, вчера забыл написать - падает она с сообщением "?BOOT-U-I/O error" - ещё работает загрузчик. Падает при попытке загрузки с RK11, RL11 и HX..

    - - - Добавлено - - -

    Всё, вычислил ошибку Значит - тесты её не проверяют Проблемы была (ну может что ещё есть) в CRLB reg - сбрасывала весь регистр (расширение знака?), а не только младший байт. Ок, будем пофиксить.

    - - - Добавлено - - -

    Смотрю на код - и в упор не вижу проблем. Решил для очистки совести проверить работоспобность всего остального, заблокировав новый вариант для CLRB, и, скорее всего - в этой ветки вообще старый код удалю, добавив в микрокод флаг - расширять знаковый бит младшего байта в старший байт. Так оно будет проще и меньше веток.

    - - - Добавлено - - -

    Да, проблема в CRLB

    - - - Добавлено - - -

    Переделал код на использование нового флага - а вот фиг.. Какая-то более тонкая ошибка..

    - - - Добавлено - - -

    Уф... Всё, дошло. CLRB reg - этот вариант команды ДОЛЖЕН прочитать регистр - ибо с регистрами нет работы на уровне байт.

    - - - Добавлено - - -

    Теперь RT всё устраивает. Щас формальный тест закончится и прогоню XXDP-шные тесты
    Были мысли по очередной оптимизации по результатам игр, возможно, займусь ими.

    - - - Добавлено - - -

    Тесты XXDP идут, RT-11 грузится - очередной milestone

Страница 85 из 86 ПерваяПервая ... 818283848586 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. PDP-11/83 -- дошли руки...
    от form в разделе ДВК, УКНЦ
    Ответов: 470
    Последнее: 27.04.2021, 15:22
  2. Эмуляторы PDP-11
    от form в разделе ДВК, УКНЦ
    Ответов: 99
    Последнее: 15.03.2021, 14:53
  3. посьба к ГУРУ pdp-11
    от bigral в разделе ДВК, УКНЦ
    Ответов: 11
    Последнее: 13.09.2014, 23:53
  4. PDP-11 литература
    от bigral в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 26.03.2013, 07:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •