2012-03-29 2 views
6

Каковы последствия, если мы используем 32 бинарных файла на 64-битной машине. Будет ли это иметь какое-либо влияние, если машина имеет более 4 ГБ ОЗУ (оперативная память в системе 8GB)?работает с 32-битным двоичным кодом на 64-битной машине

+5

Достаточно ли ответа «Нет»? – Mehrdad

+0

Если по удару вы имеете в виду положительное воздействие, то в некотором роде: больше ОЗУ означает больше дискового кэша ... – dbrank0

ответ

5

При запуске 32-битных двоичных файлов на 64-битных машин (если предположить, что ОС работает в 64-разрядном режиме), у вас есть следующие ограничения:

  1. Двоичный не может воспользоваться 64bit арифметических команд. Это может снизить производительность.
  2. Бинарный файл не может адресовать более 4 ГБ виртуальной памяти.

Однако эти 4 ГБ могут быть расположены в любом месте вашего 8 ГБ оперативной памяти. Поэтому, если вы используете много 32-битных приложений, каждый из которых использует менее 4 ГБ, вы пользуетесь всеми своими 8 ГБ оперативной памяти.

Обратите внимание, что из-за различных ограничений ваше приложение может фактически иметь возможность выделять 2 ГБ виртуальной памяти.

+0

Пункт №. 1 (двоичный код не может использовать 64-разрядные арифметические команды) является ложным как минимум для двух платформ. (sparcv9-linux/solaris и [x32 - * - linux] (http://en.wikipedia.org/wiki/X32_ABI)) –

+0

В x64 32-разрядные двоичные файлы не могут получить доступ к верхним 32 битам [Общим назначениям регистров] (http://en.wikipedia.org/wiki/X64#Operating_modes). Поэтому при добавлении двух 64-битных номеров 32-битный двоичный код должен был бы выпустить две команды вместо одной. @ jørgensen – user1202136

+0

x86-64 добавляет еще много вещей: больше регистров, относительная адресация PIC, более чистый ABI, использующий регистры для вызовов функций, что приводит, как правило, к улучшениям производительности, которые компенсируют значительно сниженное снижение производительности, подразумеваемое при использовании большего (больше не кэша) типы. На других платформах (sparc64 vs sparc? Mips64 vs mips?), Идущий от 32-битного до 64-битного, может фактически снизить производительность. – ninjalj

Смежные вопросы