Thinking About x86 Emulation on ARM

Posted on November 21, 2016 by Paul Thurrott in Hardware, Mobile, Windows 10 with 72 Comments

Thinking About x86 Emulation on ARM

A new report about Microsoft working on x86 emulation for the ARM-based versions of Windows 10 has Windows enthusiasts justifiably excited for the future. Assuming, of course, that Microsoft and ARM can actually pull this off.

This one will of course require a bit of explanation.

To date, most Windows PCs have run on what we still call the Intel x86 architecture, while modern mobile platforms like Android and iOS run on ARM-based architectures. The two systems are incompatible, and are oriented for different workloads. That is, x86 provides far more performance—and performance scalability–than does ARM. But ARM works better on the mobile computing platforms that are the norm today, offering great performance on lightweight mobile OSes with excellent power management capabilities.

It’s easy to emulate ARM on x86: In fact, developers do this all the time when creating mobile apps in Visual Studio, Xamarin Studio, Android Studio, and Apple’s Xcode. Emulating x86 on ARM, alas, is a sort of holy grail: An as-yet unobtainable goal that would help us bridge the legacy PC past with the mobile/ARM future.

There have been many efforts to emulate x86 on less-capable platforms. One many might not remember was the Transmeta Crusoe processor, which came to life in an early HP Tablet PC called the Compaq TC1000. That pretty but woeful device offered decent battery life for the day, but Windows and its desktop applications ran horribly slowly, and it quickly disappeared from the market. As did Transmeta.

Companies like Connectix and Parallels also offered x86 compatibility virtually to PowerPC-based Mac computers years before Apple itself switched to x86. These solutions let enterprising users run Windows in a window on the Mac desktop so that they could access Windows applications that were not available on their own platform. Like the Crusoe processor, these solutions were slow for the most part, though I suspect some will insist to this day that they ran well. It was certainly better than nothing.

In any event, we’re about to try again.

With the personal computing market having moved into the “mobile first, cloud first” era, the PC is being left behind: Each year, the combination of ARM-based devices—mostly smartphones and tablets—has vastly outsold x86-based PCs. And the gap is getting bigger.

The problem, of course, is that many people still need to access their Windows-based applications. So we’ve come up with a variety of ways to make this happen. The most obvious is virtual access to Windows environments and applications in the cloud, similar to what HP is doing with its Workspace solution for the Elite x3 Windows phone. That Windows 10 Mobile device can’t run Windows desktop (x86) natively, of course. But if the apps run in the cloud and are transmitted to the device—which is connected to a keyboard, mouse, and display—the user gets a reasonable desktop PC experience. Assuming they have a great internet connection and are connecting to a physically close datacenter.

If only ARM could run x86 apps. Which it can’t.

But what if ARM could emulate the x86 instruction set, and thus run x86 apps?

What if, indeed.

According to Mary Jo Foley’s sources, this work is now underway. It requires a few things, of course: ARM chips that are powerful enough to emulate x86 and provide a reasonable level of performance. And an ARM-based operating system that would bring this capability to users.

ARM chipset makers such as Qualcomm will need to figure out the first part of that equation. But Foley says that Microsoft is indeed working on the second. It’s due in the “Redstone 3” release of Windows 10, which is currently scheduled for late 2017. (We’re currently testing “Redstone 2,” which will be called the Creator’s Update and is due in the first half of 2017.)

This capability would allow ARM-based versions of Windows 10—currently Windows 10 Mobile, though there’s no reason that Windows 10 Home or Pro couldn’t make the ride too, in something similar to Windows RT—to emulate x86 code and thus run Windows desktop applications locally on the device. It would make the most sense in Continuum situations, where the phone would just run UWP apps, but desktop apps would come to life when the phone was docked and connected to a keyboard, mouse and display.

This is exciting. But it’s also challenging because our experience with past solutions of this kind was lackluster. And there is every reason to believe that x86 apps will run slowly on ARM. It will likely work better for simple apps than it will for big/complex apps like Photoshop, iTunes, or even Chrome.

