Thursday, June 15, 2017

Emulation: Windows10 on ARM

At last December's WinHEC conference, Qualcomm and Microsoft made an announcement to which I should have paid more attention:
Qualcomm ... announced that they are collaborating with Microsoft Corp. to enable Windows 10 on mobile computing devices powered by next-generation Qualcomm® Snapdragon™ processors, enabling mobile, power efficient, always-connected cellular PC devices. Supporting full compatibility with the Windows 10 ecosystem, the Snapdragon processor is designed to enable Windows hardware developers to create next generation device form factors, providing mobility to cloud computing.
The part I didn't think about was:
New Windows 10 PCs powered by Snapdragon can be designed to support x86 Win32 and universal Windows apps, including Adobe Photoshop, Microsoft Office and Windows 10 gaming titles.
How do they do that? The answer is obvious: emulation! Below the fold, some thoughts.

Because of the ubiquity of the x86 instruction set, much of the work described as emulation is more correctly described as virtualization. As discussed in my report on emulation, virtualization and emulation are end-points of a spectrum; the parts that the hardware you're running does implement are virtualized and the parts it doesn't are emulated. Because ARM and x86 are completely different instruction sets, Qualcomm is at the emulation end of the spectrum. More than two decades ago, Apple used emulation to migrate from the Motorola 68000 to the PowerPC instruction set; this isn't anything new or surprising.

It is obviously in everyone's interest, except Intel's, to have more effective competition in the market for chips to run Windows than AMD has been able to provide. This is especially true given the way PC and mobile technologies are merging. Intel's consistent failure to deliver performance competitive with ARM in the mobile market and Qualcomm's ability to integrate 5G connectivity are significant.

Now, MojoKid at /. points me to Brandon Hill's Intel Fires Warning Shot At Qualcomm And Microsoft Over Windows 10 ARM Emulation In X86 Birthday Blog Post. The Intel blog post is authored by Steven Rogers, EVP and General Counsel for Intel, and Richard Uhlig, Intel Labs Fellow and Director of Systems and Software Research, and it clearly is a warning shot:
There have been reports that some companies may try to emulate Intel’s proprietary x86 ISA without Intel’s authorization. Emulation is not a new technology, and Transmeta was notably the last company to claim to have produced a compatible x86 processor using emulation (“code morphing”) techniques. Intel enforced patents relating to SIMD instruction set enhancements against Transmeta’s x86 implementation even though it used emulation.
Transmeta vs. Intel was an unequal battle, and Transmeta lost (my emphasis):
On October 24, 2007, Transmeta announced an agreement to settle its lawsuit against Intel Corporation. Intel agreed to pay $150 million upfront and $20 million per year for five years to Transmeta in addition to dropping its counterclaims against Transmeta. Transmeta also agreed to license several of its patents and assign a small portfolio of patents to Intel as part of the deal. Transmeta also agreed to never manufacture x86 compatible processors again.
But Microsoft+Qualcomm vs. Intel is a battle of equals, especially given Intel and Microsoft's co-dependent quasi-monopoly. It is likely to go down to the wire. If it ends up in court, is likely to clarify the legalities of using emulation significantly.

Unfortunately, the interests of preservation won't figure in any such court battle. Clearly, these interests would favor Qualcomm+Microsoft, but the favor wouldn't be returned. Their interests would have a much closer time horizon. The way this conflict plays out will have a big effect on the PC business, and on the future of emulation as a preservation strategy.

No comments: