Hat Windows jemals andere Hardwarearchitekturen als x86 unterstützt?

66

Microsoft Windows Internals, 4th Edition, sagt:

Die Architektur des Intel x86-Prozessors definiert vier Berechtigungsstufen (Ringe), um zu verhindern, dass Systemcode und Daten versehentlich oder böswillig durch Code mit geringeren Berechtigungen überschrieben werden. Windows verwendet die Berechtigungsstufe 0 (oder den Ring 0) für den Kernelmodus und die Berechtigungsstufe 3 (oder den Ring 3) für den Benutzermodus. Der Grund, warum Windows nur zwei Ebenen verwendet, besteht darin, dass einige in der Vergangenheit unterstützte Hardwarearchitekturen (wie Compaq Alpha und Silicon Graphics MIPS) nur zwei Berechtigungsstufen implementiert haben .

Bedeutet dies, dass Windows einmal Alpha und MIPS unterstützt hat?

xiaokaoy
quelle
49
Es mag schwer zu glauben sein, aber Microsoft war eines der "Open Architecture" -Unternehmen der Welt. Das ursprüngliche MS-DOS war mit Dutzenden verschiedener Plattformen und anderen Betriebssystemen kompatibel , und Windows wurde auf die gleiche Weise entwickelt. Excel wurde auf einer virtuellen Maschine erstellt, die auf vielen verschiedenen Plattformen ausgeführt wird. Dies war kein Zufall - auf diese Weise wurden IBM-PCs (und -Klone) so allgegenwärtig und schnell zum De-facto-Standard, und Microsoft lieferte die Basissoftware. Welches wählen Sie aus - das System, auf dem alle Ihre Anwendungen ausgeführt werden können, oder das System, an das Ihr Anbieter gebunden ist? :)
Luaan
13
Ich selbst habe Windows sowohl auf Alpha als auch auf MIPS installiert, aber das ist lange her. Als Microsoft-Praktikant bestand eine meiner Aufgaben darin, die Visual Basic-Testsuiten auf der Hardware auszuführen, die die Entwickler nicht auf ihren Schreibtischen hatten.
Eric Lippert
7
@Luaan - nicht nur "Open Architecture" sondern auch "Open OS"! Wie sonst können Sie erklären, dass ihre offiziell lizenzierte Unix-Variante zu einer Zeit die am häufigsten installierte Unix- Variante der Welt war - siehe Xenix bei Wikipedia .
Davidbak
4
Noch heute gibt es Versionen von Windows, die auf anderen Architekturen als x86 / x64 ausgeführt werden, nämlich Windows RT für ARM-Geräte.
TigerhawkT3
2
@Luaan Es war auch ein echtes Problem, das gelöst werden musste, da besonders frühe IBM PC-Klone nicht immer vollständig IBM PC-kompatibel waren. Damals war "100% IBM-Kompatibilität" ein Verkaufsargument für Hardwareanbieter. Wir halten solche Dinge heute für selbstverständlich, aber in der ersten Hälfte der achtziger Jahre waren sie überhaupt nicht garantiert. Microsoft ist vor MS-DOS 5.0, das 1991 auf den Markt kam, nicht wirklich in den Einzelhandel mit Betriebssystemen eingestiegen . Ja, ein Jahr nach der bahnbrechenden Erfolgsgeschichte von Windows 3.0.
ein CVn

Antworten:

82

Microsoft veröffentlichte Windows NT 3.1 1993 als erste reine 32-Bit-Version von Windows.

Windows NT wurde als Betriebssystem mit mehreren Architekturen entwickelt. Zunächst wurden verschiedene CPU-Architekturen unterstützt, darunter IA-32, DEC Alpha, MIPS und PowerPC.

Die ursprüngliche Idee war, eine gemeinsame Codebasis mit einem benutzerdefinierten Hardware Abstraction Layer (HAL) für jede Plattform zu haben. Die Unterstützung für MIPS, Alpha und PowerPC wurde jedoch später in Windows 2000 eingestellt .