But what if it worked? Can you imagine such a thing?

Done correctly, ARM support for x86 could be the final nail in the Windows desktop coffin, the thing that moves us past the legacy code that is now holding us back. I literally just wrote about this problem in The Biggest Problem with Windows Today? The Past. Interesting timing, no?

I don’t want to get too far ahead of ourselves here. It may never happen. It may not happen in time for Redstone 3. It may happen so far out in the future that it doesn’t matter anymore. But if you’ve been pining away for Surface phone or something a bit more nebulous—like Microsoft having an in-house mobile strategy that actually makes sense—this is hopeful news. No promises, yet. But still, hopeful.

So we’ll see what happens.

 

Tagged with ,

Premium Comments (15) Comments (57)
Elevate the Conversation!

Join Thurrott Premium to enjoy our Premium comments.

Premium member comments on news posts will feature an elevated status that increases their visibility. This tab would allow you to participate in Premium comments with other premium members. Register to join the other Premium members in elevating the conversation!

Register or Subscribe
15 Comments
Sort by Votes | Date
  1. 1 | Reply
    Narg Alpha Member #420 - 1 week ago

    To me, articles like this only confirm the limited appeal of RISC architecture outside of the engineering aspects.  Yes, limited.  Not useless and definitely not in-capable.  But limited in that it usually doesn't bring answers to as many questions and needs that many of folks would like.  ARM has grown a LOT of CISC like features as each iteration of the design appears.  And, i'd bet that Microsoft has had a hand at a lot of those changes (with of course Google and Apple influence too...)  But to attempt to fully emulate a CISC architecture on a predominantly RISC design?  Hats off to the programmers that might pull this off, the work will not be easy.

    1. Paul Thurrott
      0 | Reply
      Paul Thurrott Alpha Member #1 - 1 week ago
      In reply to Narg:

      Are we really talking RISC/CISC in 2016? :)

       

    2. 0 | Reply
      edboyhan Alpha Member #492 - 1 week ago
      In reply to Paul Thurrott:

      Yes the X86 is a classic CISC ISA with some RISC features added (via microcode) whereas ARM is RISC with some CISC capabilities added in recent designs.  However, the underlying CISC/RISC architectures will always offer differential advantages to different kinds of applications.  Apps targeted at CISC will never run well on RISC without significant recoding.

      Sometimes with the right kinds of multi-ISA compilers these problems can be partially alleviated without the app developer having to worry overmuch about the target ISA.

  2. 0 | Reply
    Neville Bagnall - 1 week ago

    There is one aspect of this that I'd love to have more info on. I've always thought that the second GPU in the Surface Book could be a pointer to the thinking of Panos and the Surface team when it comes to Continuum type systems. Namely that plugged in systems get a performance boost in addition to a form factor change.

    Of course the holy grail of that idea is hot-pluggable CPUs. Making any extra CPUs x64 has huge implications for the NT kernel and/or mobility. But if they have working, performant x64-on-Arm emulation, a whole range of simpler solutions become viable, all of which are probably already supported by the Kernel.

    So lets say in Jan 2018 you have a HP Elite x4 or Surface Phone sporting the a new Snapdragon 830 or better and you dock it in a lapdock or deskdock. Whereupon Windows identifies 3 or 4 extra identical CPUs and a discrete GPU. You now have a CPU and GPU powerhouse of a system with 4 CPU/32 core SMP and discrete graphics.

    How does that convert into real world performance or practicality? I'm not sure. There is bound to be a diminishing return as more CPUs are added and I don't know how or if they would improve the emulation performance. Is there a market for such a product? Who knows. But something like this is the sort of envelope pushing I could imagine coming from the Surface team in particular.

    1. 1 | Reply
      nbates66 Alpha Member #1315 - 1 week ago
      In reply to Neville Bagnall:

      if the dock has CPU's of it's own then why bother adding the phone's CPU to the equation? :P wouldn't such a dock have already been a laptop?

  3. 0 | Reply
    nbates66 Alpha Member #1315 - 1 week ago

    x86 emulated on ARM always leaves me thinking that in execution it would increase an ARM processor's power usage to the level of making it pointless. Not sure something headed partly by Microsoft could change that.

  4. 0 | Reply
    880510 Alpha Member #1014 - 1 week ago

     As I recall Micrisoft did a pretty good job of emulating x86 on the Xbox 360. It's way beyond my pay grade and my skill level but I believe given enough time and money It can be done. Whether it's worth doing is a completely other matter.

  5. 0 | Reply
    edboyhan Alpha Member #492 - 1 week ago

    ISA emulation has never worked -- performance is always abysmal.  Years back Sun Microsystems tried to do X86 emulation on its SPARC processors (arguably at the time far more powerful than the X86 of the day), and still performance was terrible.  Applications are usually extensively performance tuned for the target H/W ISA.  Emulation can't address these optimizations short of tuning the application code.

    Sad to say it's going to be the case (as far forward that I can see) that the only way to provide decent access to legacy apps on mobile devices is to in fact have an X86 mobile SOC.  That doesn't currently exist, and none of the major X86 chip foundries appear to be pursuing such an animal :-(.

  6. 0 | Reply
    RonH Alpha Member #149 - 1 week ago

    What are the chances that Intel is still working on a mobile solution for x86?

  7. 0 | Reply
    Shane Alpha Member #647 - 1 week ago

    Will this save Windows Phone/Mobile. NOT A CHANCE.

    I love WP. Have had one since launch, have converted many to WP. But is it really about x86 apps, NO.

    People want the mobile apps that are on IOS and Andriod. So I don't really see how this will really help.

    I would love it too but even someone like me that is a WP fanboy sees that I will need to change soon. My only option is Andriod as I will never have anything of Apple.

    Perhaps Microsoft should have left that code in WP that allowed Andriod apps to run and just tried to make it stay secure.

    It will be a sad day for me to give up my WP but I see that day coming sooner rather than later.

  8. 0 | Reply
    maethorechannen Alpha Member #377 - 1 week ago

    It may never happen.

     

    Never? It already has happened, back in the 90s on the Archimedes (the original ARM based computers). Performance sucked so an add on X86 board was developed later on.

  9. 0 | Reply
    toshdellapenna Alpha Member #562 - 1 week ago

    I actually mentioned this concept on a comment thread recently. Glad to know that it actually being worked on. I'm likely going to wait to upgrade my 950xl until next fall when the newer handsets that can truly take advantage of this are out. I only need to run 1, maybe 2 x86 apps that have been out of development for years and obviously won't be updated, so this is good news for me!

  10. 0 | Reply
    inlocoabsentia Alpha Member #1634 - 1 week ago

    Or they could just allow .NET apps not signed by MSFT to run on ARM.

     

    https://surfsec.wordpress.com/2013/01/06/circumventing-windows-rts-code-integrity-mechanism/

  11. 0 | Reply
    kjb434 Alpha Member #889 - 1 week ago

    Thinking of powerful ARM based tablets here.  A phone sized device would be good also, but tablets have the real estate to support a large battery underneath.

    For the road warrior, an ARM tablet would be plenty of power for most daily activities.  Then the ability to use the same device for a specific business line of applications is a win-win.  No one should expect to be running Adobe Photoshop unless ARM processors make some massive performance leaps.

    For phone sized devices, the X86 could be limited to Continuum use only.  This would negate the argument that small touch targets on a phone would make X86 useless.  This could be a place where screen size could trigger use cases.

    Looks interesting.  I can see why HP is working closely with MS.

  12. 0 | Reply
    dcdevito Alpha Member #220 - 1 week ago

    It's a cool feature set to say the least, but without mobile traction I don't see the value proposition - you'll still need a mobile with all your apps and such anyway.