A computer simulator is a program run on a computer for the purpose of simulating some sort of system, in order to get a better idea how the system functions. A computer simulator may also be used to simulate another computer. There are two main types: the full-system simulator and the Instruction Set Simulator (ISS). This type of computer simulator is often used to test new software on a wide range of hardware configurations, without actually having to use the physical computers.
At its most fundamental level, a computer simulator is used to recreate a real-life situation where testing many different states wouldn’t be easy or safe. In this case, using a computer simulator saves a great deal of time and resources, and may actually allow for in-depth testing that would be physically impossible in the real world. Computer simulations have been used in engineering and science for some time, and in recent years, as hardware has become more robust, and software has become more sophisticated, these simulations are able to accomplish more and more.
An example of a use of a computer simulator might be an engineering company working on designing a better wing for aircraft. Rather than spending resources building prototypes of each new design, and testing them in wind tunnels or on real aircraft, a simulation can be run instead. If the fluid dynamics of the wind are accurately modeled, any number of variables can be modified to test a virtual wing in a million different scenarios, some of which might be impossible to recreate in the real world. Additionally, if a design turns out not to be ideal, it can be easily modified and retested, without the need for building a new physical object. In this way, hundreds or thousands of designs can be tried in a relatively short period of time, allowing for a much greater degree of fine tuning than would otherwise be possible.
With the proliferation of hardware, software manufacturers also find a need to simulate different environments for their programs. Since it would be infeasible to run a piece of software on every computer on earth, much less to run it on every modified system with more or less video memory, third-party sound cards, and the dozens of other components that can be customized, a computer simulator is used instead. In this way, the software can be run on tens of thousands of hypothetical hardware configurations, and bugs can be detected and fixed long before the product is shipped out to customers.
Instruction Set Simulators are commonly used for this task. They are able to have variables modified that represent different hardware limitations of different machines. These variables can be changed, the program can be run, and then the variables can be changed again, allowing a programmer to test through many systems in a short period of time.
Another type of simulator is the full-system simulator. Although similar to an ISS, a full-system simulator allows for a much more comprehensive environment, by allowing entire operating systems and software drivers to be simulated. This allows for an even greater degree of accuracy in simulation, which provides a better opportunity to detect and repair bugs.