В настоящее время я изучаю C для своего следующего проекта эмуляции, точное число циклов 68000 (мой последний проект - это нециклический точный эмулятор Sega Master System, написанный на Java, который теперь находится на третьем выпуске). Мой вопрос касается точности на уровне циклов, так как принятие вещей на этот уровень для меня является новой вещью.Циклическая точная эмуляция
Чтобы разбить дело до степени зернистости 1 цикла процессора, по-видимому, мне нужно знать, сколько времени занимает доступ к памяти и т. Д., Но мой вопрос заключается в том, что для инструкций, которые занимают несколько циклов на этапах выборки/записи по памяти, что ЦП выполняет каждый цикл - например, x количество бит, скопированных за цикл.
С моим эмулятором SMS мне не нужно было слишком много беспокоиться о этапах M1 и т. Д., Поскольку он просто использовал количество циклов для каждой команды, другими словами, он точно соответствует уровню команды, а не уровню цикла. Я не ищу детали, специфичные для архитектуры, а просто идею о том, какие вещи я должен обратить внимание при переходе на этот уровень детализации.
68k подробности приветствуется однако. В основном мне интересно, что должно произойти, если видеочип читается из области памяти, в то время как ЦП все еще записывает данные в середине этой фазы инструкции и в других подобных ситуациях. Надеюсь, я прояснил ситуацию, спасибо.
Я понимаю, что вы пытаетесь сделать, но я не знаю, каков ваш фактический вопрос. Создание действительно цикличного точного симулятора для любого физического ядра почти невозможно (есть слишком много переменных), поэтому реальный вопрос в том, каковы ваши цели? Насколько точны вы хотите быть? Если вы довольны 20%, то вы можете сделать это с помощью простой модели трубопровода и простой модели памяти. –
Я думаю о тех же линиях, что и точность BSNES, так как мое ядро 68k в конечном итоге перейдет в эмулятор Megadrive/Genesis. В принципе, мне интересно, как точно моделировать многозадачные инструкции на уровне каждого цикла - на данный момент я просто выполняю всю инструкцию сразу в своем ядре Z80, а затем возвращаю количество циклов, которые он должен принимать на счетчик , Внутри инструкции нет смысла «что происходит и когда». – PhilPotter1987