В чем разница между i686 и x86_64?

Ответы:

70

i686 - это 32-разрядная версия, а x86_64 - 64-разрядная версия ОС.

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

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

Так что это действительно зависит от того, для чего вы хотите его использовать. Если вы планируете разрабатывать программное обеспечение для больших серверов или использовать большие серверы, используйте 64-разрядную версию. В противном случае используйте 32.

MarkR
источник
1
Если 4 ГБ ОЗУ или меньше, вы не должны устанавливать 64-битные ОС. Если у вас более 4 ГБ ОЗУ, вы должны установить 64-битную ОС. В противном случае вы не сможете получить доступ ко всей оперативной памяти.
d -_- b
3
@ Я не согласен, 1) 32-разрядные ОС могут использовать более 4 ГБ оперативной памяти с PAE и т. д., которые сейчас являются стандартными, и 2) Не все адресное пространство процесса может быть сопоставлено с (отдельной) физической ОЗУ, поэтому может быть полезно иметь 64-битную ОС, даже если у вас (немного) менее 4 ГБ ОЗУ.
MarkR
3
@toor Конечно, если вы хотите запустить один процесс с 2-3 Гб приватных анонимных страниц, это будет сложно на 32-битной ОС. Истощение адресного пространства является серьезной проблемой в такой системе, а не исчерпание (виртуальной) памяти. Однако переключение на 64-битное ядро ​​и пользовательское пространство может привести к тому, что задача будет потреблять гораздо больше оперативной памяти, возможно, превысит вашу цель. Может быть, в некоторых ситуациях 64-битное ядро, 32-битное пользовательское пространство хорошо.
MarkR
1
если у вас 64-битный процессор, запустите 64-битную ОС! Дух, кажется разумным
Сэм Уоткинс
2
Странно, что вы все не упомянули, что 64-битные двоичные файлы обычно компилируются с поддержкой 64-битной сборки! В некоторых случаях возможность использовать 64-битные операции может ЗНАЧИТЕЛЬНО увеличить скорость приложения. Известный, который приходит на ум, это Crypto (OpenSSL и т. Д.). Если ваш процессор поддерживает 64-битные, то обычно лучше использовать 64-битные приложения!
jduncanator
122

Краткий ответ:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
штифтик
источник
18
Этот ответ наиболее полезен для меня, особенно когда я уже знаю, 32-битный против 64-битного. Часть, которая меня сбила, была "i686". Как правило, я ожидал бы просто x86
Антоний
4
И почему x86_64 содержит "86" часть?
mmdemirbas
3
Хороший вопрос о том, почему «86». Пришлось искать это сам. serverfault.com/questions/188177/…
thrag
8
Чтобы обобщить «386», «486», «586», «686» - псевдонимы для архитектуры - возвращаясь к чипам, таким как «80386», «80486» и т. Д.
Брэд,
3
@Brad понял это правильно :) 64-битный (или в данном случае бит _64 в x86_64) просто относится к расширению набора команд x86. Это все та же сборка (-ish), однако она добавляет новые инструкции для работы с 64-битными целыми числами и т. Д. Поэтому, почему x86 все еще актуален. Когда люди говорят о x86, большую часть времени они действительно имеют в виду 32-битный, поскольку x86 также применим к 64-битным машинам.
jduncanator
31

ix86 является указанием инструкции процессора, установленной генерацией процессора. Например: Intel Pentium, Intel Core2Duo, AMD K6. ix86 существует уже много лет, если у вас есть процессор, созданный после 2000 года, он, по крайней мере, имеет набор инструкций i686. Отсутствие других индикаторов намекает на то, что это будет 32-битная версия.

x86_64 указывает на использование 64-битных регистров и адресного пространства. Выбирайте этот вариант, только если у вас 64-битный процессор и вы хотите использовать 64-битную версию операционной системы.

Выбор ваш. Я считаю, что все процессоры AMD Turion имеют поддержку 64 бит. Вам просто нужно решить, хотите ли вы 64-битную версию или 32-битную версию Arch Linux.

Zusukar
источник
0

Макемонета объясняет

По сути, различные обозначения ядра определяют, для какого набора команд компилятору было приказано оптимизировать. Процессор i686 может выполнять инструкции i586 и i386, поэтому, как вы заметили, i686 может запускать ядро ​​i386. Однако он может работать не так оптимально, как специально скомпилированный для i686.

Это обозначения, с которыми вы обычно сталкиваетесь:

Процессоры x86_64

  • AMD Athlon 64, Athlon 64-FX и Opteron
  • Процессоры Intel EMT64 - Nocona Xeon, Pentium 4, использующие версию E0 ядра Prescott (AKA Pentium 4, модель F)

Процессоры i686 * Все 32-разрядные процессоры Intel (за исключением Pentium 1 и Pentium MMX) * Все 32-разрядные процессоры AMD

Процессоры i586

  • Все 32-битные AMD Ks
  • Pentium 1
  • Pentium MMX

Процессоры i386

  • Общее обозначение «наименьший общий знаменатель» для процессоров, совместимых с Intel 80386 (включает все вышеперечисленное, но не использует расширенные инструкции для этих более поздних процессоров).
Джонатан
источник