Hat Windows jemals andere Hardwarearchitekturen als x86 unterstützt?

11459
xiaokaoy

Microsoft Windows Internals, 4th Edition sagt:

Die Architektur des Intel x86-Prozessors definiert vier Berechtigungsstufen oder -ringe, um Systemcode und -daten vor unbeabsichtigtem oder böswilligem Überschreiben durch Code mit geringerem Privileg zu schützen. Windows verwendet die Berechtigungsstufe 0 (oder Ring 0) für den Kernelmodus und die Berechtigungsstufe 3 (oder Ring 3) für den Benutzermodus. Der Grund, warum Windows nur zwei Ebenen verwendet, besteht darin, dass einige Hardwarearchitekturen, die in der Vergangenheit unterstützt wurden (z. B. Compaq Alpha und Silicon Graphics MIPS), nur zwei Berechtigungsstufen implementierten .

Bedeutet das, dass Windows einst Alpha und MIPS unterstützte?

66
Es mag schwer zu glauben sein, aber Microsoft war eines der "Open Architecture" Unternehmen der Welt. Das ursprüngliche MS-DOS-Programm war mit zahlreichen verschiedenen Plattformen und * anderen Betriebssystemen * kompatibel, und Windows wurde auf dieselbe Weise entwickelt. Excel wurde auf einer virtuellen Maschine aufgebaut, die auf vielen verschiedenen Plattformen ausgeführt wird. Dies war kein Zufall - so wurden IBM PC (und Klone) so pervasiv und schnell zum De-facto-Standard, wie Microsoft die Basissoftware lieferte. Welches System wählen Sie aus - das System, auf dem alle Anwendungen ausgeführt werden können, oder das System, in dem Ihr Anbieter gesperrt ist? :) Luaan vor 8 Jahren 49
Ich habe Windows sowohl auf Alpha als auch auf MIPS installiert, aber das ist lange her. Als ich Intern bei Microsoft war, bestand eine meiner Aufgaben darin, die Visual Basic-Testsuites auf der Hardware auszuführen, die die Entwickler nicht auf ihren Schreibtischen hatten. Eric Lippert vor 8 Jahren 13
@Luaan - nicht nur "offene Architektur", sondern auch "offenes Betriebssystem"! Wie kann man sonst erklären, dass ihre offiziell lizenzierte Unix-Variante zu der Zeit die am häufigsten installierte Unix in der Welt war - siehe [Xenix bei Wikipedia] (https://en.wikipedia.org/wiki/Xenix). davidbak vor 8 Jahren 7
Bis heute gibt es Windows-Versionen, die auf anderen Architekturen als x86 / x64 ausgeführt werden, nämlich Windows RT für ARM-Geräte. TigerhawkT3 vor 8 Jahren 4
@xiaokaoy Dies ist eine alte Version, bitte lesen Sie die Sixth Edition AminM vor 8 Jahren 0
@Luaan Es war auch ein echtes Problem, das gelöst werden musste, da besonders frühe IBM-PC-Klone nicht immer vollständig mit IBM-PCs kompatibel waren. Damals war "100% IBM-Kompatibilität" ein Verkaufsargument für Hardware-Hersteller. Wir betrachten solche Dinge heute als selbstverständlich, aber in der ersten Hälfte der achtziger Jahre waren sie überhaupt nicht garantiert. Microsoft hat den Markt für den Einzelhandel mit Betriebssystemen nicht vor dem Markteintritt von [MS-DOS 5.0] (https://en.wikipedia.org/wiki/MS-DOS#Versions) entwickelt, der 1991 auf den Markt kam. Ja, ein Jahr danach die bahnbrechende Erfolgsgeschichte von Windows 3.0. a CVn vor 8 Jahren 2
@DevSolar Darf ich demütig auf das IBM PS / 2 hinweisen, das * teilweise * massiv umkippte, weil der Anbieter sich selbst einschränkte (MCA ist ein großer Killer und OS / 2 nicht besonders abhebend)? a CVn vor 8 Jahren 1
@Luaan: Ich stimme nicht zu, * massiv *, sehe aber nicht, wie ich den Punkt vermitteln kann, ohne ToS zu verletzen und / oder dich zu einem Bier einzuladen. ;-) Also lösche ich den Kommentar besser, um andere nicht zum Zug zu bringen. DevSolar vor 8 Jahren 0

8 Antworten auf die Frage

82
jcbermu

Microsoft hat Windows NT 3.1 im Jahr 1993 als erste reine 32-Bit-Version von Windows veröffentlicht.

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

Die ursprüngliche Idee war, eine gemeinsame Codebasis mit einer 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 .

IIRC auf der Seite [Wikipedia] (https://en.wikipedia.org/wiki/Windows_NT#32-bit_platforms) gibt es einen guten Überblick über die Details der Architekturen, wer sie gemacht hat und warum sie nicht auf den Markt kamen. Journeyman Geek vor 8 Jahren 7
Ich glaube, dass die ursprüngliche Entwicklungsplattform i860 war. Dies war eine bewusste Entscheidung, um zu verhindern, dass "386-isms" in das Design geraten. Zeitweise veröffentlichte Microsoft auch Anwendungen für verschiedene Architekturen. Ich habe eine Word-CD für Windows 6, die für Windows NT auf i386, Alpha, MIPS und PowerPC erstellt wurde. Ed Avis vor 8 Jahren 13
Ich erinnere mich an den Versuch, Software von Microsoft zu kaufen, die auf unseren Alpha-NT-Systemen ausgeführt wurde. Die Microsoft-Vertriebsmitarbeiter in Großbritannien wussten nicht, was eine Alpha-CPU war. DEC hat uns die Maschinen als ISP sehr günstig zur Verfügung gestellt, am Ende haben wir sie einfach mit Unix versehen und sie als X-Terms verwendet, anstatt für das Projekt, auf NT zu portieren. Ian Ringrose vor 8 Jahren 4
"Die ursprüngliche Idee war, eine gemeinsame Codebasis mit einer benutzerdefinierten Hardware Abstraction Layer (HAL) für jede Plattform zu haben." Es klingt so, als gäbe es heutzutage keine echte HAL, 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 von Revisionen für x86 (die größte ist offensichtlich x64) und Bugfixes für verschiedene Prozessoren, Mainboards und anderes. Voo vor 8 Jahren 4
NT 3.1 unterstützte PowerPC nicht (das wurde erst bei NT 3.51 hinzugefügt, wenn ich mich richtig erinnere). @EdAvis: Die erste Entwicklung fand auf einem i860-Emulator statt, aber soweit ich weiß, nicht mit i860-Hardware. Als sie auf Hardware laufen, hatten sie den i860 aufgegeben und waren zu einem MIPS R3000 gewechselt. Jerry Coffin vor 8 Jahren 2
Es gab auch einen Drittanbieterhafen nach Sparc. Später wurde die PowerPC-Unterstützung für die XBox360 wiederbelebt. Kurz zuvor wurde IA64-Unterstützung hinzugefügt. Danach wurde AMD64-Unterstützung hinzugefügt. Die neueste Ergänzung ist die ARM-Unterstützung. Die * ursprüngliche * Entwicklungsplattform war i860; Es war nie beabsichtigt, für diese Plattform ein Release zu veröffentlichen, es wurde nur deshalb gemacht, weil es "seltsam" war und sich maximal von x86, PowerPC, MIPS und Co unterschied, um die Portabilität zu gewährleisten. Jörg W Mittag vor 8 Jahren 4
Die Hardwareabstraktionsschicht wurde verworfen, weil - die Abstraktion Windows für Space Cadet zu langsam machte. Schade, denn seit dieser Änderung kann jeder Fahrer an der Maschine Verwüstung anrichten, die er bisher nicht verwendet hat. Jetzt verwenden wir eine virtuelle Maschine, um uns zu schützen. Besser? Keine Ahnung. Peter A. Schneider vor 8 Jahren 0
@jcbermu: Die erste Version ist 3.2, die 1991 veröffentlicht wurde. Sie können sie [hier entlang eines Emulators] (http://bingeflying.com/3.2/dec1991-hpfs-qemu.7z) herunterladen, um sie auf ᴡɪɴ32 auszuführen. Wenn Sie cmd ausführen, wird das Datum entlang der Version bestätigt. user2284570 vor 8 Jahren 0
46
Tonny

Soweit ich weiß gibt es 8 Basisarchitekturen (und eine Reihe von Untervarianten), von denen heute nur noch 2 mit Windows 10 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 verschiedene Celeron- und Atom-Designs) Enthält auch verschiedene kompatible AMD- und NEC-CPUs.

Windows CE

MIPS, x86, ARM (Danke @ pjc50).
(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, der mit Windows 2000 startete, und 32-Bit (IA32) wurde für 2008 und 64-Bit (IA64) mit Server 2012 eingestellt, wenn ich mich richtig erinnere. Derzeit sind nur x86 (beschränkt auf einige spezielle Netbook- / Tablet-Geräte) und x64 für Windows 10 noch gültig.

Windows Phone

ARM (vielleicht auch MIPS?)

Windows 10 für IoT

x64, ARM

Windows NT als Windows 10 für Telefone unterstützt ARM. Tamoghna Chowdhury vor 8 Jahren 2
Windows 10 IoT für Raspberry Pi https://developer.microsoft.com/en-us/windows/iot Richard Chambers vor 8 Jahren 0
"IA-32" bedeutet nur "32-Bit-x86". Dies ist die einzige von Windows NT unterstützte Version von x86, bis x64 / AMD64 auf den Markt kam. Wahrscheinlich ist x64 / AMD64 nur eine Variante von x86, obwohl Windows über umfangreiche Tools verfügt, die speziell auf die Unterschiede eingehen. "IA-64" dagegen ist die völlig neue 64-Bit-Architektur, die Itanium-Chips mit Strom versorgt; Es gab nie einen 32-Bit-Itanium. IMSoP vor 8 Jahren 16
Windows CE war _nicht_ eine NT-Variante oder Port von NT. Es hatte seinen eigenen sehr einzigartigen und unterschiedlichen Kernel, einschließlich einer ganz anderen Prozessarchitektur und Speicherzuordnung. Es wurde viel NT-Code vom Betriebssystem _portiert, z. B. der gesamte Netzwerkstack und vieles mehr, und auf Userland-Ebene wurde natürlich die Windows-API unterstützt. davidbak vor 8 Jahren 9
Man könnte auch argumentieren, dass 16-Bit (Real-Modus) und 32-Bit-x86 als unterschiedliche Architekturen gelten. Hong Ooi vor 8 Jahren 0
Windows Phone unterstützt wahrscheinlich auch x86, obwohl noch kein Telefon veröffentlicht wurde: 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-mit-intel-x86-chips.html phuclv vor 8 Jahren 0
Windows NT unterstützt auch ARM https://en.wikipedia.org/wiki/Windows_NT#Major_features phuclv vor 8 Jahren 1
Windows CE lief auch mit einigen Varianten der Hitachi Super-H-Prozessoren. Ein bekanntes Beispiel ist der Sega Dreamcast (SH4), aber ich denke auch, dass es einige PDAs gab, die auf dem SH3 basierten, auf dem Windows CE ausgeführt wurde. Michael vor 8 Jahren 7
@IMSoP x64 / amd64 ist in der Tat auch als x86_64 bekannt OrangeDog vor 8 Jahren 0
Windows Phone ist ein Marketingname. Bis zu WP7 war es Teil der CE-Linie, WP8 ist eine NT-Ableitung. Ebenso ist Windows 10 IOT ebenso ein maßgeschneiderter NT-Kernel wie die XBoxen-Generation 3. MSalters vor 8 Jahren 3
@Tonny: Du hast [axp64] (http://www.dependencywalker.com/) vergessen und dass Mips isa separate Architekturen sind * (Windows ɴᴛ ᴍɪᴘꜱ ɪꜱᴀ Ⅳ als separate Architektur) *. Es gibt auch ᴀʀᴍ64 mit Windows 10. user2284570 vor 8 Jahren 0
21
JamesRyan

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

15
A.L

Windows Surface-Tablets, die 2012 veröffentlicht wurden, verwendeten eine 32-Bit-ARM-Architektur . Diese spezifische Version wurde Windows RT genannt :

Es ist im Wesentlichen 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 weist Windows RT Einschränkungen bei der Softwarekompatibilität auf.

Windows RT wurde eingestellt.

Quelle: Wikipedia .

3
plugwash

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 Veröffentlichungskandidaten für Windows 2000 geschafft, aber nicht bis zur endgültigen Veröffentlichung). 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 auf ARM portiert, die daraus resultierenden Systeme auf verschiedene Weise künstlich verkrüppelt. 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.

3
Ghanima

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:

1
Tamoghna Chowdhury

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, die derzeit auf dem Lumia 950 / 950XL mit Qualcomm Snapdragon 810-Chipsatz) 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 bereits in einer anderen Antwort erwähnt, können Win32-Desktop-Apps unter Windows NT unter ARM (dh ohne x86 bei ARM-Emulation) nicht nativ ausgeführt werden, wenn sie für die x86-Architektur kompiliert werden (da dies meistens der Fall ist). Wie von @user 2284570 erwähnt, können in ARM native ausführbare Dateien oder dynamische Bibliotheken nur dann für ARM ausgeführt werden, wenn sie (die Binärdateien für die Verteilung) von Microsoft digital signiert wurden. Diese Ämter verhindern, dass Entwickler von ARM native Apps von Drittanbietern vertrieben werden (Anders als die Richtlinie mit x86 oder anderen zuvor unterstützten Architekturen zum Beispiel). Microsoft entschied sich dafür, x86-bezogene Win32-Apps (Desktop-Windows-Software) nicht per Emulation unter Windows für ARM auf binärer Ebene zu unterstützen, da der Performance-Nachteil für die Emulation sehr hoch wäre und dem ARM-Leistungsideal in einem engen Energiehaushalt (geringes TDP) entgegenstehe ).

Anmerkung: Die Windows-API, auf die ich mich hier beziehe, ist die native Win32- API, nicht die ( verwaltete ) .NET- Version. App-Kompatibilität bezieht sich hier auf Kompatibilität auf Binär-Ebene, nicht auf Quell-Level-Kompatibilität, wenn dies nicht offensichtlich ist.

Mit dem Aufkommen der Windows RT-Plattform und nun der Universal Windows Platform (UWP) ist jedoch das Erstellen von architekturunabhängiger Software für Windows möglich geworden (zuvor musste die Software entweder emuliert oder neu kompiliert werden, um unter Windows auf verschiedenen Architekturen ausgeführt zu werden.) .

MS lehnte es ab, Desktop-Apps von Drittanbietern zuzulassen, selbst wenn sie dafür erneut kompiliert wurden. Dies war eine rein künstliche Einschränkung (wie durch die Tatsache belegt, dass jemand einen Weg gefunden hat, sie zu umgehen). plugwash vor 8 Jahren 0
@plugwash Ich habe tatsächlich die Künstlichkeit der Einschränkungen für die Ausführung von für ARM kompilierten Desktop-Apps im zweiten Absatz erwähnt. Bitte lies es. Tamoghna Chowdhury vor 8 Jahren 0
-1
cagey

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