Pytanie 64-bitowe

Czy w przyszłości masz komputer 64-bitowy?





Przy całym szumie wokół procesorów 64-bitowych, prawdopodobnie zakładasz, że moja odpowiedź byłaby jednoznaczna tak – i wkrótce też! Ale odłóżcie na bok marketingową awanturę związaną z układami, takimi jak Athlon64 AMD; w rzeczywistości posiadanie 64 bitów ma o wiele mniejsze znaczenie niż przemysł komputerowy. Rzeczywiście, jeśli nie jesteś użytkownikiem Macintosha, możesz nie kupić 64-bitowego komputera przez kolejną dekadę - jeśli w rzeczywistości kiedykolwiek go kupisz.

Najpierw trochę tła. Procesory w ogromnej większości współczesnych komputerów stacjonarnych i laptopów to układy 32-bitowe. Większość z nich opiera się na niezwykle udanej architekturze Intela IA32, znanej również jako x86 (jak w 286, 386, 486). Wszystkie maszyny Intel Celeron i Pentium to IA32, podobnie jak chipy AMD Athlon.

Ale nagle 64-bitowe maszyny mają coś w rodzaju cache. Od dwóch lat AMD sprzedaje procesory, które mogą jednocześnie obsługiwać kod 32-bitowy i 64-bitowy; komputery zbudowane z tymi chipami mogą działać zarówno pod kontrolą systemu Linux, jak i specjalnej 64-bitowej wersji systemu Windows XP, wydanej przez firmę Microsoft na początku tego roku. Tymczasem Apple dostarcza wszystkie swoje komputery Power Mac z mikroprocesorem G5, 64-bitowym mózgiem stworzonym przez IBM. W pewnym sensie wszystkie te komputery stacjonarne nadrabiają zaległości: Nintendo dokonało przejścia na 64-bity w 1996 roku, kiedy wypuściło swoją konsolę do gier Nintendo64.



Aby zrozumieć, dlaczego to wszystko ma znaczenie, najpierw musisz zrozumieć, że wyrażenie 32 bity jest rodzajem skrótu używanego przez projektantów komputerów. Ta liczba odnosi się do dwóch rzeczy w architekturze komputera. Po pierwsze, oznacza to, ile bitów używają te komputery, gdy określają lokalizację w pamięci, w której przechowywana jest informacja. Po drugie, wskazuje rozmiar rejestrów wewnątrz mikroprocesora, które są używane do wykonywania obliczeń. Każdy bit może być 1 lub 0, więc 32 bity mogą być używane do reprezentowania 232 lub 4 294 967 296 różnych wartości. Tak więc oczywista różnica między maszynami 32-bitowymi a 64-bitowymi polega na tym, że systemy 64-bitowe są znacznie większymi maszynami: mogą adresować więcej pamięci i mogą wykonywać matematykę z większymi liczbami.

Ale więcej niekoniecznie znaczy lepiej – to zależy od tego, czego dostajesz więcej.

Wzdłuż ścieżki pamięci



Przejście z 32 bitów na 64 bity ma największe znaczenie, jeśli chodzi o zdolność tych komputerów do adresowania pamięci. Program działający na 32-bitowym komputerze może z łatwością adresować 4 gigabajty pamięci, 232 to około 4,3 miliarda. Z drugiej strony program działający na 64-bitowej maszynie może adresować 264, czyli 4 miliardy razy 4 miliardy bajtów, zadziwiająco dużą liczbę. Wystarczy policzyć, a stanie się jasne, że w systemie 64-bitowym jest o wiele więcej miejsca. Ale te dwa fakty są w rzeczywistości odpowiedzialne za wiele zamieszania, jak zobaczymy.

