

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

While I understand what simulation and emulation mean in general, I almost always get confused about them. Assume that I create a piece of software that mimics existing hardware/software, what should I call it? A simulator or an emulator?

Could anyone explain the difference in terms of programming?
Bonus: What is the difference in English between these two terms? (Sorry, I am not a native speaker :)

share|improve this question
In mobile apps development, iPhone has a simulator while Android has an emulator. More here -… – Vishnu Haridas Mar 21 '13 at 19:57
I found Wikipedia's take on this informative: – AmigoNico Feb 21 '15 at 8:32
this is also could be helpful in explaining this:… – Hakam Fostok Aug 30 '15 at 13:52

19 Answers 19

up vote 277 down vote accepted



Ideally, you should be able to look into the simulation and observe properties that you would also see if you looked into the original target. In practice, there may some shortcuts to the simulation for performance reasons -- that is, some internal aspects of the simulation may actually be an emulation.

MAME is an arcade game emulator; Hyperterm is a (not very good) terminal emulator. There's no need to model the arcade machine or a terminal in detail to get the desired emulated behavior.

Flight Simulator is a simulator; SPICE is an electronics simulator. They model as much as possible every detail of the target to represent what the target does in reality.

EDIT: Other responses have pointed out that the goal of an emulation is to able to substitute for the object it is emulating. That's an important point. A simulation's focus is more on the modelling of the internal state of the target -- and the simulation does not necessarily lead to emulation. In particular, a simulation may run far slower than real time. SPICE, for example, cannot substitue for an actual electronics circuit (even if assuming there was some kind of magical device that perfectly interfaces electrical circuits to a SPICE simulation.) A simulation Simulation does not always lead to emulation --

share|improve this answer
mmm... I think I am going to accept this answer :) – AraK Oct 18 '09 at 12:00
By this definition, is it therefore impossible to simulate the real world in software? I don't think we can accurately represent the underlying state of the real world - only emulate observable properties... for now. – Dolph May 28 '10 at 18:13
Depends how many dimensions you want to simulate. – Kaizoku Jan 29 '13 at 5:52
I do not agree with this "[Simulations] model as much as possible every detail of the target to represent what the target does in reality." Simulations have the model of the target system with sufficient detail based on the purpose of the simulation. For instance, Flight Simulator probably does not model fishes in the sea because it is useless for the purpose of the simulation. – Hamdi Aug 7 '15 at 3:11
I think this answer makes the differentiation between the two more confusing as @Toybuilder uses the verb emulating in the definition of simulation. In the literature, emulation is often used in the context of (partly) replacement of the real system. It means, emulation operates in the real world setting not within the simulation. – Hamdi Aug 7 '15 at 3:29

An emulator can replace the original for 'real' use. A simulator is a model for analysis.

A Virtual PC emulates a PC.

If a flight-simulator could transport you from A to B then it would be a flight-emulator.

An emulator will always have to operate close to real-time. For a simulator that is not always the case. A geological simulation could do 1000 years/second or more.

share|improve this answer
@Henk Your "cockpit" example is fantastic though I understood it after I read Toybuilder answer. Thanks :) – AraK Oct 18 '09 at 12:02
Virtual PC does not emulate, it virtualizes. QEmu, on the other hand, does emulate. In both cases, the name should be a hint. – Jörg W Mittag Oct 18 '09 at 12:36
I think it would be safe to say that Virtual PC emulates a PC. HOW it emulates the PC is through virtualisation, but that's more of an implementation detail. You might argue that hardware virtualisation is a superset of emulation, in that can provide accelerated CPU support, exclusive hardware device access, etc. – Lee B Oct 18 '09 at 13:30
Simple and nice :) – mahe madhi Nov 16 '11 at 14:10
Oh that Flight example did it for me! +1 – user1266515 Feb 1 '13 at 20:20

Simulation = For analysis and study

Emulation = For usage as a substitute


Simulator mimics the activity of something that it is simulating. It "appears"(a lot can go with this "appears", depending on the context) to be the same as the thing being simulated. For example the flight simulator "appears" to be a real flight to the user, although it does transport you from one place to another.

Emulator, on the other hand, actually "does" what the thing being emulated does, and in doing so it too "appears to be doing the same thing". An emulator may use different set of protocols for mimicking the thing being emulated, but the result/outcome is always the same as the original object. For example, EMU8086 emulates the 8086 microprocessor on your computer, which obviously is not running on 8086(=different protocols), but the output it gives is what a real 8086 would give.

share|improve this answer
Clearest answer I've seen. For me, could only be improved by omitting the extra sentence or integrating it into your excellent contrasting definitions :-D – doughgle Aug 21 '13 at 2:18
Clear, precise and what not! Good answer! – Syed Mauze Rehan May 27 '14 at 15:41

