Jeśli pamięć jest adresowalna bajtowo, nie powinna być
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
Ogólne wyszukiwanie Google mówi, że maksymalnie 8 GB lub 16 GB.
Jak to jest prawda? Jak to zależy od systemu operacyjnego?
Jeśli pamięć jest adresowalna bajtowo, nie powinna być
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
Ogólne wyszukiwanie Google mówi, że maksymalnie 8 GB lub 16 GB.
Jak to jest prawda? Jak to zależy od systemu operacyjnego?
Odpowiedzi:
Istnieje wiele czynników przeplatających.
Po pierwsze, nigdy nie będziesz w stanie złożyć systemu, który ma 2 64 bajty (16 eksibajtów) fizycznej pamięci RAM.
Po drugie, fakt, że architektura używa 64-bitowych wskaźników, nie oznacza, że wszystkie bity tych wskaźników są rzeczywiście używane. Warto zauważyć, że obecne procesory x86-64 (znane również jako AMD64 i obecne 64-bitowe układy Intela) faktycznie używają 48-bitowych linii adresowych (AMD64) i 42-bitowych linii adresowych (Intel) (patrz http://en.wikipedia.org/wiki / X86_64 # Virtual_address_space_details ), teoretycznie dopuszczając 256 terabajtów fizycznej pamięci RAM.
Po drugie, płyty główne mają własne ograniczenia dotyczące ilości pamięci RAM, którą mogą obsługiwać, zarówno fizycznie, jak i logicznie. Fizycznie dostępnych będzie tylko tyle miejsc dla pamięci RAM. Jeśli chodzi o granice „logiczne”, nie do końca rozumiem, dlaczego nadal tak jest w przypadku x86-64 (kontroler pamięci już dawno migrował do samego procesora), ale tak jest. Przypuszczalnie ścięto rogi na liniach adresowych, aby zaoszczędzić kilka dolarów na projektowaniu i produkcji.
Po trzecie, system operacyjny może mieć wewnętrzne ograniczenia co do tego, ile pamięci RAM może skutecznie obsługiwać. Częściowo ma to na celu uniknięcie zbyt dużych struktur danych w celu śledzenia wykorzystania pamięci, której tak naprawdę nie ma. Ostatnio sprawdziłem, że Linux pozwala 128 TB wirtualnej przestrzeni adresowej na proces na x86-64 i teoretycznie może obsłużyć 64 TB fizycznej pamięci RAM.
Po czwarte, niektóre systemy operacyjne (np. Windows) sztucznie ograniczają ilość pamięci RAM, którą można zastosować jako taktykę, aby użytkownicy uaktualnili do droższych wersji, jeśli chcą więcej pamięci RAM (Windows 7 Starter jest ograniczony do 2 GB, Home Basic do 8, Home Premium do 16, a Professional i powyżej mają 192 GB, a wersje Windows Server mają znacznie wyższe limity).
Jeśli używasz MS Windows, maksymalna pamięć jest ograniczona przez system operacyjny.
W systemie Windows 7 maksymalne wartości to:
Zakres Windows Server 2008 waha się od 8 GB na poziomie podstawowym do 2 TB na początku linii.
Zobacz http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx, aby uzyskać pełną listę.
Limity te są głównie ze względów marketingowych. Ograniczając tańsze wersje, sprawiają, że wersje z wyższej półki (względnie) są bardziej atrakcyjne.
Myślę, że najnowsze kompilacje Linuksa działają z około 32 TB pamięci RAM, chociaż nie wszystkie urządzenia mogą to obsługiwać.
64-bitowa maszyna powinna być w stanie adresować do 2 64 jednostek adresowalnych (w architekturach zaprojektowanych w ciągu ostatnich kilku dekad jednostkami adresowalnymi są niezmiennie bajty, inaczej oktety). Jeśli zdefiniujesz „gigabajt” jako 2 30 jednostek adresowalnych, to tak, 2 34 gigabajty byłyby innym sposobem wyrażenia tej samej liczby.
Jaka wyszukiwarka Google dała te absurdalnie małe wyniki? Być może strona, którą znalazłeś, mówiła o ilości pamięci RAM, którą możesz kupić w rozsądnie tanich pudełkach określonego modelu - z pewnością możesz mieć znacznie więcej pamięci RAM (wszystkie możliwe do adresowania, oczywiście), nawet w pudełkach, które są dalekie od bardzo kosztownych .
Systemy operacyjne zdecydowanie mogą i ograniczają ilość adresowalnej pamięci (na przykład mogą to zrobić, ograniczając rozmiar tabel stron, być może do pewnego konfigurowalnego maksimum, które można ustawić przez rekompilację lub inną konfigurację systemu operacyjnego - trudno jest być bardziej konkretnym, bez koncentrowania się na określonej grupie systemów operacyjnych).
Możesz mieć tyle pamięci RAM, ile chcesz, ale wszystko zależy od systemu operacyjnego i uruchomionej aplikacji - jak stwierdził ktoś inny.
Jeśli używasz głodnej aplikacji intensywnie wykorzystującej procesor, która również intensywnie działa na innym sprzęcie, takim jak dysk twardy, najlepiej poważnie rozważyć drugi procesor na całkowicie oddzielnej maszynie. Na przykład uruchomienie aplikacji bazy danych i serwera poczty elektronicznej na osobnych komputerach.
Nie ma znaczenia, ile masz pamięci - na dzisiejszym rynku cały system się zatrzyma. Pojedyncze procesory po prostu nie są w stanie obsłużyć wielozadaniowości w oczekiwany sposób.
W przypadku pojedynczego komputera z dużą ilością pamięci jest to lepsze, ale nie tak genialne, jeśli masz wiele aplikacji działających w tym samym systemie - niezależnie od ilości zainstalowanej pamięci. To jest właśnie powód, dla którego duże firmy używają nie tylko architektury 64-bitowej do adresowania większej ilości pamięci, ale także równoważą obciążenie całej partii dwoma lub więcej serwerami.
Jeśli naprawdę poważnie podchodzisz do wydajności, zdecydowanie przejdź na wersję 64-bitową, ale również rozważ równoważenie obciążenia za pomocą drugiego serwera.
Zrobiłem tę drogę - konfigurowanie pojedynczej maszyny z maksymalną pamięcią RAM. Jednak podczas uruchamiania wielu aplikacji nadal działa jak pies. To dlatego, że sam procesor po prostu nie może sobie z tym poradzić.
Moja rada to zaoszczędzić pieniądze w pamięci i kupić drugi serwer, a następnie zrównoważyć oba te obciążenia. Jest to o wiele prostsze plus - kiedy już go opanujesz - łatwo go rozszerzyć, gdy potrzebujesz większej mocy obliczeniowej i szybkości.
Ponadto, 64-bitowa maszyna o architekturze może poradzić sobie z oprogramowaniem 32-bitowym, ale z maszyną 32-bitową jesteś ograniczony tylko do aplikacji 32-bitowych lub mniejszych - w tym systemu operacyjnego.
Ponieważ cały rynek idzie 64-bitowy zarówno pod względem sprzętu, jak i oprogramowania, radziłbym wybrać 64-bitowy system na dłuższą metę, ale zapomnij o zgniataniu wszystkich na jednej maszynie z dużą ilością pamięci, ponieważ będziesz rozczarowany.
Jeśli nie masz pewności, co to jest „równoważenie obciążenia”, to google.
Myślę, że może to zająć więcej niż eksabajt „EB”.
Spójrz na ten 32-bitowy procesor może zająć 2 32 B = 4 GB, ale co najwyżej 3 GB „ponieważ są one 1 GB dla adresów odwróconych”
Oznacza to, że procesor 64-bitowy może przyjąć 2 64 B = 16 EB, ale nie mogę użyć adresów zablokowanych dla odwróconego. więc możemy powiedzieć, że procesor 64-bitowy wymaga więcej niż 1 EB. a ta specyfikacja nie zależy od tego, jakiego systemu operacyjnego używał komputer lub jakiego modelu.
Biorąc za przykład procesor Intel lub AMD, istnieje kilka ograniczeń zarówno pamięci fizycznej, jak i pamięci wirtualnej. Inni mówili o ograniczeniach sprzętowych i ograniczeniach płyty głównej, ale są też ograniczenia wewnętrzne.
Wpis w tablicy strony terminala w MMU zawiera 52 znaczące bity adresu fizycznego i może teoretycznie odwzorować do 4096 TB fizycznej pamięci RAM.
MMU implementuje 4-poziomową tabelę stron, której najwyższy poziom składa się z 512 × 512 GB wpisów. Tak więc pamięć wirtualna jest ograniczona do 256 TB.
O ile wiem, wszystkie 64-bitowe systemy operacyjne implementują DMAP (mapę bezpośrednią), co jest bardzo wygodne. Ponieważ jednak pamięć wirtualna jest ograniczona do 256 TB, rozmiar DMAP jest również ograniczony. Zazwyczaj 128 TB jest zarezerwowane dla trybu użytkownika, a 128 TB dla jądra. Z tych 128 TB dla jądra maksymalnie połowa może być zarezerwowana dla DMAP. Ze względu na użyteczność DMAP, systemy operacyjne zwykle ograniczają pamięć fizyczną do tego, co potrafi DMAP.
Więc większość (wszystkich?) 64-bitowych systemów operacyjnych dla Intel / AMD obsługiwana pamięć fizyczna jest ograniczona do około 64 TB, pozostawiając 64 TB dla ogólnej pamięci wirtualnej jądra i 128 TB dla pamięci wirtualnej użytkownika.
-
Wewnątrz procesora pamięci podręczne procesora mają również ograniczenie liczby przechowywanych bitów adresu fizycznego, ponieważ każdy dodatkowy bit adresu zjada więcej tranzystorów do znacznika pamięci podręcznej. Ograniczenia pinów kontrolera DRAM niekoniecznie są ostatnim słowem, ponieważ pamięć może być również adresowana poprzez łącza DMI.
Różne architektury procesorów (np. ARM, PowerPC itp.) Będą miały różne ograniczenia.