Jaka jest różnica między 32-bitowym systemem operacyjnym a 64-bitowym systemem operacyjnym? Czy 32-bitowy system operacyjny może działać w 64-bitowym procesorze?
Jaka jest różnica między 32-bitowym systemem operacyjnym a 64-bitowym systemem operacyjnym? Czy 32-bitowy system operacyjny może działać w 64-bitowym procesorze?
Odpowiedzi:
Twoje pytanie dotyczy konkretnej architektury. x64 jest zasadniczo rozszerzeniem architektury x86. Obsługuje 64-bitową przestrzeń adresową. Zawiera nowe instrukcje i nowe rejestry.
Możesz uruchomić 32-bitowy system Windows x86 na maszynie x64. Pamiętaj, że nie możesz tego zrobić w 64-bitowych systemach Itanium.
64-bitowy procesor może obsługiwać zarówno system 32, jak i 64 (przynajmniej x64). Procesor 32-bitowy może działać tylko 32 natywnie.
Różnica dotyczy głównie wielkości wskaźnika / odniesienia. Na komputerach 64-bitowych można odwoływać się do adresu w 64-bitowym zakresie adresów (co daje 2 ^ 64 bajty pamięci). W wersji 32-bitowej można adresować tylko 2 ^ 32 bajty (= 4 GB). Teraz, gdy spojrzysz na obecne komputery, oczywiste jest, dlaczego świat przechodzi na wersję 64-bitową: wersja 32-bitowa nie może już łatwo zająć się całą pamięcią RAM.
Na x64 (AMD / Intel) masz dodatkowe zalety 64 bitów. Procesor ma więcej rejestrów, a zatem pozwala na bardziej wydajny kod.
W innych architekturach różnice między 64 a 32 bitami są mniej oczywiste. Na przykład Nintendo 64 (pamiętasz?) Była maszyną 64-bitową, ale większość jej kodu była 32-bitowa. Tak więc w tym przypadku 64-bit służył bardziej jako sztuczka marketingowa.
Akceptowana obecnie odpowiedź jest ogólnie poprawna, ale nie jest konkretna. Naprawdę nie ma jednej rzeczy zwanej „32-bitowym procesorem” lub „„ 64-bitowym procesorem ”- to opis, który odnosi się tylko do jednej małej części architektury procesora. W szczególności odnosi się do liczby linii wyboru adresu między CPU a pamięcią, tj. tak zwaną przestrzenią adresową dostępną dla operacji pamięci.
W dawnych czasach, kiedy procesor, kiedy ludzie siadali i tkali (owijali) przewody między procesorem a pamięcią, musiałbyś użyć albo 32, albo (teoretycznie, ponieważ wtedy nie istniał) 64 przewody między procesorem a kontrolerem pamięci, które zostaną użyte do określenia, do którego adresu pamięci chcesz uzyskać dostęp. Na przykład, powiedzmy, że mamy 2-bitową architekturę pamięci: wysłanie 00 wybrałoby adres 0, 01 wybrałoby adres 1, 10 wybrałoby adres 2, a 11 wybrałoby adres 3. Ten 2-bit daje nam 2 ^ 2 bajty pamięci RAM (4 bajty).
Jeśli weźmiesz 32-bitowy procesor i dodasz 32 dodatkowe przewody między procesorem a kontrolerem pamięci, aby magicznie móc obsłużyć więcej pamięci, masz teraz „64-bitowy procesor”, który może działać w wersji 32-bitowej kod lub kod 64-bitowy. Co to znaczy i jak to się dzieje? Cóż, weźmy nasz 2-bitowy procesor z wcześniejszej części tej odpowiedzi i dodajmy kolejny drut, zamieniając go w 3-bitowy procesor, zabierając nas z 4 bajtów do 2 ^ 3 lub 8 bajtów pamięci RAM.
Uruchomiony zostanie istniejący kod „2-bajtowy”, ustawiając wartości ostatnich 2 przewodów, jak wskazano powyżej (00-11). Dodatkowe połączenie zostanie domyślnie ustawione na zero, więc w rzeczywistości, gdy uruchomi się 2-bajtowy kod, kiedy wybierze 00, faktycznie wybierze 000, a kiedy wybierze 11, faktycznie wybierze 011. Łatwo.
Teraz programista chce napisać „natywny” 3-bajtowy kod i pisze swoje oprogramowanie, aby skorzystać z dodatkowej przestrzeni adresowej. Mówi procesorowi, że wie, co robi i że przejmie kontrolę nad nowymi, dodatkowymi przewodami. Jej oprogramowanie wie o dodatkowych przewodach i prawidłowo wysyła numer 000-111, zapewniając pełny dostęp do zakresu pamięci obsługiwanej przez tę nową architekturę procesora.
Ale to nie tak musi się zdarzyć. W rzeczywistości zwykle tak się nie dzieje. Kiedy po raz pierwszy wprowadzono 64-bitowe procesory (a było ich wiele), wszystkie miały zupełnie nowe architektury / projekty. Nie tylko przyczepili się do dodatkowych 32 przewodów i powiedzieli „proszę bardzo, jest to 64-bitowy procesor, którego można używać w trybie 32-bitowym lub 64-bitowym”, ale powiedzieli „To jest nasz nowy procesor i wymaga programowania tylko w tym całkowicie nowym języku maszynowym, zachowuje się w zupełnie nowy sposób, rozwiązuje wiele różnych problemów znacznie bardziej elegancko niż stare 32-bitowe procesory x86 / i386, i jest to natywna architektura 64-bitowa. . ”
Taka była historia Intel Itanium, obecnie znanego jako „Itanic” z powodu tego, jak masowo zatonął. Miał zwiastować nową erę 64-bitową i było to coś, co warto zobaczyć. Instrukcje o zmiennej długości, ogromne pamięci podręczne, 64-bitowa przestrzeń adresowa, mnóstwo rejestrów, super ekscytujące, super fajne i bardzo trudne, aby przekonać wszystkich do ponownej kompilacji lub przepisania 20 lat starszego kodu. To było w czasach, gdy AMD i Intel faktycznie konkurowały, a AMD wpadło na genialny pomysł powiedzenia „zapomnijmy o tym wszystkim” rozwiązywaniu wszystkich problemów na świecie ”i po prostu dodajmy 32 dodatkowe przewody do i386 i stworzymy 32-bit kompatybilny 64- bit CPU ”i narodziła się architektura procesora x86_64.
W rzeczywistości, jeśli spojrzysz na nazwy jądra i źródła dla głównych systemów operacyjnych (Linux, Windows, BSD itp.), Znajdziesz je zaśmiecone odniesieniami do procesorów AMD64 i architektury AMD64. Firma AMD opracowała zwycięską strategię, aby umożliwić wszystkim przejście do 64-bitowego świata przy jednoczesnym zachowaniu zgodności z aplikacjami 32-bitowymi, tak aby 32-bitowy system operacyjny mógł działać na 64-bitowym sprzęcie lub nawet aplikacjach 32-bitowych może działać w 64-bitowym systemie operacyjnym na 64-bitowym sprzęcie. Intel podążył za pakietem raczej wcześniej niż później dzięki swojej architekturze „Intel EM64T” (która była w zasadzie identyczna z AMD64) i x86_64 wygrał, podczas gdy Itanic i inni, tacy jak MIPS64 i ALPHA64, nie byli już widziani na rynku komputerów stacjonarnych / serwerów.
tl; dr amd64 aka x86_64 Procesory są zaprojektowane tak, aby były kompatybilne zarówno z 32- jak i 64-bitowym jądrem i kodem, ale większość 64-bitowych procesorów zdecydowanie nie jest kompatybilna wstecz w ten sam sposób. 32-bitowy procesor może uzyskać dostęp do maksymalnie 4 Gb pamięci, a 64-bitowy procesor może uzyskać dostęp do oszałamiających 16 EiB (16 × 1024 ^ 6 bajtów lub 4 miliardów razy więcej pamięci niż 4 Gb).
Zarówno 32-bitowy, jak i 64-bitowy system operacyjny mogą działać na 64-bitowym procesorze, ale 64-bitowy system operacyjny może w pełni wykorzystać moc 64-bitowego procesora (większe rejestry, więcej instrukcji) - krótko mówiąc, może wykonać więcej pracy w tym samym czasie. 32-bitowy procesor obsługuje tylko 32-bitowy system operacyjny Windows.
32 and 64 bit OS can run on a 64 bit processor
ogólnie nie jest poprawny