Вопрос

Я не уверен, что правильно понял:64-битная ОС запускает/компилирует код быстрее, чем 32-битная ОС в той же системе?

Там, где я нахожусь, мы используем 64-разрядные ОС, и, похоже, это вызывает проблемы совместимости только с устаревшим и проприетарным программным обеспечением.(Мы используем Ubuntu 9.04 Jaunty amd64)

Это было полезно?

Решение

Я ограничу этот ответ вопросами x86-32 (IA-32) и x86-64 (AMD64), так как считаю, что это именно тот вопрос, который вы на самом деле задаете.

На уровне процессора есть несколько преимуществ.Первым и наиболее очевидным является расширение виртуальной памяти каждого процесса до гораздо более широкого диапазона — 48 бит.(64 разрешено в архитектуре, но не обязательно, если позволяет память.) Это позволяет приложениям использовать гораздо больше доступной им системной памяти, а также открывает много места для таких вещей, как файлы, отображаемые в памяти, которые работают с виртуальная память, не связанная с реальной памятью.Это также открывает много места для работы рассматриваемой ОС, поскольку ей не нужно использовать ваш лимит в 4 ГБ для своих данных.Короче говоря, приложения и ОС могут более эффективно использовать ресурсы вашего компьютера.

Кроме того, архитектура AMD64 решает одну из самых больших проблем IA-32 — полное отсутствие регистров.Фактически это удваивает количество доступных регистров, что является огромным преимуществом для некоторых типов кода.(На самом деле это выигрыш практически для ЛЮБОГО кода, но некоторые приложения страдают от увеличения стоимости памяти на 64 бита, и это выравнивается.)

Что касается Windows, MS восприняла это как возможность решить целый ряд исторических проблем совместимости.Это не полный разрыв со старым миром, но это начало.Я не верю, что Linux изначально страдает от тех же проблем, и у меня нет особых перспектив, чтобы предложить их 64-битные преимущества.

Другие советы

Как правило, разработка или использование 64-битной операционной системы в любом контексте будет помедленнее чем та же 32-битная операционная система.Поскольку все указатели внезапно становятся в два раза больше, у вас гораздо больше шансов уничтожить кеш и вы сможете разместить меньше данных в оперативной памяти.Это значительно замедляет работу вашего приложения.Обычно вы используете 64-битные системы только тогда, когда вашим приложениям необходимо одновременно обрабатывать более 2–3 ГБ данных — что-то очень распространенное в научных вычислениях и некоторых ситуациях с базами данных, но в остальном крайне редкое.Вот почему Apple не выступает за безоговорочную компиляцию приложений PowerPC в 64-битном режиме, например:затраты из-за промахов в кэше и нехватки памяти настолько высоки, что переход на 64-битную версию имеет смысл только тогда, когда вы действительно можете воспользоваться преимуществами 64-битного пространства.

Но х86 v.AMD64, о котором вы на самом деле спрашиваете (раз уж вы обсуждаете Ubuntu), — совершенно особенный зверь.AMD64 не только расширяет все указатели до 64-битных;он исправляет множество недостатков в архитектуре x86, удваивает количество GPR, упрощает инструкции, делая их более дружелюбными к современным конструкциям ЦП, и многое другое.Из-за этого, только на платформах AMD64, вы часто будете наблюдать существенный прирост производительности при переходе на 64-разрядную версию.

Есть еще одна область, в которой при разработке программного обеспечения имеет смысл перейти на 64-битную версию:вам нужно запустить много виртуальных машин.Запуск пары виртуальных машин может легко преодолеть барьер памяти операционной системы в 3 ГБ, что сделает их использование очень болезненным.(Это будет работать благодаря технологии под названием PAE, или Paged Addressing Extensions, которую Intel изобрела, чтобы преодолеть разрыв между 32-битными и 64-битными системами, но результат будет медленным, с ним будет больно работать разработчику, а не очень хорошо поддерживается в Windows.) Переход на 64-битную ОС может дать огромные преимущества.

(Как отмечают комментаторы, этот ответ несколько общий, некоторые из этих пунктов не применимы к чипам Intel/AMD.)

Ответ:оно варьируется по нескольким причинам:

  • Используя инструкции большей ширины, вы получите большую выразительность (либо большее разнообразие инструкций, либо большую способность напрямую кодировать данные в эти инструкции), что может означать уменьшение количества инструкций, проходящих через машину, что обычно победа:так что здесь ++64бит.

  • Но иногда более крупные инструкции мощь потребуется больше циклов для декодирования и выполнения, поскольку они могут быть более сложными.Итак, здесь возможен --64-битный вариант.

  • Кроме того, вам необходимо передать эти инструкции в процессор и обратно:64-битные инструкции в два раза больше 32-битных, что означает больший объем трафика в память и кэши и обратно.Процессоры устроены таким образом, чтобы во многом снизить эти затраты, но здесь они немного --64-битные.

  • В более широких наборах команд обычно доступно больше регистров, что приводит к меньшему трафику данных в стек и/или память и обратно.Итак, здесь ++64бит.

  • И, как каждый, несомненно, отметит, у вас есть возможность адресовать больше памяти.

  • (Почти забыл об этом) собственный размер «long» или «int» может увеличиваться, в зависимости от архитектуры, а это означает, что структуры данных, основанные на них, становятся больше.Больше = больше памяти для перемещения, что означает более возможное ожидание перемещения данных:--64bit, если вы не будете осторожны.

В зависимости от вашей архитектуры может возникнуть и множество других проблем.Вы можете быть уверены, что производители процессоров и компиляторов прикладывают все усилия, чтобы уменьшить количество «--» выше и увеличить число «++».

У меня есть база данных размером 5 ГБ, которую необходимо преобразовать.В 64-битной системе я просто помещаю все данные в коллекции.В 32-битной системе мне приходилось думать о порядке загрузки и преобразования.Проблема не во времени выполнения, а во время разработки.Переход на 64-битную версию экономит недели времени на разработку.

Проблемы совместимости:это не ошибка, это особенность.Он показывает, кто написал чистое программное обеспечение.

Использование 64-битных операционных систем также дает некоторые преимущества в плане безопасности.Были некоторые эксплойты переполнения буфера, которые обходили рандомизацию структуры адресного пространства с помощью грубой силы.В 64-битной ОС адресов слишком много, чтобы такая атака была успешной.

Это ускорит компиляцию, если ваш процесс компиляции привязан к памяти и вы используете 64-битную ОС для увеличения объема памяти, используемой вашей системой.

Я ожидаю, что он будет немного медленнее, у меня был такой опыт с FC10.У меня нет реальных причин, но это определенно не проблема размера (указателя).(*)

Я предполагаю, что дело просто в менее оптимизированных драйверах или модифицированных чипсетах.

Кроме того, NTFS-3g была забавной под 64-битной версией, хотя работала и под 32-битной (тот же дистрибутив, то же ядро, тот же раздел, в некоторых случаях он просто «зависал»)

(*) большая часть компиляции привязана к диску, а не к процессору.Более того, в архитектуре x86_64 есть и другие улучшения, которые сводят на нет этот факт (улучшенный PIC, больше регистров, включен SSE2 по умолчанию, включен 686 cmov по умолчанию).Если только ваше приложение не делает ничего, кроме случайного перемещения небольших блоков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top