Microsoft Prepares x86-64 Support for Windows on ARM Devices
In a report from Neowin, Microsoft is preparing x86-64 software support for Windows on ARM devices. This is quite the change considering Qualcomm's Miguel Nunes claimed back in 2016 that x86-64 software emulation wasn't going to happen.
x64-86 Support - ARM-Based 64-Bit Computing
The potential of x86-64 programs becoming compatible with Windows on ARM machines is high, but due to the microarchitecture of ARM processors, 64-bit computing is far slower than 32-bit computing. This is primarily because of ARM's RISC architecture which translates to smaller registers and limited resources. ARM was built with mobile computing in mind, focusing on low power consumption and increased efficiency, and with that goal in mind, fewer resources within a device return various benefits at the expense of performance and compatibility.
In an interview with Neowin, Qualcomm's Miguel Nunes explained the challenges faced in terms of 64-bit computing on ARM-based systems.
It's never going to happen. The reason is the performance would not be good. It's possible, but you wouldn't like the performance. And think about it. It's sort of counterintuitive, for the most part. If you want a 64-bit app, you usually want better performance. That's why you wrote the 64-bit app. Although sometimes that's not the case because some people write 64-bit apps and they don't do anything. But the primary reason for 64-bit apps like Adobe is because you want the memory, you want larger memory access, and you want the perf. So if the perf is going to be worse under emulation, then why do it? So we've focused on 64-bit true applications. We've got to get them more native, and it's really hard. The other thing is emulation, and I've been asked this as well, emulation has got this bad history.
A lot of people have tried emulation and most of it has been terrible. Our emulation is actually not bad. The reason is because only the CPU is emulated. The GPU is not, and the rest of the system is 100% native. So when you access your storage, it's native. Those drivers run native. And so, less and less apps are becoming CPU-bound. When you run something, it really doesn't use the CPU as much anymore. Most of this stuff today is GPU-focused and GPU is native. It's not emulated.
Software Ecosystem & Supported Hardware
With x86-64 emulation, 64-bit programs will have the ability to be executed on ARM processors, but the performance in not guaranteed to be anything fantastic as 32-bit programs will continue to be the faster option. 32-bit emulation currently uses Windows' WOW64 which enables 32-bit programs within 64-bit Windows. As for 64-bit ARM emulation, a different solution is required. As of right now, no immediate solution has come to light.
Microsoft and Qualcomm are working to enable 64-bit compatibility across a wide range of processors going back to the Qualcomm Snapdragon 835, therefore extending compatibility from 64-bit exclusive processors such as the Qualcomm Snapdragon 8cx.
Microsoft is working to provide the end user with an equivalent user experience to x86 CPUs, but that has proven to be quite the challenge. The last two years have shown vast improvements to Windows on ARM and we might just see Qualcomm's Snapdragon SoCs become a viable option in the future if Microsoft's project succeeds.