Comparison with simulation
The word "emulator" was coined in 1963 at IBM
 during development of the NPL (
IBM 360) product line, using a "new
 They discovered that using
microcode hardware instead of software simulation, to execute programs written for earlier IBM computers, dramatically increased simulation speed. Earlier, IBM provided
simulators for, e.g., the
650 on the
 In addition to simulators, IBM had compatibility features on the
 for which it provided the IBM 709 computer with a program to run legacy programs written for the
IBM 704 on the
709 and later on the IBM 7090. This program used the instructions added by the compatibility feature
 to trap instructions requiring special handling; all other 704 instructions ran the same on a 7090. The compatibility feature on the
 only required setting a console toggle switch, not a support program.
In 1963, when microcode was first used to speed up this simulation process, IBM engineers coined the term "emulator" to describe the concept. In the 2000s, it has become common to use the word "emulate" in the context of software. However, before 1980, "emulation" referred only to emulation with a hardware or microcode assist, while "simulation" referred to pure software emulation.
 For example, a computer specially built for running programs designed for another architecture is an emulator. In contrast, a simulator could be a program which runs on a PC, so that old Atari games can be simulated on it. Purists continue to insist on this distinction, but currently the term "emulation" often means the complete imitation of a machine executing binary code while "simulation" often refers to
computer simulation, where a computer program is used to simulate an abstract model. Computer simulation is used in virtually every scientific and engineering domain and Computer Science is no exception, with several projects simulating abstract models of computer systems, such as
network simulation, which both practically and semantically differs from network emulation.