Емуляція

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Емуляція (англ. emulation) - відтворення програмними або апаратними засобами або їх комбінацією роботи інших програм або пристроїв. Слово також має загальне поняття суперництва, бажання перевершити в чомусь один одного.

Цілі комп'ютерної емуляції

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

Програмна емуляція

Емуляція дозволяє виконувати комп'ютерну програму на платформі (комп'ютерній архітектури та/або операційній системі), відмінній від тієї, для якої вона була написана в оригіналі. Емуляцією також називають сам процес цього виконання. На відміну від симуляції, яка лише відтворює поведінку програми, при емуляції ставиться мета точного моделювання стану імітованої системи, для виконання оригінального машинного коду.

При використанні мов високого рівня, іноді в цілях збереження швидкодії виконуваної програми, замість емуляції роблять портування програм в нову середу. У цьому випадку проводиться переписування заново апаратнозалежних ділянок коду.

Одне з популярних застосувань емуляції - виконання на персональному комп'ютері ігор, написаних для гральних автоматів або ігрових приставок.

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

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

На противагу цьому, на деяких інших платформах досить мало використовувався прямий доступ до апаратного забезпечення. У цьому випадку виявляється достатнім забезпечити певний рівень сумісності, що забезпечує трансляцію системних викликів емуліруемой системи в виклики працюючої системи.

Зазвичай, емулятор складається з декількох модулів, що відповідають за різні підсистеми емульованого комп'ютера. Частіше за все, емулятор складається з:

  • Емулятора центрального процесора
  • Модуля підсистеми пам'яті, емулюючого ОЗУ і ПЗУ
  • Модуля або модулів емуляції різних пристроїв вводу/виводу

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

Посилання