Эмуляция

Эмуляция ( англ. emulation ) - Воспроизведение программными или аппаратными средствами или их комбинацией работы других программ или устройств. Слово также общее понятие соперничества, желание превзойти в чем-то друг друга.

Цели компьютерной эмуляции

  • Создание нового микропроцессора / микроконтроллера. В этом случае с помощью эмулятора, программа / устройства выполняются команды этого процессора.
  • Необходимость выполнения также программного обеспечения, написанного для другого устройства или операционной системы.
  • Тестирование программ написанных для различных систем.

Программная эмуляция

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

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

Одно из популярных применений эмуляции - выполнение на персональном компьютере игр, написанных для игровых автоматов или игровых приставок.

Теоретически, согласно тезисом Черча-Тьюринга, любое операционная среда может быть эмулированный в любой другой среде. На практике, однако, встречается ряд трудностей: в частности, точное поведение эмулированный системы часто не документирована и должна быть исследована и определена с помощью обратной разработки.

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, программное обеспечение которых в значительной степени зависит от программистских решений. Выбор конкретного решения происходит с целью оптимизации (по размеру или скорости выполнения программы), применяемой, например программистами игр. Такие программы зачастую бывают основаны на недокументированные возможности процессора или операционной системы.

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

Обычно эмулятор состоит из нескольких модулей, отвечающих за различные подсистемы эмулируемого компьютера. Чаще всего, эмулятор состоит из:

  • Эмулятора центрального процессора
  • Модуля подсистемы памяти, эмулируя ОЗУ и ПЗУ
  • Модуля или модулей эмуляции различных устройств ввода / вывода

Системная шина, как правило, не эмулируется, по причинам упрощения или повышения производительности, и виртуальная периферия обращается непосредственно к модулю ЦП и модулей памяти.