jcbermu
quelle
7
IIRC Die Wikipedia- Seite hat eine anständige Einführung in die Details, welche Architekturen, wer es getan hat und warum sie nicht auf den Markt gekommen sind.
Geselle Geek
13
Ich glaube, dass die ursprüngliche Entwicklungsplattform i860 war. Dies war eine bewusste Entscheidung, um zu verhindern, dass 386-Ismen in das Design einfließen. Eine Zeitlang veröffentlichte Microsoft auch Anwendungen für verschiedene Architekturen. Ich habe eine Word-CD für Windows 6 für Windows NT auf i386, Alpha, MIPS und PowerPC.
Ed Avis
4
Ich erinnere mich, dass die Microsoft-Vertriebsmitarbeiter in Großbritannien nicht wussten, was eine Alpha-CPU ist, wenn sie versuchen, Software von Microsoft zu kaufen, die auf unseren Alpha-NT-Systemen ausgeführt wird. DEC gab uns die Maschinen als ISP sehr billig, am Ende haben wir sie nur mit Unix versehen und als X-Terms verwendet, anstatt sie für das Projekt auf NT zu portieren.
Ian Ringrose
4
"Die ursprüngliche Idee war, eine gemeinsame Codebasis mit einem benutzerdefinierten Hardware Abstraction Layer (HAL) für jede Plattform zu haben." Das klingt so, als ob es heutzutage keine tatsächliche HAL gibt, was falsch wäre. Für ein Windows NT wird heutzutage auch ARM unterstützt, und selbst wenn Sie nur x86 unterstützen, gibt es eine breite Palette an Revisionen für x86 (die größte davon ist offensichtlich x64) und Bugfixes für verschiedene Prozessoren, Mainboards und alles andere.
Voo
4
Es gab auch einen Hafen von Drittanbietern nach Sparc. Später wurde die PowerPC-Unterstützung für die XBox360 wieder hergestellt. Kurz zuvor wurde die IA64-Unterstützung hinzugefügt. Danach wurde die AMD64-Unterstützung hinzugefügt. Die neueste Ergänzung ist die ARM-Unterstützung. Die ursprüngliche Entwicklungsplattform war i860; Es war nie beabsichtigt, es für diese Plattform freizugeben. Es wurde nur gemacht, weil es "seltsam" und maximal anders als x86, PowerPC, MIPS und Co war, um die Portabilität zu gewährleisten.
Jörg W Mittag
46

Soweit mir bekannt ist, gibt es 8 Basisarchitekturen (und eine Reihe von Untervarianten), von denen heute mit Windows 10 nur noch 2 unterstützt werden.

Windows 1.0 bis 3.11, Windows 95, 98 und Millenium Edition

x86 (16-Bit- und 32-Bit-Varianten, einschließlich 8086-, 80186-, 80286-, 80386-, 80486-, Pentium-, Pentium Pro-, Pentium II-, Pentium III-, P4-, Core-, Core Duo-, Core-I- und verschiedener Celeron- und Atom-Designs.) Enthält auch verschiedene kompatible AMD- und NEC-CPUs.

Windows CE

MIPS, x86, ARM (danke @ pjc50).
(Ich bin mir nicht sicher, ob CE jemals auf Alpha oder PowerPC ausgeführt wurde.)

Windows NT

x86, x64 (oder amd64, beide Namen werden verwendet), MIPS, Alpha, IA32, IA64, PowerPC.
Die Unterstützung für MIPS, Alpha und PowerPC wurde in Windows 2000 eingestellt. Itanium war nur Server mit Windows 2000 und 32-Bit (IA32) wurde für 2008 und 64-Bit (IA64) mit Server 2012 eingestellt, wenn ich mich richtig erinnere. Derzeit sind nur noch x86 (auf einige spezielle Netbook- / Tablet-Geräte beschränkt) und x64 für Windows 10 gültig.

Windows Phone

ARM (vielleicht auch MIPS?)

Windows 10 für das Internet der Dinge

x64, ARM

Tonny
quelle
2
Windows NT als Windows 10 für Handys unterstützt ARM.
Tamoghna Chowdhury
16
"IA-32" bedeutet nur "32-Bit x86", die einzige von Windows NT unterstützte Version von x86, bis x64 / AMD64 hinzukam. Möglicherweise ist x64 / AMD64 nur eine Variante von x86, obwohl Windows über umfangreiche Tools verfügt, mit denen die Unterschiede behoben werden können. "IA-64" hingegen ist die völlig neue 64-Bit-Architektur, die Itanium-Chips unterstützt. Es gab noch nie einen 32-Bit-Itanium.
IMSoP
9
Windows CE war keine NT-Variante oder ein Port von NT. Es hatte einen eigenen, sehr einzigartigen und unterschiedlichen Kernel, einschließlich einer ganz anderen Prozessarchitektur und Memory Map. Viele NT-Codes wurden vom Betriebssystem darauf portiert , z. B. der gesamte Netzwerkstapel und vieles mehr. Auf Userland-Ebene wurde natürlich die Windows-API unterstützt.
davidbak
7
Windows CE lief auch auf einigen Varianten der Hitachi Super-H-Prozessoren. Ein berühmtes Beispiel ist der Sega Dreamcast (SH4), aber ich denke auch, dass es einige PDAs auf der Basis des SH3 gab, auf denen Windows CE lief.
Michael
3
Windows Phone ist ein Marketingname. Bis WP7 war es Teil der CE-Linie, WP8 ist ein NT-Derivat. In ähnlicher Weise ist Windows 10 IOT ebenso ein maßgeschneiderter NT-Kernel wie die 3. Generation von XBoxen.
MSalters
21

Windows XP 64bit und Windows Server 2003-2008R2 unterstützen die Intel Itanium IA-64-Architektur.

JamesRyan
quelle
15

Für die 2012 veröffentlichten Windows Surface-Tablets wurde eine 32-Bit-ARM-Architektur verwendet . Diese spezielle Version wurde als Windows RT bezeichnet :