Oryginalny komputer osobisty IBM wykorzystywał mikroprocesor Intel 8088 – zabawny mały chip, który był wypełniony dziwnymi kompromisami inżynieryjnymi. W swoim sercu 8088 był 16-bitowym procesorem: miał 16-bitowe rejestry matematyczne, co pozwalało mu na łatwe reprezentowanie liczb z zakresu od 0 do 65 535 (lub od -32 768 do 32 767) oraz 16-bitowe rejestry adresowe, umożliwiające łatwo komunikować się z 64 kilobajtami pamięci głównej. Teraz 64K nie wystarczało do zrobienia wielu rzeczy, nawet w 1981 roku, kiedy komputer został po raz pierwszy wprowadzony do sprzedaży, więc 8088 miał zestaw rejestrów segmentowych, które zostały przesunięte w lewo o 4 bity i dodane do rejestru adresowego przed faktycznym wprowadzeniem adresów pamięci. czytać lub pisać. W rezultacie 8088 mógł łatwo uzyskać dostęp do jednego megabajta pamięci. Megabajt to dużo pamięci RAM w 1981 roku. Rzeczywiście, projektanci komputerów w tamtych czasach nie mogli sobie wyobrazić, że typowy użytkownik domowy lub biznesowy będzie potrzebował tak dużej ilości pamięci, nie mówiąc już o tym, że będzie mógł sobie na nią pozwolić przez wiele lat. Dlatego projektanci IBM narysowali linię w poprzek mapy pamięci komputera i umieścili pamięć do wyświetlania wideo dokładnie pośrodku górnej połowy, skutecznie ograniczając wczesne komputery do nie więcej niż 640 kilobajtów pamięci RAM. Taka była geneza limitu 640K, który został nałożony przez komputer IBM na jego system operacyjny DOS.

Kilka lat później Intel wprowadził swój kolejny mikroprocesor, 80286. (80186 nigdy tak naprawdę nie trafił do komputerów osobistych). 286 był podstawą komputerów PC/AT IBM. Miał tryb emulacji (zwany trybem rzeczywistym), który pozwalał 286 na uruchamianie tego samego oprogramowania co 8088, ale miał również zaawansowany, chroniony tryb, który pozwalał na pracę z maksymalnie 16 megabajtami pamięci RAM. Zdecydowana większość tych maszyn działała w trybie rzeczywistym, dzięki czemu mogły uruchamiać DOS Microsoftu i wszystkie inne programy, które zostały napisane dla oryginalnego IBM PC. Rzeczywiście, 286 był znacznie bardziej popularny w obsłudze oprogramowania 8088 niż 8088 kiedykolwiek, ponieważ 286 był o wiele szybszy. Kiedy przejdziesz do tego, bardzo niewiele 286 chipów faktycznie działało w trybie chronionym.



W 1985 roku Intel wprowadził chip 80386 — pierwszy 32-bitowy procesor z rodziny x86. Po raz kolejny ten mikroprocesor miał tak zwany tryb rzeczywisty, dzięki czemu mógł uruchomić DOS i resztę oprogramowania 8088. Maszyny te mogły krążyć wokół oryginalnego 8088 - nie dlatego, że były 32-bitowymi maszynami, ale dlatego, że miały szybsze taktowanie i bardziej wyrafinowaną konstrukcję wewnętrzną. Istniało również wiele firm sprzedających ekstendery DOS, które pozwalają programom ładowanym pod DOS korzystać z pełnej 32-bitowej przestrzeni adresowej. Te ekstendery przełączały komputer w tryb 32-bitowy do celów matematycznych, ale przywracały maszynę do trybu 16-bitowego za każdym razem, gdy program potrzebował dostępu do dysku twardego komputera. Niemniej jednak 32-bitowe programy działające na tych 32-bitowych procesorach były wyjątkiem, a nie regułą.

Dopiero gdy 32-bitowe maszyny w tej dziedzinie znacznie przewyższyły liczebnie 16-bitowe, Microsoft zaczął dostarczać swój pierwszy prawdziwy 32-bitowy system operacyjny – Windows 95. Do tego czasu Intel wypuścił dwie kolejne generacje procesorów x86. maszyny - 80486 i Pentium. Tak, Microsoft mógł dostarczyć 32-bitowy system operacyjny na lata przed wydaniem Windows 95. Ale zrobienie tego prawdopodobnie byłoby błędem: po co sprzedawać system operacyjny, który nie będzie działał na większości komputerów na rynku?

