Is it possible to simulate a CPU with software?
Yes, its possible to simulate a CPU with software.  A CPU is just an electronic implementation of a large, but finite, number of rules of the form "If this condition is true, modify the state like this" and software can certainly do that. Wouldn't it be surprising if it couldn't? CPUs are designed to support the sorts of things we want to do with software, so it would be very strange if they were radically different.

Indeed any system that has a finite state (i.e., can be described with a finite amount of data) and is manipulated by a finite set of rules can be simulated in software. Going further, I don't think there is any known physical process that can't, at least in principle, be simulated in software.