User Tag List

Страница 138 из 174 ПерваяПервая ... 134135136137138139140141142 ... ПоследняяПоследняя
Показано с 1,371 по 1,380 из 1740

Тема: Реверс-инжиниринг УКНЦ (1515ХМ1&2, 1801ВП1, 1801ВМ2)

  1. #1371

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

  2. #1372

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    @Alex_K, @Vslav, интересную особенность заметил в микрокоде ВМ2, но пока подробно в этом не разбирался.

    В режимах HALT и USER по разному анализируется ситуации при выборке следующей команды, когда адресация регистра-источника модифицирует R7, и когда регистр приемник использует R7. Хотя, казалось бы, какая разница, какой режим, HALT или USER.

  3. #1373

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    @Alex_K, @Vslav, интересную особенность заметил в микрокоде ВМ2, но пока подробно в этом не разбирался.

    В режимах HALT и USER по разному анализируется ситуации при выборке следующей команды, когда адресация регистра-источника модифицирует R7, и когда регистр приемник использует R7. Хотя, казалось бы, какая разница, какой режим, HALT или USER.
    Это при выборке следующей команды или предвыборке следующей команды? Какие типы адресаций - 67 и 77? Если используется 67 или 77, то по идее процессор может использовать предвыбранную команду в качестве индексного значения для адресации. Да, и в режиме HALT с запрещёнными прерываниями CPC и CPSW не обновляются.

  4. #1374

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Да, и в режиме HALT с запрещёнными прерываниями CPC и CPSW не обновляются.
    А, вот, наверное, с этим и связано.

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Это при выборке следующей команды или предвыборке следующей команды? Какие типы адресаций - 67 и 77?
    Пока еще не разбирался.
    Но там два условия, обозначенных признаками RI0 и RI2:
    RI0 - dd использует R7 (любая адресация, с использованием R7)
    RI2 - ss модифицирует R7 (любая адресация по (R7), либо индексная адресация)

    T.e. ss = (R7), (R7)+, -(R7), @(R7)+, @-(R7), X(Rn), @X(Rn)

  5. #1375

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Да, и в режиме HALT с запрещёнными прерываниями CPC и CPSW не обновляются.
    Цитата Сообщение от Titus Посмотреть сообщение
    А, вот, наверное, с этим и связано.
    Обновление CPSW происходит не на уровне микрокода, а на аппаратном уровне. Запрещается при установленных битах 7 и 8 в PSW. А вот обновление CPC, не смотрел как происходит. Да и счетчиков команд там целых три.

  6. #1376

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Обновление CPSW происходит не на уровне микрокода, а на аппаратном уровне. Запрещается при установленных битах 7 и 8 в PSW. А вот обновление CPC, не смотрел как происходит. Да и счетчиков команд там целых три.
    Тоже пока не смотрел, просто заметил это разветвление.
    Типа, если USER, то мы проверяем адресацию по R7, если HALT, то мы ничего не проверяем, но идем другим путем.

  7. #1377

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Коротко об интересном.

    В процессоре ВМ2 дофигищи 16-битных регистров. Гораздо больше, чем доступно посредством инструкций PDP-11.
    Если бы микрокод был другим, то, я думаю, процессор мог быть гораздо интереснее и богаче по возможностям.

    Интересно, что на шину X АЛУ может выставляться один из 16 регистров,
    А на шину Y АЛУ может выставляться один из 32 регистров/констатнт/частей слова инструкции:

    Код:
    0  - R0
    1  - R1
    2  - R2
    3  - R3
    4  - R4
    5  - R5
    6  - R6
    7  - PC1
    8  - EA1
    9  - EA2
    10 - нет регистра
    11 - RS
    12 - PSW
    13 - ACC
    14 - RA
    15 - BRD
    16 - IR & 0x000F
    17 - IR & 0x003F
    18 - 0x0001 (если ALT_CNST=0 (байтовый инкремент))), 0x0002 (если ALT_CNST=1 (словный инкремент)) (константа автоинкремента при формировании исполнительного адреса)
    19 - 0x0002
    20 - 0x0000
    21 - 0x0004
    22 - CPSW
    23 - BIR
    24 - IR & 0x00FF с расширением знака до 16 бит
    25 - 0x0000 (если PSW3=0), 0xFFFF (если PSW3=1) (флаг N)
    26 - PSW0 & 0x0001 (флга C)
    27 - 0x0000
    28 - выбор константы вектора прерывания
    29 - 0x0014
    30 - PC
    31 - PC
    В списке нет, например, PC2, который может читаться только на шину X АЛУ.

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(08.11.2020), Ynicky(09.11.2020)

  8. #1378

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,250
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    639
    Поблагодарили
    415 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Интересно, что на шину X АЛУ может выставляться один из 16 регистров
    А какие регистры?

  9. #1379

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    А какие регистры?
    Код:
    0  - R0
    1  - R1
    2  - R2
    3  - R3
    4  - R4
    5  - R5
    6  - R6
    7  - PC1 (если RA_FR1 = 0) или PC2 (если RA_FR1 = 1)
    8  - EA1
    9  - EA2
    10 - нет регистра
    11 - RS
    12 - PSW
    13 - ACC
    14 - нет регистра
    15 - BRD
    - - - Добавлено - - -

    Кроме того, есть запись результата обратно в регистр, который выставлялся на X или на Y:

    Обратная запись для X:
    Код:
    0  - R0
    1  - R1
    2  - R2
    3  - R3
    4  - R4
    5  - R5
    6  - R6
    7  - PC2
    8  - EA1
    9  - EA2
    10 - EA_CTLD (счетчик для расширенной арифметики)
    11 - RS
    12 - PSW (если /NA0=1, то запись и в PSW4), (если операция со словом (BYTE=0), то запись в PSW4 и PSW8). Работа с константой (PL8=1) блокирует WR_PSW.
    13 - ACC
    14 - нет регистра
    15 - BRD (если QD_SWAP=1, то QSWP=1) (обмен байт при обращении по нечетному адресу)

    Обратная запись для Y:
    Код:
    0  - R0
    1  - R1
    2  - R2
    3  - R3
    4  - R4
    5  - R5
    6  - R6
    7  - PC2
    8  - EA1
    9  - EA2
    10 - EA_CTLD (счетчик для расширенной арифметики)
    11 - RS
    12 - PSW (если /NA0=1, то запись и в PSW4), (если операция со словом (BYTE=0), то запись в PSW4 и PSW8). Работа с константой (PL8=1) блокирует WR_PSW.
    13 - ACC
    14 - нет регистра
    15 - BRD (если QD_SWAP=1, то QSWP=1) (обмен байт при обращении по нечетному адресу)
    16 - R0
    17 - R1
    18 - R2
    19 - R3
    20 - R4
    21 - R5
    22 - CPSW
    23 - R7
    24 - EA1
    25 - EA2
    26 - EA_CTLD (счетчик для расширенной арифметики)
    27 - RS
    28 - PSW (если /NA0=1, то запись и в PSW4), (если операция со словом (BYTE=0), то запись в PSW4 и PSW8). Работа с константой (PL8=1) блокирует WR_PSW.
    29 - ACC
    30 - PC
    31 - PC

    Эти 3 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(08.11.2020), hobot(09.11.2020), Ynicky(09.11.2020)

  10. #1380

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Краткое описание ядра и основного цикла процессора 1801ВМ2

    Краткое описание ядра и основного цикла процессора 1801ВМ2.

    Описание составлено исключительно по оригинальной потранзисторной схеме @Vslav'a, за которую ему огромная благодарность.

    Все сигналы имеют те же наименования, что и на транзисторной схеме Vslav'a. За исключением сигналов NA0..NA5 (адрес следующей микрокоманды), и сигналов PL0..PL36 (выход ПЛМ микрокоманд), которые при описании микрокоманды и адреса микрокоманды приведены в инверсном виде, что более точно отражает суть информации, заложенной в них. Кроме того, добавлено некоторое количество сигналов, не именованых на схеме Vslav'а.

    В данном описании будет рассмотрено ядро процессора на примере простейшего цикла выборки команды типа регистр-регистр. Прерывания, таймауты шины и прочие тонкости пока что не рассматриваются.

    Основным времязадающим и управляющим узлом процессора является микропрограммный автомат, который непосредственно управляет АЛУ и блоком ввода-вывода. Управление АЛУ синхронное, т.е. можно сказать, что АЛУ является частью микропрограммного автомата. Управление блоком ввода-вывода асинхронное.

    Каждая инструкция процессора выполняется как минимум за две микрокоманды. Первой из которых всегда является команда выборки и преддекодирования инструкции. Цикл микрокоманды равен 4-м тактам входной частоты процессора CLCI. В дальнейшем тактом будет называться один цикл CLCI, а полутактом - половина цикла CLCI. Цикл АЛУ в большинстве случаев также выполняется за 4 такта синхронно с микророграммным автоматом. АЛУ используется как для выполнения математическо-логических операций, так и для вычисления исполнительного адреса. Цикл чтения шины AD блока вввода-вывода, при отсутствии задержек доступа к внешнему устройству, выполняется за 8 тактов. Исключение составляет недокументированный режим чтения шины с опережающим RPLY, который выполняется за 6 тактов, и рассматриваться здесь не будет.
    Для выполнения простейшей инструкции процессора требуется две микрокоманды (8 тактов), и один один цикл ввода (8 тактов). Блок ввода-вывода работает в параллель с микропрограммным автоматом, поэтому общее время выполнения простейшей инструкции также составляет 8 тактов.

    Микропрограммный автомат может приостанавливаться в некоторых случаях. Чаще всего это происходит, когда буферный регистр инструкции (BIR) еще не содержит действительных данных. Выполнение микропрограммы приостанавливается, пока блок ввода-вывода не прочитает с шины слово инструкции и не обновит BIR.

    Микропрограмма находится в ПЛМ микрокоманд, и состоит из 198-ми записей, которые, в свою очередь, условно обьединены примерно в 64 микрокоманды. Та или иная запись выбирается в зависимости от условий, передаваемых в ПЛМ в виде адреса инструкции (16 бит), получаемого с преддекодера адреса микрокоманды (6 бит) и двух трехбитных модификаторов RI0,RI1,RI2 и IX0,IX1,IX2. Преддекодер для упрощения пока что не рассматриваем.
    В зависимости от входных данных, выбирается одна или несколько записей ПЛМ, которые обьединяются по логическому ИЛИ (OR), и поступают на выход матрицы в виде сигналов PL0..PL36. В сигналах PL закодированы следующие данные:

    1. Номер регистра для шины X АЛУ.
    2. Номер регистра или константы для шины Y АЛУ.
    3. Математическо-логическая функция для АЛУ.
    4. Функция сдвига для АЛУ.
    5. Тип операции ввода-вывода.
    6. Группа модификаторов, влияющих на выполнение команды.

    Трехбитный модификатор выборки микрокоманды RI имеет многофункциональное назначение. В микрокоманде выборки слова инструкции значение следующее:

    RI0 - поле dd инструкции использует R7 (любая адресация, с использованием R7)
    RI1 - HALT-режим (PSW[8]=1)
    RI2 - поле ss модифицирует R7 (адресация (R7), (R7)+, -(R7), @(R7)+, @-(R7), X(Rn), @X(Rn))

    Другие значения поля RI будут рассмотрены в отдельной главе.

    Трехбитный модификатор выборки микрокоманды IX может меняться для каждого шага микрокоманды и означает:

    IX0 - идентификатор словной двухоперандной инструкции записи
    IX1 - двухоперандная инструкция использующя R7, выполнено условие условного перехода, или RCMD (требует уточнения)
    IX2 - некоторые двухоперандные инструкции

    Кроме того, блок преддекодера выдает следующие сигналы, влияющие на исполнение микрокоманд:

    DC_RTT - инструкция RTT
    DC_FB - инструкция работает с байтом, а не словом
    DC_MOP0 и DC_MOP1 - кодирует тип цикла инструкции:

    Код:
     DC_MOP1 DC_MOP0    Операция ввода-вывода   Цикл памяти
        0       0  	     IO_RD, IO_IN, IO_WR	RMW
        0       1	     IO_WR			 W
        1       0	     IO_RD, IO_IN		 R
        1       1	     NOWRA			 -
    Часть сигналов PL, получаемых с выхода ПЛМ микрокоманд используется для выбора режима работы микрокоманды. Большинство же запоминаются в регистре слова микрокоманды (REG_MCMD_WORD), и доступны в виде PLM0..PLM36. Часть сигналов инвертируется.

    Диаграммы работы микропрограммного автомата, АЛУ и блока ввода-вывода на примере выполнения простейшей инструкции типа регистр-регистр.
    Слева пример с нулевой задержкой памяти, справа пример с задержкой памяти на 2 такта:




    Для каждой инструкции выполняется микрокоманда с адресом 0x01 (выборка инструкции), и микрокоманда исполнения самой инструкции.
    Для наглядности приведен только один цикл АЛУ, и один цикл блока ввода-вывода.

    Код:
    Полутакт:
    
        7	- Готовы сигналы PL с ПЛМ микрокоманд.
        	  Модификатор микрокоманды SET_CEND, означающий выборку следующей инструкции.
        	  Адрес микрокоманды 0x01.
        8   - Начало микрокоманды. Регистр BIR (буферный регистр инструкции) содержит действительны данные,
        	  поэтому безо всякой задержки запускается конвейер преддекодера инструкции.
        9   - Данные с преддекодера инструкций выставляются на шину PLD.
       10   - Данные с преддекодера инструкций стабильны и могут быть защелкнуты в регистре инструкций.
       	  Они содержат слово инструкции, адрес первой микрокоманды инструкции, модификаторы IX, RI.
       	  В соответствии с микрокомандой на шину X АЛУ выдается PC2 (опережающий счетчик команд),
       	  а на шину Y АЛУ выдается константа 0x0002.
       11   - В соответствии с микрокомандой формируется операция ввода-вывода IO_RD (чтение шины AD),
       	  IO_IN (данные предназначены для BIR), IO_RCD (сохранять данные также в BRD (буферный региср данных)
       12   - RA (регистр адреса) = PC2. Запросить цикл шины IO_RD.
       	  Блок ввода-вывода свободен, поэтому сразу начинается операция ввода.
       	  На шину адреса выставляется регистр адреса RA, в котором содержится значение опережающего счетчика команд PC2.
       13   - PC=PC1=PC2 (действие операции IO_RCD).
       16   - PC2=PC2+2 (результат работы АЛУ).
       	  Выставляется сигнал SYNC (адрес выставлен на шине).
       	  Сразу получаем в ответ сигнал AR (подтверждение получени адреса).
       	  В этом же полутакте начинается исполнение следующей микрокоманды, собственно и выполняющей инструкцию.
       18   - Выставляется сигнал DIN (ввод информации с шины).
       20   - Получено подтверждение RPLY.
       22   - Данные на шине AD стабильны, и начинают записываться в регистры BIR и BRD.
       24   - Начало следующей микрокоманды, извлекающей инструкцию из регистра BIR.
       26   - Снимается сигнал DIN. Шина AD может быть освобождена.
       28   - В ответ внешнее устройство снимает SYNC, AR и RPLY. Возможна новая операция ввода-вывода.
    Последний раз редактировалось Titus; 18.11.2020 в 21:52.

    Эти 5 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Alex_K(14.11.2020), Elias(15.11.2020), hobot(14.11.2020), nzeemin(14.11.2020), Ynicky(14.11.2020)

Страница 138 из 174 ПерваяПервая ... 134135136137138139140141142 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 32
    Последнее: 18.12.2024, 18:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  4. Куплю 1515ХМ1-6006, 1515ХМ1−6008
    от moxjemi в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 10.01.2012, 17:23
  5. 1801ВМ2 А и Б
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 03.05.2010, 11:51

Ваши права

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