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ę.