Originally Posted by J94w
I would have thought that arm would be able to compile and run with out a hitch, especially with the new quads coming out.. who knows maybe intel will bring something usable.
But really, how come a ARM processor cannot handle both an emulator and a actual windows for arm? I thought they were they same thing, just slower compared to a x86 (well not now since the new quads).
you need to have an understanding of how a CPU works to understand that its very difficult to emulate the whole thing.
an ARM CPU is a RISC CPU, the idea being that by making it simple it can be faster. Which is true to an extent, in a number of scenario's. It was seen as "the" solution back in the 90s but ultimately failed to gain any traction in the desktop market, hence we have a x86 dominated market.
What RISC did bring is the ability to have high numbers of cycles in a very short pipe line making it very efficient is some cases, hence why it has such a low power requirement and is great for small devices like phones and also why its taking Intel so long to develop a good x86 ultra low power CPU
But this is also its failure, because x86 is a longer pipe, or fatter if you'd rather, it can do more per cycle than a ARM CPU, a good way of thinking about it is to say it has more grunt, more bang per buck.
So lets take emulating a x86 CPU, even tho you can have 4 threads running at once on an ARM CPU it doesn't mean it could stitch those 4 threads together to emulate a single x86 instruction. or to put it another way, take a knitted woollen jumper, have 4 people grab a different strand and pull it apart, easy right? ok. now ask those 4 people to put it back together again... suddenly a lot harder isn't it!
a 1GHz ARM and a 1 GHz x86 CPU are running the same number of cycles a second, but the volume of work PER cycle is significantly less in the ARM, in the same way a current gen AMD 2GHz CPU is slower than a Intel 2GHz CPU, same speed, but it has less ability.
So take all that, combine it with the fact that x86 is VERY complex and you get an idea why emulating it on a weaker CPU is a lot harder than you may think.
the other way around is easy tho, ARM on x86 would be slower but because x86 has more grunt and ARM isn't as complex its a lot more feasible.
Im not saying x86 on ARM cant happen, im saying that its not going to be very good.
Oh the other thing you mention about just compiling it, what you have here is a program, not just written in a different language but also for a different system, now by using a cross platform programing language you get a head start but it is still trying to talk to the hardware in x86, all those calls would need to be intercepted and converted in to a ARM equivalent,
a simple program could easily be done with a basic emulator, but some x86 programs would likely be very complex, meaning the emulator would need to be setup to emulate anything the program might throw at it, which in turn means a much harder piece of work and the reason MS probably doesn't want do it, its also the reason that even if it did work it would be slow (in some cases) because the ARM CPU is RISC and your trying to make it do the work of a x86, it might take dozens of cycles to achieve what the x86 CPU can do in a single cycle.
I hope that helps, ive simplified things somewhat before folk jump up and down,
but that is essentially the problems it would face.