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?

Peter Mortensen
  • 12,090
  • 23
  • 70
  • 90
xiaokaoy
  • 802
  • 1
  • 7
  • 10
  • 50
    It may be hard to believe, but Microsoft was one of the most "open architecture" companies in the world. The original MS-DOS was compatible with tens of different platforms and *other OSes*, and Windows was designed in the same vein. Excel was built on a virtual machine that run on many different platforms. This was no accident - that's how IBM PC (and clones) became the de facto standard so pervasively and quickly, and how Microsoft was the one to supply the basic software. Which do you pick - the system that can run all your applications, or the one that has you vendor locked-in? :) – Luaan Apr 07 '16 at 13:28
  • 13
    I have myself installed Windows on both Alpha and MIPS but that was a long, long time ago. When I was a Microsoft intern one of my jobs was to run the Visual Basic test suites on the hardware that the developers did not have on their desks. – Eric Lippert Apr 07 '16 at 15:20
  • 7
    @Luaan - not just "open architecture" but also "open OS"! How else can you explain that at one time their officially licensed Unix variant was the _most common installed Unix_ in the world - see [Xenix at Wikipedia](https://en.wikipedia.org/wiki/Xenix). – davidbak Apr 07 '16 at 17:45
  • 4
    Even today, there are versions of Windows that run on architectures other than x86/x64, viz Windows RT for ARM devices. – TigerhawkT3 Apr 08 '16 at 23:46
  • @xiaokaoy this is old version,please read Sixth Edition – AminM Apr 09 '16 at 06:44
  • 2
    @Luaan It was also a real problem that needed solving because particularly early IBM PC clones weren't always fully IBM PC compatible. Back in the day, "100% IBM compatibility" was a *selling point* for hardware vendors. We take that kind of things for granted today, but in the first half of the 1980s or so, they weren't guaranteed at all. Microsoft didn't really move into the operating system retail market before [MS-DOS 5.0](https://en.wikipedia.org/wiki/MS-DOS#Versions) which hit the market in 1991. Yes, a year after the groundbreaking success story of Windows 3.0. – user Apr 09 '16 at 23:17
  • 1
    @DevSolar May I humbly point toward the IBM PS/2, which flopped *massively* in part due to vendor lock-in (MCA being a major killer, and OS/2 never particularly taking off)? – user Apr 11 '16 at 14:11
  • @Luaan: I disagree, *massively*, but don't see how to get the point across without violating ToS and / or inviting you over for a beer. ;-) So I'd better delete the comment so as to not invite others to jump the bandwaggon. – DevSolar Apr 11 '16 at 14:14

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,278
  • 2
  • 52
  • 60
  • 7
    IIRC the [Wikipedia](https://en.wikipedia.org/wiki/Windows_NT#32-bit_platforms) page has a decent primer on the details of which architectures, who did it, and why they didn't come to market. – Journeyman Geek Apr 07 '16 at 08:22
  • 13
    I believe that the original development platform was i860. This was a deliberate choice to stop '386-isms' getting into the design. For a time Microsoft also released applications for different architectures; I have a CD of Word for Windows 6 built for Windows NT on i386, Alpha, MIPS and PowerPC. – Ed Avis Apr 07 '16 at 12:07
  • 4
    I recall trying to buy software from Microsoft on run on our Alpha NT systems, the Microsoft sales people in the UK did not know what a Alpha CPU was. DEC gave us the machines very cheap as a ISP, in the end we just put unix on them and used them as X-Terms rather then for the project to port to NT. – Ian Ringrose Apr 07 '16 at 13:53
  • 4
    "The original idea was to have a common code base with a custom Hardware Abstraction Layer (HAL) for each platform" makes it sound like there isn't an actual HAL around these days, which would be incorrect. For one Windows NT these days also supports ARM these days and even if you only support x86 there's a wide range of revisions for x86 (the biggest one obviously being x64) and bugfixes for varying processors, mainboards and anything else. – Voo Apr 08 '16 at 15:25
  • 2
    NT 3.1 didn't support PowerPC (that wasn't added until NT 3.51, if I recall correctly). @EdAvis: Initial development was on an i860 emulator, but as far as I know, not i860 hardware--by the time they ran it on hardware, they'd given up on the i860 and moved to a MIPS R3000. – Jerry Coffin Apr 08 '16 at 22:24
  • 4
    There was also a third-party port to Sparc. Later, PowerPC support was resurrected for the XBox360. Shortly before that, IA64 support was added. After that, AMD64 support was added. The latest addition is ARM support. The *original* development platform was i860; it was never intended to release for that platform, it was done purely because it was "weird" and maximally different from x86, PowerPC, MIPS, and Co, in order to ensure portability. – Jörg W Mittag Apr 09 '16 at 12:07
  • And the hardware abstraction layer was dismissed because -- the abstraction made Windows too slow for Space Cadet. A shame, because since that change any driver can wreak havoc on the machine, which they didn't use to. Now we use a virtual machine to protect ourselves. Better? Dunno. – Peter - Reinstate Monica Apr 11 '16 at 15:23
  • @jcbermu : The first ɴᴛ version is 3.2 released in 1991. you can download it [here along an emulator](http://bingeflying.com/3.2/dec1991-hpfs-qemu.7z) to run it on ᴡɪɴ32. If you run cmd, the date along the version will be confirmed. – user2284570 Apr 11 '16 at 18:04
47

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
  • 29,601
  • 7
  • 52
  • 84
  • 2
    Windows NT as Windows 10 for phones supports ARM. – Tamoghna Chowdhury Apr 07 '16 at 13:45
  • Windows 10 IoT for Raspberry Pi https://developer.microsoft.com/en-us/windows/iot – Richard Chambers Apr 07 '16 at 13:55
  • 17
    "IA-32" just means "32-bit x86", which is the only version of x86 supported by Windows NT until x64/AMD64 came along. Arguably x64/AMD64 is just a variant of x86, although Windows has extensive tooling specifically for handling its differences. "IA-64", on the other hand, is the completely new 64-bit architecture which powered Itanium chips; there was never any such thing as a 32-bit Itanium. – IMSoP Apr 07 '16 at 14:22
  • 9
    Windows CE was _not_ an NT variant, or port of NT. It had its own very unique and different kernel, including a quite different process architecture and memory map. Lots of NT code was _ported_ to it from the OS, e.g., the entire network stack and much much else, and of course at the userland level it supported the Windows API.. – davidbak Apr 07 '16 at 17:48
  • One could also argue that 16-bit (real mode) and 32-bit x86 count as different architectures. – Hong Ooi Apr 08 '16 at 03:06
  • windows phone probably also supports x86, although no phone was released yet http://www.techtimes.com/articles/126875/20160123/windows-10-mobile-now-supports-smartphones-with-intel-x86-chips.htm http://www.pcworld.com/article/3025483/mobile/windows-phone-can-now-work-on-smartphones-with-intel-x86-chips.html – phuclv Apr 08 '16 at 04:26
  • 1
    Windows NT also supports ARM https://en.wikipedia.org/wiki/Windows_NT#Major_features – phuclv Apr 08 '16 at 04:35
  • 7
    Windows CE also ran on some variants of the Hitachi Super-H pocessors. A famous example is the Sega Dreamcast (SH4), but I also think there were some PDAs based on the SH3 that ran Windows CE. – Michael Apr 08 '16 at 06:41
  • @IMSoP indeed x64/amd64 is also known as x86_64 – OrangeDog Apr 08 '16 at 08:30
  • 3
    Windows Phone is a marketing name. Up to WP7 it was part of the CE line, WP8 is an NT derivative. Similarly Windows 10 IOT is also a tailored NT kernel, as are the 3 generation of XBoxen. – MSalters Apr 08 '16 at 13:43
  • @Tonny : you forgot [axp64](http://www.dependencywalker.com/) and that mips isa are separate architectures *(windows ɴᴛ ᴍɪᴘꜱ ɪꜱᴀ Ⅳ as a separate architecture)*. There’s also ᴀʀᴍ64 with windows 10. – user2284570 Apr 11 '16 at 16:19
21

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

JamesRyan
  • 1,671
  • 1
  • 12
  • 20
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
  • 726
  • 1
  • 10
  • 25
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.

Peter Mortensen
  • 12,090
  • 23
  • 70
  • 90
plugwash
  • 5,994
  • 2
  • 18
  • 25
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
  • 6
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).

  • MS refused to allow third party desktop apps on arm even if they were recompiled for it. This was a purely artificial restriction (as evidenced by the fact that someone found a way to bypass it) – plugwash Apr 11 '16 at 22:28
  • @plugwash I have in fact mentioned the artificiality of the restrictions on running desktop apps compiled for ARM in the second paragraph. Please read it. – Tamoghna Chowdhury Apr 12 '16 at 03:11
-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