
Windows 10 on ARM - vlangber
https://channel9.msdn.com/Events/Build/2017/P4171
======
satysin
Microsoft are seriously _killing it_ in emulation these days.

First I was amazed with them getting Xbox 360 (PPC) games running _at full
speed or better_ on the Xbox One (x86) and now we have x86 on ARM.

They have some wizards working on this stuff.

Edit: I wonder if Dave Cutler is involved in this x86 on ARM stuff? I think he
was with the Xbox 360/Xbox One.

~~~
Kenji
As far as I know, they don't emulate Xbox 360 games on Xbox One, they port and
compile it for the new console, creating entirely new binaries. Not much
emulation going on there. Correct me if I'm wrong.

EDIT:
[https://en.wikipedia.org/wiki/List_of_Xbox_360_games_compati...](https://en.wikipedia.org/wiki/List_of_Xbox_360_games_compatible_with_Xbox_One)
"Unlike the emulation of original Xbox games on the Xbox 360, the Xbox One
does not require game modification, since it emulates an exact replica of its
predecessor's environment – both hardware and software operating systems."

I stand corrected.

~~~
satysin
It uses emulation. While it is true the user needs to download a 'game image'
rather than play the game directly from disc this is because that image is a
virtual hard disk that contains the game and a customised Xbox 360 virtual
machine that has tweaks for the game. It is similar to PC console emulators
that have specific configs for certain games.

~~~
sjmulder
I thought they do a static recompilation too, from the original binary, but I
can't look it up now.

~~~
monocasa
That's actually probably the case. Xbox 360 banned making arbitrary pages
executable (not even the Kernel could do it, the Hypervisor call to mark a
page as executable had to come with the signatures signed by Microsoft's
private key).

So they probably can get away with static recompilation.

------
xemoka
This excites me. I work with a lot of geospatial industry tools, many mobile
tools are still based on old window CE/pocket PC/windows mobile platforms; I
hope to see these snapdragon devices overtake this area.

Mobile data collection tools on iOS and android devices are rather poor (at
least open source ones), hopefully this will help solve this problem—we'll
just be able to use windows applications that work and are better developed.
The windows ecosystem still seems easier to me than iOS / Android, perhaps
that's just my bias or that I see more development options.

This could be a huge turning point for Microsoft's mobile divisions.

x86 drivers are still something I'm curious about here...

[edit: I should also mention, the reason why geospatial tools comes into play
here is because the snapdragon CPUs have integrated GSM and GNSS (GPS) on the
die. Currently, x86 based tablets have to use a separate component, and many
don't come with it or even provide GNSS as an option]

~~~
pishpash
It's not your bias. The Windows ecosystem has always been pretty good for
developers. If it weren't for the ten-year Ballmer purgatory, MS would have
been all over this space, where little iOS and Android toys still haven't hit
puberty. Reinventing the wheel has been an overall giant waste of time for the
industry.

------
wand3r
I am seriously impressed with Microsoft. I haven't used windows in years but
they are releasing tons of useful things. VSCode is great on Ubuntu and every
version of OS X I have run it on. Plus tons of other cool things like bash on
win; etc.

Also, I have a bizspark Azure subscription and it's not a perfect UX; but man
does it beat AWS

~~~
tabulatouch
I agree, what Microsoft shows us today is a real evolution of a software-
engineering empire done (mostly) right. The sad fact is that this open-source
love + tons of goodies for developers comes after decades of pain and
suffering, which were not really "killing" Microsoft, but they were risking a
lot. Now they're flying, leaving Apple far behind (Apple completely lacks a
multi-tier engineering vision), but if they get a monopoly again... pain and
suffering will be back. That's the free market.

~~~
scarface74
What is a "multi-tier" engineering vision?

------
poizan42
For any Microsoft insiders with knowledge about this, a few questions:

1\. In the talk they claim that they get "near native" speed from the
translation. Can we have some real number of what can be expected? What about
warm up time?

2\. Is the x86 translation layer only available in user space, or can x86
drivers be loaded for hardware that doesn't have arm drivers yet (or the
manufacturer doesn't care about making them)

3\. Are there any plans in the future for supporting x64 code as well in the
translation layer?

Edit: One more:

4\. Are there any plans on supporting Arm v7 in the future, e.g. with
Surface/Surface 2 support?

~~~
wolfgke
5\. How do they solve the problem that x86 has a much stronger memory model
than ARM, which makes emulation of multithreaded x86 code pretty hard without
introducing a huge performance disadvantage?

~~~
pranith
Since there are no publicly available details, I would guess this is solved in
hardware. The Qualcomm processor can be made to support stronger memory model
for translated instructions similar to how the Power processors support
strong-access ordering for efficient x86 emulation[1].

[1]
[https://www.google.com/patents/WO2012101538A1?cl=en](https://www.google.com/patents/WO2012101538A1?cl=en)

~~~
StillBored
Previous ARM generations had a "strongly ordered" memory type. ARMv8 doesn't
have this for cacheable memory (normal) but device memory has a R(erorder)
attribute to control access ordering. Of course device memory isn't cached
either. Beyond that the non reordering attribute only applies within an
implementation defined block size and its behavior with respect to normal
accesses (or outside the block) isn't defined either. Making it mostly useless
except for the most restrictive of cases.

------
daburninatorrr
Man, that League of Legends desktop icon on the test machine is such a tease.
I would love to know what the status of x86 gaming on ARM devices would be,
especially for something competitive that runs on most anything like LoL

~~~
kyriakos
They already shown LoL and Photoshop running on ARM a few months ago in a demo
video. Google it :)

~~~
jaytagdamian
I have seen the photoshop video, but not League of Legends - got a link?

------
niftich
Does this emulation work for x86-64 executables too?

EDIT: no [1].

[1] [https://www.theverge.com/2016/12/7/13866936/microsoft-
window...](https://www.theverge.com/2016/12/7/13866936/microsoft-
windows-10-arm-desktop-apps-support-qualcomm)

------
derefr
Odd thought: the existence of an ARM Windows, makes it much simpler for
_Apple_ to ship ARM PCs.

The macOS development stack has been re-tooled to output LLVM bitcode within
its "fat" binaries for a good while now. It'd be very simple for Apple to
throw the switch on a compile farm ala the one Google has for Android APKs,
and suddenly have ARM downloads for everything on the Mac App Store (without
requiring any re-submissions.) Which means it wouldn't be hard at all for
Apple to ship a "functional" ARM macOS computer... just, until now, such a
machine wouldn't have had a very good Windows story. No Boot Camp, no cheap
virtualization, etc.

Suddenly, that story is a solved problem.

~~~
monocularvision
This idea keeps popping up. LLVM bitcode is way too architecture specific to
allow that to happen. Chris Lattner has stated it himself.

~~~
derefr
"x86 bitcode" can be _transpiled into_ "ARM bitcode."

Yes, you could do the same thing with a plain x86-ISA binary, but such a
binary might have sections that are very hard to transpile
efficiently/effectively—because e.g. they exist as the result of compiling
hand-optimized x86 ASM source modules. Targeting bitcode constrains the inputs
a bit more, such that the input to the transpiler won't be using extremely-
microarchitecture-specific instructions.

And yes, the results wouldn't be 100% efficient. But it would be efficient
_enough_ —like Rosetta—to serve as an effective stop-gap to allow ecosystem
consumers to continue to consume their purchased apps on new devices, until
ecosystem developers upload explicitly re-optimized apps. (And it would—like
Rosetta—at least let apps from "dead" development studios run, rather than
killing them off entirely.)

------
drewg123
I'm surprised that nobody has mentioned FX!32. That was the binary translation
layer that Windows NT on DEC Alpha used back in 1996 or so to run x86 Windows
binaries. There is an old Digital Technical Journal article about it here:
[http://www.hpl.hp.com/hpjournal/dtj/vol9num1/vol9num1art1.pd...](http://www.hpl.hp.com/hpjournal/dtj/vol9num1/vol9num1art1.pdf)

Everything old is new again!

~~~
qubex
Ah, DEC Alpha! I had one that ran NT 4.0 and pre-release copies of Windows
2000 (amongst other things) and the day Microsoft decided not to release
Windows 2000 for it was one of the saddest of my life (until then).

------
mtgx
HN is probably not the right target for this type of device. Either way we
need Windows 10 on ARM to succeed for Intel to have more competition. I also
do think it will be successful if it works at least as well as Intel's Atom-
based Celeron and Pentium laptop chips, especially in emerging markets.

Intel shot itself in the foot by replacing the Core architecture in mobile
Celerons and Pentiums with Atom, and also by starting to rename lower
performance Core M chips to Core i3 and Core i5. This will make it easier for
ARM and AMD to "catch-up" and even beat Intel at these levels, because Intel
got greedy and tried to trick the market with lower-performing chips at the
same price points as for previous (and more powerful) generations.

~~~
toast0
> Intel shot itself in the foot by replacing the Core architecture in mobile
> Celerons and Pentiums with Atom

Core mobile Celeron and Pentium are still available, for example Celeron 3865U
[1], it's just Intel got tired of having names with useful information in
them. That processor should probably have a name like Core v7 2C-2T 1.8Ghz-15W
which has most of the useful information, but 3865U is what we got, so you
have to filter out the atom chips yourself.

[1] [https://ark.intel.com/products/96507/Intel-Celeron-
Processor...](https://ark.intel.com/products/96507/Intel-Celeron-
Processor-3865U-2M-Cache-1_80-GHz)

------
sxates
There have been rumors of a 'surface phone' that runs Win 10 (not mobile) for
a couple years now. Most expected some kind of future Intel chip to enable
that, but ARM support certainly opens up the possibility. Just what Windows
phones need - another OS change!

~~~
ams6110
I'd be very interested in a Windows 10 phone if it has automatic updates that
do not depend on the carrier, to avoid the Android situation where only
certain phones get updates on a timely basis.

~~~
ocdtrekkie
Windows 10 Mobile gets OS updates directly from Microsoft. Verizon does not
support Windows 10 Mobile _at all_ , but my four year old Verizon Lumia Icon
got Windows 10 version 14393.1198, which released yesterday, yesterday.

Microsoft has chosen to drop a lot of older models from the Creator's Update,
but is still providing cumulative/security updates to the Anniversary Update
right now, which is supported on all phones which run Windows 10 Mobile.

At least, at present, if you have a Windows 10 Mobile device, you have recent
security updates, regardless of make or model.

~~~
kyriakos
One thing Microsoft does well is Long term support and backwards
compatibility. I guess this applies to their mobile OS as well.

~~~
toast0
Unless your mobile OS is Windows Phone 8.1, or Windows Phone 7, or Windows
Mobile 6, etc which got very little in the way of updates once a new major
release was made; and many phones are not upgradable from one major release to
the next (or the upgrade wasn't pushed to users without intervention, which is
effectively the same thing).

I would say, Microsoft has a reputation for long term support and backwards
compatibility, but it seems like it's something they're trying to get away
from.

~~~
ocdtrekkie
I would more characterize it as failures in their mobile space. Microsoft has
rebooted it's mobile product line a bunch of times. But, as noted, my Lumia
Icon was a Windows Phone 8.x device, and it runs yesterday's release of
Windows 10 Mobile. A pretty large number of 8.x devices are capable of 10.

The manual intervention to upgrade to 10 is because, as noted, the big change
is that Windows 10 Mobile upgrades are handled by Microsoft, so the update
servers had to be changed. Prior versions to 10 had the same carrier-based
update issues Android had.

I'd argue that change alone points to the fact that Microsoft is getting
better at long term support, not worse.

------
pjc50
Interesting - something they should have done rather than the orphan
WindowsRT, in my opinion.

I wonder if this ends up being the inheritor of Windows CE for embedded ARM-
flavoured devices. I also wonder if this means that the Win10 ARM kernel has
the full Windows API - so if you built an ARM PE executable that could run
natively. I suspect 95% of the pieces are in place for that but it's not yet
been productised.

~~~
zeta0134
I feel like this is in response to the pushback against Windows RT honestly.
They put the cart before the horse on that one, trying to get everyone to use
an app store with no apps, and quickly realizing that the base Windows
experience wasn't enough for the vast majority of their users.

Killing Windows RT was the right choice, because it was never designed to do
something like this. It had a weak translation layer for Win32's API built
right in, and they would have needed to do some wizardry to have the two live
side by side. No, I think RT was a useful but failed experiment, and I'm
excited to see them take this approach with Win32 emulation on ARM. If it
works as well as these demos suggest it does, it could finally provide a good
path for ARM into consumer laptops and even desktops, to spark some great
competition in the space. I'm excited to see where this goes.

------
0xFFC
Please correct me If I am wrong. But I think with WSL and this, Microsoft
proved they are much much more superior than Google and Apple when it comes to
serious system software development (they have to be, they have developed one
of the most complex Kernel of the all times and maintained and improved it for
decades. Yes I am linux guy too. But Widnows Kernel is extremely complex and
well architectured piece of software ever written). Yes, Google does have very
good applications, apple does have too.

But when it comes to hardcore system software development stuff. They are
unbeatable. Emulating entire x86 on ARM? This is mind blowing.

They have pulled good emulation before too (one I think was inside XBOX).

But this is going to be serious. I would say very serious.

Extremely good battery life would give Microsoft, very good edge over Apple.

1) Qualcomm will be the winner. and so other ARM CPU manufacturer. and Intel
is the biggest loser here.

2) Microsoft will hit market with this. After this they will have extremely
good position to release good phone, and here we stand, I see successful
future for Windows Phone.

