Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Out of order processors do not "kill" determinism. If you can guarantee your initial state is the same you will get the same result in the same number of cycles repeatably. The fact that time it takes is non-obvious does not make it non-deterministic.

Now hyperthreading does introduce real non-determinism from the standpoint of a single threaded calculation because it doesn't control the other thread using processor resources, but hyper threading introduces that sort of non-determinism even on in order processors.



> Out of order processors do not "kill" determinism.

It may be deterministic at the micro-architecture level, but it is non-deterministic at the architecture level.

And then there are many other things in the mix: speculative execution, instruction tracing, etc.


Well sure, different implementations behave differently. It still has nothing to do with being OoOE...

A 486 and an original Atom are both in order implementations the i386 architecture (though both also implement other extensions), but knowing how code runs on one tells me nothing about the other, and if I just have an ISA reference the i386 without additional documentation or hardware to test on I won't be able to predict how code I write performs on either of them.


How does a practical program guarantee the initial state of the CPU?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: