Are Microsoft focusing on ARM64 support for Redstone?

Microsoft have started recruitment for a Senior Project Manager to work on the Redstone project. The job listing on Microsoft’s careers pages explain that one of the important roles this Project Manager will undertake is that they will be responsible for building Microsoft’s plan for ARM64 within the Redstone project.

Some prominent journalists have reacted with astonishment and excitement at the news that Microsoft are working on ARM64. I’m not entirely sure why, Microsoft have been working on ARM64 support since the early days of the Windows 10 project. Indeed, they were shipping ARM64 binaries by March 2015.

What will be supported on ARM64?

I’ll get to the hype surrounding an ARM64 desktop shortly. Firstly, I’ll focus on the more definite prospects.

Server

Though it’s not a particularly sexy or consumer-facing topic, the most important market for Microsoft where ARM64 would provide them a distinct competitive advantage is the Server market. The architecture is a quickly growing platform in the server space. The relatively poor raw performance of an ARM64 solution compared to a more typical x64 processor is negated by the reduced cooling and power requirements that allow manufacturers to achieve a very high density. For a given size of server, the ARM64 solution will have a much higher number of cores, and since many servers tend to be highly multi-threaded, this is a distinct advantage.

I would certainly expect at least Microsoft’s new nanoserver offering to make it to ARM64. Unencumbered by legacy or compatibility cruft, and with a bare minimum of overhead, it’d be ideally suited for running on bare metal ARM64 hardware. Some have speculated that it might be an internal effort in support of Azure, but it wouldn’t make much sense to plough all that effort into something and not release it when I would expect there to be a healthy demand for it.

Mobile

Mobile was the focus of these reports, and understandably so. Many of Microsoft’s competitors now use ARM64 at the high end. Apple has for a number of years, and Android OEMs have begun to adopt it. Indeed, the Huawei Nexus 6P that I chose over a Lumia 950 runs an ARM64 build of Android.

Curiously, the Lumia 950 and 950 XL use the Snapdragon 810, which is an ARM64 processor. Instead, Microsoft have chosen to ship them with an ARM32 build of Windows 10 Mobile. Some journalists seem to be under the impression that this is because Microsoft do not support ARM64 with Windows 10 yet, but that could not be further from the truth. They were shipping ARM64 Windows 10 Mobile builds to OEMs by build 10041, which was built in March 2015. OEMs received a full build of the ARM64 Windows 10 Mobile build. But Microsoft themselves have been reluctant to develop the necessary drivers to support these builds on common ARM64 hardware, and nor have they tested ARM64 builds on any upcoming Lumia hardware, even now. It looks like what I suspect to be the rumoured “Surface Phone” is being tested with ARM32 Windows also.

The question is why?

I suspect it comes down to there’s simply no advantage in pursuing ARM64 builds at this stage. There’s no pressing need to address large amounts of RAM on a phone just yet. More concerningly, Windows Mobile on ARM64 will require a compatibility subsystem, much like WoW64 on x64 desktop builds. This system unavoidably adds an overhead of at least 500MB, possibly nearer 1GB on a deployed Windows 10 Mobile image. This will be taken out of the space available for user storage, which is something Microsoft are probably unwilling to do until they have to.

Windows 10 Mobile on ARM64 is pretty much a certainty – the legwork is already done – but it’s a case of when.

Desktop

A lot of journalists have read into the job posting and seem to have concluded that ARM64 Desktops are going to be a thing. I don’t really see it myself. That said, it would be an entirely possible, if surprising, move. Certainly, Microsoft have not stopped compiling the RT SKU, let alone removed it from the Windows codebase. I don’t believe it’s actively developed though, and I doubt that the RT SKU would form the basis of any ARM64 on the desktop SKU. I’d hope they’d have learned their lesson and just offer a fully fleshed out Professional SKU on the ARM64 architecture. That, I’ll admit, is fanciful wishing on my part.

Interestingly, with no real ARM32 history on the desktop, they may even decide to forgo the compatibility layer I mentioned in the mobile section. Such a platform may prove ideal for the low-end markets. Microsoft have an x86 to ARM compatibility JIT as mentioned on some other sites, but to my eye, it looks like it’d probably be along the lines of a research project, and there’s no suggestion that I’ve seen that it was targeted at ARM64. Such a solution would probably be far from ideal in terms of performance. I have no doubt that Microsoft could get more out of the concept than they have any right to, but I remain doubtful that it’d be enough.

A good example would be the Astoria project on Windows Phone. That was a ridiculously complex solution that ran far better on that hardware than it ever should have. But it still wasn’t ultimately good enough to get the green light. An x86 to ARM JIT would be an even bigger undertaking, with even harsher performance penalties. As ground-breaking as the entire project already is, simply for existing, I can’t see that it would be suitable for complex applications. It’d be hard enough to go the other way – ARM to x86, and x86 has copious amounts more power to mask the performance deficit, and is the more complex instruction set to translate from. I think that after Project Astoria, Microsoft would be twice-shy about ploughing development time into a complex architectural project like this.

Conclusion

It’s an interesting thing to speculate about, but I think that many people have let their imaginations get a bit carried away. I also think that a lot of the surprise has come from not understanding how far along Microsoft already are in implementing ARM64 support. I would be surprised, if we’re being honest, if we see any ARM64 hardware running ARM64 Windows this year, and I am certain that we won’t before the dying moments of 2016. The way the market is at the moment means that Microsoft have plenty of time yet to get it right, and they would be wise to take that time. A failure could put them out of the running at the time the market does turn. A success could be crucial in re-establishing their dominance within the Operating Systems market.