3) From Computer Architecture perspective, the bottleneck is not memory or CPU
speed. It is IO and energy. I don't know how this will impact on IO. But I am
almost sure this is unbeatable from energy efficiency, and when I (and almost
all people I know) buying a laptop. battery life is almost the most important
aspect of it.

~~~
nbevans
I voted you up as it's rare a Linux man would show any kind of respect to the
- actually very very good - NT kernel. Good post also.

------
fnord123
They are doing this because they want the benefits of great ARM battery life.
But they are emulating x86 on ARM. So they believe that emulated x86 on ARM
will have a better battery life than native x86. The only way I think this
could be possible is if they measure battery life of an idle device. Maybe
someone can disabuse me of this belief.

~~~
martinald
Keep in mind, if you're just using a web browser, Skype and office, these are
likely to all be ARM native. It's only when you boot up an x86 program it even
comes into play - for a lot of users that will be very rare.

------
ChuckMcM
Really interesting.

I can see a potential milestone Windows 10 S on an Arm V8 based laptop with
all day battery+. Sort of a Surface RT but without any excuses.

If Apple follows suit and creates a light weight, network centric laptop
experience around iOS, then you'll have three contenders for the 'appliance'
environment, ChromeOS, Windows 10 S, and iOS. Each with their own 'laptop'
design ethic, Pixel, Surface, MacBook.

