6 ms·
Russian team develops x86 emulator on ARM
- bitJericho 14y agoDoesn't qemu already do this? Is the Russian's code faster?
- lucian1900 14y agoI believe qemu's userspace mode doesn't work on an ARM host.
- pm215 14y agoIt does, assuming your ARM host is at least ARMv6 or v7 (v5 doesn't deal with unaligned accesses and QEMU userspace mode doesn't do anything special with guest binary unaligned accesses, so they appear as host unaligned accesses). QEMU's i386 userspace mode emulation is a bigger problem -- most notably it doesn't handle multithreaded guest binaries (to an even bigger extent than QEMU's general issues with multithreaded guest binaries). None of these are insurmountable problems; it's just that nobody so far has cared enough about them to put in the time to develop fixes and get them through code review on the mailing list. Patches welcome :-)
- primitur 14y agoQEMU is regularly being used in the Emulator scene as a host for x86 binaries, mostly DOS stuff, though. Its a decent enough 8086 emulator, 386'ish too ..
- xuhu 14y agoIt wouldn't be a shock if the Russians' code was based on QEMU.
- pm215 14y agoI would be mildly shocked if it was, because (a) the relevant bits of QEMU are under GPL or LGPL, and it doesn't seem very likely that you could get $1.3m investment for a product you'd have to GPL, and (b) if you're interested purely in userspace application translation (and especially if you are happy to restrict to a single guest and single host architecture) then you can almost certainly come up with a better-suited design for that than QEMU (which is rather generalised and focused more on system emulation than userspace).
- dschiptsov 14y agoTo run VMWare->Windows->JVM->Scala/Closure "state of the art" stuff, I suppose..
- lucaspiller 14y agoWhat is the state of the JVM on ARM, can you run enterprise stuff on top of Dalvik?
- lttlrck 14y agoI don't think the state of enterprise JVM support on ARM is a reason run x86 JVM under software emulation on ARM. Intel would eat that idea for breakfast. There are real JVMs on ARM, plus Jazelle Java acceleration.
- mtgx 14y agoCortex A15 and beyond will support hardware virtualization.
- justincormack 14y agoDalvik is not a JVM implememtation. But there is JVM for ARM. It is slow and much less optimised. Most enterprise java stuff is going to need more memory than you get on ARM.
- lttlrck 14y agoWhat server applications that matter cannot be recompiled for ARM but will work effectively under emulation?
- rlpb 14y agoAnything with a JIT compiler? For example, the status of Java on ARM is getting better, but still rumoured to not be as fast as on x86. And anything that is not open source? Proprietary software is still used heavily on servers running an open source stack. Having a performant emulation or translation option could help with odd pieces that vendors haven't recompiled. Although support would be an issue for this at enterprise level.
- cantankerous 14y agoRumored? Are there numbers somewhere or is it still in development or something?
- lmm 14y ago>Anything with a JIT compiler? For example, the status of Java on ARM is getting better, but still rumoured to not be as fast as on x86. If performance is the worry I highly doubt running through an x86 emulator is going to be faster.
- simias 14y agoSo this is a purely software solution? I wonder if we could see ARM SoCs with some hardware for decoding x86 instructions and have them executed by the ARM core. After all since ARM7 most ARM cores support both ARM and THUMB instruction sets. I'm not sure you could do that without permission from Intel though.
- rthomas6 14y agoAccording to Wikipedia, the instruction set is open, but for "some advanced features," they may need a license from Intel. I'm not sure what advanced features that would be.
- lucian1900 14y agoProbably things like SSE.
- mtgx 14y agoIndeed, AMD licenses the SSE from Intel, and Intel licenses x64 from AMD.
- lucian1900 14y agoAt that point, it'd basically become an x86 core, with all the space and complexity that requires. It's easier to translate in software.
- simias 14y agoI was not thinking about full blown x86 support, but partial support where it matters. A bit like the Jazelle Java bytecode support, it wouldn't really run x86 code in native but would support extensions that would make it easier and faster. I'm not familiar enough with the x86 instruction set to guess where this would really improve performances though.
- lucian1900 14y ago
- ronreiter 14y agoWithin a few years, Intel CPUs are soon going to compete with ARM.
- chj 14y agoAn x86 emulator optimized for ARM: http://www.aemula.net
- Symmetry 14y agoIs this the same group that worked on the Elbrus VLIW computers? http://en.wikipedia.org/wiki/Elbrus_%28computer%29 http://en.wikipedia.org/wiki/Elbrus_%28computer%29
- mariuz 14y agoYes they are the same They have already implemented a software dynamic binary translation virtual machine, similar to Transmeta Crusoe With real hardware booting window/linux http://en.wikipedia.org/wiki/Elbrus_2000 http://en.wikipedia.org/wiki/Elbrus_2000 I guess is that binary translation virtual machine could be tweaked for ARM instruction set