Cała ta historia staje się nagle ponownie aktualna, gdy rozważamy kolejny duży skok w architekturze komputerów PC – przejście od przetwarzania 32-bitowego do 64-bitowego. Ale podczas gdy zysk z 16-bitowej przestrzeni adresowej (lub 20-bitowej, jeśli weźmiemy pod uwagę segmentowaną architekturę 8088) do 32-bitowej, był ogromny, przejście z 32-bitowej na 64-bitową prawie nie zostanie zauważone przez większość użytkowników komputerów. Powodem jest to, że 32 bity są w rzeczywistości wystarczająco duże, aby rozwiązać ogromną większość zadań obliczeniowych - nie tylko dzisiejszych, ale także przyszłych.



Przejście z 32 bitów na 64 raczej nie przyniesie takiego samego skoku kwantowego w szybkości lub możliwościach, jakie przenieśliśmy z 16 bitów na 32. Tak, 64 bity adresu są naprawdę ogromne, ale 32 bity to nie ma co kichać.

Obecnie niewiele jest aplikacji, które naprawdę potrzebują więcej niż 4 gigabajty pamięci. Jeśli zajmujesz się przetwarzaniem tekstu, arkuszami kalkulacyjnymi, pocztą e-mail i przeglądaniem sieci, 32 bity zapewnią wystarczającą przestrzeń adresową na przyszłość. Mój komputer stacjonarny z systemem Windows jest świnią pamięci - jego kopia Internet Explorera rutynowo powiększa się do 64 megabajtów. Ale to wciąż jedna sześćdziesiąt czwarta wielkości 4-gigabajtowej mapy pamięci maszyny. Nie wyobrażam sobie, żebym mógł uruchomić przeglądarkę internetową, która wymagałaby 4 gigabajtowej mapy pamięci: pobranie takiej ilości informacji przez moją linię DSL zajęłoby prawie 10 godzin!

Można by pomyśleć, że wielozadaniowość z innymi, podobnie przewymiarowanymi aplikacjami powodowałaby coraz większe obciążenie pamięci, do tego stopnia, że czy martwić się o wykorzystanie przestrzeni adresowej. Ale tak nie jest. Windows, Unix i inne nowoczesne systemy operacyjne używają techniki zwanej pamięcią wirtualną, aby nadać każdemu programowi własną izolowaną mapę pamięci. Na komputerze 32-bitowym oznacza to, że każdy uruchomiony program otrzymuje własne 4 gigabajty pamięci wirtualnej do zabawy. Tak więc podczas gdy pojedyncza instancja uruchomionego programu nie może uzyskać dostępu do więcej niż 4 gigabajtów, 32-bitowa maszyna z systemem Windows XP z 10 lub 20 gigabajtami pamięci nie miałaby problemów z udostępnianiem tej pamięci między nadętą przeglądarką, nadętą kopią programu Word 2003 i nadętą kopię Access.

Tam, gdzie ta 64-bitowa przestrzeń adresowa robi dużą różnicę, jest to, gdy pojedynczy program musi uzyskać dostęp do więcej niż 4 gigabajtów pamięci naraz. Na przykład, jeśli prowadzisz hurtownię danych dla międzynarodowej korporacji z 10 terabajtami pamięci masowej online, serwer bazy danych może poważnie skorzystać na przechowywaniu w pamięci 10 lub 20 gigabajtów plików indeksu. Symulacja na dużą skalę może w podobny sposób zyskać dzięki dużej ilości pamięci RAM do robienia takich rzeczy, jak modelowanie pogody na pojutrze.

Ponieważ firmy takie jak Dell dostarczają komputery domowe z 512 megabajtami pamięci RAM i komputery z systemem Windows XP rutynowo używające 1,5 gigabajta pamięci do przechowywania wszystkich swoich programów, marketerzy promujący przetwarzanie 64-bitowe będą mówić, że potrzebujesz maszyny 64-bitowej przebić się przez szybko zbliżający się limit 4 gigabajtów. Nie wierz w to. W rzeczywistości Dell sprzedaje już 32-bitowe komputery z 8, 16 i 32 gigabajtami pamięci RAM. Marketerzy chcą, abyś kupował maszyny 64-bitowe, ponieważ te systemy kosztują więcej.

Innym sposobem, w jaki maszyny 64-bitowe przewyższają dzisiejsze systemy 32-bitowe, jest matematyka. Podczas gdy dzisiejsze maszyny 32-bitowe mają procesory, które mogą reprezentować dowolną liczbę całkowitą z przedziału od 0 do 4 294 967 295 (czyli 232-1), maszyna 64-bitowa może reprezentować liczby całkowite od 0 do 18 446 744 073 709 551 615 (264-1).

Po raz kolejny możliwość wykonania matematyki z tymi ogromnymi liczbami w jednej instrukcji może być ogromną zaletą w niewielkiej liczbie zastosowań naukowych. Okazuje się jednak, że w przypadku większości codziennych zadań biurowych 64-bitowa matematyka liczb całkowitych nie jest aż tak przydatna. Na początek dzieje się tak dlatego, że mamy już maszyny, które mogą robić 64-bitowe: dzisiejsze maszyny po prostu robią to za pomocą specjalnych jednostek przetwarzania zmiennoprzecinkowego lub robią to za pomocą wielu 32-bitowych instrukcji. W przypadku większości operacji specjalny 64-bitowy sprzęt matematyczny po prostu nie jest potrzebny.

Nie musisz mi wierzyć na słowo. Wystarczy spojrzeć na historię innych architektur 64-bitowych. Podczas gdy 64-bity są nowością w świecie x86, inne mikroprocesory przeszły na 64-bity w latach 90. XX wieku. Alpha, MIPS64 i Sparc64 to maszyny 64-bitowe. Jednak większość programów działających na tych komputerach skutecznie ignoruje górne 32 bity każdej liczby – to dlatego, że te cyfry to niezmiennie 0.

Prawdziwa 64-bitowa wypłata: nowsze projekty

Wszystkie te argumenty przeciwko 64-bitowym maszynom wtapiają się w stolarkę, jednak gdy usiądziesz przed nowym komputerem Apple G5: bez względu na to, czy edytujesz wideo, czy po prostu przeglądasz Internet, maszyna wydaje się znacznie szybsza niż 32-bitowa Kuzyni G4. Więc co daje?

Z godnym uwagi wyjątkiem procesora Intel Itanium, dzisiejsze 64-bitowe maszyny generalnie uruchamiają 32-bitowy kod szybciej niż ich 32-bitowi kuzyni z tego samego powodu, dla którego 32-bitowy procesor Intel 80386 wykonywał 16-bitowy kod szybciej niż 8088 i 80286 Powodem jest to, że 64-bitowe procesory są po prostu bardziej nowoczesnymi urządzeniami. Te chipy są wykonane w bardziej zaawansowanych procesach krzemowych, mają wyższe częstotliwości taktowania i zawierają więcej tranzystorów. Athlon64 AMD i G5 IBM mają nie tylko szersze rejestry: mają również bardziej funkcjonalne jednostki w swoich krzemowych mózgach. Te chipy lepiej sobie radzą z takimi rzeczami, jak wykonywanie wielu instrukcji w tym samym czasie, wykonywanie poza kolejnością i przewidywanie rozgałęzień. Ten 64-bitowy PowerMac G5 działający w Apple Store w dużej mierze korzysta z 32-bitowego kodu. Imponująca prędkość maszyny wynika z połączenia dwóch procesorów, szybszych częstotliwości taktowania, większej pamięci podręcznej i lepszej magistrali pamięci.

Tak, AMD i IBM mogły zastosować tę samą technologię w nowym 32-bitowym projekcie. Ale w dzisiejszych czasach zaprojektowanie nowego chipa kosztuje miliardy dolarów. Procesor 64-bitowy może oferować wyższą cenę niż procesor 32-bitowy, więc w najlepszym interesie tych firm jest umieszczenie najnowszych i najlepszych technologii w swoich produktach 64-bitowych.

Patrząc w przyszłość, 64-bitowe przetwarzanie naprawdę się przyjmie, ponieważ 64-bitowe maszyny po prostu sprawdzą się lepiej, obsługując dzisiejszy 32-bitowy kod niż dzisiejsze 32-bitowe procesory. Ale rynek może łatwo ewoluować w innym kierunku. Te dodatkowe 32 bity zużywają dużo energii, więc firmy budujące procesory do laptopów i urządzeń przenośnych mogą po prostu złożyć sztuczki opracowane dla maszyn 64-bitowych na swoje urządzenia 32-bitowe.

To samo działo się w konsolach do gier. Chociaż kilka lat temu, kiedy Nintendo zdecydowało się na użycie 64-bitowego procesora R4300i dla swojego systemu Nintendo 64, było wiele emocji, gracze gier wideo tak naprawdę nie skorzystali z dodatkowych 32 bitów adresu lub matematyki. R4300i był wówczas szybkim chipem, ponieważ zaimplementował wiele innych najnowocześniejszych technik przyspieszania wykonywania programów. Mógłby zapewnić ten sam poziom wydajności, gdyby te sztuczki zostały zastosowane na 32-bitowym procesorze. To sztuczki, które przyniosły szybkość, nie bity.

128-bitowe powiązanie?

Po przejściu skoku z 8 do 16 bitów, potem 16 do 32, a teraz 32 do 64, naturalne jest myślenie, że kiedyś w odległej przyszłości dokonamy przejścia z systemów 64-bitowych na 128-bitowe. Nie wstrzymuj oddechu.

Ważną rzeczą do zapamiętania jest tutaj to, że bity są wykładnicze. System 32-bitowy może adresować 65 tys. razy więcej pamięci niż system 16-bitowy, podczas gdy system 64-bitowy ma teoretyczną przestrzeń adresową pamięci 4 miliardy razy większy niż w systemie 32-bitowym. Przy dzisiejszym sprzęcie można by zbudować pojedynczy system pamięci, który pomieściłby 264 bajty pamięci, ale musiałbyś użyć ponad 200 milionów dysków twardych, z których każdy zawierałby 256 gigabajtów informacji. To więcej miejsca niż dostarczył cały światowy przemysł dysków twardych w 2003 roku. Więc chociaż można sobie wyobrazić, że można by zbudować system pamięci o pojemności 264 bajtów, prawdopodobnie musiałbyś używać każdego komputera na świecie, który jest podłączony do Internetu .

Chociaż można sobie wyobrazić przyszłość, w której komputery będą miały dostęp do 264-bajtowych baz danych, trudno wyobrazić sobie pojedynczy problem, który wymagałby, aby program miał tyle pamięci dostępnej w pojedynczej przestrzeni adresowej. Jednym z powodów, dla których tak niewiarygodnie duży system nie ma sensu, jest to, że nie zbudowałbyś takiego systemu z pojedynczym procesorem i jedną zunifikowaną przestrzenią adresową: zamiast tego używałbyś milionów lub miliardów elementów przetwarzających, wszystkie z nakładającą się pamięcią i odpowiedzialność. W ten sposób, jeśli jeden procesor lub blok pamięci ulegnie awarii, inne systemy przejmą kontrolę bezproblemowo.

Biorąc pod uwagę takie argumenty, dość nierozsądne jest wyobrażanie sobie, że potrzebowałbyś 2128 bitów pamięci — nie za naszego życia, nie za życia kogokolwiek.

Z drugiej strony mogę się całkowicie mylić co do tego wszystkiego: 64 bity mogą być właśnie tym, co umożliwia wirtualną rzeczywistość całego ciała z możliwościami morfingu umysł-spotkanie-umysł. Lub, co bardziej prawdopodobne, firmy takie jak Dell mogą pójść w ślady Apple i przestać sprzedawać tanie maszyny z 32-bitowymi procesorami, zamiast tego polegać na szumie marketingowym związanym z 64-bitowymi maszynami, aby uzasadnić wyższe marże zysku.

Pamiętaj jednak, że na dole zawsze jest miejsce. A ponieważ maszyny 32-bitowe będą prawdopodobnie przydatne przez co najmniej dekadę, jeśli nie dłużej, byłbym zaskoczony, gdyby Dell scedował ten rynek na inną firmę. Wystarczy spojrzeć na Apple: podczas gdy wszystkie komputery stacjonarne PowerMac, które Apple sprzedaje, są wyposażone w procesory G5, firma nadal używa G4s w swoich komputerach iMac, eMac i PowerBook.

Osobiście uważam, że systemy 32-bitowe będą z nami jeszcze przez długi czas.

ukryć