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

User Tag List

Показано с 1 по 9 из 9

Тема: Интересно - кто ни будь сталкивался с тем, что длительность всех старых добрых команд

  1. #1
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation Интересно - кто ни будь сталкивался с тем, что длительность всех старых добрых команд

    отличается на самом деле от того, что указано в справочниках?

    Я реально столкнулся с этим, когда писал плеер цифровых музонов для Speakera. При этом в тактах всё было чётко (т.е. команды были выровнены), однако на самом деле было чётко замечено (на слух) отличие звучания плеера от оригинала на рельнос спектруме (ощущение, как будто проигрывается аудиокассета в "жующем магнитофоне").

    Детально этим вопросом я не стал заниматься тогда (это было где то три года назад), но вот счаз опять поднялся этот вопрос.

    И вот какие есть соображения:

    - Проблемы с изменённым количеством тактов наблюдается только для нечётнотактовых команд.
    - Не все нечётнотактовые команды имеют длительность, большую, чем указано
    - Предположительно, изменённая длительность команд (нечётнотактовых) справедлива только для ОЗУ, в ПЗУ такого никогда не происходит
    - Суммарно длительность таких "неформальных" команд может быть представлена в виде дополнительных 0.1-0.9 тактов, добавленных к длительности команды

    На основе аналогии, я знаю что в МК48 и МК51 один такт включает в себя несколько циклов, суммарно длительность команды составляется не из тактов, а из циклов, и соответсвенно, если принять такую же аналогию для Z80, то скорей всего длительность таких "странных" команд зависит от скорости выполнения циклов, которые прежде всего зависят от задержек обращений к памяти.

    Кроме того, Vitamin указал, что Unwinder исследовал длительность некоторых команд и усреднённая длительность их равна была скажем не 7 а 7,5 тактам (это может быть LD A,(DE) - 7,5, RET Z в случае NZ - 5,5 и т.д.).

    Причём, если вначале идёт такая "странная" команда процессора, то следующая автоматически увеличивается в длительности на один такт (т.е. конструкция RET Z inc b имеет длительность не 9 а 10 тактов, LD A,(DE) nop имеет 10 тактов длительность).

    И вот интересный момент: эмулятор R80 учитывает этот нюанс, т.е. создатели эмулятора знали о таких премудростях? US же это не учитывает, на остальных эмулях я не пробовал.

    Может есть специалисты которые объяснят почему происходит так?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

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

  3. #2
    Activist
    Регистрация
    19.01.2005
    Сообщений
    291
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    отличается на самом деле от того, что указано в справочниках?
    Скорей всего, проблема из-за так называемой медленной памяти. На машинах типа "пентагон" таких проблем быть не должно (wait не используется).

    ... Ay_Emul: Silent now...

  4. #3
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Может есть специалисты которые объяснят почему происходит так?
    z80 эмулируется большинством эмуляторов правильно, иначе бы бордюрные эффекты и мультиколоры съехали. другое дело, что процессор может тормозиться сигналами схемы. например, "Квант" имел частоту 4 mhz, но цикл M1 (чтения опкода) выравнивался на 4. то же самое - скорпион (попробуй в unreal этот флажок включить).

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

  5. #4
    Member Аватар для CheburatoR
    Регистрация
    03.03.2005
    Адрес
    Latvia
    Сообщений
    71
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На Ленинграде1 циклы м1 тоже выравниваютсья до 4 такта сигналом wait штобы процессор гарантированно считал данные из ОЗУ. это можно проверить например запустить программу типа "SAVE" из озу и по пилоттону видно что программа из озу работает медленнее, ксати на Ленинграде это можно даволно просто убратсь (задержки WAIT) но тогда он наверное небудет соотвествовать некому стандарту,
    кстати как с этими задержками на оригинальном спектруме ?

  6. #5
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Сий эффект изменения длительности команд

    замечен на Sсorpion (плата SC-15 кажется), нетурба, вроде его ещё жёлтым называют. Причём (ещё раз повторюсь) НЕ ВСЕ нечётнотактовые команды работают таким образом, т.е. именно на RET Z такое было, а уже на RET PE такого нет, хотя казалось бы команды то однотипные?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  7. #6
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Т.е. предположение

    о том, что виноват Wait который выравнивает на кратность к 2 тактам не совсем справедливо.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  8. #7
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Причём (ещё раз повторюсь) НЕ ВСЕ нечётнотактовые команды работают таким образом, т.е. именно на RET Z такое было, а уже на RET PE такого нет, хотя казалось бы команды то однотипные?
    так если команда начинается уже с чётного такта, то задержки нет. поэтому среднестатистически и наблюдаетс задержка в 0,5 такта

    Цитата Сообщение от GriV
    замечен на Sсorpion (плата SC-15 кажется), нетурба, вроде его ещё жёлтым называют.
    скорпион идеально эмулируется с соответствующей настройкой. проверено бутом от real masters, который рисует шахматную сетку на бордюре - всё совпадает до пикселя

  9. #8
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию В всё том же R80

    дело обстоит так:
    Для модели Scorpion:
    - Если текущий такт нечётный, то следующая команда длиться на 1 такт больше
    - Даже если текущая команда нечётнотактовая, то её длительность увеличивается на 1 такт

    т.о. реально на нечётнотактовых командах идёт увеличение их длительности (LDIR в цикле занимает 21 такт для начала и все остальные циклы по 22 такта, если попала на чётный такт, все циклы по 22 такта, если попала на нечётный такт

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

    Т.е. предположение о задержке, вносимой за счёт Wait получает хорошую почву.
    Но всё же непонятно, почему однотипные команды (те же Ret Z и Ret PE) работают разной длительностью?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  10. #9
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию В ПЗУ

    команды выполняются аналогичным образом (тоже из R80)
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

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

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

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

Похожие темы

  1. Ответов: 10
    Последнее: 11.03.2005, 16:21

Ваши права

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