
Russian team develops x86 emulator on ARM - adityar
http://cdn.eetimes.com/electronics-news/4397620/Russian-software-runs-x86-code-on-ARM
======
bitJericho
Doesn't qemu already do this? Is the Russian's code faster?

~~~
lucian1900
I believe qemu's userspace mode doesn't work on an ARM host.

~~~
pm215
It 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 :-)

------
Symmetry
Is this the same group that worked on the Elbrus VLIW computers?
<http://en.wikipedia.org/wiki/Elbrus_%28computer%29>

~~~
mariuz
Yes 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>

I guess is that binary translation virtual machine could be tweaked for ARM
instruction set

------
chj
An x86 emulator optimized for ARM:

    
    
      http://www.aemula.net

------
simias
So 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.

~~~
pm215
I don't think decode is really the hard part; if you're JITting at all it's
pretty easy. The difficulties arise where the semantics of the target and the
host don't match up. For instance, emulating a strong-memory-model
architecture like x86 on a weak-memory-model architecture like ARM requires a
pile of explicit memory barriers if you're going to handle multi-threaded
binaries. Emulating atomic memory accesses might also be tricky. Differences
in floating point semantics (like x86's 80-bit format or just different
choices of IEEE implementation specifics) are also painful: QEMU takes the
slow-but-safe option of doing all the floating point emulation in software (ie
using integer arithmetic) to ensure bit-for-bit accuracy. None of these pain
points is really related to the instruction decoding.

~~~
koenigdavidmj
According to Herb Sutter at [1], ARMv8 will support a couple new ops to
support sequentially consistent memory access.

1: [http://herbsutter.com/2012/08/02/strong-and-weak-hardware-
me...](http://herbsutter.com/2012/08/02/strong-and-weak-hardware-memory-
models/)

------
lttlrck
What server applications that matter cannot be recompiled for ARM but will
work effectively under emulation?

~~~
rlpb
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.

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.

~~~
lmm
>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.

------
ronreiter
Within a few years, Intel CPUs are soon going to compete with ARM.

~~~
mtgx
We've been hearing that for the past few years.

~~~
eru
They already compete. More and more markets will be affected over time.

------
dschiptsov
To run VMWare->Windows->JVM->Scala/Closure "state of the art" stuff, I
suppose..

~~~
lucaspiller
What is the state of the JVM on ARM, can you run enterprise stuff on top of
Dalvik?

~~~
lttlrck
I 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.

