67

Microsoft Windows Internals, 4th Edition says:

The architecture of the Intel x86 processor defines four privilege levels, or rings, to protect system code and data from being overwritten either inadvertently or maliciously by code of lesser privilege. Windows uses privilege level 0 (or ring 0) for kernel mode and privilege level 3 (or ring 3) for user mode. The reason Windows uses only two levels is that some hardware architectures that were supported in the past (such as Compaq Alpha and Silicon Graphics MIPS) implemented only two privilege levels.

Does this mean Windows once supported Alpha and MIPS?

xiaokaoy
  • 822

8 Answers8

83

Microsoft released Windows NT 3.1 in 1993 as the first purely 32-bit version of Windows.

Windows NT was developed as a multi-architecture operating system. Initially supported different CPU architectures, including IA-32, DEC Alpha, MIPS, and PowerPC.

The original idea was to have a common code base with a custom Hardware Abstraction Layer (HAL) for each platform. However, support for MIPS, Alpha, and PowerPC was later dropped in Windows 2000.

jcbermu
  • 17,822
46

As far as I know there are 8 base-architectures (and a number of sub-variants) of which only 2 are still supported today with Windows 10.

Windows 1.0 to 3.11, Windows 95, 98 and Millenium Edition

x86 (16 bit and 32 bit variants, including 8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium II, Pentium III, P4, Core, Core Duo, Core-I and various Celeron and Atom designs.) This also includes various compatible AMD and NEC CPU's.

Windows CE

MIPS, x86, ARM (thanks @pjc50).
(Not sure if CE ever ran on Alpha, PowerPC.)

Windows NT

x86, x64 (or amd64, both names are used), MIPS, Alpha, IA32, IA64, PowerPC.
Support for MIPS, Alpha and PowerPC was dropped in Windows 2000. Itanium was server only starting with Windows 2000 and 32-bit (IA32) was dropped for 2008 and 64-bit (IA64) with Server 2012 if I recall correctly. Only x86 (limited to some specialty netbook/tablet devices) and x64 are currently still valid for Windows 10.

Windows Phone

ARM, (maybe also MIPS ?)

Windows 10 for IoT

x64, ARM

Tonny
  • 33,276
21

Windows XP 64bit and Windows Server 2003-2008R2 support the Intel Itanium IA-64 architecture.

JamesRyan
  • 1,681
14

Windows Surface tablets released in 2012 used a 32-bit ARM architecture, this specific version was named Windows RT:

It is essentially an edition of Windows 8.x built for the 32-bit ARM architecture (ARMv7).

[…]

Due to the different architecture of ARM-based devices compared to x86 devices, Windows RT has software compatibility limitations.

Windows RT has been discontinued.

Source: Wikipedia.

A.L
  • 820
  • 2
  • 12
  • 29
3

The windows NT line has supported various architectures over the years.

MIPS, and Alpha were supported from 3.1 to 4.0 (Alpha actually made it as far as a release candidate for Windows 2000, but it didn't make it to the final release). PowerPC was seen in 4.0 only.

IA64 (Itanium) was supported in Windows XP. It was also supported in the server line from Server 2003 to Server 2008 R2.

Microsoft has ported Windows to ARM but then artificially crippled the resulting systems in various ways. With windows RT (the ARM version of Windows 8) the system was pretty much complete, but third-party desktop apps were locked out. With the various ARM variants of Windows 10 the desktop seems to be gone completely.

plugwash
  • 6,719
3

Windows 10 IoT Core runs on a 32-bit ARM architectures (IA-32, ARMv7), such as the Raspberry Pi 3. It comes with certain limitations though.

Sources:

Ghanima
  • 141
1

Windows NT (as the kernel in Windows RT, WP8, WP8.1 and Windows 10 for Phones) supports the ARM v7-A (32-bit) and ARM v8-A (64-bit) (Windows 10 for Phones currently on the Lumia 950/950XL with Qualcomm Snapdragon 810 chipset) architectures currently in addition to x86 (including x86-64 (Windows AMD64), i386/i586/i686 (Windows x86)). This is in addition to the historically supported architectures mentioned in other answers like the Alpha, MIPS, Itanium and PowerPC.

As noted in another answer, Win32 desktop apps cannot natively run on Windows NT on ARM (i.e., without x86 on ARM emulation) if they are compiled for the x86 architecture (as they are mostly). However, as mentioned by @user 2284570, ARM native executables or dynamic libraries can run in Windows NT for ARM only if they (the distribution binaries) have been digitally signed by Microsoft, which offices p obstructs 3rd-party developer distribution of ARM native apps (unlike the policy with x86 or other previously supported architectures for example). Microsoft chose to not support x86-targeted Win32 apps (Desktop Windows software) at a binary level via emulation on Windows for ARM as the performance penalty for emulation would be huge and completely against the ARM ideal of performance in a tight power budget (low TDP).

Note: The Windows API I refer to here is the Win32 native API, not the .NET WINAPI (managed) version. App compatibility refers to binary-level compatibility here, not source-level compatibility, if that wasn't apparent.

However, with the advent of the Windows RT platform and now the the Universal Windows Platform (UWP), building architecture-agnostic software for Windows has become a possibility (previously software had to be either emulated or recompiled to run on Windows on different architectures).

-1

Windows NT used to run on MIPS and Alpha chips. I've run NT4 on an Alpha. You had to flash a different firmware to boot NT instead of VMS.

cagey
  • 15
  • 1