User Tag List

Страница 58 из 132 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя
Показано с 571 по 580 из 1740

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию Растактовка записи в регистр адреса планов



    Наименования сигналов:

    ACT_WRITE - устанавливается по фронту записи в регистр адреса планов. Сбрасывает по CLCA4_F5 (фаза завершения).
    CLCA4_F1 - фаза F1. Адрес планов записывается в видеоконтроллер.
    CLCA4_F2 - фаза F2. Чтение данных плана 0 из ОЗУ ПП.
    CLCA4_F3 - фаза F3. Чтение данных планов 1 и 2 из видеоконтроллера.


    Описание:

    Запись в регистр адреса планов (адрес 177010) начинается по переднему фронту DOUT. Одновременно с этим устанавливается сигнал подтверждения записи RPLY. Таким образом, запись в регистр адреса планов имеет для процессора нулевую задержку. Во время активного DOUT данные с шины AD0..AD15 защелкиваются в регистре адреса планов PLANE_ADR.

    По отрицательному фронту CLCA (такт 4) устанавливается сигнал RQ.

    По положительному фронту CLCA (такт 8) на шину A0..A7 выводится старшая часть регистра адреса планов PLANE_ADR.
    Через пол-такта (такт 8.5) на шину D0..D7 выводится младшая часть регистра адреса планов PLANE_ADR.
    Еще через полтора такта (такт 10) содержимое шин A0..A7 и D0..D7 защелкивается видеоконтроллером с шин AG0..AG7 и DG0..DG7 в регистрах DC_H, и DC_L, соответственно.

    Через один такт (такт 12) шины A0..A7, D0..D7 освобождаются для видеоконтроллера на 4 такта, сигнал RQ переводится в неактивное состояние.

    По положительному фронту CLCA начинается процесс чтения данных из ОЗУ ПП в регистр PLANE0_DATA.
    Такт 16 - на шину A0..A7 выводится младшая часть адреса планов PLANE_ADR.
    Такт 17 - видеоконтроллером устанавливается сигнал RAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса планов).
    Такт 17.5 - на шину A0..A7 выводится старшая часть адреса планов PLANE_ADR.
    Такт 18 - устанавливается сигнал CAS, по которому в ОЗУ защелкивается адрес столбца (старшая часть адреса планов). В течение активного сигнала CAS данные с шины D0..D7 защелкиваются в регистре плана 0 (PLANE0_DATA).
    Такт 19.5 - снимается сигнал RAS.

    Такт 20 - завершение процесса чтения.
    Шины A0..A7 освобождается, сигнал CAS снимается.
    Устанавливаются сигналы RQ и CC1.

    Такт 24..26 - данные планов 1 и 2, предоставленные видеоконтроллером, защелкиваются с шины D0..D7 в регистре PLANE1_DATA, и с шины A0..A7 в регистре PLANE2_DATA, соответственно.

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

    Не смотря на то, что задержка (latency) записи в регистры октета, планов 1&2, адреса планов нулевая, пропускная способность (throughput) для этих команд значительно ниже.
    Подробней можно расписать только зная точную растактовку ВМ2, а также особенности работы контроллеров памяти ПП и ЦП.
    Однако, знание нюансов работы контроллеров и процессора, значительно увеличивает возможность оптимизации работы с графикой УКНЦ по скорости.
    Последний раз редактировалось Titus; 25.07.2020 в 00:13.

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

    Alex_K(24.07.2020), Ynicky(25.07.2020)

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

  3. #2

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

    По умолчанию Растактовка записи в регистр данных плана 0

    Скрытый текст

    [свернуть]


    Описание:

    Запись в регистр плана 0 (адрес 177012) начинается по переднему фронту DOUT. Если контроллер все еще занят операциями записи в регистр октета или в регистр адреса планов, то начало записи в регистр плана 0 задержится до окончания последнего цикла CLCA предыдущей операции. Во время всего активного цикла DOUT данные с шины AD0..AD7 защелкиваются в регистре плана 0 (PLANE0_DATA).

    В последнем такте отрицалельного фронта CLCA (такт 7) происходит подготовка данных для записи.

    По положительному фронту CLCA начинается процесс записи данных PLANЕ0 в ОЗУ ПП. Сигнал WE установлен, что означает запись в ОЗУ.
    Такт 8 - на шину A0..A7 выводится младшая часть адреса планов PLANE_ADR.
    Такт 8.5 - на шину D0..D7 выводятся данные регистра PLANE0.
    Такт 9 - видеоконтроллером устанавливается сигнал RAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса планов).
    Такт 9.5 - на шину A0..A7 выводится старшая часть адреса планов PLANE_ADR.
    Такт 10 - устанавливается сигнал CAS, по которому в ОЗУ защелкивается адрес столбца (старшая часть адреса планов).
    Такт 11.5 - снимается сигнал RAS, по которому данные запоминаются в ОЗУ.

    Если была запись байта (WTBT = 1), то:
    Такт 12 - выдается сигнал RLPY, а также освобождаются шины A0..A7, D0..D7, сигналы CAS и WE снимаются.
    В ответ на сигнал RPLY, процессор снимает сигнал DOUT.

    Если же была запись слова (WTBT = 0), то происходит полный повтор предыдущего цикла CLCA, записывается по тому же адресу тот же самый байт.
    В такте 20 выдается сигнал RLPY, а так же освобождаются шины A0..A7, D0..D7, сигналы CAS и WE снимаются.
    В ответ на сигнал RPLY, процессор снимает сигнал DOUT.

    Замечание: Словная запись в регистр плана 0 является побочным эффектом использования механизма словной/байтовой записи в память. Двойная запись одного и того же байта по тому же адресу связана с тем, что при записи в регистр плана 0 не задействован механизм поочередной записи младшего/старшего байта по последовательным адресам.

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

    Alex_K(25.07.2020)

  4. #3

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Замечание: Словная запись в регистр плана 0 является побочным эффектом использования механизма словной/байтовой записи в память. Двойная запись одного и того же байта по тому же адресу связана с тем, что при записи в регистр плана 0 не задействован механизм поочередной записи младшего/старшего байта по последовательным адресам.
    В обоих случаях медленно. При словной записи контроллер ПП делает двойную запись, а при байтовой записи для команд MOVB, CLRB, MFPS сам процессор сначала делает фиктивное чтение по записываемому адресу. Так что тут быстрее, наверное надо сделать тесты.

  5. #4

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

    По умолчанию Растактовка записи в ОЗУ ПП

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


    Описание:

    Запись в ОЗУ ПП начинается по переднему фронту DOUT. Если контроллер все еще занят операциями записи в регистр октета или в регистр адреса планов, то начало записи в ОЗУ задержится до окончания последнего цикла CLCA предыдущей операции.

    В последнем такте отрицалельного фронта CLCA (такт 7) происходит подготовка данных для записи.


    Запись байта (WTBT = 1):

    По положительному фронту CLCA начинается процесс записи данных в ОЗУ ПП. Сигнал WE установлен, что означает запись в ОЗУ.
    Такт 8 - на шину A0..A7 выводится младшая часть адреса (LATCH_ADR).
    Такт 8.5 - на шину D0..D7 выводятся данные с AD0..AD7, если запись по четному адресу, и данные с AD8..AD15, если запись по нечетному адресу.
    Такт 9 - видеоконтроллером устанавливается сигнал RAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса).
    Такт 9.5 - на шину A0..A7 выводится старшая часть адреса (LATCH_ADR).
    Такт 10 - устанавливается сигнал CAS, по которому в ОЗУ защелкивается адрес столбца (старшая часть адреса).
    Такт 11.5 - снимается сигнал RAS, по которому данные запоминаются в ОЗУ.

    Такт 12 - выдается сигнал RLPY, а также освобождаются шины A0..A7, D0..D7, сигналы CAS и WE снимаются.
    В ответ на сигнал RPLY, процессор снимает сигнал DOUT.


    Запись слова (WTBT = 0):

    По положительному фронту CLCA начинается процесс записи младшего байта в ОЗУ ПП. Сигнал WE установлен, что означает запись в ОЗУ.
    Такт 8 - на шину A0..A7 выводится младшая часть адреса (LATCH_ADR). Младший бит принудительно равен 0.
    Такт 8.5 - на шину D0..D7 выводятся данные с AD0..AD7.
    Такт 9 - видеоконтроллером устанавливается сигнал RAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса).
    Такт 9.5 - на шину A0..A7 выводится старшая часть адреса (LATCH_ADR).
    Такт 10 - устанавливается сигнал CAS, по которому в ОЗУ защелкивается адрес столбца (старшая часть адреса).
    Такт 11.5 - снимается сигнал RAS, по которому данные запоминаются в ОЗУ.

    Такт 12 - шины A0..A7, D0..D7 освобождаются для видеоконтроллера на 4 такта, сигналы CAS и WE снимаются.

    По положительному фронту CLCA начинается процесс записи старшего байта в ОЗУ ПП. Сигнал WE установлен, что означает запись в ОЗУ.
    Такт 16 - на шину A0..A7 выводится младшая часть адреса (LATCH_ADR). Младший бит принудительно равен 1.
    Такт 16.5 - на шину D0..D7 выводятся данные с AD8..AD15.
    Такт 17 - видеоконтроллером устанавливается сигнал RAS, по которому в ОЗУ защелкивается адрес строки (младшая часть адреса).
    Такт 17.5 - на шину A0..A7 выводится старшая часть адреса (LATCH_ADR).
    Такт 18 - устанавливается сигнал CAS, по которому в ОЗУ защелкивается адрес столбца (старшая часть адреса).
    Такт 19.5 - снимается сигнал RAS, по которому данные запоминаются в ОЗУ.

    Такт 20 - выдается сигнал RLPY, а также освобождаются шины A0..A7, D0..D7, сигналы CAS и WE снимаются.
    В ответ на сигнал RPLY, процессор снимает сигнал DOUT.

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

    Цитата Сообщение от Alex_K Посмотреть сообщение
    В обоих случаях медленно. При словной записи контроллер ПП делает двойную запись, а при байтовой записи для команд MOVB, CLRB, MFPS сам процессор сначала делает фиктивное чтение по записываемому адресу. Так что тут быстрее, наверное надо сделать тесты.
    Я думаю, что практически нет смысла использовать запись в регистр плана 0, если видео-ОЗУ расположено в доступной части ОЗУ ПП (ниже адреса 0x8000, или же ниже адреса регистров 0xFE00, если страницы ОЗУ спроецированны в верхнюю память). И тут несколько причин:
    1. Байтовая запись медленная из-за фиктивного чтения.
    2. Словная запись медленная, т.к. занимает двойное время, но записывает один байт.
    3. И, наконец, запись в регистр адреса планов (а ведь туда надо записать адрес) - это ОЧЕНЬ МЕДЛЕННАЯ операция, требующая чтения ОЗУ ПП, ОЗУ ЦП, и при этом еще и подтормаживающая в это время ЦП.

    Словом, я бы рекомендовал программистам никогда не использовать запись в регистр планов 0.

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

    Alex_K(25.07.2020)

  6. #5

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Растактовка записи в ОЗУ ПП
    Ждем растактовку чтения из ОЗУ ПП. Так как с точки зрения шины QBUS/МПИ байтового чтения нет, то должно всегда читаться за два прохода - сначала младший байт, потом старший.

  7. #6

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Ждем растактовку чтения из ОЗУ ПП. Так как с точки зрения шины QBUS/МПИ байтового чтения нет, то должно всегда читаться за два прохода - сначала младший байт, потом старший.
    Сам процессор ВМ2 выдает ли сигнал WTBT при байтовом чтении? Или не выдает?

    Буду считать, что не выдает, т.к. WTBT - это Write Byte.

  8. #7

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Сам процессор ВМ2 выдает ли сигнал WTBT при байтовом чтении? Или не выдает?

    Буду считать, что не выдает, т.к. WTBT - это Write Byte.
    На шине QBUS/МПИ нет байтового чтения. Читается всегда полное слово. А нужный байт в случае необходимости процессор уже выделяет сам.

  9. #8

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

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    На шине QBUS/МПИ нет байтового чтения. Читается всегда полное слово. А нужный байт в случае необходимости процессор уже выделяет сам.
    Это я все понимаю. Но вдруг он выдает на шину WTBT, просто потому что чтение было байтовое, в виде побочного эффекта от байтовой записи. Именно это я и хочу уточнить.

  10. #9

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

    По умолчанию

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

  11. #10

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я думаю, что практически нет смысла использовать запись в регистр плана 0, если видео-ОЗУ расположено в доступной части ОЗУ ПП (ниже адреса 0x8000, или же ниже адреса регистров 0xFE00, если страницы ОЗУ спроецированны в верхнюю память). И тут несколько причин:
    1. Байтовая запись медленная из-за фиктивного чтения.
    2. Словная запись медленная, т.к. занимает двойное время, но записывает один байт.
    3. И, наконец, запись в регистр адреса планов (а ведь туда надо записать адрес) - это ОЧЕНЬ МЕДЛЕННАЯ операция, требующая чтения ОЗУ ПП, ОЗУ ЦП, и при этом еще и подтормаживающая в это время ЦП.

    Словом, я бы рекомендовал программистам никогда не использовать запись в регистр планов 0.
    Медлительность сохранится и при прямой записи. При байтовой записи также будет фиктивное чтение, а чтение из ОЗУ всегда будет за два прохода, надо два байта прочесть, медленно однако. Запись тоже будет за два прохода, т.к. ОЗУ стоит на одной ноге. Да и к тому же при маппинге страниц ОЗУ на адреса выше 0100000, ПЗУ выше 0120000 не отключить, соответственно можно только применять команды MOV(B), CLR(B).

Страница 58 из 132 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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