В чем разница между 32-битной и 64-битной ОС? Может ли 32-битная ОС работать на 64-битном процессоре?
4 ответа
Ваш вопрос зависит от архитектуры. x64 по сути является расширением архитектуры x86. Он поддерживает 64-битное адресное пространство. Он предоставляет некоторые новые инструкции и новые регистры.
Вы можете запустить 32-разрядную Windows x86 на компьютере x64. Обратите внимание, что вы не можете сделать это на 64-битных системах Itanium.
64-битный процессор может работать как на 32, так и на 64 ОС (по крайней мере, на x64). 32-битный процессор может работать только 32-х.
Разница в основном в размере указателя / ссылки. На 64-битных машинах вы можете ссылаться на адрес в 64-битном диапазоне адресов (что дает вам 2 ^ 64 байта памяти). На 32-битной вы можете адресовать только 2 ^ 32 байта (= 4 ГБ). Теперь, если вы посмотрите на современные компьютеры, становится очевидным, почему мир движется к 64-битным: 32-битные больше не могут легко обращаться ко всей оперативной памяти.
На x64 (AMD/Intel) у вас есть дополнительные преимущества 64 бит. Процессор имеет больше регистров и, следовательно, позволяет более эффективный код.
На других архитектурах различия между 64 и 32 битами менее очевидны. Например, Nintendo 64 (помните это?) была 64-битной машиной, но большая часть кода была 32-битной. Таким образом, в этом случае 64-битная игра стала маркетинговым ходом.
В настоящее время принятый ответ, как правило, правильный, но не совсем так. На самом деле не существует ни одной вещи, называемой «32-разрядным процессором» или «64-разрядным процессором» - это описание относится только к одной небольшой части архитектуры процессора. В частности, оно ссылается на число линий выбора адреса между процессором и памятью, то есть так называемое адресное пространство, доступное для операций памяти.
В былые времена, когда ЦП, когда люди привыкли сидеть и плести (обматывать) провода между процессором и памятью, вам пришлось бы использовать либо 32, либо (теоретически, потому что его не было в то время) 64 провода между процессором и контроллером памяти, которые будут использоваться для указания того, к какому адресу памяти вы хотите обратиться. Например, скажем, у нас есть 2-битная архитектура памяти: отправка 00 выберет адрес 0, 01 выберет адрес 1, 10 выберет адрес 2, а 11 выберет адрес 3. Этот 2-битный дает нам 2 ^ 2 байта оперативной памяти (4 байта).
Если вы берете 32-битный процессор и добавляете еще 32 провода между процессором и контроллером памяти, чтобы волшебным образом поддерживать больше памяти, у вас теперь есть «64-битный процессор», который может работать 32-битный код или 64-битный код. Что это значит и как это происходит? Хорошо, давайте возьмем наш 2-битный ЦП из предыдущей части этого ответа и добавим еще один провод, превратив его в 3-битный ЦП, перенеся нас с 4 байтов на 2 ^ 3 или 8 байтов оперативной памяти.
Будет запущен существующий «2-байтовый» код с настройками значений двух последних проводов, как указано выше (00-11). По умолчанию мы подключим дополнительное соединение к нулю, так что фактически, когда запускается 2-байтовый код, когда он выбирает 00, он фактически выбирает 000, а когда он выбирает 11, он фактически выбирает 011. Легко.
Теперь программист хочет написать "родной" 3-байтовый код и пишет свое программное обеспечение, чтобы воспользоваться дополнительным адресным пространством. Она сообщает процессору, что знает, что делает, и что она возьмет на себя ручное управление новыми, дополнительными проводами. Ее программное обеспечение знает о дополнительных проводах и правильно отправляет 000-111, предоставляя ей полный доступ к диапазону памяти, поддерживаемому этой новой архитектурой процессора.
Но так не должно быть. На самом деле, обычно это не так. Когда впервые были представлены 64-разрядные процессоры (а их было много), все они использовали совершенно новые архитектуры / конструкции. Они не просто подключили дополнительные 32 провода и сказали: «Вот, пожалуйста, это 64-битный процессор, который вы можете использовать в 32-битном или 64-битном режиме», а скорее сказали: «Это наш новый процессор и он берет программирование только на этом совершенно новом машинном языке, ведет себя совершенно по-новому, решает множество других проблем гораздо более элегантно, чем старые 32-битные процессоры x86 / i386, и это родная 64-битная архитектура. Повеселись."
Это была история Intel Itanium, теперь известной как "Итаник" из-за того, как сильно она затонула. Он должен был предвещать в новой 64-битной эре, и это было что-то, чтобы созерцать. Инструкции с переменной длиной, огромные кеши, 64-битное адресное пространство, тонны регистров, супер захватывающие, супер крутые и супер трудные, чтобы убедить всех перекомпилировать или переписать 20-летний устаревший код. Это было тогда, когда AMD и Intel фактически конкурировали, и у AMD была блестящая идея сказать: «Давайте забудем все это, решим все мировые проблемы» и просто добавим еще 32 провода к i386 и сделаем 32-битную совместимую 64-разрядную. bit CPU "и родилась архитектура процессора x86_64.
Фактически, если вы посмотрите на имена и источники ядра для основных операционных систем (Linux, Windows, BSD и т.д.), Вы обнаружите, что они завалены ссылками на процессоры AMD64 и архитектуру AMD64. AMD разработала выигрышную стратегию, позволяющую всем перейти на 64-битный мир, сохранив совместимость с 32-битными приложениями, чтобы 32-битная ОС могла работать на 64-битном оборудовании или даже 32-битных приложениях. может работать на 64-битной ОС на 64-битном оборудовании. Intel последовала за пакетом раньше, чем позже, с архитектурой Intel EM64T (которая была в основном идентична AMD64), и x86_64 победил, в то время как Itanic и другие, такие как MIPS64 и ALPHA64, больше не были замечены на рынке настольных ПК / серверов.
tl; dr amd64 aka x86_64 Процессоры совместимы как с 32-, так и с 64-битным ядром и кодом, но большинство 64-битных процессоров явно не имеют обратной совместимости одинаково. 32-разрядный ЦП может получить доступ максимум к 4 ГБ памяти, а 64-разрядный ЦП может получить доступ к потрясающим 16 EiB (16 × 1024 ^ 6 байт, или в 4 миллиарда раз больше памяти, чем 4 ГБ).
Как 32-разрядная, так и 64-разрядная ОС могут работать на 64-разрядном процессоре, но 64-разрядная ОС может использовать полную мощность 64-разрядного процессора (большие регистры, больше инструкций) - короче говоря, она может выполнять больше работы за одно и то же время. 32-разрядный процессор поддерживает только 32-разрядную ОС Windows.