Windows是否支持x86以外的任何硬件体系结构?


66

Microsoft Windows Internals,第4版说:

英特尔x86处理器的体系结构定义了四个特权级别或环,以防止系统代码和数据被较小特权的代码无意或恶意覆盖。Windows将特权级别0(或环0)用于内核模式,并将特权级别3(或环3)用于用户模式。Windows仅使用两个级别的原因是,过去支持的某些硬件体系结构(例如Compaq Alpha和Silicon Graphics MIPS)仅实现了两个特权级别

这是否意味着Windows曾经支持Alpha和MIPS?


49
也许难以置信,但是微软是世界上最“开放式架构”的公司之一。原始的MS-DOS与数十种不同的平台和其他OS兼容,并且Windows是按照相同的方式设计的。Excel建立在可在许多不同平台上运行的虚拟机上。这绝非偶然-这就是IBM PC(和克隆)如何如此普遍而迅速地成为事实上的标准,以及Microsoft是如何提供基本软件的。您选择哪个-可以运行所有应用程序的系统,或者已锁定供应商的系统?:)
卢安

13
我已经在Alpha和MIPS上都安装了Windows,但这已经很久了。当我是Microsoft实习生时,我的工作之一是在开发人员没有的硬件上运行Visual Basic测试套件。
埃里克·利珀特

7
@Luaan-不仅是“开放式体系结构”,还有“开放式操作系统”!您还可以怎么解释,一次他们的官方许可Unix变体是世界上最普遍安装的Unix,请参阅Wikipedia上的Xenix
davidbak

4
即使在今天,也有Windows版本可以在x86 / x64以外的体系结构上运行,即ARM设备的Windows RT。
TigerhawkT3'3-4-8

2
@Luaan这也是一个需要解决的实际问题,因为特别是早期的IBM PC克隆并不总是与IBM PC完全兼容。过去,“ 100%IBM兼容性”是硬件供应商的卖点。今天,我们认为这种事情是理所当然的,但是在1980年代上半叶,根本没有保证。在1991年上市的MS-DOS 5.0之前,微软并没有真正进入操作系统零售市场。是的,在Windows 3.0取得开创性成功的一年之后。
CVn

Answers:


82

Microsoft 在1993年发布了Windows NT 3.1,这是Windows的第一个纯32位版本。

Windows NT被开发为多体系结构的操作系统。最初支持不同的CPU体系结构,包括IA-32,DEC Alpha,MIPS和PowerPC。

最初的想法是为每个平台建立一个通用的代码库,以及一个自定义的硬件抽象层(HAL)。但是,后来在Windows 2000中不再支持MIPS,Alpha和PowerPC 。


7
IIRC的Wikipedia页面上详细介绍了哪些体系结构,由谁来做以及为什么不将它们推向市场的细节。
Journeyman Geek

13
我相信最初的开发平台是i860。这是阻止“ 386原理”进入设计的明智选择。一段时间以来,微软还发布了适用于不同体系结构的应用程序。我有一张用于Windows 6的Word CD,该CD是为i386,Alpha,MIPS和PowerPC上的Windows NT构建的。
Ed Avis

4
我记得曾试图从Microsoft购买可在我们的Alpha NT系统上运行的软件,但英国的Microsoft销售人员并不知道Alpha CPU是什么。DEC为我们提供了作为ISP的机器非常便宜的机器,最后我们仅将unix放在机器上并用作X-Term,而不是将项目移植到NT。
伊恩·林格罗斯

4
“最初的想法是在每个平台上都具有一个通用的代码库和一个自定义的硬件抽象层(HAL)”,这听起来似乎在这些日子中没有实际的HAL,这是不正确的。对于当今的Windows NT来说,如今也支持ARM,即使您仅支持x86,也存在针对x86的广泛修订(最大的修订显然是x64)以及针对不同处理器,主板和其他任何东西的错误修正。
Voo

4
还有一个通往Sparc的第三方端口。后来,Xbox360恢复了PowerPC支持。在此之前不久,添加了IA64支持。之后,添加了AMD64支持。最新的功能是对ARM的支持。在最初的开发平台是1860; 它从未打算在该平台上发布,它之所以这样做,纯粹是因为它“怪异”,并且与x86,PowerPC,MIPS和Co的最大不同是为了确保可移植性。
约尔格W¯¯米塔格

46

据我所知,Windows 10目前有8种基础架构(以及许多子变体),其中只有2种仍受支持。

Windows 1.0至3.11,Windows 95、98和Millenium版

x86(16位和32位变体,包括8086、80186、80286、80386、80486,Pentium,Pentium Pro,Pentium II,Pentium III,P4,Core,Core Duo,Core-I以及各种Celeron和Atom设计。)还包括各种兼容的AMD和NEC CPU。

Windows CE

MIPS,x86,ARM(感谢@ pjc50)。
(不确定CE是否曾经在PowerPC的Alpha上运行。)

Windows NT

