Różnica między pobieraniem i386 a amd64?


164

Jaka jest różnica między standardowym pobieraniem i386 a pobieraniem amd64 Ubuntu 11.04? Obecnie używam i386 na komputerze z systemem amd, czy mój system działałby lepiej z pobieraniem amd64? (na moim komputerze działał system Windows 7 64bit, ale zaniedbałem go przed zainstalowaniem Ubuntu).



Odpowiedzi:


165

i386 odnosi się do wersji 32-bitowej, a amd64 (lub x86_64) odnosi się do wersji 64-bitowej dla procesorów Intel i AMD.

Wpis Wikipedii i386:

Intel 80386, znany również jako i386 lub po prostu 386, był 32-bitowym mikroprocesorem wprowadzonym przez Intela w 1985 roku ... Nazywa się to x86, IA-32 lub architektura i386, w zależności od kontekstu.

Wpis Wikipedii x86_64:

x86-64 jest rozszerzeniem zestawu instrukcji x86. Obsługuje znacznie większe wirtualne i fizyczne przestrzenie adresowe niż jest to możliwe na x86, dzięki czemu programiści mogą wygodnie pracować ze znacznie większymi zestawami danych ... Po uruchomieniu architektury pod nazwą „x86-64” AMD zmieniło nazwę na AMD64 ... x86 -64 jest nadal używany przez wielu w branży jako termin neutralny dla dostawców, podczas gdy inni, zwłaszcza Sun Microsystems (obecnie Oracle Corporation) i Microsoft, używają x64.

Nawet jeśli masz procesor Intel, powinieneś użyć AMD64, aby zainstalować 64-bit na swoim komputerze (używa tych samych zestawów instrukcji).

Bardzo polecam go używać. W większości przypadków nie zauważysz różnicy, ale w przypadku dużych obciążeń (takich jak edycja wideo, gry itp.) Komputer będzie działał szybciej (komputer może obliczyć 2 + 2 + 2 = 6 zamiast robić 2 + 2 = 4 + 2 = 6 w przykładzie). W świecie Windows 32-bitowy system operacyjny nie pozwala na użycie więcej niż 3,5 gigabajtów pamięci RAM na komputerze (nawet jeśli masz 8!). Aby w pełni wykorzystać całą pamięć RAM, musisz użyć 64-bitowego systemu operacyjnego. Jednak w przypadku Linuksa nie ma takiego limitu (dzięki, Uri).

Niezależnie od tego świat zmienił się z 32-bitowego i jest tylko tam, aby obsługiwać starsze maszyny, które nie są w stanie uruchomić 64-bitowego.


Ta ostatnia część jest teraz (oczywiście w Linuksie) Po prostu nieprawda, MOŻESZ użyć więcej niż 3,5 GB pamięci RAM z jądrem PAE w wersji 32-bitowej.
Uri Herrera

czy 3,5 GB ograniczenia pamięci RAM 32 bitów nie byłoby 4 GB - <pamięć karty graficznej>?
Chriskin

3
Dla uproszczenia pominąłem kwestie techniczne, takie jak pamięć karty graficznej. Moim celem było powiedzieć „jeśli masz więcej niż 3,5-4 koncertów, użyj 64-bitowych”.

1
@Treefroginc Jakie dokładne poprawki?
Uri Herrera

1
Wersja 64-bitowa jest tak samo użyteczna i stabilna jak wersja 32-bitowa, z prawie nieistotnym wyjątkiem Flash w pewnych okolicznościach w określonych porach dnia i jeśli planety wyrównują się, emitując promienie kosmiczne.


10

tak, możesz zainstalować amd64 bit na 64-bitowym procesorze Intel. Firma AMD wynalazła procesor zestawu instrukcji x86-64 bit, więc nazwa jest tylko hołdem dla AMD.


Dziękujemy za wyjaśnienie tego. Wiem, że to proste pytanie, ale nigdzie nie mogłem znaleźć odpowiedzi.
Dave Wolover

8

Różnica między amd64 a i386 polega na tym, że amd64 jest 64-bitowy, a i386 jest 32-bitowy . Jest to szerokość (w bitach) rejestrów dostępnych w rdzeniu.

Zasadniczo największa liczba, którą 32-bitowy rdzeń procesora może obsłużyć za jednym razem, to nieco ponad 4,29 miliarda, podczas gdy 64-bitowy rdzeń może obsłużyć liczbę nieco ponad 18,44 miliarda miliardów.

Rdzenie współczesnych komputerów PC mogą zachowywać się jak procesory 64-bitowe lub 32-bitowe w zależności od zainstalowanej wersji systemu operacyjnego.

Kod 64-bitowy zwykle działa szybciej niż kod 32-bitowy, ponieważ może poradzić sobie z większymi numerami w ruchu lub ponieważ 64-bitowe rdzenie mają więcej rejestrów, dzięki czemu można przechowywać więcej rzeczy bez konieczności umieszczania rzeczy w pamięci zewnętrznej. Chociaż nie ma gwarancji, że 64-bitowy kod będzie działał szybciej, jeśli kod nie został napisany, aby skorzystać z dodatkowych funkcji procesora.

Kompilacja w systemie 32-bitowym da inny kod niż system 64-bitowy. Możesz to udowodnić, kompilując do kodu asemblera w dwóch systemach. Zakładając, że plik C to mój_plik.c spróbuj gcc -S myfile.cna obu systemach i porównaj mój_plik.s

Dobrze napisany kod dla systemu 32-bitowego powinien się skompilować i uruchomić w systemie 64-bitowym, ale nie cały kod jest dobrze napisany. Wielu programistów przyjmuje założenia dotyczące systemu, które mogą nie być prawdziwe: na przykład szerokość rejestru lub kolejność bajtów.

Bez dostępu do kodu źródłowego trudno jest zrozumieć, na czym polega problem, ale segmenation faultwskazuje, że podjęto próbę uzyskania dostępu do pamięci, która nie należy do programu. Może to na przykład wskazywać, że mem_ptr jest 32-bitowym wskaźnikiem, który jest odpowiedni w systemie 32-bitowym, ale musi być 64-bitowym wskaźnikiem w systemie 64-bitowym.


sprawdzę to i wrócę do tego ... Dziękuję
bikram990

realloc(mem_ptr, 0)Funkcja jest pamięć uwalniając wcześniej przyporządkować malloc, callocitp Jeśli wskaźnik został uszkodzony w jakikolwiek sposób to jesteś stara się wolnej pamięci nie jesteś właścicielem, a to generuje błąd segmentacji
Warren Hill

6

Tak, możesz użyć tego .ISO. amd64 odnosi się do architektury. AMD jako pierwszy stworzyło 64-bitowy procesor, więc uważam, że nazywał się tak w tamtym czasie, a nazwa utknęła. Wydaje się to trochę mylące, ale amd64 oznacza po prostu 64-bit.


10
Nie byli pierwszymi, którzy stworzyli procesor 64-bitowy. Intel miał go wcześniej, ale nie był kompatybilny wstecz, więc nie został powszechnie przyjęty. Nazwa amd64 miała odróżnić architekturę AMD od IA64 Intela, który został już wycofany.
psusi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.