What's the difference between emulation and simulation?

Possible Duplicate:
Simulator or Emulator? What is the difference?

In simple understandable terms, what is the difference between the two terms?

[I have already looked at this, this and this]


(Using as an example your first link)

You want to duplicate the behavior of an old HP calculator, there are two options:

  • You write new program that draws the calculator's display and keys, and when the user clicks on the keys, your programs does what the old calculator did. This is a Simulator

  • You get a dump of the calculator's firmware, then write a program that loads the firmware and interprets it the same way the microprocessor in the calculator did. This is an Emulator

  • The Simulator tries to duplicate the behavior of the device.
    The Emulator tries to duplicate the inner workings of the device.


    This is a hard question to answer definitively because the terms and often misused or confused.

    Often, an emulator is a complete re-implementation of a particular device or platform. The emulator acts exactly like the real device would. For example, a NES emulator implements the CPU, the sound chip, the video output, the controller signals, etc. The unmodified code from a NES castridge can be dumped and then the resulting image can be loaded into our emulator and played.

    A simulator is a partial implementation of a device/platform, it does just enough for its own purposes. For example, the iPhone Simulator runs an "iPhone app" that has been specifically compiled to target x86 and the Cocoa API rather than the real device's ARM CPU and Cocoa Touch API. However, the binary that we run in the simulator would not work on the real device.


    Generally, I think of this larger question in three pieces: simulation, stimulation, emulation, and modeling.

    Simulation is the use of modeling to create a controllable, representative stand in for a complex system. Simulations are, by definition, always incomplete.

    Stimulation is the use of artificial environmental inputs to a well defined interface to drive, examine and test the behavior of a real world device.

    Emulation is the replacement of a real world device with an model at a well defined interface for the purposes of allowing controlled responses from the emulated real world device. The emulation is "complete" if all the interfaces are present, and the resulting observed behavior matches that of the real world device.

    Modeling is the use of mathematical techniques, specialized hardware, and engineering judgment to create a representative stand in for a real world environment, device, system, or behavior.

    In "simple terms" this means that an emulator is something that across a well defined interface is indistinguishable from the real world equivalent (except in speed). Emulations can be complete or incomplete.

    In "simple terms" a simulation is any system that can be controlled and examined for a range of behaviors that are similar or analogous to a real world system. Simulations are never, by definition, complete.

    链接地址: http://www.djcxy.com/p/50578.html

    上一篇: 显示应用程序部件选择列表

    下一篇: 仿真和仿真有什么区别?