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

User Tag List

Страница 30 из 183 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя
Показано с 291 по 300 из 1824

Тема: Эмулятор ДВК

  1. #291
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,567
    Спасибо Благодарностей отдано 
    1,227
    Спасибо Благодарностей получено 
    1,781
    Поблагодарили
    686 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Это с непривычки.

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

  2. #292
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  3. #293
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,567
    Спасибо Благодарностей отдано 
    1,227
    Спасибо Благодарностей получено 
    1,781
    Поблагодарили
    686 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Точнее - для максимальной синхронности виртуального времени. Ведь у каждого процессора может быть своя тактовая частота, поэтому привязка должна идти не к тактам, а к виртуальному времени.
    Нет, привязка должна быть к единому тактовому источнику эмулируемой системы. Если кварцев несколько, то этоможно аппроксимировать тоже одним источником, но со специально введенными дополнительными дробными погрешностями, для точной эмитации биения частот кварца. Как, например, у меня в EmuStudio. Один процессор 8.0001МГц (можно любые дробные тайминги поставить), второй 6.25МГц.

  4. #294
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    привязка должна быть к единому тактовому источнику эмулируемой системы
    Это и есть "виртуальное время". В модульном API события привязываются к виртуальному времени с точностью 1 нс ( т.е. единый тактовый источник эмулируемой системы имеет частоту 1 ГГц ).

  5. #295
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,567
    Спасибо Благодарностей отдано 
    1,227
    Спасибо Благодарностей получено 
    1,781
    Поблагодарили
    686 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Это и есть "виртуальное время". В модульном API события привязываются к виртуальному времени с точностью 1 нс ( т.е. единый тактовый источник эмулируемой системы имеет частоту 1 ГГц ).
    И как при этом работают два процессора (допустим ВМ2) в разных потоках, разделяя одну шину?
    Пример, по шагам, как они взаимодействуют?

  6. #296
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    И как при этом работают два процессора (допустим ВМ2) в разных потоках, разделяя одну шину?
    Пример, по шагам, как они взаимодействуют?
    Лучше им никак не взаимодействовать, потому что у каждого потока своё виртуальное время и рассинхронизация виртуального времени двух потоков может достигать 15 мс, а любая синхронизация требует "усыпления" опережающего потока.

  7. #297
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,567
    Спасибо Благодарностей отдано 
    1,227
    Спасибо Благодарностей получено 
    1,781
    Поблагодарили
    686 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Лучше им никак не взаимодействовать, потому что у каждого потока своё виртуальное время и рассинхронизация виртуального времени двух потоков может достигать 15 мс, а любая синхронизация требует "усыпления" опережающего потока.
    А по сути (если это, например, УКНЦ) они постоянно взаимодействуют с общим ресурсом - чипсетом.

    ---------- Post added at 16:20 ---------- Previous post was at 16:16 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    может достигать 15 мс
    Кстати, почему 15мс, если минимальный квант переключения задач под виндой 1мс?

  8. #298
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А по сути (если это, например, УКНЦ) они постоянно взаимодействуют с общим ресурсом - чипсетом.
    Для такого варианта многопоточная эмуляция не очень подходит.

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

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

  9. #299
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,567
    Спасибо Благодарностей отдано 
    1,227
    Спасибо Благодарностей получено 
    1,781
    Поблагодарили
    686 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    В такой ситуации частичная несинхронность многопоточной эмуляции совершенно незаметна и на общую достоверность эмуляции никак не влияет.
    Но это все же не 100% точная эмуляция)

  10. #300
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Но это все же не 100% точная эмуляция)
    Поэтому для любителей максимальной точности я в будущем сделаю возможность заменять многопоточную эмуляцию на однопоточную ( с отдельной настройкой для каждого потока ) - тогда интересующие события будут происходить в общем виртуальном времени с наносекундной синхронизацией.

Страница 30 из 183 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

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