Ile pamięci może jednocześnie adresować urządzenie 64-bitowe?

32

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?

Moeb
źródło
8 GB jest oczywiście niedostępne, ponieważ moja maszyna robocza ma 12 GB i może zająć się wszystkim, plus GB pamięci RAM wideo, a także cały mój sprzęt i całą moją pamięć wirtualną.
Newegg sprzedaje pakiet pamięci RAM o pojemności 32 GB, przeznaczony dla jednego komputera. Obsługa 32-bitowych 3,2 GB, a 128-bitowy obsługuje miliony terabajtów, więc myślę, że 64-bitowy jest znacznie więcej niż dwa razy większy niż 32-bitowy.
tkbx

Odpowiedzi:

53

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

Nicholas Knight
źródło
1
+1 za wzmiankę o fizycznych liniach adresowych będących zwykle << liczbą bitów w rejestrze adresu na architekturach 64-bitowych
Paul R
3
Docenione zostanie źródło 42-bitowych linii adresowych (dodanych przez anonimową edycję). Do tego czasu osobiście nie uważam tych informacji za wiarygodne.
Bob
21
Nigdy nie mów nigdy. Prawo Moore'a wciąż obowiązuje, ostatnio słyszałem, więc systemy z 16 eksabajtami pamięci RAM mogą pojawić się w ciągu naszego życia. Potem wszyscy będziemy musieli przejść na 128-bitowe systemy operacyjne ...
Michael Hampton,
Adresy fizyczne są również ograniczone przez liczbę bitów przewidzianych dla adresów fizycznych w TLB (oraz przez rozmiar tagów pamięci podręcznej, dla których oznaczono adres fizyczny) oraz przez bity dostępne dla adresów fizycznych we wpisach tablicy strony (jeśli są one zdefiniowane przez architektura jak w x86-64, która obsługuje 52-bitową fizyczną przestrzeń adresową ze stronami 4KiB). Ta ostatnia jest twardszym limitem (architektonicznym nie opartym na implementacji), chociaż nawet architektury można zmieniać.
Paul A. Clayton
2
@MichaelHampton - NecroReply, ale nie mogłem się oprzeć :) Podwojenie co 2 lata (co jest szybsze niż najnowsze trendy) nadal zajęłoby 60 lat, aby uzyskać 16 GB do 16EB. Do tego czasu wątpię, by „prawa” dotyczące tranzystorów krzemowych miały jakieś znaczenie;)
MatBailie,
9

Jeśli używasz MS Windows, maksymalna pamięć jest ograniczona przez system operacyjny.

W systemie Windows 7 maksymalne wartości to:

  • Starter: 2 GB
  • Home Basic: 8 GB
  • Home Premium: 16 GB
  • Professional: 192 GB
  • Przedsiębiorstwo: 192 GB
  • Ostateczny: 192 GB

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

Michael J.
źródło
4
To nie są tak naprawdę ograniczenia techniczne. Są to sztuczne limity wprowadzone z powodów biznesowych.
kasperd
8

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

Alex Martelli
źródło
Dlaczego 2 ^ 30 jednostek adresowalnych 1 GB? Każda jednostka adresu przechowuje 1 bit, więc 2 ^ 30 jednostek adresu przechowuje tyle bitów, które wynoszą 0,133417728 gigabajtów. czego mi brakuje?
Darshan Chaudhary
1
@DarshanChaudhary 2 ^ 30 to liczba różnych adresów. Każdy adres identyfikuje jeden bajt pamięci, a nie jeden bit.
David Moles,
3

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.

ThinkBIG
źródło
2

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.

Mohammad Malkawie
źródło
1
W praktyce procesory 64-bitowe zwykle mają 48-bitową przestrzeń adresową, która wystarcza na 256 terabajtów pamięci.
465544
Myślę, że masz na myśli ekbibajt , a nie eksabajt .
martineau
1

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.

Matthew Dillon
źródło