  Computing is a high-level process of a physical system. Recent interest in
non-standard computing systems, including quantum and biological computers, has
brought this physical basis of computing to the forefront. There has been,
however, no consensus on how to tell if a given physical system is acting as a
computer or not; leading to confusion over novel computational devices, and
even claims that every physical event is a computation. In this paper we
introduce a formal framework that can be used to determine whether or not a
physical system is performing a computation. We demonstrate how the abstract
computational level interacts with the physical device level, drawing the
comparison with the use of mathematical models to represent physical objects in
experimental science. This powerful formulation allows a precise description of
the similarities between experiments, computation, simulation, and technology,
leading to our central conclusion: physical computing is the use of a physical
system to predict the outcome of an abstract evolution. We give conditions that
must be satisfied in order for computation to be occurring, and illustrate
these with a range of non-standard computing scenarios. The framework also
covers broader computing contexts, where there is no obvious human computer
user. We define the critical notion of a 'computational entity', and show the
role this plays in defining when computing is taking place in physical systems.