~~~
Corrado
I think I might take this line of reasoning a bit further and have Apple
actually come out with an ARM (A11?) powered computer. Given that you could
put multiple ARM chips in a MBP I could see a whole lot of power for very
little money. Another thought would be switching the Mac Mini to ARM.

Consequently, all this ARM talk has got to be making Intel nervous. I don't
think now would be the best time to buy any INTC stock. :/

------
faragon
If that runs great on phones, and has virtualization support for e.g. running
ARM Linux guests, I would change both my Android phone and my Ubuntu laptop
for one phone (e.g. Snapdragon 835 or better + 8-12GB RAM + 256GB flash + USB
3.0 OTG), using a dummy screen + keyboard as laptop replacement.

~~~
MrMember
A desktop/mobile convergence phone is my dream. I'd buy one in a heartbeat.

~~~
wand3r
I think I get it; but could you expand a bit on what you mean?

~~~
MrMember
A phone form factor device that can run a full desktop OS, or something close
to it. Canonical was getting close with Ubuntu Touch but that's essentially
dead now. I don't want a gimped version of Windows like I'd get with
Continuum, I don't want a "desktop-like" version of Android like Samsung is
doing, I want a full version of Linux or Windows that can run desktop
applications.

~~~
wand3r
Ah ok; I actually want something similar; a tablet that can act like a phone
but _only_ on WiFi so I don't have a phone bill. Basically; an iPad but w/
real integration & iMessages etc via a free or cheap VoIP number w/o data

