В чем разница между эмуляцией и симуляцией? [дубликат]

Возможные Дубликаты:
симулятор или эмулятор? В чем разница?

в простых понятных выражениях, в чем разница между этими двумя терминами?

[Я уже смотрел на этой, этой и этой]

10 ответов


(используя в качестве примера вашу первую ссылку)

вы хотите дублировать поведение старого калькулятора HP, есть два варианта:

  1. вы пишете новую программу, которая рисует дисплей калькулятора и клавиши, и когда пользователь нажимает на клавиши, ваши программы делают то, что сделал старый калькулятор. Это симулятор

  2. вы получаете дамп прошивки калькулятора, затем пишете программу, которая загружает прошивку и интерпретирует его так же, как микропроцессор в калькуляторе. Это эмулятор

на симулятор пытается дублировать поведение устройства.
The эмулятор пытается дублировать внутреннее устройство устройства.


Это трудный вопрос, чтобы ответить окончательно, потому что термины и часто злоупотребляют или путают.

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

симулятор-это частичная реализация устройства/платформы, это делает достаточно для своих целей. Например, симулятор iPhone запускает "приложение iPhone", которое было специально скомпилировано для x86 и API Cocoa, а не для процессора ARM реального устройства и API Cocoa Touch. Однако двоичного файла, который мы запускаем в симуляторе не будет работать на реальном устройстве.


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

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

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

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


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

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


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

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

эмуляция: в отличие от моделирования, он не приближается к поведению реальной системы, он копирует поведение реальной системы. Эмулятор может включать аппаратное обеспечение. Но это также может быть полностью в программном обеспечении. Е. Г. вы получите эти программные эмуляторы старых игровых приставок, таких как Sega бытие. Это эмулятор, потому что он копирует реальную функциональность genesis настолько, что вы можете запустить исходный код Genesis в эмуляторе. Симулятор genesis не сможет запустить исходный код, он будет только приближать его поведение, производя аналогичные результаты, в зависимости от того, насколько хороши модели первоначальная система была.

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


An "эмулятор" - это термин для программного аппаратного симулятора, но в целом это синонимы.


исходя из мира разработки оборудования. . .

функциональность тестов моделирования. 2+2 = 4 etc

эмуляция проверяет функциональность в конкретной среде (64-бит, 16-бит, пальцы рук и ног).

вот пример еды:

У вас есть два куска хлеба, один нож, арахисовое масло и желе и будет давать их в детский сад. Вы пишете инструкции, как сделать бутерброд.

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

Если в конце инструкции вы остались только с желе, а не арахисовое масло, то вы не смогли моделирования, и вам нужно исправить ваши инструкции. С другой стороны, если у вас есть полный "сэндвич", то инструкции должны быть действительными

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

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


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

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

моделирование, с другой стороны, имитировать что-то с некоторыми известными поведениями, чтобы изучить что-то еще не известно.

мой 2cents


вот пример-недавно мы разработали имитационную модель для измерения времени отклика удаленной передачи еще не разработанной системы. Анализ эмуляции не дал бы нам ответа вовремя, чтобы обновить пропускную способность, поэтому моделирование было нашим подходом. Поскольку нас в основном интересовало определение потребностей в пропускной способности, мы заботились в первую очередь о размере и объеме транзакций, а не об обработке системы. Имитационная модель была на отдельном листе программное обеспечение, предназначенное для моделирования процессов дискретных событий. Подводя итог в ответ на ваш вопрос, эмуляция-это типа симуляторы. Но в данном случае симуляция не была эмуляцией, потому что она не полностью представляла новую систему, а только размер и объем транзакций.


Я запутался между двумя процессами. Я нашел это простое объяснение о разнице между эмуляторами и симуляторами

  1. симулятор:
    Предположим, вы написали программу сборки в файл и соответствующий ехе файл готов. Имитатор программное обеспечение ПК которое читает инструкции из exe и "minmics" работа процессора.

  2. эмулятор:
    Эмулятор - это (программное обеспечение ПК + Процессор). Этот Процессор может быть подключен к целевая плата, когда вы хотите протестировать разработанное программное обеспечение в режиме реального времени чтобы проверить ошибки времени выполнения. Когда он не используется, его можно отключить. процессор будет иметь параллельный или JTAG интерфейс с ПК для загрузки exe файл для выполнения.

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

источник:http://www.dsprelated.com/groups/c6x/show/148.php