Czytałem ten artykuł na temat komputerów 64-bitowych i wspomina:
Na przykład architektura AMD64 od 2011 roku dopuszczała 52 bity dla pamięci fizycznej i 48 bitów dla pamięci wirtualnej
Sądzę, że rozsądniej byłoby pozwolić na więcej pamięci wirtualnej niż pamięci fizycznej, więc dlaczego tak naprawdę jest odwrotnie?
Dodatkowe pytanie: co to znaczy „pozwolić” na 52 lub 48 bitów w architekturze 64-bitowej? Do czego służą inne bity?
memory
64-bit
computer-architecture
dougvk
źródło
źródło
Odpowiedzi:
Oto zdjęcie tabeli stron AMD64 (z AMD Architecture Programmer's Guide, Vol. 2, Rev 3.23, 2013, page 132).
„Naturalny” rozmiar strony w architekturze AMD64 wynosi 2 12 = 4096 bajtów. (Istnieją tryby, w których możesz mieć 2 21 = 2 MB stron, ale na razie je zignorujemy).
Każdy wpis w tablicy strony (PTE) (lub, w zależności od poziomu zwanego PDE, PDPE lub PML4E), ma 64 bity = 2 3 bajty. Na stronie jest 2 9 wpisów. Zatem 4 poziomy tabeli stron dają 4x9 + 12 = 48 bitów adresu wirtualnego na proces. Spacerowanie po stronie stron jest kosztowne, więc nie zwiększą się do 5 lub 6 poziomów, chyba że / dopóki nie będzie popytu ze strony konsumentów.
Nie jestem pewien, dlaczego zdecydowali się na 52-bitowy limit adresu fizycznego. W przyszłości można to rozszerzyć do 63 bitów. Przy cenach z października 2013 r. (Około 1 USD / gigabit dla układów 4 Gb / s) zbudowanie pamięci 2 52 bajtów kosztowałoby ponad 32 000 000,00 USD , więc upłynie trochę czasu, zanim pojawi się jakiekolwiek znaczące zapotrzebowanie na zwiększenie limitu adresu fizycznego. Istnieje wiele powodów, dla których chcesz zachować adresy fizyczne tak małe, jak to możliwe: na przykład tagi TLB i pamięci podręcznej muszą przechowywać adresy fizyczne.
Niekoniecznie wstecz jest, że jest więcej pamięci fizycznej niż wirtualnej. Pamięć wirtualna jest na proces, podczas gdy pamięć fizyczna jest współdzielona przez wszystkie procesy. Tak więc serwer z 48-bitowymi adresami wirtualnymi i 2 52 bajtami pamięci może obsługiwać 16 jednoczesnych procesów i nadal gwarantuje, że nie będzie potrzeby wymiany.
źródło
Kilka punktów do rozważenia, fizyczna pamięć RAM jest droga. Pewnie 16 GB jest tańsze teraz, gdy 4 GB było zaledwie kilka lat temu, ale 2 ^ 64 (16 eksabajtów) śmiesznie duże.
Tak więc rozszerzenia AMD x86 dla x64 „pozwoliły” do 2 ^ 52 poprzez ograniczenie rejestrów . Robi to dwie rzeczy, obniża koszt procesorów i poprawia wydajność. Więcej niewykorzystanych rejestrów oznacza, że jest dużo pustej przestrzeni, którą należy wziąć pod uwagę podczas operacji.
A jeśli nie jesteś matematykiem ... Różnica między trzema rozmiarami jest ogromna! Nie jestem guru matematyki, ale po przecinku 52 bity to około 0,02% z 64 bitów. 48 bitów to 6% z 52. (ktoś sprawdza moją matematykę?)
Jeśli chodzi o to, dlaczego AMD zezwoliło na więcej fizycznej pamięci RAM niż na wirtualną, artykuł stwierdza, że dzieje się tak, ponieważ AMD myślało o serwerach. Serwery potrzebują dużej ilości fizycznej pamięci RAM. Wirtualna pamięć RAM jest zbyt wolna, aby obsługiwać przeciętne aplikacje serwerowe dla setek lub tysięcy pracowników.
Moje własne myśli: Opuściliśmy czas, kiedy pamięć RAM była niewielka, a dyski twarde musiały obsługiwać pamięć RAM. Cena pamięci RAM spadła do punktu, w którym przeciętna osoba może włożyć więcej niż wystarczającą ilość pamięci RAM. Weź typowe aplikacje, takie jak Office, który wymaga 1-2 GB pamięci RAM. Mój komputer 7 lat temu mógł sobie z tym poradzić. Chociaż przy prędkości odczytu i zapisu na dysk, mam nadzieję, że nigdy nie będę musiał pobierać pliku 7 GB z pamięci wirtualnej (używając starej filozofii PM * 2.5).
Mogę również założyć, że AMD chciało zostawić miejsce dla rejestrów, które używają fizycznych rejestrów RAM, takich jak RAM na zintegrowanych GPU.
źródło