~~~
austinsharp
You might want to look into Google Voice. Free number for texting, calls over
data. I receive and send texts and calls from a browser too.

------
kev009
Microsoft is one of the few companies that really grok Systems Software right
now.

~~~
pjmlp
They always did, but FOSS people always downplay the work that Microsoft
Systems Research does, as if having a clone of an existing OS and UIs was some
kind of innovation.

------
0x0
Does the x86/x64 cpu emulation work for JIT code or other self-modifying code?
(Copy protected games, for example?) In the linked presentation they just
briefly mention doing a load time(?) transpile of x86 to arm64 and caching the
result on disk. What about exe packers that map memory rw then rx after
unpacking, such as UPX?

~~~
poizan42
They say that it's a dynamic translation layer, so presumably it doesn't make
a distinction about where the code came for (except maybe you'll lose some
performance optimization if they are caching translated code)

~~~
tmccrmck
Most dynamic emulators don't do instruction by instruction emulation - they
take in a whole block of instructions and translate that block, caching chunks
that may be used without any inference (eg. branching). Once you hit a similar
instruction block you don't have to do any translation; just execute from the
cache. This is why you have a load time for reading from an x86 image.

------
mmcconnell1618
Windows 10 on ARM would allow Apple Bootcamp on ARM-based MacBooks. There have
been rumors about Apple moving to ARM and potentially bringing processors in-
house. I wonder if that influenced Microsoft's thinking.

