Какая связь между 32/64-битным приложением, ОС и процессором? - PullRequest
0 голосов
/ 21 марта 2012

Я гуглил эти темы, но не уверен, правильно ли я понял их отношения.Я подытожил следующие моменты, пожалуйста, исправьте / дополните.

  • 32-битный или 64-битный процессор означает, что процессор может обрабатывать 32/64 битов одновременно.Использование 32-разрядного или 64-разрядного процессора означает, что базовые регистры, адресные шины или шины данных также имеют одинаковый размер.

  • Для работы на 32/64-разрядном процессореу нас 32/64-битная ОС

  • Для работы в 32/64-битной ОС мы разрабатываем 32/64-битное приложение

  • Можно запустить 32-разрядное приложение в 64-разрядной ОС, а также 64-разрядное приложение в 32-разрядной ОС ( LinuxPAE64 )

  • Невозможно запустить 64-битное приложение / ОС на 32-битном процессоре


Кроме того, у меня есть два вопроса, касающихся памяти.

  1. Компоновка карты памяти процессора кажется независимой от размера команд процессора.Например, большинство систем Intel Core 2 (64-разрядных) имеют карту памяти, довольно близкую к изображению, показанному ниже. Почему 64-битный процессор не выбирает более широкий диапазон карт памяти?

    enter image description here

  2. Что ли ограничить 64-битную ОС объемом оперативной памяти до (2 ^ 64 - адреса устройства / шины)?

1 Ответ

3 голосов
/ 21 марта 2012

Существует много разных типов процессоров (ARM, MIPS, x86,…).

Я могу просто поговорить о x86 (32-битных) / x86-64 (64-битных).

Количество бит относится в основном к размеру регистра.Для x86 виртуальное адресное пространство ограничено 32-битным (4 ГБ) .Это означает, что 32-разрядное приложение (приложение, которое предполагает, что оно работает на 32-разрядном ЦП) может видеть только 4 ГБ сразу.

Для x86-64 все виртуальные адреса имеют 64-разрядный размер.Но процессоры могут не поддерживать все 64-битные, так как все неподдерживаемые биты должны иметь одинаковое значение с наиболее значимым поддерживаемым битом.ОС должна запросить количество поддерживаемых битов.(мой Core i5 поддерживает здесь 48 бит)

Физическое адресное пространство, то есть объем памяти, который фактически может обрабатываться ЦП, для x86, в первую очередь, 32-битный.Но начиная с Pentium 1, процессоры поддерживают расширение Pyisical Address Extension (PAE) , позволяющее до 36-битной (64 ГБ) оперативной памяти.(ОС должна включить расширение)

На данный момент x86-64 ограничивает физическое адресное пространство 52-битным (4PiB) .Где и здесь процессоры бесплатно поддерживать меньше битов.(мой Core i5 поддерживает здесь 36-битную версию)

Поскольку и x86, и x86-64 используют одинаковые коды операций со слегка отличающимися значениями, 32-битное приложение не может просто работать на 64-битном процессоре (в 64-bit mode / long mode).

Но у x86-64 есть так называемый режим совместимости (подрежим long-mode), который позволяет выполнять 32-битные приложения.(ОС должна переключать режим.)

Карта памяти не выбрана процессором.За это отвечает основной процессор и BIOS, и он может быть частично настроен операционной системой.Причиной, по которой производители материнских плат и BIOS хранят все содержимое в нижнем 4 ГБ адресного пространства, является совместимость с 32-разрядными ОС.(Из соображений совместимости со старыми 16-битными DOS-приложениями даже процессоры x86-64 по умолчанию отключают доступ ко всем 2-м МБ физического адресного пространства)

Как упоминалось выше, x86-64 ограничивает физическое адресное пространство52-битный по спецификации.Дальше адресное пространство ограничено реализацией процессора и еще дальше - реализацией mainbord.(Все это сделано для снижения затрат на внедрение).Таким образом, нет никакого способа обратиться к 2⁶⁴ ОЗУ.

...