Draft:Windows on ARM

An Asus P835 smartphone running an ARMv6-based Windows on ARM build, featuring a minimal subset of components

Windows has been ported to the ARM CPU architecture on four separate occasions, between April 2003 through late 2017.

Initial efforts were skunkworks projects that focused on porting the Windows NT kernel to the Intel XScale microarchitecture, a subset of the StrongARM instruction set designed for low-power devices such as PDAs. These efforts were restarted in July 2009 as Windows 7 was being finalized,[1] as the port later moved to the ARMv6 instruction set; by January 2010, the port had successfully booted on such hardware.[2] Executives at Microsoft took notice of this effort, and later greenlit the project as an official port of Windows 8 in direct response to Apple's success of the iPhone and iPad.[3] A separate version of Windows 8 designed for mobile devices was also approved, culminating into what would eventually become Windows Phone 8.

Codenamed Windows on ARM, the ARMv7 port went through an extensive three-year development period but faced problems as WoA leadership ran into conflicts with upper Microsoft management when deciding on what features to include in a new Windows edition later dubbed Windows RT. Despite the Windows 8 user interface receiving praise for being well-adapted to tablet devices, the actual operating system was seen as unfit for general use, as the desktop version was strongly criticized for its accessibility problems, with the ARM-based counterpart completely falling short of expectations due to measures that prevented third-party desktop applications from running and internal restrictions, ranging from measures such as removing media components, disabling communications applications and disallowing usage of enterprise features, further marred by the extremely limited library of Windows Store applications. The market failure of Windows RT led to the cancellation of the Surface Mini in 2014, and ultimately the operating system's discontinuation in 2015.

Internal efforts to port Windows to the 64-bit ARMv8 microarchitecture started in late 2013 after Windows 8.1 completed development, shortly after Microsoft agreed to an exclusivity deal with Qualcomm that allowed the two corporations to work on producing ARM-based Windows devices together, resulting in a duopoly that stagnated the ARM computer market for a decade. The port neared completion in 2015, and was formally announced at the WinHEC 2016 conference.[4][5] The first public builds of Windows 10 on the ARMv8 architecture were made available in April 2017, featuring compatibility with x86 applications via an x86-to-ARM instruction translation layer.

Early Cobalt development builds saw the introduction of x64-to-ARM translation support in late 2020. In 2024, the Windows Server operating system family was fully ported to ARMv8 as part of a public preview release.

History[edit source]

Skunkworks efforts[edit source]

The Longhorn project was originally ported to the Intel XScale microarchitecture as a skunkworks project (under the internal codename LongARM) from as early as April 2003, itself based upon the StrongARM instruction set (and further based upon the ARMv5 instruction set). Although Longhorn underwent a development reset in August 2004, the LongARM project continued as the Windows kernel's memory management and hardware abstraction layers underwent revisions to better adapt to the ARM architecture. These efforts persisted from as late as 2008, before the project's development was restarted in July 2009 to focus on ARMv6 as development on Windows 7 slowly concluded.[1] A minimal version of Windows was successfully ported to an Asus P835 smartphone by January 2010, and was noticed by upper management; specifically, Steven Sinofsky, the then-current lead of the Windows engineering division, had taken notice of the port.[2]

Apple's growing dominance in the mobile market, attributed to the company's far-reaching success of the iPhone and the introduction of the iPad, forced Microsoft to consider developing a tablet-oriented operating system that ran under x86- and ARM-based platforms; the ARM port was officially greenlit under the internal codename Windows on ARM, and was moved to ARMv7 in March 2010.[3][6]

Windows 8[edit source]

Microsoft announced Windows on ARM at the CES 2011 trade show in January 2011, demonstrating the various capabilities of ARM-based devices running Microsoft Windows.

Development of Windows on ARM kicked off in April 2010, a month after the Windows 8 vision document was completed.[7] The first external WoA partner drop was distributed in August 2010 starting with Windows 8 build 7792; later builds added support for hardware abstraction layer (HAL) extensions that allowed vendors to define SoC-specific hardware timers, interrupt controllers and direct memory access (DMA) controllers. The port was unveiled at the CES 2011 trade show in January 2011 to demonstrate the capabilities of the then-evolving ARM architecture, with planned support for ARM-based system-on-chip devices produced by Nvidia, Qualcomm and Texas Instruments, while Intel led efforts on x86-based Intel Atom SoCs dubbed "Low-Power Intel Architectures" (LPIAs).[8][9]