It's a difference in focus. Emulators1 focus on recreating the behavior of a system, with no regard for how the system functions internally. Simulators2 focus on modeling the components of a system. You use an emulator when you care mostly about what a system does, and a simulator when you care about how it does it.

As for their general English meanings, emulation is "the endeavor to equal or to excel another in qualities or actions", while simulation is "to model, replicate, duplicate the behavior, appearance or properties of". Not much difference. Emulation comes from æmulus, "striving, rivaling," and is related to "imitate" and "image," which suggests a surface-lever resemblance. "Simulation" comes from similis "like", as does the word "similar," which perhaps suggests a deeper congruence.


  1. Wikipedia: Emulator
  2. Wikipedia: Computer Simulation
  3. Wiktionary: emulation
  4. Wiktionary: simulation
  5. Etymology Online: emulation
  6. Etymology Online: simulation
share|improve this answer
Your answer is different from others. Is Virtual PC a simulator or an Emulator according to you ? – Mikaël Mayer Nov 22 '13 at 7:55
@MikaëlMayer: Many of the answers are different than the others', with only some similar. I'd consider my answer equivalent (in that things would be classified the same way) to Toybuilder and cdiggens's, and compatible with Jörg's. It's contrary only to Pontus and Aeolai's. – outis Nov 22 '13 at 8:29

I don't think emulator and simulator can be compared. Both mimic something, but are not part of the same scope of reasonning, they are not used in the same context.

In short: an emulator is designed to copy some features of the orginial and can even replace it in the real environment. A simulator is not desgined to copy the features of the original, but only to appear similar to the original to human beings. Without the features of the orginal, the simulator cannot replace it in the real environment.

An emulator is a device that mimics something close enough so that it can be substituted to the real thing. E.g you want a circuit to work like a ROM (read only memory) circuit, but also wants to adjust the content until it is what you want. You'll use a ROM emulator, a black box (likely to be CPU-based) with a physical and electrical interfaces compatible with the ROM you want to emulate. The emulator will be plugged into the device in place of the real ROM. The motherboard will not see any difference when working, but you will be able to change the emulated-ROM content easily. Said otherwise the emulator will act exactly as the actual thing in its motherboard context (maybe a little bit slower due to actual internal model) but there will be additional functions (like re-writing) visible only to the designer, out of the motherboard context. So emulator definition would be: something that mimic the original, has all of its functional features, can actually replace it to some extend in the real world, and may have additional features not visible in the normal context.

A simulator is used in another thinking context, e.g a plane simulator, a car simulator, etc. The simulation will take care only of some aspect of the actual thing, usually those related to how a human being will perceive and control it. The simulator will not perform the functions of the real stuff, and cannot be sustituted to it. The plane simulator will not fly or carry someone, it's not its purpose at all. The simulator is not intended to work, but to appear to the pilot somehow like the actual thing for purposes other than its normal ones, e.g. to allow ground training (including in unusual situations like all-engine failure). So simulator definition would be: something that can appear to human, to some extend, like the original, but cannot replace it for actual use. In addition the pilot will know that the simulator is a simulator.

I don't think we'll see any ROM simulator, because ROM are not interacting with human beings, nor we'll see any plane emulator, because planes cannot have a replacement performing the same functions in the real world.

In my view the model inside an emulator or a simulator can be anything, and has not to be similar to the model of the original. A ROM emulator model will likely be software instead of hardware, MS Flight Simulator cannot be more software than it is.

This comparison of both terms will contradict the currently selected answer (from Toybuilder) which puts the difference on the internal model, while my suggestion is that the difference is whether the fake can or cannot be used to perform the actual function in the actual world (to some accepted extend, indeed).

Note that the plane simulator will have also to simulate the earth, the sun, the wind, etc, which are not part of the plane, so a plane simulator will have to mimic some aspects of the plane, as well as the environment of the plane because it is not used in this actual environment, but in a training room.

This is a big difference with the emulator which emulates only the orginal, and its purpose is to be used in the environment of the original with no need to emulate it. Back to the plane context... what could be a plane emulator? Maybe a train that will connect two airports -- actually two plane steps -- carrying passengers, with stewardesses onboard, with car interior looking like an actual plane cabin, and with captain saying "ladies and gentlemen our altitude is currenlty 10 kms and the temperature at our destination is 24°C". Its benefit is difficult to see, hum...

As a conclusion, the emulator is a real thing intended to work, the simulator is a fake intended to trick the user.

