Поддерживала ли когда-нибудь Windows какую-либо аппаратную архитектуру, кроме x86?

11247
xiaokaoy

Microsoft Windows Internals, 4-е издание говорит:

Архитектура процессора Intel x86 определяет четыре уровня привилегий, или кольца, для защиты системного кода и данных от случайной или злонамеренной перезаписи кодом меньшей привилегии. Windows использует уровень привилегий 0 (или кольцо 0) для режима ядра и уровень привилегий 3 (или кольцо 3) для режима пользователя. Причина, по которой Windows использует только два уровня, заключается в том, что некоторые аппаратные архитектуры, которые поддерживались в прошлом (например, Compaq Alpha и Silicon Graphics MIPS), реализовали только два уровня привилегий .

Означает ли это, что Windows когда-то поддерживала альфа и MIPS?

66
В это может быть трудно поверить, но Microsoft была одной из самых «открытых архитектурных» компаний в мире. Оригинальная MS-DOS была совместима с десятками различных платформ и * других ОС *, и Windows была разработана в том же духе. Excel был построен на виртуальной машине, работающей на разных платформах. Это было не случайно - именно так IBM PC (и клоны) стали настолько распространенным и быстрым стандартом де-факто, и именно как именно Microsoft поставила базовое программное обеспечение. Что вы выбираете - систему, которая может запускать все ваши приложения, или систему, в которой ваш поставщик заблокирован? :) Luaan 8 лет назад 49
Я сам установил Windows на Alpha и MIPS, но это было очень давно. Когда я был стажером Microsoft, одной из моих задач было запускать наборы тестов Visual Basic на оборудовании, которого разработчики не имели на своих рабочих столах. Eric Lippert 8 лет назад 13
@Luaan - не только «открытая архитектура», но и «открытая ОС»! Как еще можно объяснить, что когда-то их официально лицензированный вариант Unix был _ наиболее распространенным установленным Unix_ в мире - см. [Xenix в Википедии] (https://en.wikipedia.org/wiki/Xenix). davidbak 8 лет назад 7
Даже сегодня существуют версии Windows, которые работают на архитектурах, отличных от x86 / x64, а именно Windows RT для устройств ARM. TigerhawkT3 8 лет назад 4
@xiaokaoy это старая версия, пожалуйста, прочитайте шестое издание AminM 8 лет назад 0
@Luaan Это была также реальная проблема, которую нужно было решить, потому что особенно ранние клоны IBM PC не всегда были полностью совместимы с IBM PC. Когда-то «100% совместимость с IBM» была * точкой продажи * для поставщиков оборудования. Мы принимаем такие вещи как должное сегодня, но в первой половине 1980-х годов или около того, они вообще не были гарантированы. Microsoft на самом деле не выходила на розничный рынок операционных систем до [MS-DOS 5.0] (https://en.wikipedia.org/wiki/MS-DOS#Versions), которая появилась на рынке в 1991 году. Да, через год новаторская история успеха Windows 3.0. a CVn 8 лет назад 2
@DevSolar Могу ли я смиренно указать на IBM PS / 2, который * резко * сильно отстал из-за привязки к поставщику (MCA является основным убийцей, а OS / 2 так и не взлетела особо)? a CVn 8 лет назад 1
@Luaan: я не согласен, * массово *, но не понимаю, как донести эту мысль, не нарушая ToS и / или не приглашая вас на пиво. ;-) Так что я бы лучше удалил комментарий, чтобы не приглашать других прыгать в погоню. DevSolar 8 лет назад 0

8 ответов на вопрос

82
jcbermu

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.

На IIRC странице [Википедия] (https://en.wikipedia.org/wiki/Windows_NT#32-bit_platforms) есть хороший пример того, какие архитектуры, кто это сделал и почему они не появились на рынке. Journeyman Geek 8 лет назад 7
Я считаю, что оригинальной платформой разработки был i860. Это был осознанный выбор, чтобы не допустить попадания «386 измов» в дизайн. На какое-то время Microsoft также выпустила приложения для разных архитектур; У меня есть компакт-диск Word для Windows 6, созданный для Windows NT на i386, Alpha, MIPS и PowerPC. Ed Avis 8 лет назад 13
Я вспоминаю, как пытался купить программное обеспечение у Microsoft при работе на наших системах Alpha NT, продавцы Microsoft в Великобритании не знали, что такое процессор Alpha. DEC предоставил нам машины очень дешево в качестве интернет-провайдера, в итоге мы просто установили на них Unix и использовали их как X-условия, а не как проект для переноса на NT. Ian Ringrose 8 лет назад 4
«Первоначальная идея заключалась в том, чтобы иметь общую кодовую базу с настраиваемым уровнем аппаратной абстракции (HAL) для каждой платформы», - звучит так, будто в эти дни не существует фактического HAL, что было бы неправильно. В наши дни для одной Windows NT также поддерживается ARM, и даже если вы поддерживаете только x86, существует широкий спектр ревизий для x86 (самой большой из которых, очевидно, является x64) и исправлений для различных процессоров, материнских плат и всего остального. Voo 8 лет назад 4
NT 3.1 не поддерживала PowerPC (это не было добавлено до NT 3.51, если я правильно помню). @EdAvis: Первоначальная разработка была на эмуляторе i860, но, насколько я знаю, не на аппаратном обеспечении i860 - к тому моменту, когда они запускали его на аппаратном обеспечении, они отказались от i860 и перешли на MIPS R3000. Jerry Coffin 8 лет назад 2
Был также сторонний порт в Sparc. Позднее была восстановлена ​​поддержка PowerPC для XBox360. Незадолго до этого была добавлена ​​поддержка IA64. После этого была добавлена ​​поддержка AMD64. Последнее дополнение - поддержка ARM. * Первоначальная * платформа разработки была i860; он никогда не предназначался для этой платформы, он был сделан исключительно потому, что он был «странным» и максимально отличался от x86, PowerPC, MIPS и Co, чтобы обеспечить мобильность. Jörg W Mittag 8 лет назад 4
А уровень аппаратной абстракции был уволен, потому что - абстракция делала Windows слишком медленной для Space Cadet. Обидно, потому что после этого изменения любой водитель может нанести ущерб машине, к которой они не привыкли. Теперь мы используем виртуальную машину, чтобы защитить себя. Лучше? Не знаю. Peter A. Schneider 8 лет назад 0
@jcbermu: Первая версия 3.2 3.2 выпущена в 1991 году. Вы можете скачать ее [здесь вместе с эмулятором] (http://bingeflying.com/3.2/dec1991-hpfs-qemu.7z), чтобы запустить ее на ᴡɪɴ32. Если вы запустите cmd, дата по версии будет подтверждена. user2284570 8 лет назад 0
46
Tonny

Насколько я знаю, существует 8 базовых архитектур (и несколько подвариантов), из которых только 2 до сих пор поддерживаются в Windows 10.

Windows 1.0 до 3.11, Windows 95, 98 и Millenium Edition

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.

Windows CE

MIPS, x86, ARM (спасибо @ pjc50).
(Не уверен, что CE когда-либо работал на Alpha, PowerPC.)

Windows NT

x86, x64 (или amd64, используются оба имени), MIPS, Alpha, IA32, IA64, PowerPC.
Поддержка MIPS, Alpha и PowerPC была прекращена в Windows 2000. Itanium был сервером, начиная только с Windows 2000, и 32-разрядный (IA32) был отброшен в 2008 г. и 64-разрядный (IA64) с Server 2012, если я правильно помню. Только x86 (ограниченный некоторыми специализированными нетбуками / планшетами) и x64 в настоящее время все еще действительны для Windows 10.

телефон с операционной системой Виндоус

ARM, (может быть, также MIPS?)

Windows 10 для IoT

х64, ARM

Windows NT как Windows 10 для телефонов поддерживает ARM. Tamoghna Chowdhury 8 лет назад 2
Windows 10 IoT для Raspberry Pi https://developer.microsoft.com/en-us/windows/iot Richard Chambers 8 лет назад 0
«IA-32» означает «32-разрядная версия x86», которая является единственной версией x86, поддерживаемой Windows NT до появления x64 / AMD64. Возможно, x64 / AMD64 - это всего лишь вариант x86, хотя Windows обладает обширными инструментами, специально предназначенными для обработки его различий. "IA-64", с другой стороны, является совершенно новой 64-битной архитектурой, которая питает чипы Itanium; никогда не было такой вещи, как 32-битный Itanium. IMSoP 8 лет назад 16
Windows CE была _не_ вариантом NT или портом NT. У него было свое уникальное и отличное ядро, включая совершенно другую архитектуру процесса и карту памяти. Много NT-кода было перенесено на него из ОС, например, весь сетевой стек и многое другое, и, конечно, на уровне пользователей он поддерживал Windows API. davidbak 8 лет назад 9
Можно также утверждать, что 16-битный (реальный режим) и 32-битный x86 считаются разными архитектурами. Hong Ooi 8 лет назад 0
Windows Phone, вероятно, также поддерживает x86, хотя еще не было выпущено ни одного телефона 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 8 лет назад 0
Windows NT также поддерживает ARM https://en.wikipedia.org/wiki/Windows_NT#Major_features phuclv 8 лет назад 1
В Windows CE также использовались некоторые варианты процессоров Hitachi Super-H. Известным примером является Sega Dreamcast (SH4), но я также думаю, что были некоторые КПК на базе SH3, работающие под управлением Windows CE. Michael 8 лет назад 7
@IMSoP действительно x64 / amd64 также известен как x86_64 OrangeDog 8 лет назад 0
Windows Phone - это маркетинговое название. До WP7 он был частью линии CE, WP8 - производная NT. Точно так же Windows 10 IOT также является специализированным ядром NT, как и XBoxen 3-го поколения. MSalters 8 лет назад 3
@Tonny: вы забыли [axp64] (http://www.dependencywalker.com/) и что mips isa - это отдельные архитектуры * (windows ɴᴛ ᴍɪᴘꜱ ɪꜱᴀ Ⅳ как отдельная архитектура) *. Там же №64 с windows 10. user2284570 8 лет назад 0
21
JamesRyan

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

15
A.L

Планшеты Windows Surface, выпущенные в 2012 году, использовали 32-разрядную архитектуру ARM, эта конкретная версия называлась Windows RT :

По сути, это версия Windows 8.x, созданная для 32-битной архитектуры ARM (ARMv7).

[...]

Из-за разной архитектуры устройств на базе ARM по сравнению с устройствами x86, Windows RT имеет ограничения совместимости программного обеспечения.

Windows RT была прекращена.

Источник: Википедия .

3
plugwash

Линия Windows NT поддерживает различные архитектуры на протяжении многих лет.

MIPS и Alpha поддерживались с версии 3.1 до 4.0 (Alpha фактически сделала это кандидатом на выпуск Windows 2000, но не добралась до финальной версии). PowerPC был замечен только в 4.0.

IA64 (Itanium) поддерживался в Windows XP. Это также поддерживалось в линейке серверов от Server 2003 до Server 2008 R2.

Microsoft портировала Windows на ARM, но затем различными способами искусственно повредила получившиеся системы. С Windows RT (ARM-версия Windows 8) система была в значительной степени завершена, но сторонние настольные приложения были заблокированы. С различными вариантами ARM Windows 10 рабочий стол, кажется, полностью исчез.

3
Ghanima

Windows 10 IoT Core работает на 32-битных архитектурах ARM (IA-32, ARMv7), таких как Raspberry Pi 3. Однако он имеет определенные ограничения.

Источники:

1
Tamoghna Chowdhury

Windows NT (как ядро ​​в Windows RT, WP8, WP8.1 и Windows 10 для телефонов) поддерживает ARM v7-A (32-разрядный) и ARM v8-A (64-разрядный) (Windows 10 для телефонов, в настоящее время на Архитектуры Lumia 950 / 950XL с чипсетом Qualcomm Snapdragon 810) в настоящее время дополняют x86 (включая x86-64 (Windows AMD64), i386 / i586 / i686 (Windows x86)). Это в дополнение к исторически поддерживаемым архитектурам, упомянутым в других ответах, таких как Alpha, MIPS, Itanium и PowerPC.

Как отмечалось в другом ответе, приложения Win32 для настольных компьютеров не могут работать в Windows NT на ARM (т.е. без x86 на эмуляции ARM), если они скомпилированы для архитектуры x86 (как это обычно бывает). Однако, как упоминалось в @user 2284570, собственные исполняемые файлы ARM или динамические библиотеки могут работать в Windows NT для ARM, только если они (двоичные файлы дистрибутива) имеют цифровую подпись Microsoft, что препятствует распространению сторонними разработчиками собственных приложений ARM. (в отличие от политики с x86 или другими ранее поддерживаемыми архитектурами, например). Microsoft предпочла не поддерживать приложения Win32 для x86 (программное обеспечение Windows для настольных ПК) на двоичном уровне посредством эмуляции в Windows для ARM, поскольку снижение производительности для эмуляции было бы огромным и полностью соответствовало бы идеалу ARM производительности при ограниченном энергопотреблении (низкий TDP) ).

Примечание: Windows API, на который я ссылаюсь здесь, является родным API Win32, а не .NET WINAPI ( управляемой ) версией. Под совместимостью приложений здесь подразумевается совместимость на двоичном уровне, а не на уровне исходного кода, если это не было очевидно.

Однако с появлением платформы Windows RT, а теперь и универсальной платформы Windows (UWP) стало возможным создание независимого от архитектуры программного обеспечения для Windows (ранее программное обеспечение должно было либо эмулироваться, либо перекомпилироваться для запуска в Windows на разных архитектурах). ,

MS отказалась разрешить сторонние настольные приложения на руку, даже если они были перекомпилированы для этого. Это было чисто искусственное ограничение (о чем свидетельствует тот факт, что кто-то нашел способ его обойти) plugwash 8 лет назад 0
@plugwash Во втором параграфе я фактически упомянул искусственность ограничений на запуск настольных приложений, скомпилированных для ARM. Пожалуйста, прочитайте это. Tamoghna Chowdhury 8 лет назад 0
-1
cagey

Windows NT раньше работала на чипах MIPS и Alpha. Я запустил NT4 на Альфе. Вам пришлось прошить другую прошивку для загрузки NT вместо VMS.