Słów kilka o pamięci...
Pamięć operacyjna komputera składa się z pamięci fizycznej, którą stanowią
moduły RAM (Random Access Memory) oraz tak zwanej pamięci wirtualnej znajdującej
się na dysku twardym, która jest
rozszerzeniem tej pierwszej. W pamięci fizycznej przechowywane są informacje oraz dane, które
w danym momencie wykorzystuje procesor komputera.
Głównym aspektem, tak często podkreślanym, przemawiającym za wykorzystywaniem
architektury
64 bitowej są zwiększone możliwości adresowania. Maksymalny obszar
pamięci operacyjnej, jaki możemy wykorzystać w systemach 32 bitowych wynosi 4
gigabajty. Rozmiar ten można co prawda zwiększyć stosując różnego rodzaju zabiegi
offsetowe (segmentacji),
jednakże nie bez straty na wydajności. W dzisiejszych czasach jest to już bardzo niewielka ilość, sprzedawane są
moduły pamięci o pojemności 2 x 2 GB, więc kres sposobności został wyczerpany.
Systemy bazujące na architekturze x64 posiadają wielokrotnie większe możliwości,
które dzisiaj wydają się być nawet wręcz olbrzymie.
Ilość wariacji 64 bitowego adresu wynosi 264, czyli
18446744073709551616 (16 eksabajtów). Poniższa tabela przedstawia porównanie możności w tym zakresie systemów
Windows 64
bitowych z 32 bitowymi.
Porównanie podsystemu pamięci w Windows x64 z
architekturą x86 (obecna implementacja)
| Komponent |
x64 (64 bity) |
x86 (32 bity) |
| Virtual memory |
16 terabajtów |
4 GB |
| Paging file size |
512 terabajtów |
16 terabajtów |
| Hyperspace |
8 GB |
4 MB |
| Paged pool |
128 GB |
470 MB |
| Non-paged pool |
128 GB |
256 MB |
| System cache |
1 terabajt |
1 GB |
| System PTEs |
128 GB |
660 MB |
Przyjrzyjmy się bliżej poszczególnym komponentom wchodzącym w skład pamięci i
dowiedzmy sie nieco więcej na ich temat.
- Virtual memory - pamięć wirtualna komputera. Jest to
metoda zwiększania fizycznej ilości pamięci operacyjnej poprzez plik
stronicowania lub swapa. W 32 bitowych Windows jest to tylko 4 GB. W
porównaniu z 16 terabajtami dostępnymi w systemach x64 jest to bardzo
niewiele.
- Paging File - plik stronicowania, który system
operacyjny wykorzystuje do zwiększania pamięci na potrzeby funkcji pamięci
wirtualnej.
- Hyperspace - specjalna przestrzeń używana do mapowania
oraz używana podczas tworzenia nowych procesów.
- Paged pool - region pamięci wirtualnej w systemie,
który może być stronicowany.
- Non-paged pool - region pamięci wirtualnej, który nie
może być stronicowany
- System cache - obszar wykorzystywany do mapowania
otwartych plików w systemowym buforze.
- System PTEs - region PTEs (Page Table Entries) używany
do mapowania przestrzeni I/O, stosu jądra oraz list deskryptora pamięci.
Obsługa pamięci w Windows Vista
Poniższa tabela przedstawia możliwości poszczególnych edycji Windows Vista w
zakresie obsługi pamięci.
Obsługa pamięci w Windows Vista
| Edycja Windows Vista |
x64 |
x86 |
| Home Basic |
8 GB |
4 GB |
| Home Premium |
16 GB |
| Business |
128 GB |
| Enterprise |
| Ultimate |
Jak widzimy możliwości systemu 32 bitowego, niezależnie od edycji, kończą się
oczywiście na 4 gigabajtach. Wersje 64 bitowe, zależnie od wersji, dysponują
zwiększonymi możliwościami. Home Basic oraz Premium, przeznaczone do użytku
domowego, mają niewiele poszerzony rozmiar obsługi pamięci (odpowiednio 8 i 16
GB), lecz w
wersjach biznesowych wartości te już są naprawdę imponujące i wynoszą tyle samo co
w przypadku Windows
XP Professional x64, czyli 128 gigabajtów.
Po co tak dużo tej pamięci?
Zastanówmy się jednakże co dają możliwości większego zaadresowania
pamięci i zobaczmy jaki aspekt praktyczny daje architektura x64. W wielu zastosowaniach wspomniane 4 gigabajty są już poważną granicą,
która dziś staje się poważnym problemem. Systemy bazujące na 64 bitowej architekturze
umożliwiają pokonanie tej poprzeczki. W niedługim czasie programy opierające się na x64 staną
się chlebem powszednim. Spowodowane jest to tym, iż aplikacje stają się coraz
bardziej rozbudowane, wzrastają ich możliwości, ale co za tym idzie, rosną także
wymagania. W 32 bitowych systemach Windows jeden proces może otrzymać na swoje
potrzeby maksymalnie tylko połowę pamięci, czyli w tym wypadku będą to dwa
gigabajty. Biorąc pod uwagę takie aplikacje, jak programy do tworzenia grafiki 3D
jest to stosunkowo mało. Na szczęście bardziej wyspecjalizowane narzędzia są już
udostępniane przez ich producentów w wersjach 64 bitowych. Dzięki temu możemy
zwiększyć wydajność i wykorzystać potrzebną moc. Jakby tego było
mało - w systemach x64 z rodziny Windows maksymalny rozmiar pamięci wirtualnej
wynosi 16 terabajtów, jest to jednakże implementacja tymczasowa, gdyż
w przyszłości może to być aż 16 eksabajtów!
Podsumowanie
Dzięki implementacji x64 otrzymujemy wielką przestrzeń adresową, która w już
niedługim czasie zapewne zostanie dobrze wykorzystana. Na jak długo jednak
architektura ta wystarczy? Komputerowa historia zna podobne przypadki,
przykładem mogą tu być, już sławne, słowa Billa Gates'a, które wypowiedział w 1981
roku, mianowicie, że każdemu użytkownikowi 640 KB pamięci operacyjnej powinno, aż
nadto, wystarczyć. Jak bardzo się mylił? To już chyba wiemy dzisiaj wszyscy...
Zapewne podobna sytuacja będzie miała miejsce za kilkanaście lat, kiedy to
możliwości architektury x64 zostaną wyczerpane, więc nie pozostaje nam nic
innego, jak tylko zaprosić już dzisiaj wszystkich do lektury kolejnego cyklu
artykułów, tym razem poświęconych specyfikacji... 128 bitowej.