Es handelt sich im Wesentlichen um eine Edition von Windows 8.x, die für die 32-Bit-ARM-Architektur (ARMv7) entwickelt wurde.

[…]

Aufgrund der unterschiedlichen Architektur von ARM-basierten Geräten im Vergleich zu x86-Geräten unterliegt Windows RT Einschränkungen hinsichtlich der Softwarekompatibilität.

Windows RT wurde eingestellt.

Quelle: Wikipedia .

AL
quelle
3

Windows 10 IoT Core läuft auf einer 32-Bit-ARM-Architektur (IA-32, ARMv7), wie dem Raspberry Pi 3. Es gibt jedoch einige Einschränkungen.

Quellen:

Ghanima
quelle
3

Die Windows NT- Linie hat im Laufe der Jahre verschiedene Architekturen unterstützt.

MIPS und Alpha wurden von 3.1 bis 4.0 unterstützt (Alpha hat es tatsächlich bis zu einem Release Candidate für Windows 2000 geschafft , aber nicht bis zur endgültigen Version). PowerPC wurde nur in 4.0 gesehen.

IA64 (Itanium) wurde in Windows XP unterstützt. Es wurde auch in der Serverlinie von Server 2003 bis Server 2008 R2 unterstützt.

Microsoft hat Windows nach ARM portiert, die resultierenden Systeme jedoch auf verschiedene Weise künstlich lahmgelegt. Mit Windows RT (der ARM-Version von Windows 8) war das System ziemlich vollständig, aber Desktop-Apps von Drittanbietern wurden gesperrt. Mit den verschiedenen ARM-Varianten von Windows 10 scheint der Desktop komplett verschwunden zu sein.

Plugwash
quelle
1

Windows NT (als Kernel in Windows RT, WP8, WP8.1 und Windows 10 für Handys) unterstützt ARM v7-A (32-Bit) und ARM v8-A (64-Bit) (Windows 10 für Handys derzeit auf der Lumia 950 / 950XL mit Qualcomm Snapdragon 810-Chipsatz-Architekturen, derzeit zusätzlich zu x86 (einschließlich x86-64 (Windows AMD64), i386 / i586 / i686 (Windows x86)). Dies gilt zusätzlich zu den historisch unterstützten Architekturen, die in anderen Antworten wie Alpha, MIPS, Itanium und PowerPC erwähnt wurden.

Wie in einer anderen Antwort erwähnt, können Win32-Desktopanwendungen unter Windows NT unter ARM (dh ohne x86-Emulation unter ARM) nicht nativ ausgeführt werden, wenn sie für die x86-Architektur kompiliert wurden (wie dies meistens der Fall ist). Wie jedoch von @user 2284570 erwähnt, können ARM-native ausführbare Dateien oder dynamische Bibliotheken in Windows NT für ARM nur ausgeführt werden, wenn sie (die Distributionsbinärdateien) von Microsoft digital signiert wurden, wobei diese Büros die Verteilung von ARM-nativen Apps durch Entwickler von Drittanbietern behindern (Im Gegensatz zur Richtlinie mit x86 oder anderen zuvor unterstützten Architekturen). Microsoft hat sich dafür entschieden, x86-bezogene Win32-Apps (Desktop Windows-Software) nicht auf Binärniveau über die Emulation unter Windows für ARM zu unterstützen, da der Leistungsverlust für die Emulation sehr hoch wäre und vollständig gegen das ARM-Leistungsideal bei einem engen Strombudget (niedrige TDP) verstoßen würde ).

Hinweis: Die Windows-API, auf die ich hier verweise, ist die native Win32- API, nicht die .NET WINAPI- Version ( verwaltet ). App-Kompatibilität bezieht sich hier auf die Kompatibilität auf Binärebene, nicht auf die Kompatibilität auf Quellenebene, wenn dies nicht offensichtlich war.

Mit dem Aufkommen der Windows RT-Plattform und jetzt der Universal Windows Platform (UWP) ist es jedoch möglich geworden, architekturunabhängige Software für Windows zu erstellen (bisher musste Software entweder emuliert oder neu kompiliert werden, um unter Windows auf verschiedenen Architekturen ausgeführt zu werden). .

Tamoghna Chowdhury
quelle
MS lehnte es ab, Desktop-Apps von Drittanbietern zuzulassen, auch wenn sie dafür neu kompiliert wurden. Dies war eine rein künstliche Einschränkung (was durch die Tatsache belegt wird, dass jemand einen Weg gefunden hat, sie zu umgehen)
Plugwash am
@plugwash Tatsächlich habe ich im zweiten Absatz die Künstlichkeit der Einschränkungen beim Ausführen von für ARM kompilierten Desktop-Apps erwähnt. Bitte lies es.
Tamoghna Chowdhury
-1

Windows NT wurde früher auf MIPS- und Alpha-Chips ausgeführt. Ich habe NT4 auf einem Alpha ausgeführt. Sie mussten eine andere Firmware flashen, um NT anstelle von VMS zu starten.

Käfig
quelle