~~~
cwyers
You think that this actual shipping product that Microsoft developed might
have been influenced by these "rumors" that are never actually sourced to
anyone in Apple?

------
israrkhan
This is how Windows RT should have been in the first place.

------
wolfgke
Does this mean that Windows 10 (not Windows 10 IoT Core) will also come to
Raspberry Pi 3?

~~~
d9
Good question. How much memory on RPi3 and how much required to run Windows10?

~~~
wolfgke
RPi3 has 1 GiB of RAM. The system requirements of Windows 10 (cf.
[https://www.microsoft.com/en-
us/windows/windows-10-specifica...](https://www.microsoft.com/en-
us/windows/windows-10-specifications)) are 1 GiB for 32 bit and 2 GiB for 64
bit (both on x86). So I think if Microsoft is willing to, it should work, in
particular if they slim down the fictional RPi3 version of Windows 10 (which I
would strongly recommend).

I personally see the much larger performance regression for Windows 10 on RPi3
in the fact that at least on Windows 10 IoT Core there was no hardware
acceleration of graphics on RPi3 when I last tested it (about a year ago),
which caused it to feel rather sluggish.

------
Zigurd
Strategically interesting because, up to now, the Dalvik bytecode runtime and
the subsequent pre-compiling ART runtimes were the best way to do ISA-
independent application environments. Apple's fat binaries got in early enough
in their (smaller) developer community for Apple to avoid being tied to an
ISA. Microsoft was handcuffed to an x86 legacy boat anchor. But now they have
escaped, and those other approaches are less of an advantage.

------
mataug
Wow, This is brilliant. Microsoft is making leaps and bounds improvement to
keep their consumer base happy. Almost ten years after switching to Linux, I
think I might gladly use a windows machine as a second PC.

------
yuhong
I hope that recompiled desktop apps will be allowed in addition to emulation.

------
wfunction
Can someone explain how they are achieving high execution speed? I would have
expected the speeds (or at least the start-up times, if we have dynamic
recompilation) for x86 on ARM to be outright abysmal.

~~~
mark-r
There's a reason their demo apps were pre-installed. The initial recompilation
is cached so that running it the second time will be much quicker than the
first.

------
wfunction
Anybody know when we can expect a phone out that can emulate x86 Windows 10?
End of 2017 is the first estimate I heard but I'm not sure how realistic that
is.

------
angryteabag
I dont know much about where to find these chip or what I am looking for
but...

[http://i.imgur.com/mRdk6ZD.jpg](http://i.imgur.com/mRdk6ZD.jpg)

This is an ancient chip, however I also found MediaTek ones for ~ $10, which
had 4 cores and were 1.6ghz SoC.

Sounds to me like we could seriously see $100 laptops that actually function
soon.

------
Keyframe
That company could do so much impact if only they had laser focus and
distribution execution. Still so much talent with them.

------
cptskippy
That's a Microsoft Intellimouse Explorer Mouse and a Belkin USB 2.0 hub.
They're like 10 years old.

~~~
fetbaffe
Fitting when doing a video on backwards compatibility.

------
ericfrederich
If they're supporting x86 emulation to run desktop apps will they support
compiling native desktop ARM apps?

They're essentially supporting the end result, I would hope they don't force
developers to go through emulation to try to encourage them to write a
universal windows app

------
kabdib
Props to D.M. for the pivotal work. You know who you are :-)