Between 2010 through 2012, ARM partners received Windows 8 and Windows Phone 8 builds from various development branches related to SoC development efforts, and were provided specialized development kits to further facilitate porting efforts. The ARMv7 port initially targeted the Nvidia Tegra 2, Qualcomm Snapdragon QSD8250 and Texas Instruments OMAP3430 processors, but were later moved to the Tegra 3, Snapdragon S4 and OMAP4430/4470, respectively.

As development progressed, higher-ups in Microsoft demanded the removal of features that were originally part of the Windows operating system and the imposition of internal restrictions, which included (but were not limited to) Active Directory Domain Services join support, media features such as Windows Media Player and Windows Media Center, and disabling the ability to run third-party Win32 applications (as applications delivered via the Windows Store were strongly favored) under the implication of competing against the iPad, despite key leaders strongly objecting to their requests.[10] Core components needed to compile Win32 applications against the ARM architecture, specifically GDI and USER, were also stripped out of the public Windows SDK in a move to encourage developers working on ARM applications to shift to developing C#- and JavaScript-based programs running under the Windows Runtime, to be published onto the Store.

Initial Windows Phone 8 partner drops merely consisted of a Windows Preinstallation Environment image targeting the ARMv7 architecture, as the actual underlying operating system, MobileCore, was yet to be architected.

Microsoft unveiled the Microsoft Surface touchscreen computer family in 2012, with the Surface RT (an ARM-based tablet featuring a Tegra 3 SoC running Windows RT, a cut-down version of the Windows operating system) and Surface Pro (a higher-end computer featuring an x86-based third-generation Intel Core processor) becoming the respective flagship devices for Windows 8.[11]

Vendors for Windows RT devices initially included Acer,[12][13] Asus, Hewlett-Packard,[a][14] Dell,[15] Lenovo, Microsoft, Samsung Electronics and Toshiba. Texas Instruments dropped out of the mobile device industry in late 2012 (shortly after Windows 8 was finished) when the company deemed the mobile device market otherwise unprofitable,[16] forcing Toshiba to cancel its own flagship Windows RT tablets as consequence, citing "delayed components" that would prevent the devices from launching in time.[17]

Windows 8 released to general availability on 26 October 2012 alongside the ARM-based Surface RT and Asus VivoTab RT tablets, to overwhelmingly negative criticism. Windows RT, despite receiving praise for its touch-friendly user experience, was strongly criticized for its lackluster library of applications and the number of above-mentioned internal restrictions imposed against all Windows on ARM devices, and was considered a commercial failure in the months that followed. Windows 8.1 was released in an attempt to address its predecessor's shortcomings, but was still not successful as it failed to address more serious issues.

A successor to the Surface RT, the Surface 2, was released in 2013. Microsoft cancelled the Surface Mini (a note-taking-oriented tablet fitted with a Qualcomm Snapdragon 800 processor) moments before it was set to be revealed at the 2014 Surface event as the company did not believe ARM-based Windows tablet devices were profitable, and in part due to the development of Windows 10, the desktop release of which was not planned for WoA tablet devices.[18] Windows RT 8.1 received a final feature update in September 2015 that backported smaller aspects of early Windows 10 builds, which included an early version of the Start menu design and a slightly updated logon user interface.

The ARMv7 port continued to be maintained internally to serve as a development platform for future projects such as Windows 10 Mobile, XtAJIT (later used in the ARM64 port) and the scrapped Polaris and Andromeda efforts. An internal build of the Windows 10 Creators Update built against the ARMv7 architecture, build 15035, was uploaded in late 2019.

ARMv8 port[edit source]

Work on a port targeting the 64-bit ARMv8 architecture started in earnest in 2013, shortly after Windows 8.1 development was completed. The earliest known builds date back to late 2013, when Microsoft secretly agreed to an exclusivity deal with Qualcomm that allowed both companies to produce 64-bit WoA devices together; this formed a duopoly that prevented other companies from competing against them, and led to a decade-long stagnation of the ARM computer market. Initial builds mainly consisted of a Windows Preinstallation Environment, in a similar manner to early 32-bit bring-up builds.