share|improve this answer
Well explained! Thanks! I like your conclusion btw. ;) – haifacarina Jul 20 '12 at 9:31
The phrase "ROM emulator" reminds me of virtual video game consoles. – Joe Z. Feb 20 '13 at 19:13

To understand the difference between a simulator and an emulator, keep in mind that a simulator tries to mimic the behavior of a real device. For example, in the case of the iOS Simulator, it simulates the real behavior of an actual iPhone/iPad device. However, the Simulator itself uses the various libraries installed on the Mac (such as QuickTime) to perform its rendering so that the effect looks the same as an actual iPhone. In addition, applications tested on the Simulator are compiled into x86 code, which is the byte-code understood by the Simulator. A real iPhone device, conversely, uses ARM-based code.

In contrast, an emulator emulates the working of a real device. Applications tested on an emulator are compiled into the actual byte-code used by the real device. The emulator executes the application by translating the byte-code into a form that can be executed by the host computer running the emulator.

To understand the subtle difference between simulation and emulation, imagine you are trying to convince a child that playing with knives is dangerous. To simulate this, you pretend to cut yourself with a knife and groan in pain. To emulate this, you actually cut yourself.

share|improve this answer
Don't try this at home kids :D – Gearoid Murphy Oct 18 '12 at 15:19
The last sentence is all thats needed :) – Breakpoint Dec 27 '12 at 11:19

Simple Explanation.

If you want to convert your PC (running Windows) into Mac, you can do either of these:

(1) You can simply install a Mac theme on your Windows. So, your PC feels more like Mac, but you can't actually run any Mac programs. (SIMULATION)


(2) You can program your PC to run like Mac (I'm not sure if this is possible :P ). Now you can even run Mac programs successfully and expect the same output as on Mac. (EMULATION)

In the first case, you can experience Mac, but you can't expect the same output as on Mac.
In the second case, you can expect the same output as on Mac, but still the fact remains that it is only a PC.

share|improve this answer

An emulator is a model of a system which will accept any valid input that that the emulated system would accept, and produce the same output or result. So your software is an emulator, only if it reproduces the behavior of the emulated system precisely.

share|improve this answer
Thanks. I think this is a very precise definition of Emulation. So, for example Wine is a simulator because it doesn't necessarily give the same precise output defined in Windows? – AraK Oct 18 '09 at 11:53
Be careful about trying to shoehorn WINE into an either/or of emulator or simulator. WINE is a compatibility layer, which makes binaries from one system run on the binary API layer of another system. You might call it an adaptor. I suppose simulator isn't a bad way to understand it either, but it's not really much closer than emulator. – Lee B Oct 18 '09 at 13:33

Some years ago I came up with a very short adage that, I believe, captures the essence of the difference quite nicely:

A simulator is an emulator on a mission.

By that I mean that you use an emulator when you can't use the real thing, and you use a simulator when you can't use the real thing and you want to find something out about it.

share|improve this answer

In more or less normal parlance: If your software can do everything the mimicked system can do, it's an emulator. If it only approximates the results of a system (IT or otherwise), it's a simulator.

share|improve this answer

Simulator: it is similar to interpreter. i.e. it actually executes the real code in line by line to mimic the behaviour

Emulator: it is similar executable. i.e. it takes compiled code and executes it.

share|improve this answer

The distintion between the two terms is a bit fuzzy. Coming from a world where "Emulators" are pieces of hardware that allow you debug embedded systems. And remember products that allowed you to have ICE (In Circuit Emulation) capabilities to debug a PC platform, I find the use of the term "Emulation" to be a somewhat of a misnomer for software that SIMULATES the behaviour of a piece of hardware.

My justification for the current use of the term is Emulation is that it may "augment" the functionality, and only is concerned with a "reasonable" approximation of the behaviour of the system.

ICE: (In Circuit Emulation) A piece of hardware that is plugged into a board in place of the actual processor. It allows you to run the system as if the actual processor was present. Typically these have a variant of the processor on them to actually execute the software with glue logic to allow the user to break executation and single step under hardware control. Some would also provide logging capability. Most modern processors development systems have replace ICE type emulation with JTAG Emulation, where the JTAG just talks to the processor via a special purpose serial link and all execution is perform by the processor mounted on the board.

Software EMULATOR: An 0x86 emulator is only concerned with being able to execute 0x86 assembly language, not providing accurate cycle per cycle behaviourial model of a SPECIFIC 0x86 processor. Bochs is an example of this. QEMU does this, but also allows "virtualization" using special kernel modules.

SIMULATOR: Texas Instruments provides a CYCLE ACCURATE behaviourial model of there processors for software development that is intended to be a accurate SIMULATION of SPECIFIC processor cores behavior for the developers to use prior to having working hardware.

Software EMULATOR augmenting functionality: BLEEM not only allowed you to run Playstation Software, but also allowed the display to be output with higher resolution than the Playstation was able to provide, and also took advantage of more advanced capabilities of GPUs that were avaliable. (i.e. Better blending and smoothing of textures.)

share|improve this answer

In computer science both a simulation and emulation produce the same outputs, from the same inputs, that the original system does; However, an emulation also uses the same processes to achieve it and is made out of the same materials. A simulation uses different processes from the original system. Also worth noting is the term replication, which is the intermediate of the two - using the same processes but being made out of a different material.

So if I want to run my old Super Mario Bros game on my PC I use an SNES emulator, because it is using the same or similar computer code (processes) to run the game, and uses the same or similar materials (silicon chip). However, if I want to fly a Boeing 747 jet on my PC I use a flight simulator because it uses completely different processes from the original (there are no actual wings, lift or aerodynamics involved!).

Here are the exact definitions taken from a computer science glossary:

A simulation is a model of a system that captures the functional connections between inputs and outputs of the system, but without necessarily being based on processes that are the same as, or similar to, those of the system itself.

A replication is a model of a system that captures the functional connections between inputs and outputs of the system and is based on processes that are the same as, or similar to, those of the system itself.

An emulation is a model of some system that captures the functional connections between inputs and outputs of the system, based on processes that are the same as, or similar to, those of that system, and that is built of the same materials as that system.

Reference: The Open University, M366 Glossary 1.1, 2007

share|improve this answer

An emulator is an alternative to the real system but a simulator is used to optimize, understand and estimate the real system.

share|improve this answer

Both are models of an object that you have some means of controlling inputs to and observing outputs from.

The key difference is that:

  • With an emulator, you want the output exactly match what the object you are emulating would produce.
  • With a simulator, you want certain properties of your output to be similar to what the object would produce.

Let me give an example -- suppose you want to do some system testing to see how adding a new sensor (like a thermometer) to a system would affect the system. You know that the thermometer sends a message 8 time a second containing its measurement.

Simulation -- if you do not have the thermometer yet, but you want to test that this message rate will not overload you system, you can simulate the sensor by attaching a unit that sends a random number 8 times a second. You can run any test that does not rely on the actual value the sensor sends.

Emulation -- suppose you have a very expensive thermometer that measures to 0.001 C, and you want to see if you can get by with a cheaper thermometer that only measures to the nearest 0.5 C. You can emulate the cheaper thermometer using an expensive thermometer and then rounding the reading to the nearest 0.5 C and running tests that rely on the temperature values.

Note that simulations can also be used for forecasting or predicting behavior. Finite element analysis simulations are used in many applications, including weather prediction and virtual wind tunnels.

The definitions of the terms:

  • emulation -- surpass or exactly match
  • simulate -- imitate in appearance or character
share|improve this answer
Note -- this is very similar to the answer to a question that has been marked as a dup of this one (…). I did add a definition of the terms (asked for in the question but not yet answered) and also added some info about uses for simulation (finite element analysis) for something more than mimicking a device. – Jay Elston Nov 15 '12 at 1:45

This question is probably best answered by taking a look at historical practice.

In the past, I've seen gaming console emulators on PC for the PlayStation & SEGA.

Simulators are commonplace when referring to software that tries to mimic real life actions, such as driving or flying. Gran Turismo and Microsoft Flight Simulator spring to mind as classic examples of simulators.

As for the linguistic difference, emulation usually refers to the action of copying someone's (or something's) praiseworthy characteristics or behaviors. Emulation is distinct from imitation, in which a person is copied for the purpose of mockery.

The linguistic meaning of the verb 'simulation' is essentially to pretend or mimic someone or something.

share|improve this answer



share|improve this answer

A Virtual PC tries to emulate a Computer, from the point of view of a Programmer BUT, at the same time, it simulates a Computer from the point of view of a Electrical Engineer.

share|improve this answer


Consider a situation that you know only English and you are in China. In order to interact with a Chinese person you need a translator. Now, role of translator is that it will seek input from you in English and convert to Chinese and and give that input to the Chinese person and gets response from the Chinese person and convert to English and give the output to you in English. Now that translator and Chinese person is the emulator. Both combine will provide similar functionality as if you were communicating with the English person. So hardware may be different but functionality will be same.


I can't give better example than SPICE or flight simulator. Both will replace hardware component behavior with the software or mathematical model which will behave similar to the hardware.

In the end it depends on the context that which solution better suits project needs.

share|improve this answer

protected by Elenasys Dec 26 '13 at 15:27


Would you like to answer one of these unanswered questions instead?
