Comparison with simulation
The word "emulator" was coined in 1963 at IBM during development of the NPL (IBM 360) product line, using a "new combination of software, microcode, and hardware". 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 705. In addition to simulators, IBM had compatibility features on the 709 and 7090, 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 1410 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.