x86,x64(或amd64,两个名称都使用),MIPS,Alpha,IA32,IA64,PowerPC。
在Windows 2000中,不再支持MIPS,Alpha和PowerPC。如果我没记错的话,Itanium是仅从Windows 2000开始的服务器,2008年和32位(IA32)分别从Windows 2000和Server 2012开始删除。当前,只有x86(仅限于某些特殊的上网本/平板电脑设备)和x64对于Windows 10仍然有效。

Windows Phone

ARM,(也许还可以是MIPS吗?)

适用于IoT的Windows 10

x64,ARM


2
作为电话的Windows 10的Windows NT支持ARM。
Tamoghna Chowdhury

16
“ IA-32”仅表示“ 32位x86”,这是Windows NT在出现x64 / AMD64之前唯一支持的x86版本。可以说x64 / AMD64只是x86的一种变体,尽管Windows有专门用于处理其差异的广泛工具。另一方面,“ IA-64”是为Itanium芯片提供动力的全新64位体系结构。从来没有像32位Itanium这样的东西。
IMSoP '16

9
Windows CE 不是 NT变体,也不是NT端口。它具有自己非常独特且不同的内核,包括完全不同的进程体系结构和内存映射。的NT代码被大量移植从OS,例如整个网络堆栈和其他东西太多了,当然在用户级的水平,它支持Windows的API ..
davidbak

7
Windows CE还运行了Hitachi Super-H Pocessor的某些变体。一个著名的例子是Sega Dreamcast(SH4),但我也认为有些基于SH3的PDA可以运行Windows CE。
迈克尔

3
Windows Phone是市场名称。直到WP7为止,它都是CE系列产品的一部分,而WP8是NT衍生产品。同样,Windows 10 IOT也是量身定制的NT内核,第三代XBoxen也是如此。
MSalters '16


15

2012年发布的Windows Surface平板电脑使用32位ARM架构,该特定版本称为Windows RT

它本质上是为32位ARM体系结构(ARMv7)构建的Windows 8.x版本。

[…]

由于与基于x86的设备相比,基于ARM的设备的体系结构不同,因此Windows RT具有软件兼容性限制。

Windows RT已停产。

资料来源:Wikipedia



3

多年来,Windows NT系列已经支持各种体系结构。

从3.1到4.0支持MIPS和Alpha(Alpha实际上使它成为Windows 2000的候选发行版,但并未使其成为最终版本)。PowerPC仅在4.0中可见。

Windows XP支持IA64(Itanium)。从Server 2003到Server 2008 R2的服务器行中也支持此功能。

微软已经将Windows移植到ARM,但是随后以各种方式人为地破坏了最终的系统。使用Windows RT(Windows 8的ARM版本)时,系统几乎完整,但是第三方桌面应用程序被锁定。随着Windows 10的各种ARM变体的出现,台式机似乎完全消失了。


1

Windows NT(作为Windows RT,WP8,WP8.1和Windows 10 Phones中的内核)支持ARM v7-A(32位)和ARM v8-A(64位)(Windows 10 for Phones当前位于除x86(包括x86-64(Windows AMD64),i386 / i586 / i686(Windows x86))之外,当前还具有Lumia 950 / 950XL和Qualcomm Snapdragon 810芯片组的体系结构。这是在其他答案(例如Alpha,MIPS,Itanium和PowerPC)中提到的历史上受支持的体系结构的补充。

如另一个答案所述,如果Win32桌面应用程序是针对x86体系结构进行编译的(通常如此),则它们无法在ARM的Windows NT上本地运行(即,在ARM仿真中没有x86)。但是,如@user 2284570所述,ARM本机可执行文件或动态库只有在它们(分发二进制文件)已由Microsoft进行数字签名的情况下,才能在Windows NT中为ARM运行,这会阻碍第三方开发人员对ARM本机应用程序的分发。 (例如,与使用x86或其他先前支持的体系结构的策略不同)。Microsoft选择不通过Windows上的ARM仿真在二进制级别上支持以x86为目标的Win32应用程序(台式Windows软件),因为仿真的性能代价将是巨大的,并且完全与ARM在紧凑的功率预算(低TDP)中的理想性能不符。 )。

注意:我在这里指的Windows API是Win32 本机 API,而不是.NET WINAPI(托管)版本。应用兼容性是指二进制级别的兼容性,而不是源代码级别的兼容性(如果不是很明显)。

但是,随着Windows RT平台和通用Windows平台(UWP)的出现,为Windows构建与体系结构无关的软件成为了可能(以前必须对软件进行仿真或重新编译才能在不同体系结构的Windows上运行)。 。


MS拒绝允许第三方桌面应用程序使用,即使它们为此进行了重新编译。这是纯粹的人为限制(有人发现绕过它的方法证明了这一点)
plugwash'April

@plugwash我实际上在第二段中提到了针对运行为ARM编译的桌面应用程序的限制的人为设置。请阅读。
Tamoghna Chowdhury

-1

Windows NT过去可以在MIPS和Alpha芯片上运行。我已经在Alpha上运行NT4。您必须刷新其他固件才能启动NT而不是VMS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.