"Awareness" and "understanding", whatever they are, are computable (since the laws of physics are computable, and humans are physical objects). Hence a computable Laplace Demon can certainly have both.

Simulations can also have both (e.g. there's no way to distinguish whether we are a simulation or not).

My point about simulation is that it's the only way for one Turing-complete system to accurately predict the behaviour of another. This is a consequence of the Halting Problem.

For example, let's assume a (computable) Laplace Demon knows the entire state of the particles in a room, which includes a computer that's just started the following command:

if ./foo.py; then eject /dev/cdrom; fi

Accurately predicting the future motion of those particles must include whether or not the CD-ROM tray comes out. That depends on the exit code of foo.py, exactly when it exits, and indeed on whether it exits (halts) at all!

'Logical omniscience' is the idea that a Demon would instantly "know" all of the future particle behaviour, as soon as it learns the current state; without having to spend time calculating those consequences. Logical omniscience leads to a contradiction, since such a Demon would instantly know if/when foo.py halts for regardless of which program foo.py happens to be. In other words, it would have a computable solution to the Halting Problem, which Turing proved was impossible. Hence computable processes (including Demons, humans, superintelligent AIs, etc.) cannot be logically omniscient.

As I mentioned before, we could get around this by having the Demon be hypercomputational (e.g. with access to a halting oracle); but that's essentially 'magic' and hence not very interesting.

If we stick with the idea of a computable Demon, then it cannot instantly know all future states; it has to calculate them somehow. What possible calculation could a Demon perform, which would accurately predict the state of the room in the example above, for any possible program foo.py? The answer is obvious: it must run the program! The Demon doesn't necessarily need a recognisable Python interpreter; but whatever calculation method it uses to get an accurate prediction, it must be equivalent to a Python interpreter (anything which accurately calculates the behaviour of arbitrary Python programs is, by definition, an implementation of Python).

This is not just some weird edge-case either; lots of physical systems are Turing-complete. For example, the behaviour of gas molecules bouncing around in containers can be used for Turing-complete computation http://lambda-the-ultimate.org/node/4120 (just like we use the behaviour of electrons bouncing around in wires). Likewise the brain is also Turing-complete (if we give it external memory, like pen+paper), since our brains can trace through the steps of Turing-complete languages. Hence any accurate prediction of such systems must involve 'running an interpreter' for the rules of those systems. Or, in other words, running an exact simulation.

The only way for a computable process (even a human mind!) to accurately predict the behaviour of an arbitrary Turing-complete system (whether that's a Python program, gas in a box, a brain, etc.) is to run through every step of an exact simulation, until the desired point.

Hence for Laplace's Demon to accurately predict the behaviour of the Universe, it must exactly simulate the Universe, in its entirety, step-by-step. That's the only way to know what will happen. And in that case, the Demon 'contains' an exact copy of the Universe, which 'from the inside' is indistinguishable from the 'real' Universe (if there even is such a thing).

It's impossible to know whether we are part of Laplace's Demon's calculations.