\-- ST boot sector guy

~~~
dantle
Not the first time I've seen a reference to D.M. and pivotal work.[0] Is
giving a shout out to D.M. some sort of Microsoft meme?

[0] [https://github.com/netmf/llilum](https://github.com/netmf/llilum)

------
nickhalfasleep
Great potential for a Win10 phablet I can develop on that also lets me make
phonecalls. Not for big projects, but an anywhere device. Does Win10 support
non VoIP calls?

~~~
ManFromUranus
I think it does since MS did a big overhall on their windows architecture,
phone, xbox, and desktop all run the same base services just with different
GUI's. Technically an XBOX could make phone calls but has no GUI or hardware
for it.

------
asveikau
Emulation should be a last resort. They should ship an SDK with all the proper
import libs and a cl.exe etc. that can target proper Win32 on ARM.

~~~
midnitewarrior
Microsoft appears to have apps that are native to ARM, but the real value of
the Windows ecosystem is all the Win32 apps that have been built over the last
2 decades. The emulation layer addresses that so that "it just works" with old
apps.

I assume they will be releasing a build configuration for native ARM software
deployment on Windows.

~~~
asveikau
I would not assume such. They actively seem to hate this scenario.

~~~
mtgx
Microsoft also has this project, and UWP apps should work on ARM as well:

[https://developer.microsoft.com/en-
us/windows/bridges/deskto...](https://developer.microsoft.com/en-
us/windows/bridges/desktop)

~~~
asveikau
Neither of those are what I am talking about.

------
platipuss
I hope they drop this on the surface 2. It would save it from being a paper
weight.

~~~
emehrkay
Was the SurfaceRT an ARM device? I have one collecting dust, would be nice if
it got an update

~~~
MBCook
Yes. The RT devices ran ARM, which was one of the reasons for the locked down
software policy (nothing else would run anyway).

~~~
aidenn0
Except that you were also denied much of the existing API and can only install
software if you have a developer key from MS. I use my RT device for media
playback in the car, but the windows-RT version of VLC hasn't been updated in
years, and is somewhat buggy.

~~~
stirlo
It also took VLC more than 2 years to develop and release the RT version. By
the time it was released the market had already declared RT dead.

------
Skywing
I'm out of the loop on ARM. Can somebody explain the significance of it?

~~~
cosinetau
It's the processor architecture that in the past was used primarily on
servers. Now it's almost universally used in mobile devices, too. It's
ubiquity has caused a much larger technological demand for cross-platform
development, which is one of the reasons why technologies like JavaScript and
Rust have become so popular. Additionally, it's lower power and lower heat
compared to it's x86 cousins.

~~~
abrowne
> in the past was used primarily on servers

Embedded devices, yes, but ARM on servers is more like ARM's perpetual future.

------
mikerg87
Any word on actual devices that can run this for sale. Configurations ?

------
Dolores12
Ha-ha, Microsoft will do it again. For Windows on all devices!

~~~
mtgx
Not really. This is more about allowing ARM to enter the PC market. ARM
couldn't break into the PC market without Microsoft's help and by being fully
supported by Windows. The only other alternative were Chromebooks, and even
Google didn't bother to make a big push for ARM in Chromebooks.

------
d9
What about .Net on ARM?

~~~
WorldMaker
I believe there was a mention in the Day 1 BUILD keynote somewhere that
Samsung's work on .NET on ARM (built for Tizen specifically, but I would
imagine generically useful) was going to be open sourced to the .NET Core
project at some point.

~~~
d9
So, as of today, Windows 10 on ARM support x86 win32 or UWP, but not a .Net?

~~~
WorldMaker
Oh, UWP .NET has always supported ARM (since Windows 8). I assumed the
question was about .NET needs outside of the UWP.

~~~
WorldMaker
Also, the Win32 x86 emulation I would imagine would support most/all .NET
Win32 applications, to whatever extent the Win32 .NET Framework gets added to
emulation image.

