Abstract machine
This article needs additional citations for verification. (October 2009) (Learn how and when to remove this template message)

An abstract machine, also called an abstract computer, is a theoretical model of a computer hardware or software system used in automata theory. Abstraction of computing processes is used in both the computer science and computer engineering disciplines and usually assumes a discrete time paradigm.
Information
In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyze the complexity of algorithms (see computational complexity theory). A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. The bestknown example is the Turing machine.
Abstract data types can be specified in terms of their operational semantics on an abstract machine. For example, a stack can be specified in terms of operations on an abstract machine with an array of memory. Through the use of abstract machines it is possible to compute the amount of resources (time, memory, etc.) necessary to perform a particular operation without having to construct a physical system.^{[clarification needed]}
More complex definitions create abstract machines with full instruction sets, registers and models of memory. One popular model more similar to real modern machines is the RAM model, which allows random access to indexed memory locations. As the performance difference between different levels of cache memory grows, cachesensitive models such as the externalmemory model and cacheoblivious model are growing in importance.
An abstract machine can also refer to a microprocessor design which has yet to be (or is not intended to be) implemented as hardware. An abstract machine implemented as a software simulation, or for which an interpreter exists, is called a virtual machine.
See also
 Abstraction (computer science)
 Abstract interpretation
 Discrete time
 Finite automata
 Flynn's taxonomy
 Formal models of computation
 Parallel randomaccess machine, the de facto standard model.^{[1]}
 Bulk synchronous parallel
 State space
References
This article is based on material taken from the Free Online Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.
 ^ D. B. Skillicorn (2005). Foundations of Parallel Programming. Cambridge University Press. p. 18. ISBN 9780521018562.
Further reading
 Peter van Emde Boas, Machine Models and Simulations pp. 3–66, appearing in:
 Jan van Leeuwen, ed. "Handbook of Theoretical Computer Science. Volume A: Algorithms and Complexity, The MIT PRESS/Elsevier, 1990. ISBN 0444880712 (volume A). QA 76.H279 1990.
 Stephan Diehl, Pieter Hartel and Peter Sestoft, Abstract Machines for Programming Language Implementation, Future Generation Computer Systems, Vol. 16(7), Elsevier, 2000.
 Werner Kluge (2006). Abstract Computing Machines: A Lambda Calculus Perspective. Springer. ISBN 9783540273592.