Dlaczego Windows 7 x64 działa na moim komputerze szybciej niż edycja x86, mimo że głównie używam w nim rzeczy x86? Co jest ze mną nie tak i czego mi brakuje?
Większość rzeczy, których używam, to x86 (np. DAW, gry, odtwarzacze multimedialne). Znaczna część z nich to jednak x64 (chociaż ich odpowiedniki x86 działają dobrze).
Próbowałem używać tych samych rzeczy w tym samym systemie, ale zawsze kończyło się to tym, że Windows 7 x64 działał nieco szybciej niż x86. Jestem bardzo spostrzegawczy. Zauważyłem nawet najmniejsze animacje okien.
System : Windows 7 Ultimate x64
CPU : Intel Core 2 Duo E7500 @ 2.93 GHz
RAM : 2 GB x 2 = 4 GB DDR2 @ 332 MHz
Płyta główna : Intel D945GCNL
Grafika : ATI Radeon HD 4350 @ 1 GB Dedykowane
audio : M-Audio FastTrack Pro
HDD : Samsung HD753LJ 733 GB i Samsung HD160JJ 156 GB
Jak widać, mój system jest stary.
Odpowiedzi:
Jest to próba udzielenia pełnej odpowiedzi poprzez podsumowanie fragmentów indywidualnych już istniejących odpowiedzi z pewną dodaną treścią. Lista stara się uwzględnić wszystkie możliwości ogólnego przypadku, nawet jeśli można wykluczyć niektóre z tego konkretnego przypadku.
Różnica zestawu instrukcji procesora
Jak opisano przez Joela Coehoorna , dla natywnego kodu x64 dostępny jest większy zestaw rejestrów, a także dodatkowe instrukcje (np. Wszystkie procesory x64 mają gwarancję implementacji instrukcji SSE i SSE2). Oznacza to, że natywny system operacyjny x64 i sterowniki mogą być bardziej wydajne.
Lepsze wykorzystanie pamięci RAM
64b jest w stanie wykorzystać pełne 4 GB (a nawet więcej, jeśli są dostępne). Co więcej, niektóre wewnętrzne limity systemu operacyjnego (pula stronicowana / niestronicowana, maksymalny rozmiar pamięci podręcznej) są zwiększane w systemie operacyjnym 64b . W rezultacie zarówno stronicowanie pamięci, jak i buforowanie plików mogą być bardziej wydajne.
Inna pozycja dysku twardego
Gdy masz dwa systemy operacyjne zainstalowane na dwóch partycjach tego samego dysku, jedna z tych dwóch partycji jest blisko zewnętrznej krawędzi, co jest na ogół szybsze .
Inny stan systemu operacyjnego
Gdy masz dwa systemy operacyjne, każdy z nich może być w nieco innym stanie. Jedna z nich może być bardziej fragmentaryczna niż druga, jedna z nich może mieć nieco czystszy rejestr lub mniej zainstalowanych usług lub aplikacji w tle niż druga.
Lepsi kierowcy
Inną możliwością jest to, że sterowniki x64 mogą być lepszej jakości niż x86, nie z powodu pewnych fundamentalnych różnic w architekturze, ale po prostu dlatego, że ich dostawca poświęcił więcej wysiłku na ich optymalizację i dostrojenie.
Adresowanie 64b
Dodam to tylko ze względu na kompletność, ponieważ w zdecydowanej większości codziennych zastosowań ta różnica nie odgrywa żadnej roli i na pewno nie ma związku z tym, co opisuje Jasper w swoim pytaniu.
Jeśli masz aplikację przetwarzającą ogromne ilości danych (np. Pracującą w Photoshopie z dużymi obrazami), uruchomienie wersji 64b może mieć ogromne znaczenie pod warunkiem, że masz zainstalowane 4 GB lub więcej pamięci RAM.
Co tak naprawdę oznacza „szybszy”?
Oto lista z komentarza do innej odpowiedzi , jakie dokładnie „szybsze rzeczy” widzi Jasper:
Trudno wytłumaczyć. Animacja systemu Windows jest wykonywana przez procesor graficzny w systemie Windows 7, a procesor graficzny jest taki sam. Obciążenie procesora jest znikome. (Przypuszczam, że są za pomocą pulpitu Aero).
Mogą być lepiej dostrojone sterowniki lub sterowniki korzystające z x64,.
Może to być spowodowane szybszą partycją (w ogóle niezwiązaną z systemem operacyjnym) lub lepszą obsługą pamięci podręcznej w systemie operacyjnym x64.
Zrozumiale. Wydajność gier zależy od procesora i karty graficznej. W przypadku ograniczenia procesora kodem ograniczającym jest sama gra, która jest tym samym kodem x86 z niewielkim sprzężeniem z systemem operacyjnym x64. Wydajność procesora jest zatem taka sama. GPU jest taki sam. Narzut sterownika i systemu operacyjnego w dobrze zaprogramowanej grze jest niski, dlatego różnice w sterownikach lub systemie operacyjnym raczej się tutaj nie pokażą.
źródło
Przejście z 32 do 64 bitów nie jest jedyną zmianą w architekturze x64. x64 dodaje także więcej rejestrów procesora i nowe instrukcje procesora. System operacyjny, który wie, jak z nich skorzystać, może uzyskać niewielki wzrost wydajności tego samego sprzętu. Aha, i odzyskanie 1 GB pamięci RAM, która była kiedyś adresowana na kartę graficzną, również nie zaszkodzi.
źródło
Ostrzeżenie: jest to nieco bardziej złożone pytanie, niż mogłeś sobie wyobrazić, a na pewno więcej niż większość przedstawionych odpowiedzi. Aby postarać się opisać choć trochę więcej historii, ten post jest dość długi ...
Przede wszystkim sytuacja z pamięcią wideo. Cała pamięć karty graficznej nie jest (przynajmniej normalnie) bezpośrednio widoczna w przestrzeni adresowej procesora. Zazwyczaj masz „okno” około 128-256 megabajtów pamięci wideo widoczne dla procesora. GPU może mapować różne części pamięci do tego okna, więc zazwyczaj możesz zapisywać do większości pamięci GPU z procesora, ale musisz wcześniej poinformować GPU, do czego będziesz pisać, zanim będziesz mógł to zrobić. Na przykład, gdy używasz DirectX i chcesz pisać bezpośrednio do pamięci graficznej, możesz to zrobić - ale aby to zrobić, zacznij od wywołania,
LockRect
aby GPU zamapowało odpowiednią pamięć w oknie (i jako jak tylko skończysz, zadzwoniszUnlockRect
dzięki czemu może mapować inną pamięć w razie potrzeby). Przynajmniej w typowym przypadku możesz dostosować rozmiar okna wideo w ustawieniach BIOS.Po drugie, nawet w trybie 32-bitowym procesory x86 obsługują tak zwane rozszerzenia adresu fizycznego (PAE), które pozwalają procesorowi na adresowanie powyżej 4 gig. pamięciowy. Microsoft obsługuje PAE w niektórych wersjach systemu Windows - ale tylko w stosunkowo drogiej wersji Enterprise Windows Server. Ponadto program musi być napisany specjalnie, aby korzystać z AWE. Istnieje tylko kilka programów (np. SQL Server Enterprise Edition), które kiedykolwiek to zrobiły. Podsumowując: jest to możliwe, ale dość rzadkie.
Jeśli chodzi o odczytywanie 64 bitów naraz: ostatnim procesorem, który odczytywał dane tylko 32 bity na raz, było 486. Począwszy od Pentium, wszystkie procesory miały 64-bitowe szyny danych. Zauważ, że magistrala adresowa nie jest taka sama jak magistrala danych, więc rozszerzenie do 64-bitowej magistrali danych nie pozwoliło procesorowi na pracę z większą pamięcią (chociaż, jak to się dzieje, PAE zostało dodane w Pentium Pro, więc był prawie zbieżny z rozszerzeniem do 64-bitowej magistrali danych).
Mimo że Pentium może odczytać 64 bity danych w jednym cyklu zegara, wewnętrznie (głównie) przetwarza dane 32 bity na raz. Szersza magistrala przede wszystkim pomogła zrekompensować różnicę prędkości między procesorem a pamięcią główną. Instrukcje MMX Pentium MMX obsługiwały przetwarzanie danych w 64-bitowych porcjach, ale korzystanie z niego było dość niezręczne i (w szczególności) większość kompilatorów nie generowała kodu MMX, więc aby go użyć, trzeba było pisać w asemblerze . Pentium obsługiwał także operacje 64-bitowe (i 80-bitowe) dla liczb zmiennoprzecinkowych, ale jest to używane tylko w przypadku niewielkiej większości programów (i ogólnie było wolniejsze niż praca z liczbami całkowitymi).
Projekt x86-64 ma dwa razy więcej rejestrów ogólnego przeznaczenia niż 32-bitowy projekt x86, a każdy z tych rejestrów ma szerokość 64 bitów. Jednak gdy procesor pracuje w trybie 32-bitowym, tylko podzbiór rejestrów, który istniał w 32-bitowych procesorach, jest użyteczny.
Wracając na chwilę do zmiennoprzecinkowego, w trybie 32-bitowym matematyka zmiennoprzecinkowa jest wykonywana przy użyciu zestawu instrukcji oryginalnie zaprojektowanego dla koprocesora matematycznego Intel 8087. Wykorzystuje model, który sprawia, że dość trudno jest w pełni wykorzystać jego możliwości. Intel (i AMD) ostatnio dodał „Streaming SIMD Extensions” lub SSE. Większość 64-bitowych kompilatorów generuje kod, który może używać SSE zamiast zmiennoprzecinkowego kompatybilnego z 8087. „SIMD” w SSE oznacza „pojedynczą instrukcję, wiele danych”. Oznacza to, że jedna instrukcja SSE może wykonać dwie operacje zmiennoprzecinkowe na dwóch osobnych danych. Chociaż niekoniecznie oznacza to dwukrotność prędkości, zwykle poprawia prędkość przynajmniej trochę.
Na koniec powinienem chyba zaznaczyć, że jest jedna część porównania, która jest na ogół trochę niesprawiedliwa. Po zainstalowaniu nowego systemu operacyjnego jest prawie zawsze co najmniej trochę szybszy niż system operacyjny, który był używany od dłuższego czasu. Programy przechowują dane w rejestrze, na dysku twardym itp. Im więcej danych dodasz, tym więcej pracy zwykle wiąże się ze znalezieniem potrzebnych danych w danym momencie. Podczas gdy firmy sprzedające „narzędzia do czyszczenia rejestru” i tak często wyolbrzymiają ten efekt, w pewnym stopniu jest to prawdą. W związku z tym, jeśli wszystko, co zrobiłeś, to ponownie sformatowałeś dysk twardy i ponownie zainstalowałeś dokładnie ten sam system operacyjny, możesz spodziewać się pewnej poprawy prędkości - a jeśli stary system operacyjny był zainstalowany i był intensywnie używany przez długi czas , ta poprawa (sama w sobie) możebyć całkiem pokaźnym. Przynajmniej część widocznej poprawy prędkości może być niezależna od rzeczywistej różnicy między dwoma systemami operacyjnymi.
Oczywiście jest coś więcej, ale zaczynasz rozumieć. To nie tyle kwestia pojedynczej funkcji, która robi ogromną różnicę, ile wielu funkcji, które zwykle powodują stosunkowo niewielkie różnice osobno, ale wiele z nich dodaje (a nawet pomnaża) razem, aby ogólnie zrobić całkiem istotną różnicę.
źródło
Może nie mieć to nic wspólnego z wersją 32 vs 64-bitową.
Z Twojego postu nie jest jasne, co rozumiesz przez „64bit jest szybszy”. Czy mamy wziąć z tego, że ponownie zainstalowałeś 64-bitowy system Windows na komputerze, na którym wcześniej miałeś 32-bitowy system Windows? Jeśli tak, „resetowanie” struktury pliku może łatwo uwzględniać zmiany prędkości. Nowa instalacja, szczególnie po ponownym sformatowaniu, jest często bardziej responsywna niż starsza instalacja, w której pliki są pofragmentowane, brakuje miejsca na dysku, rejestr jest zaśmiecony itp.
Może to być także jeden ze sterowników ... na przykład nowsze sterowniki wideo mogą być szybsze i lepiej zoptymalizowane przez producenta niż starsze wersje x86. Lub sterownik dysku twardego może być lepszy.
źródło
Mówiąc prościej, dzieje się tak dlatego, że komputer może przetwarzać 64 bity (8 bajtów) danych na cykl zegara. Twój procesor otrzymuje dane w postaci wcześniej ustalonych bitów zwanych słowami. Słowa w architekturze x64 są dwa razy większe niż słowa w architekturze x86. Chociaż twój procesor może nie przetwarzać danych szybciej (twój Core 2 ma 2,93 Ghz w obu instalacjach), jednak przetwarza dane bardziej wydajnie. Ponadto, jak wspomniano w komentarzach, pozwoli ci zająć się całą pamięcią RAM, ponieważ twój procesor odczytuje z pamięci RAM 64-bitowymi słowami. Z Wikipedii :
W przypadku procesora 64-bitowego liczba ta nie jest mnożona przez 2, rośnie wykładniczo:
Ten artykuł , choć nieco przestarzały, stanowi bardzo pouczający artykuł na temat działania przetwarzania 64-bitowego.
Chcę zauważyć, że tak naprawdę nie przekłada się to na dwukrotny wzrost wydajności, ponieważ rzeczywista wydajność zależy od wielu innych zmiennych (prędkość dysku, szybkość magistrali, pamięć podręczna procesora, dostępny współczynnik pamięci). Powinieneś jednak zauważyć wzrost wydajności w systemie Windows, ponieważ więcej systemu operacyjnego można załadować do pamięci i wydajniej zająć się nim.
źródło
Myślę, że najgłębszym powodem, dla którego system jest szybszy przy użyciu 64-bitowego systemu operacyjnego, jest to, że 32-bitowy system operacyjny nie jest w stanie wykorzystać całej pamięci RAM w systemie.
32-bitowy system operacyjny będzie w stanie kontrolować 32-bitowe, tj. 4 GB fizycznej przestrzeni adresowej. Ta przestrzeń adresowa obejmuje pamięć systemową, pamięć wideo, urządzenia IO itp. Więc jeśli masz 1 GB dedykowanego pamięci RAM, możesz odjąć pierwszą GB od dostępnej pamięci RAM. Wtedy inne urządzenia prawdopodobnie odejmą kolejne 200 MB.
Dzięki temu masz tylko 2,8 GB pamięci RAM na aplikacje. Niewiele w systemie Windows 7;)
Z drugiej strony 64-bitowy system operacyjny jest w stanie wykorzystać całą pamięć RAM.
źródło
Zainstalowałem 32-bitowy i 64-bitowy na dwóch osobnych identycznych notebookach Lenovo x100e. 32-bitowy miał RAM 2G, a 64-bitowy RAM 4G, a 32-bitowy nadal działał szybciej, płynniej, szybciej reagował z dużo mniejszym opóźnieniem niż 64-bitowy, który był opóźniony i powolny. Jednostka centralna to 64-bitowa jednostka centralna. Zainstalowano te same sterowniki i aktualizacje systemu Windows dla obu. Myślę, że wersja 64-bitowa jest przeznaczona dla maszyn z wyższej półki, a nie z poziomu podstawowego nawet z procesorami x64.
źródło