Comment Re:Why it's going to be better than before (Score 2) 153
Thus, in theory, the transition from x86 to Arm should prove easier and yield better results.
I'm afraid this theory is not based on any real-life experience. Sure, you can made up some theoretically possible architectures where it would be the case, but it is definitely not the case with processors that we have today.
Transition from PowerPC to Intel x86 processors was simpler exactly because x86 has a richer set of commands, and no one forces you to combine many RISC instructions in one complex CISC instruction, because all modern x86 processors run the microcode internally, so they as efficient with simple instructions as RISC processors. There are a few simple patterns that you can use to improve code density and perhaps performance, but doing so is a child play.
The real problem with code translation is not the difference in instruction sets but in memory ordering. PowerPC and ARM are more weakly-ordered than x86, so it is relatively straightforward to translate their code to x86 -- you do not need to add any extra memory barrier that did not exist in the original code.
On the other hand, if you translate any multithreaded x86 code to more a more weakly-ordered CPU, you have to detect where additional memory barriers are necessary, and that is complicated even for very simple cases, and it cannot be done in general, so you end up adding many more memory barriers than it is really necessary, which is bad for performance.
You may ask how does x86 perform well despite being stronger-ordered? The key to that is leveraging speculative execution capacity that all modern x86 have, but you can't do the same thing in software.
Apple will most likely make use of this knowledge and have designed their translator in exactly the same the x86 hardware does it.
You can't do that, because that internal translator heavily relies on information that is available only at runtime as well as on some specialized hardware features, such as speculative execution.