By far the most well-known type architecture is the von Neumann
machine. The components of the von Neumann machine are a large,
random access memory and a processor consisting of a functional unit
that can compute some set of simple functions, a small amount of
state, often referred to as a program counter (PC), and a controller
that orchestrates the operation of the machine. These components are
illustrated on the left side of Figure \ref{fig:hybrid_TA}.
A von Neumann machine runs by repeatedly fetching the instruction
indicated by the PC from memory, fetching operands from memory as
dictated by the instruction, computing some function, then updating the
PC and storing results back to memory, if necessary. The only cost that
is relevant to the von Neumann machine is that each instruction
execution carries unit cost. Alternatively, each memory reference could
have unit cost; however, abstractly these cost models are equivalent.