By late 2014, Microsoft produced a specialized internal version of the base Windows Server Web edition dubbed "ARM64 Server", which consisted of the complete Windows desktop experience, for the sole purpose of adapting and stabilizing the core Windows feature set towards the ARMv8 architecture - in addition to this, Microsoft repurposed the deprecated 32-bit-exclusive Windows RT (CoreARM) SKU to further facilitate porting client features to this CPU platform. Initial desktop builds lacked many features normally seen in x86-based releases of Windows, but these were later ported to ARM64 over its lifespan, such as the addition of the .NET Framework, the Windows Runtime and a special version of the WoW64 compatibility layer, which featured translation support for x86 user-mode instructions to the ARM64 instruction set as well as backwards compatibility with ARMv7 applications.[b] The ARMv8 port was jointly announced by Microsoft and Qualcomm at the WinHEC 2016 conference,[4][5] with initial Windows 10 Fall Creators Update client builds being made available by early 2017 starting with build 16176.

Early Cobalt-based development builds saw the introduction of dynamic x64-to-ARM (XtA) just-in-time instruction translation, and further introduced support for Compiled Hybrid Portable Executables (CHPEs), which extends ARM64-compatible binaries with x86 code for cross-compatibility purposes; these binaries are referred to as ARM64X executables. The XtA emulation layer is based on the JIT engine from Virtual PC, which has historically been used to provide x86 emulation in Virtual PC for Mac.

Microsoft started dropping ARM64 Windows Server builds to a widespread range of partners at some point in 2019, starting with Vibranium build 18941. The Windows Server family and its feature set was fully ported to the ARM64 architecture in 2024 as part of a public preview for Windows Server 2025.

Notes[edit source]

  1. Hewlett-Packard was developing a Snapdragon S4-based Pavilion dm1-series notebook; it was cancelled before it was ever announced.[14]
  2. WoW64 support for ARMv7 applications was removed during development of the Windows 11 2024 Update.

References[edit source]

  1. Jump up to: 1.0 1.1 Windows 8 build 7915's Driver Kit; ntsoc.h
  2. Jump up to: 2.0 2.1 Sinofsky, Steven. Building Windows for the ARM processor architecture, Microsoft Developer Blog - Building Windows 8. 9 February 2012. Archived from the original on 17 January 2016.
  3. Jump up to: 3.0 3.1 Sinofsky, Steven. 100. A Daring And Bold Vision, Hardcore Software: Inside the Rise and Fall of the PC Revolution. 2 October 2022.
  4. Jump up to: 4.0 4.1 Williams, Chris. Qualcomm, Microsoft plot ARM Snapdragon-powered Windows 10 PCs, tablets, phones, The Register. 8 December 2016.
  5. Jump up to: 5.0 5.1 Microsoft. Microsoft Empowers New Development Opportunities in Mixed Reality Gaming and Cellular PCs, Microsoft News Center. 7 December 2016.
  6. Larson-Green, Julie et al. The Windows 8 Vision. 24 March 2010.
  7. Edition-specific Windows Setup unattended answer files in Windows 8 build 7746
  8. Clarke, Gavin. Microsoft embraces ARM with Windows 8, The Register. 5 January 2011.
  9. Sandoval, Greg. Windows 8 to support x86, ARM 'system on a chip', CNET. 5 January 2011.
  10. Giles, Aaron. Response to inquiry on Windows RT branding. 17 August 2023.
  11. Rushe, Dominic. Microsoft reveals Surface Windows 8 tablets, The Guardian. 18 June 2012.
  12. Huet, Natalie; Peters, Hans-Juergen. Acer delays Windows RT tablets after Microsoft moves into market, Reuters. 30 October 2012.
  13. Shah, Agam. Acer waits for Windows RT 8.1 to make tablet decision, PCWorld. 3 May 2013.
  14. Jump up to: 14.0 14.1 Windows 8 build 8419
  15. Dell Debuts Stunning Additions to XPS Brand: Superb Performance and Design without Compromise, Dell Newsroom. 30 August 2012. Archived from the original on 18 March 2013.
  16. Carew, Sinead. Texas Instruments eyes shift away from wireless, Reuters. 25 September 2012.
  17. Portnoy, Sean. Toshiba bows out of Windows RT tablet race, ZDNET. 14 August 2012.
  18. Bowden, Zac. Microsoft Surface Mini review: A teeny Windows tablet that never existed, Windows Central. 1 October 2019.