lpetrich
Contributor
Output = f(input)
New state = f(input, old state)
(New state, stack action) = f(input, old state, symbol of top of stack)
where (stack action) is any of (do nothing), (add symbol to top of stack), (write symbol at top of stack), and (remove symbol from top of stack)
(New state, tape action) = f(input, old state, symbol in tape at head's location)
where (tape action) is any of (do nothing), (write symbol value at head's location), (move head forward one cell), and (move head backward one cell)
A pushdown automaton is a subset of a Turing machine.
A sufficiently-capable Turing machine can simulate any other Turing machine, something called Turing universality. A Turing-complete system is equivalent to a universal Turing machine, though when assessing Turing completeness, finiteness is usually ignored. That aside, Turing completeness is having (1) arbitrary array accessing (random access over an array's entire length) and (2) conditional branching (change control to a different location only if some condition is satisfied).
Essentially every computer CPU has been Turing-complete, though some computing hardware, like FPGA's, are not, in general, Turing-complete. Most common programming languages are also Turing-complete, though there are some exceptions like HTML.
It looks as if a resource-limited Turing machine is as far as one can go in physically realizable models of computation.