User Tag List

Страница 118 из 273 ПерваяПервая ... 114115116117118119120121122 ... ПоследняяПоследняя
Показано с 1,171 по 1,180 из 2727

Тема: Цифровая археология: 1801 и все-все-все

  1. #1171

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    А можно ссылку на документацию на эту тему?
    Да нету нигде нормальной и полной документации на ВМ1 в открытом доступе. Я имел ввиду книжку 2 из серии МикроЭВМ под редакцией Преснухина, там программные исключения имеют более высокий приоритет в табличке, ну и мелкие опечатки есть. В моем собственноручном конспекте 1988 года по PDP-11 тоже записано что инструкции исключений имеют приоритет. Вот я почему-то и полагал что если такая инструкция загружена в регистр команд, то это может повлиять на обработку возникших внешних прерываний. Однако это не так, да и реализация такого получилась бы сложной. Хотя было бы прикольно, при возврате из прерывания не дергать стек, с восстановлением/пересохранением регистров, а сразу переходить на обработчик нового исключения, если таковое есть. Cortex-ы так умеют, например.

    Цитата Сообщение от form Посмотреть сообщение
    По идее если есть готовые асинхронные прерывания, то они выполняются перед выполнением команды, синхронные же (к каковым и относятся IOT/EMT/TRAP) по определению между собой конкурировать не могут.
    Да, именно так и происходит. Загружается код инструкции IOT/EMT/TRAP в регистр команд, в первой декодирующей микроинструкции происходит опрос блока прерыаваний, и если есть готовое асинхронное событие, то загруженная инструкция выбрасывается и начинается обработка события.
    Последний раз редактировалось Vslav; 18.02.2017 в 23:19.

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

  3. #1172

    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,850
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    289
    Поблагодарили
    233 сообщений
    Mentioned
    30 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    там программные исключения имеют более высокий приоритет
    Это скорее всего локальное понимание. Приоритет же тут как таковой, пожалуй, неуместен: синхронное прерывание немедленно возникает в момент наступления причины независимо от приоритета процессора.
    То есть если процессор принял команду прерывания к выполнению - она немедленно отработает независимо от приоритета, если же в момент когда он ее должен принять (или выполнить - не важно как назвать) есть готовое асинхронное прерывание - то оно отработает (или нет - в зависимости от приоритета) до принятия инструкции.
    Есть процессоры у которых прерывание может вклиниться в инструкцию, но это касается инструкций EIS/FPP...

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

    Есть один вариант неоднозначности с T-bit - это тоже синхронное прерывание, но здесь как раз возможны варианты как поведет себя процессор после установки бита T командой RTI. В старых процессорах (где не было команды RTT) наличие готового прерывания приводило к его выполнению. В более поздних в случае RTI с установкой бита T немедленно возникает синхронное прерывание, а по RTT дается возможность отработать асинхронное. Ну и разумеется, никто не мешает сделать свою реализацию когда делается что-то по мотивам
    Есть проц или два на которых T-bit можно установить прямой записью в PSW, но как и что там при этом получается - фиг знает
    Последний раз редактировалось form; 18.02.2017 в 23:47.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  4. #1173

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Есть один вариант неоднозначности с T-bit - это тоже синхронное прерывание
    Это уже следующий этап - разбор микрокода, похоже там RTT принудительно запускает instruction fetch, дожидается окончания и загрузки регистра инструкций, а потом специальным образом подавляет опрос блока прерывания в первой микроинструкции декодирования первой команды после возврата из прерывания/исключения. То есть, одна команда до прерывания после RTT должна отработать в любом случае, посмотрим, так ли это. По RTI я пока специальных мер не вижу, первая команда после возврата может обрабатываться обычным способом.

    Сам микрокод нечитаемый, но уже есть ясность, написал утилитку для анализа, ковыряюсь потихоньку. Там матрица с 31 входом и 34 выходами. Из входов - 16 бит это инструкция, 7 бит адрес микрооперации (всего 128 микрокоманд в блоке получается, часть не используется, как показал анализ графов), 5 бит PSW[4:0], и 3 бита с блока прерываний, вот с ними была морока, разобрались, дальше веселее.

  5. #1174

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, по поводу микрокода, я по мотивам Vslavовской проги mcode попробовал написать прогу, которая более подробно и развёрнуто даёт результаты. Но это понимания не добавило, да и что когда в точности означает в выходной 34 битной матрице не понимаю, на чём всё и застопорилось.
    vm1mca.rar
    результат работы - три вида логов.

    простой вариант


    [0x00](xxxxxxxx xxxxxxxxxxxxxxxx) -> [0x01](1111111110111101111110111110111010)

    [0x01](000xxxxx xxxxxxxxxxxxxxxx) -> [0x01](1111111110111101111110111110111010)
    [0x01](000xxxxx 0000000001000xxx) -> [0x01](1111111110111101011110111110111010)
    [0x01](000xxxxx 0000100xxx000xxx) -> [0x01](1111111110111100011110111110111010)
    [0x01](000xxxxx 10001000xxxxxxxx) -> [0x01](1111111110110100111110111110111010)
    [0x01](001xxxxx 0000000000000000) -> [0x01](1111111110100101011110111110111100)
    [0x01](001xxxxx 0000000000000001) -> [0x37](0001100111111111001000110000011100)
    [0x01](001xxxxx 0000000000000x10) -> [0x38](1001000110011101000010010100010100)
    [0x01](001xxxxx 0000000000000011) -> [0x01](1111111110100100001010111110111100)
    [0x01](001xxxxx 0000000000000100) -> [0x01](1111111110101100001010111110111100)
    [0x01](001xxxxx 0000000000000101) -> [0x37](1111111111111111111110100110011100)
    [0x01](001xxxxx xxxxxxxxxx000xxx) -> [0x47](1111111111111011111111111111111111)
    [0x01](001xxxxx 0000000000001xxx) -> [0x2f](1111110101111011100000111000011100)
    [0x01](001xxxxx xxxxxxxxxxxxxxxx) -> [0x47](1111111111111111111111111111111111)
    [0x01](001xxxxx 0000x00xxx000xxx) -> [0x01](1111111110111000001010111110111100)
    [0x01](001xxxxx 0000000001xxxxxx) -> [0x45](1111111110111010101010111110111101)
    [0x01](001xxxxx 0000000010000xxx) -> [0x50](1111011110111101011110110110111101)
    [0x01](001xxxxx 0000000010000111) -> [0x50](1111011110111001011110110110111101)
    [0x01](001xxxxx 00000000101xxxxx) -> [0x37](0001100111011111001010010100011000)
    [0x01](001xxxxx x000xx0x11000xxx) -> [0x50](0001000110011101001010010100111001)
    [0x01](001xxxxx x000xx0xxx000xxx) -> [0x50](0001000110011001001010010100111001)
    [0x01](001xxxxx x000xxxxxxxxxxxx) -> [0x45](0001111110111111011010111110111101)
    [0x01](001xxxxx x0000xxxxxxxxxxx) -> [0x7b](1111111111111101110110110110011101)
    [0x01](001xxxxx x0000xxxxx000xxx) -> [0x7b](1111111111111001110110110110011101)
    [0x01](001xxxxx 0000100xxxxxxxxx) -> [0x45](1111111110111011101010111110111101)
    [0x01](001xxxxx x0001xxxxx000xxx) -> [0x31](0001100110011101001010010100011000)
    [0x01](001xxxxx x0001xxxxx000111) -> [0x31](0001100110011001001010010100011000)
    [0x01](001xxxxx x000101111xxxxxx) -> [0x45](0001111110111111001010111110111101)
    [0x01](001xxxxx 0000110100xxxxxx) -> [0x37](0001101001011011001000110000011100)
    [0x01](001xxxxx xxxxx00xxx000xxx) -> [0x58](0001000110011101000010010100111001)
    [0x01](001xxxxx xxxxx00xxx000xxx) -> [0x58](0001000110011001000010010100111001)
    [0x01](001xxxxx xx0xxxxxxxxxxxxx) -> [0x47](0001111111111111011110111110111101)
    [0x01](001xxxxx xx0xxxxxxx000xxx) -> [0x47](0001111111111011011110111110111101)
    [0x01](001xxxxx x01xxxxxxxxxxxxx) -> [0x47](0001111111111111001110111110111101)
    [0x01](001xxxxx x01xxxxxxx000xxx) -> [0x47](0001111111111011001110111110111101)
    [0x01](001xxxxx x110xxxxxxxxxxxx) -> [0x47](0001111111111111111110111110111101)
    [0x01](001xxxxx x110xxxxxx000xxx) -> [0x47](0001111111111011111110111110111101)
    [0x01](001xxxxx xxxxxx0xxx000xxx) -> [0x52](1111000111011101101111010101111011)
    [0x01](001xxxxx xxxxxx0xxx000111) -> [0x52](1111000111011001101111010101111011)
    [0x01](001xxxxx 0111100xxxxxxxxx) -> [0x5a](0001011111111101010110110110111101)
    [0x01](001xxxxx 0111111xxxxxxxxx) -> [0x27](1111111111111111011110111110011100)
    [0x01](001xxxxx 0111111xxx000111) -> [0x27](1111111111111011011110111110011100)
    [0x01](001xxxxx 10001000xxxxxxxx) -> [0x01](1111111110110000001010111110111100)
    [0x01](001xxxxx 10001001xxxxxxxx) -> [0x01](1111111110111001001010111110111100)
    [0x01](001xxxxx 1000110100xxxxxx) -> [0x45](0001111110111011001010111110111101)
    [0x01](01xxxxxx xxxxxxxxxxxxxxxx) -> [0x1d](1111101010011011100000110110110100)
    [0x01](10xxxxxx xxxxxxxxxxxxxxxx) -> [0x13](1001100111011101111000110010111100)
    [0x01](11xxxxxx xxxxxxxxxxxxxxxx) -> [0x21](1111100100011001101000111100010100)
    где
    [src addr](mr ir) -> [dst addr](plm)
    src addr - текущий адрес ячейки микрокода,
    dst addr - куда делается переход с текущего адреса
    mr - то, что в верилоге зовётся mj, но без адреса ячейки
    [свернуть]


    продвинутый вариант


    [0x00](xxxxxxxx xxxxxxxxxxxxxxxx) -> [0x01](1111111110111101111110111110111010)
    matches:16777216
    [000-377]:[000000-177777]

    ------------------------------------------------
    [0x01](000xxxxx xxxxxxxxxxxxxxxx) -> [0x01](1111111110111101111110111110111010)
    matches:2086656
    [000-037]:[000000-000077][000110-003777][004010-004077][004110-004177]
    [004210-004277][004310-004377][004410-004477][004510-004577]
    [004610-004677][004710-103777][104400-177777]

    [0x01](000xxxxx 0000000001000xxx) -> [0x01](1111111110111101011110111110111010)
    matches:256
    [000-037]:[000100-000107]

    [0x01](000xxxxx 0000100xxx000xxx) -> [0x01](1111111110111100011110111110111010)
    matches:2048
    [000-037]:[004000-004007][004100-004107][004200-004207][004300-004307]
    [004400-004407][004500-004507][004600-004607][004700-004707]


    [0x01](000xxxxx 10001000xxxxxxxx) -> [0x01](1111111110110100111110111110111010)
    matches:8192
    [000-037]:[104000-104377]

    [0x01](001xxxxx 0000000000000000) -> [0x01](1111111110100101011110111110111100)
    matches:32
    [040-077]:[000000]

    [0x01](001xxxxx 0000000000000001) -> [0x37](0001100111111111001000110000011100)
    matches:32
    [040-077]:[000001]

    [0x01](001xxxxx 0000000000000x10) -> [0x38](1001000110011101000010010100010100)
    matches:64
    [040-077]:[000002][000006]

    [0x01](001xxxxx 0000000000000011) -> [0x01](1111111110100100001010111110111100)
    matches:32
    [040-077]:[000003]

    [0x01](001xxxxx 0000000000000100) -> [0x01](1111111110101100001010111110111100)
    matches:32
    [040-077]:[000004]

    [0x01](001xxxxx 0000000000000101) -> [0x37](1111111111111111111110100110011100)
    matches:32
    [040-077]:[000005]

    [0x01](001xxxxx xxxxxxxxxx000xxx) -> [0x47](1111111111111011111111111111111111)
    matches:4832
    [040-077]:[000007][006507][006607][007007][007107][007207][007307][007407]
    [007507][007607][007707][070007][070107][070207][070407][070507]
    [070607][070700-070707][071007][071107][071207][071307][071407]
    [071507][071607][071707][072007][072107][072207][072307][072407]
    [072507][072607][072707][073007][073107][073207][073307][073407]
    [073507][073607][073707][075007][075107][075207][075307][075407]
    [075507][075607][075707][076007][076107][076207][076307][076407]
    [076507][076607][076707][107007][107107][107207][107307][107407]
    [107507][107607][107707][170007][170107][170207][170307][170407]
    [170507][170607][170700-170707][171007][171107][171207][171307]
    [171407][171507][171607][171707][172007][172107][172207][172307]
    [172407][172507][172607][172707][173007][173107][173207][173307]
    [173407][173507][173607][173707][174007][174107][174207][174307]
    [174407][174507][174607][174700-174707][175007][175107][175207]
    [175307][175407][175507][175607][175707][176007][176107][176207]
    [176307][176407][176507][176607][176707][177007][177107][177207]
    [177307][177407][177507][177607][177707]

    [0x01](001xxxxx 0000000000001xxx) -> [0x2f](1111110101111011100000111000011100)
    matches:256
    [040-077]:[000010-000017]

    где в квадратных скобках перечисляются диапазоны входных кодов, по которым происходит переход.
    [mr]:[ir]...[ir]
    [свернуть]

    третий лог - скорее всего недостоверен, поэтому не привожу.

    Вдруг пригодится.

    Забыл добавить: адреса ячеек микрокода - инверсные относительно верилога, так гораздо понятнее.
    Последний раз редактировалось gid; 20.02.2017 в 10:20.

  6. #1175

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    что когда в точности означает в выходной 34 битной матрице
    Это я буду документировать насколько возможно подробно, а также работу микроавтомата. На сейчас очень краткое описание выходов матрицы есть в vm1_plm.v, но оно ну очень краткое. Также хочу разобраться как на уровне микрокода обрабатываются различные ситуации. В принципе декодирование команд уже разобрал, некоторые команды тоже разобрал, там по факту всего несколько цепочек получается. Всего используется примерно 70 микрокоманд из 128 теоретически возможных (адрес микрокоманды 7-битный). Моменты запуска обращения к внешней шине и установки вспомогательных битов типа WAIT/INIT и прочих тоже задокументирую, так что можно будет написать по-тактовый эмулятор базирующийся на микропрограммном автомате. Имхо, это был бы вполне точный, но гораздо менее прожорливый компромисс (чем симуляция полного HDL-описания процессора). Собственно для этого и разбираюсь и пишу документацию. Ну еще хотелось бы научится осмысленно вносить патчи в микрокод, но это очень желательно восстановить применяемую разработчиками форму записи, а чисто реверсом это сложно сделать (увы, никакой информации и исходников тех времен пока не всплыло). А просто пропатчить какую-то конкретную инструкцию уже сейчас проблем нет, при желании можно будет убрать фантомные циклы и прочие странности.
    Последний раз редактировалось Vslav; 20.02.2017 в 10:25.

  7. #1176

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    На сейчас очень краткое описание выходов матрицы есть в vm1_plm.v, но оно ну очень краткое
    Этого недостаточно. Я как раз по этому описанию пытался анализировать результат, он как раз в третьем логе получается, он с моей точки зрения - получается полная ерунда.
    Цитата Сообщение от Vslav Посмотреть сообщение
    Ну еще хотелось бы научится осмысленно вносить патчи в микрокод
    А уж мне то как хочется такую штуку.

    А вот насчёт лёгкости пропатчить, у меня есть сомнения. Я, глядя на логи, долго думал, и пришёл к выводу, что там применялись оптимизации, что-то типа карты карно, и обратный реверс функций уже невозможен. А ещё как мне кажется там делались какие-то компромиссные решения, может чтобы в транзисторный бюджет уложиться или в 34-х битный выход, не знаю. Потому что когда прослеживаешь цепочку микрокоманд, происходят какие-то с моей точки зрения не совсем логичные действия, типа переходов, которые как мне кажется ничего не делают, и можно было бы сделать проще, но тогда наверное бы не так хорошо матрица бы оптимизировалась.

  8. #1177

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    оптимизации, что-то типа карты карно, и обратный реверс функций уже невозможен
    Ну это типа как дизассемблировать бинарник, только мнемоники команд неизвестны, придется свои придумывать. Поэтому да, оригинальный текстовый вид не восстановим, но функциональность ясна. Я составил карту используемых адресов, список графов, соответствующих переходами между ними, и проанализировал условия, при которых переходы происходят. Там достаточно четко видны этапы декодирования команд и различные стадии их исполнения, поэтому где и что на каком микроадресе исполняется - вроде бы понятно.

    Цитата Сообщение от gid Посмотреть сообщение
    А ещё как мне кажется там делались какие-то компромиссные решения, может чтобы в
    На ПЛИС или в эмуляторе транзисторный бюджет нас ограничивает слабо, создать новые p-термы и добавить их в нужные выходные суммы матрицы просто, поэтому небольшие изменения типа подавления фантомных циклов сделать несложно. В идеале хотелось бы восстановить исходник для всей матрицы и утилиту компиляции, но это немало времени может занять, поэтому не знаю, стоит ли уж так закапываться. Наверняка при разработке оригинального ВМ1 тоже была похожая утилита, алгоритмы оптимизации по тем же картам Карно несложные, автоматизация напрашивается сама собой.
    Последний раз редактировалось Vslav; 20.02.2017 в 16:19.

  9. #1178

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дописал утилитку и ей перекинул матрицы ВМ2 из схемы в верилог, создал проект, буду верифицировать и разбирать. Матрички размножаются в геометрической прогрессии, в ВМ1 было всего две (основная микрокода и приоритетный шифратор прерываний), в ВМ2 уже четыре (основная микрокода, шифратор прерываний, предварительный декодер команд и блок ветвления), а в ВМ3 уже восемь и есть еще мелкие, которые я не считал. Вошли люди во вкус, однако.

  10. #1179

    Регистрация
    05.03.2010
    Адрес
    Санкт-Петербург
    Сообщений
    781
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Vslav, Здравствуйте!

    тут случайно подвернулось https://yadi.sk/i/rZvtpM223EMHy3 https://yadi.sk/i/k0QjBTJM3EMHzr
    извините могу ошибаться, Вы интересовались подобным оборудованием, если интересно скину контакты, правда человек еще сам не знает сколько за это хочет.

  11. #1180

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vamos Посмотреть сообщение
    тут случайно подвернулось
    Спасибо за ссылки, но смысла покупать еще один оптический микроскоп немного. Правда там столик интересный, но много возни его адаптировать для своего мс, поэтому думаю что-то попроще разработать и напечатать в 3D.

Страница 118 из 273 ПерваяПервая ... 114115116117118119120121122 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 28.06.2014, 17:50
  2. Микросхемы МПК 580,1801,1810 и другие...
    от Alex_Vac в разделе Барахолка (архив)
    Ответов: 44
    Последнее: 07.04.2012, 08:03
  3. ЦИФРОВАЯ МУЗЫКА НА ZX
    от AAA в разделе Музыка
    Ответов: 98
    Последнее: 18.09.2011, 22:33
  4. Учебный стенд УМПК-1801
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 12.05.2010, 16:52
  5. Цифровая музыка от Вадима Ермеева
    от zxmike в разделе Музыка
    Ответов: 2
    Последнее: 06.08.2007, 23:13

Метки этой темы

Ваши права

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