Jaka jest różnica między i686 a x86_64?

Odpowiedzi:

69

i686 to wersja 32-bitowa, a x86_64 to 64-bitowa wersja systemu operacyjnego.

Wersja 64-bitowa lepiej skaluje się z pamięcią, szczególnie w przypadku obciążeń takich jak duże bazy danych, które wymagają użycia wielu pamięci RAM w tym samym procesie. Nie należy rozważać uruchamiania (znaczącego) serwera bazy danych na komputerze 32-bitowym.

Jednak w przypadku większości innych rzeczy wersja 32-bitowa jest w porządku. Kod 32-bitowy zużywa mniej pamięci, więc będziesz mieć więcej na inne rzeczy. Limit pamięci, z którego system operacyjny może korzystać, nie jest inny, tylko pamięć na proces.

To naprawdę zależy od tego, do czego chcesz go użyć. Jeśli planujesz opracować oprogramowanie dla dużych serwerów lub na dużych serwerach, użyj wersji 64-bitowej. W przeciwnym razie użyj 32.

MarkR
źródło
1
Jeśli 4 GB pamięci RAM lub mniej, nie należy instalować 64-bitowych systemów operacyjnych. Jeśli masz więcej niż 4 GB pamięci RAM, powinieneś zainstalować 64-bitowy system operacyjny. W przeciwnym razie nie będziesz mieć dostępu do całej pamięci RAM.
d -_- b
3
@toor Nie zgadzam się, 1) 32-bitowe systemy operacyjne mogą używać więcej niż 4G pamięci RAM z PAE itp., które są teraz standardowe i 2) Nie cała przestrzeń adresowa procesu może być odwzorowana na (odrębną) fizyczną pamięć RAM, więc może być użyteczny w 64-bitowym systemie operacyjnym, nawet jeśli masz (nieco) mniej niż 4G pamięci RAM.
MarkR
3
@toor Z pewnością, jeśli chcesz uruchomić pojedynczy proces z 2-3 GB prywatnych anonimowych stron, staje się trudny w 32-bitowym systemie operacyjnym. Wyczerpanie przestrzeni adresowej jest poważnym problemem w takim systemie, a nie brakiem (wirtualnej) pamięci. Jednak przejście na 64-bitowe jądro i przestrzeń użytkownika może spowodować, że zadanie zużyje o wiele więcej pamięci RAM, być może przekraczając cel. Może w niektórych sytuacjach 64-bitowe jądro, 32-bitowa przestrzeń użytkownika jest dobra.
MarkR
1
jeśli masz 64-bitowy procesor, uruchom 64-bitowy system operacyjny! duh, wydaje się rozsądne
Sam Watkins
2
Dziwne, że wszyscy nie wspominacie, że 64-bitowe pliki binarne są zwykle kompilowane z obsługą 64-bitowego zestawu! W niektórych przypadkach możliwość korzystania z operacji 64-bitowych może ZNACZNIE zwiększyć szybkość działania aplikacji. Godnym uwagi jest Crypto (OpenSSL itp.). Jeśli twój procesor obsługuje 64-bit, zwykle najlepiej jest używać aplikacji 64-bitowych!
jduncanator,
121

Krótka odpowiedź:

i686 = 32-bit Intel x86 arch 
x86_64 = 64-bit Intel x86 arch
Ćwiek
źródło
18
Ta odpowiedź jest dla mnie najbardziej przydatna, szczególnie gdy już wiem, że 32-bitowy vs 64-bitowy. Część, która mnie wyrzuciła to „i686”. Zazwyczaj oczekiwałbym po prostu x86
Antony
4
I dlaczego x86_64 zawiera część „86”?
mmdemirbas
3
Dobre pytanie o to, dlaczego „86”. Musiałem to sprawdzić w sobie. serverfault.com/questions/188177/…
thrag
8
Aby uogólnić „386”, „486”, „586”, „686” - pseudonimy dla architektury - wracając do układów takich jak „80386”, „80486” itp.
Brad
3
@Brad ma rację :) 64-bit (lub w tym przypadku _64 bit w x86_64) po prostu odnosi się do rozszerzenia zestawu instrukcji x86. Jest to wciąż ten sam zestaw (-ish), ale dodaje nowe instrukcje dotyczące pracy na 64-bitowych liczbach całkowitych itp. Dlatego też x86 jest nadal aktualny. Kiedy ludzie mówią x86, przez większość czasu mają na myśli 32-bit, ponieważ x86 ma również zastosowanie do maszyn 64-bitowych.
jduncanator,
31

ix86 jest wskazaniem zestawu instrukcji procesora według generacji procesora. Na przykład: Intel Pentium, Intel Core2Duo, AMD K6. ix86 istnieje od wielu lat, jeśli masz procesor wyprodukowany po 2000 r., to prawdopodobnie ma przynajmniej zestaw instrukcji i686. Brak innych wskaźników wskazuje, że będzie to wersja 32-bitowa.

x86_64 wskazuje użycie 64-bitowych rejestrów i przestrzeni adresowej. Wybierz tę opcję tylko, jeśli masz 64-bitowy procesor i chcesz korzystać z 64-bitowej wersji systemu operacyjnego.

Wybór nalezy do ciebie. Wierzę, że wszystkie procesory AMD Turion mają 64-bitową obsługę. Musisz tylko zdecydować, czy chcesz wersję 64-bitową, czy 32-bitową wersję Arch Linux.

Zusukar
źródło
0

Macemoneta wyjaśnia

Zasadniczo różne oznaczenia jądra określają, dla którego zestawu instrukcji polecono kompilatorowi zoptymalizować. Procesor i686 może uruchamiać instrukcje i586 i i386, więc, jak zauważyłeś, i686 może uruchamiać jądro i386. Jednak może nie działać tak optymalnie, jak specjalnie skompilowany dla i686.

Są to oznaczenia, na które zazwyczaj się natkniesz:

Procesory x86_64

  • AMD Athlon 64, Athlon 64-FX i Opteron
  • Procesory Intel EMT64 - Nocona Xeon, Pentium 4 wykorzystujące wersję E0 rdzenia Prescott (AKA Pentium 4, model F)

Procesory i686 * Wszystkie 32-bitowe procesory Intel (z wyjątkiem Pentium 1 i Pentium MMX) * Wszystkie Athlony 32-bitowe AMD

Procesory i586

  • Wszystkie 32-bitowe AMD Ks
  • Pentium 1
  • Pentium MMX

Procesory i386

  • Ogólne oznaczenie „najniższego wspólnego mianownika” dla procesorów zgodnych z Intel 80386 (obejmuje wszystkie powyższe, ale nie korzysta z rozszerzonych instrukcji dotyczących tych późniejszych procesorów).
Jonathan
źródło