Yes, your assumption is right. Every time we execute
the same binary and settings (w/o I/O), we get the same
instruction trace. The question is whether DBT introduces
any source of indeterminism (e.g., arbitrary reordering of
instructions in the TB or something that does not violate
correctness but it’s not exactly the same). We checked the
code and it seems that the TCG generates the same code
every time, but we would like some confirmation. Thanks!
Regards,
Javier
On 28 Jan 2015, at 11:18, Peter Maydell peter.mayd...@linaro.org wrote:
On 28 January 2015 at 02:51, Dale R. Worley wor...@alum.mit.edu wrote:
Javier Picorel javier.pico...@epfl.ch writes:
We are trying to make QEMU deterministic for
architectural simulation. In the absence of I/O,
let's say only user code or exceptions, is there
any source of indeterminism (e.g., non deterministic
compiler optimizations, TB indeterminism) of
QEMU's DBT versus a canonical interpreter? Thanks!
I'm not sure exactly what information you're trying to obtain. Given
that most CPU architectures have multiple implementations, and many of
those have complex internal operations, it's difficult to make an
emulator deterministic in any way other than its behavior conforms to
the architecture specification.
I had assumed the meaning here was deterministic in the sense
of every time you run QEMU with the same binary and settings
you get exactly the same execution run. With the default
switches we don't provide that (we give 'best performance'
instead). -icount is I think supposed to be deterministic but
probably buggy. Determinism is a requirement for the checkpoint/
reverse execution work so the people doing that are probably
best placed to say what the current status is.
-- PMM