Niedawno zaktualizowałem pamięć RAM komputera do 4 GB. Moja 32-bitowa instalacja systemu Windows pokazuje tylko 3574 MB pamięci. Jak zmusić system Windows do korzystania z pełnej ilości pamięci RAM?
Niedawno zaktualizowałem pamięć RAM komputera do 4 GB. Moja 32-bitowa instalacja systemu Windows pokazuje tylko 3574 MB pamięci. Jak zmusić system Windows do korzystania z pełnej ilości pamięci RAM?
Odpowiedzi:
Nie możesz:
Zobacz koleś, gdzie są moje 4 gigabajty pamięci RAM?
jeśli chcesz dopasować pamięć i urządzenia do 32-bitowego zakresu adresów: nie wszystkie dostępne 4 GB przestrzeni adresowej można przekazać do pamięci.
Co się stanie, jeśli wyjdziesz i kupisz 4 GB pamięci na komputer?
W twojej mapie pamięci jest dziura dla IO. (Teraz jest to tylko 25% całkowitej przestrzeni adresowej, ale wciąż jest to duża dziura.) Tak więc dolne 3 GB pamięci będzie dostępne, ale jest problem z ostatnim 1 GB.
Jedynym praktycznym rozwiązaniem jest instalacja 64-bitowego systemu operacyjnego. W systemie Windows Vista i nowszych 32-bitowe i 64-bitowe klucze licencyjne są wymienne. Jeśli możesz pobrać nośnik instalacyjny systemu Windows dla 64-bitowej wersji systemu operacyjnego, możesz zainstalować go ponownie, używając oryginalnego klucza licencyjnego.
Po pierwsze, Windows XP (32-bitowy) obsługuje tylko 4 GB. Dotyczy to nie tylko systemu Windows XP. Zamiast tego dotyczy 32-bitowych komputerów stacjonarnych z systemem Windows - 32-bitowe systemy Linux z PAE, a wiele 32-bitowych wersji systemu Windows Server obsługuje ponad 4 GB na połączony artykuł. Nigdy nie zobaczysz ponad 4 GB, jeśli używasz 32-bitowego systemu Windows XP. Znalazłem jednak bardziej szczegółowy powód, dla którego twój system pokazuje mniej dostępnego pamięci RAM niż to, co jest faktycznie zainstalowane.
W przypadku problemu z pamięcią RAM 3 GB, a nie 4 GB (blog Microsoft MSDN):
Ze względu na decyzję architektoniczną podjętą dawno temu, jeśli masz zainstalowane 4 GB fizycznej pamięci RAM, system Windows może zgłosić tylko część fizycznej 4 GB pamięci RAM (zakres od ~ 2,75 GB do 3,5 GB w zależności od zainstalowanych urządzeń, chipsetu płyty głównej i BIOS).
Takie zachowanie wynika z „rezerwacji IO zamapowanych w pamięci”. Zastrzeżenia te nakładają się na fizyczną przestrzeń adresową i maskują te adresy fizyczne, aby nie mogły być użyte do pamięci roboczej. Jest to niezależne od systemu operacyjnego uruchomionego na komputerze.
Znaczne fragmenty przestrzeni adresowej poniżej 4 GB (najwyższy adres dostępny w wersji 32-bitowej) są rezerwowane do użytku przez sprzęt systemowy:
- BIOS - w tym obsługa ACPI i starszych wersji wideo
- Magistrala PCI, w tym mosty itp.
- Obsługa PCI Express zarezerwuje co najmniej 256 MB, do 768 MB, w zależności od zainstalowanej pamięci karty graficznej
Oznacza to, że typowy system może widzieć od ~ 256 MB do 1 GB przestrzeni adresowej poniżej 4 GB zarezerwowanej do użytku sprzętowego, do którego system operacyjny nie może uzyskać dostępu. Specyfikacje chipsetów Intela są całkiem dobre w wyjaśnianiu, które zakresy adresów są domyślnie zarezerwowane, aw niektórych przypadkach wzywają, że 1,5 GB jest zawsze zarezerwowane, a zatem niedostępne dla systemu Windows.
Więcej informacji znajdziesz w źródle. Możesz jednak skorzystać z zainstalowanych pełnych 8 GB, postępując zgodnie z tymi instrukcjami .
Mówiąc z własnego doświadczenia, nie jest to nowy problem. Ten sam problem spotkałem kilka lat temu, kiedy zbudowałem 4-bitowy 32-bitowy system Windows Vista, kiedy Vista została wydana po raz pierwszy. W sieci było niezliczona liczba postów na forum związanych z tym samym tematem.
Przeczytaj także Microsoft KB 929605 - Pamięć systemowa zgłaszana w oknie dialogowym Informacje o systemie w systemie Windows Vista jest mniejsza niż można się spodziewać, jeśli zainstalowano 4 GB pamięci RAM .
Jeśli używasz 32-bitowego systemu Windows XP, nie jest to możliwe. Ponieważ nie ma wystarczającej przestrzeni adresowej, aby skorzystać z dodatkowej pamięci RAM
Najlepszym rozwiązaniem byłoby uaktualnienie do 64-bitowej wersji systemu Windows, ponieważ obsługuje on ponad 4 GB pamięci RAM.
2^32
wystarcza „przestrzeń adresowa”, aby zmieścić 4 GiB. Mylisz przestrzeń adresową i pamięć fizyczną. Każdy proces we współczesnych wersjach systemu Windows widzi pełną przestrzeń adresową 4 GiB, chociaż zwykle możliwe jest użycie tylko 2 GiB ze względu na partycjonowanie wirtualnej przestrzeni adresowej przez UM / KM.
Jak powiedzieli inni, nie jest to możliwe.
Wyjaśnienie:
Każdy element pamięci ma adres. System operacyjny określa długość adresu. W przypadku starszych systemów operacyjnych długość adresu wynosi 32 bity, co pozwala tylko na 2 ^ 32 (4 294 967 296) adresów. Teraz, patrząc na tę liczbę, może się wydawać, że twój system operacyjny powinien obsługiwać 4 GB, ale cały inny sprzęt (co najważniejsze, ram wideo na karcie graficznej), który ma pamięć wewnętrzną, również jest mapowany do tej przestrzeni adresowej.
To tak, jakbyś próbował dystrybuować 1 200 000 sześciocyfrowych numerów telefonicznych.
Stara płyta główna obsługiwała tylko 4 GB fizycznej pamięci RAM, współczesne obsługują znacznie więcej. Procesor Intel P4 zawsze może adresować więcej niż 4 Gb (używając czegoś zwanego rozszerzeniem adresu fizycznego lub PAE)
Microstoft podjął „decyzję marketingową”, aby nie obsługiwać fizycznej przestrzeni adresowej większej niż 4 Gb w „klienckich” wersjach wszystkich 32-bitowych wersji swoich systemów operacyjnych - która obejmuje wszystkie z w2k do 32-bitowego systemu Windows 8 (jeśli odwiedzasz MS KB zauważycie, że wersje 32-bitowego serwera mogą obsługiwać znacznie więcej - do 128 Gb w 32-bitowej wersji „Enterprise Edition” - dlatego „właściwe” 32-bitowe systemy operacyjne (Linux itp.) na dokładnie tym samym sprzęcie mogą zawsze uzyskać dostęp do WSZYSTKICH fizyczna pamięć RAM.
(na marginesie - 32-bitowi użytkownicy Win7 mieli tak dość tego „głupiego” limitu, że „zhakowali” Kernal, aby umożliwić dostęp do pełnej fizycznej pamięci RAM. Nie trzeba dodawać, że to łamie twoją licencję i jest w rzeczywistości nielegalne w USA (DCMA )
Windows XP 32bit „rezerwuje” część przestrzeni adresowej lo 4 Gb na użytek sterownika. Nie ma powodu, dla którego nie można „adresować” fizycznej pamięci RAM przekraczającej 4 Gb (przy użyciu PAE), jednak wiele starszych STEROWNIKÓW w czasie w Windows XP Pro tego nie zrobiło i pojawia się błąd „BSOD” (nowoczesne sterowniki używają PAE poprawnie i W TEORII nie ma powodu, dla którego potrzebują więcej niż około 32 MB stron „lo” (jako „okienko”) łącznie, nawet do obsługi karty graficznej 2 Gb (2 gb będzie w przestrzeni „hi”, tj. powyżej 4 Gb znak)
W XP SP2 MS prawie trzykrotnie zwiększyło przestrzeń adresową „zarezerwowaną” dla kierowców, starając się wyeliminować BSOD i tak było odtąd (MS nie chce „debugować” sterowników == chcą sprzedać Ci 64-bitowy OS zamiast). Sprzęt RZECZYWISTY ma prawie zerowy wpływ na to „zarezerwowane” miejsce.
Tak więc, jeśli masz 4 GB lub więcej fizycznej pamięci RAM, najwięcej XP Pro sp2 + zobaczy około 3,25 GB. Resztę można uzyskać za pomocą różnych sterowników pamięci RAM (oczywiście nie MS) = idź poszukać czegoś, co używa „Niewidocznej przestrzeni adresowej” lub „dużej przestrzeni 4 GB” w XP Pro) .. użycie „brakującej” .75 GB jako części „pamięci wirtualnej” może przyspieszyć system ...
Pamiętaj, że przełącznik / 3G może umożliwiać 32-bitowym aplikacjom dostęp do 3Gb w 32-bitowym systemie operacyjnym (jeśli mają flagę LargeAddressAware w nagłówku .exe - w takim przypadku mogą uzyskać dostęp do 4 Gb w 64-bitowym systemie operacyjnym), ale na XP musisz również podać / USERVA, aby system operacyjny nie został „wyciśnięty” z pamięci RAM :-)
Jeśli chcesz skorzystać z pełnego 4 GB, jedyną opcją jest uaktualnienie do 64-bitowego systemu operacyjnego:
Normalny system Windows XP ma tylko 32 bity, co ogranicza pamięć do maks. 3,5 GB. Sprawdź link opublikowany przez VonC, aby uzyskać szczegółowe informacje na ten temat.
Jeśli używasz zintegrowanej grafiki, możesz to wyłączyć, a to oznacza, że system będzie w stanie zająć się większą ilością pamięci RAM systemu.
Ale najlepszym rozwiązaniem jest na pewno uzyskanie systemu operacyjnego x64.
W każdym razie nie bez powodu. Większość programów działa w wersji x64 z XP / Vista / 7 z warstwą emulacji x86. Problemem mogą być tylko sterowniki .
Jest to dość skomplikowane pytanie, ponieważ wymaga kilku składników. Te elementy to:
Ostatni element nie dotyczy bezpośrednio problemu, ale dodałem go ze względu na kompletność.
W skrócie, wszystkie powyższe składniki muszą obsługiwać ponad 4 GB pamięci, aby odnieść sukces.
Zacznijmy od procesora. Ale najpierw należy zauważyć, że procesor nie ma żadnej magicznej zdolności do korzystania z żadnej pamięci . Zamiast tego może po prostu uzyskać dostęp do dowolnego adresu w swojej przestrzeni adresowej . Teraz nadchodzi bitness. 32-bitowy procesor może uzyskiwać dostęp do adresów w zakresie od 0 do 4 GiB. Zakres ten musi jednak uwzględniać nie tylko dostępną pamięć RAM, ROM, SMRAM , tabelę mapowania adresów graficznych, ale także wszystkie wymagane we / wy mapowane w pamięcii wiele innych, które mogą wymagać znacznej części tego zakresu adresów. W rezultacie może być całkowicie możliwe, że niektóre adresy pamięci zostały zacienione przez te zastosowania i dlatego nie są dostępne dla operacji na pamięci RAM. Aby odzyskać ukrytą pamięć, konieczne jest rozszerzenie przestrzeni adresowej dostępnej dla procesora . W przypadku 32-bitowego procesora rozszerzenie adresu fizycznego może pomóc. Co pozwala na adresowanie do 64 GiB. 64-bitowy procesor działający w natywnym trybie 64-bitowym ma domyślnie dostępdo 16 EiB, który jest raczej ogromny i nie wymaga takich sztuczek. Ale z drugiej strony 64-bitowy procesor nie może używać adresowania 64-bitowego, więc w rzeczywistości są one nadal ograniczone przez szynę adresową do mniejszego zakresu niż 16 EiB.
Początkowo znajdował się w Northbridge , ale został przeniesiony na matrycę procesora przez AMD, zaczynając od procesorów AMD64 i przez Intel z procesorami Nehalem. Nawet jeśli procesor z PAE może sam uzyskać dostęp do 64 GiB, nadal potrzebuje MCU, aby uzyskać dostęp do pamięci RAM. Mówiąc najprościej: procesor uzyskujący dostęp do określonego adresu otrzymuje odpowiedź z urządzenia PCI, pamięci ROM BIOS ROM lub MCU, jeśli żądany adres znajduje się w pamięci RAM i tak dalej. Nierzadko jednak MCU (czy to w mostku północnym, czy w CPU) obsługuje znacznie mniej miejsca adresowalnego niż 64 GiB, na przykład ze względów marketingowych.
BIOS / (U) EFI są również ważne, ponieważ ich obowiązkiem jest konfigurowanie sprzętu, zanim cokolwiek będzie mogło działać. Między innymi są odpowiedzialni za mapowanie całej przestrzeni adresowalnej procesora z zakresami pamięci urządzeń, magistrali, pamięci RAM i tak dalej. Co ciekawe, może się zdarzyć, że cała pamięć RAM zostanie podzielona na części i zmapowana w kilku dostępnych niesąsiadujących miejscach. Problem z BIOS-em polega na tym, że programiści mogą spodziewać się nie więcej niż 3 GiB użycia pamięci RAM w swoim systemie i dlatego BIOS nie będzie poprawnie mapował całej pamięci, która zostanie użyta. Najprawdopodobniej tak się nie stanie z (U) EFI.
System operacyjny powinien również obsługiwać adresowanie ponad 4 GiB pamięci. Mówiąc ściślej, powinien skonfigurować procesor do korzystania z PAE. Niektóre 32-bitowe systemy operacyjne są w pełni zdolne do korzystania z PAE i uzyskiwania dostępu do więcej niż 4 GiB, inne mają ograniczenia programowe dotyczące maksymalnej pamięci, nawet jeśli umożliwiają PAE dla większego bezpieczeństwa (przykładem jest Windows XP). Po raz kolejny 64-bitowe systemy operacyjne oczywiście nie mają takich trudności i zwykle obsługują więcej niż 4 GiB pamięci.
Ostatni punkt pochodzi z innego świata, ponieważ aplikacje zwykle działają w wirtualnej przestrzeni adresowej , dodałem ją ze względu na kompletność. Niemniej jednak podczas kompilacji wymaga kilku dodatkowych kroków, aby aplikacja mogła zużywać więcej pamięci. Domyślnie aplikacja 32-bitowa może korzystać tylko z 2 GiB pamięci. Ta sama 32-bitowa aplikacja może adresować do 4 GiB pamięci, pod warunkiem, że system operacyjny to obsługuje i ma włączony procesor PAE. Mówiąc dokładniej, mógłby skorzystaćdo 3 GiB pamięci, drugi 1 GiB byłby adresowalny jako wspólne biblioteki i jądro systemu operacyjnego, ale nie do zapisu (ostatecznie zależy to od architektury systemu operacyjnego, a nie samej aplikacji). Ponownie, 64-bitowe aplikacje natywnie obsługują adresowanie ponad 4 GiB pamięci i nie mają takich problemów w pierwszej kolejności.
Aby umieścić to wszystko w perspektywie, rozważmy kilka przykładów.
Zastanów się nad kontrolerem pamięci Intel® 82945G . Witryna firmy Intel stwierdza, że nie obsługuje PAE i jest ograniczona do 4 GB pamięci RAM. Pozwala zapoznać się z akapitem 9 System Address Map
arkusza danych. Ma wiele informacji. Najbardziej interesujące jest Figure 9-3. Main Memory Address Range
:
i akapit 9.2 Main Memory Address Range (1 MB to TOLUD)
, który brzmi następująco:
Ten zakres adresów rozciąga się od 1 MB do górnej części pamięci fizycznej, która może być dostępna przez (G) MCH (jak zaprogramowano w rejestrze TOLUD). Wszystkie dostępy do adresów z tego zakresu są przekazywane (G) MCH do pamięci głównej, chyba że należą one do opcjonalnej TSEG, opcjonalnej dziury ISA lub opcjonalnej skradzionej pamięci VGA IGD. (G) MCH zapewnia maksymalną przestrzeń do dekodowania adresu pamięci głównej 4 GB (2 GB dla 82945GC / 82945GZ / 82945PL). (G) MCH nie zmienia mapowania pamięci APIC ani PCI Express. Oznacza to, że gdy ilość pamięci fizycznej zapełnionej w systemie osiągnie 4 GB (2 GB dla 82945GC / 82945GZ / 82945PL), pojawi się pamięć fizyczna, która jeszcze nie jest adresowalna i dlatego nie nadaje się do użytku przez system.
Jak mówi, ponieważ nie obsługuje PAE, ostatecznie nie jest w stanie ponownie mapować PCI i każdego innego MMIO powyżej 4 GiB, dlatego część pamięci zostanie zacieniona i nieużywana. Co oznacza, że nawet jeśli jest używany z procesorem obsługującym adresowanie 36-bitowe, pamięć powyżej 4 GiB będzie nadal niedostępna, a część pamięci zbliżona do limitu 4 GiB również nie będzie używana.
Odwrotnie, rozważmy kontroler pamięci Intel® 82955X , który jest powiązany z poprzednim, ale ma on obsługiwać 8 GB w przeciwieństwie do poprzedniego! Paragraf arkusza danych 2.1 Host Interface Signals
sugeruje, że wykorzystuje on 36-bitową magistralę adresową do procesora, co jest dobrym znakiem. Akapit 7 System Address Map
zawiera dodatkowe informacje. Porównaj Figure 7-1. System Address Ranges
z tym, który widzieliśmy wcześniej:
To wyraźnie sugeruje, że jest w stanie wykorzystać więcej niż 4 GiB pamięci RAM, pod warunkiem, że jest używany z procesorem również zdolnym do adresowania 36-bitowego. Warto również zauważyć, że akapit to 7 System Address Map
stwierdza MCH supports 64 GB of addressable memory space
. Jednak wyjaśniono dalej, że maksymalna użyteczna pamięć RAM jest ograniczona do 8 GB. To po raz kolejny deklaruje różnicę między adresowalnym aużyteczny, ponieważ próbowałem przekazać w sekcji CPU.
Podsumowując, chciałbym zauważyć, że dwa pokrewne układy mają w rzeczywistości ogromną różnicę w obsłudze pamięci.
Sprawdźmy procesor Intel® Pentium® Extreme Edition 840 . Obsługuje 64-bitowy zestaw instrukcji, ale nie obsługuje PAE. Co oznacza, że jeśli działa w trybie 32-bitowym, nie będzie w stanie użyć więcej niż 4 GiB pamięci RAM (proszę popraw mnie, jeśli się mylę z tym założeniem). Pozwala sprawdzić arkusz danych i tabelę Table 4-3. Signal Description
. Mimo że ten procesor jest zdolny do obsługi 64-bitów, nadal jest ograniczony przez swoją szynę adresową o szerokości 36-bitów, ograniczając go do dostępnego zakresu adresów od 0 do 64 GiB.
Teraz sprawdźmy nowszy procesor. Weźmy na przykład procesor Intel® Core ™ i7-7700 . Jest reklamowany do obsługi do 64 GB pamięci RAM. Teraz sprawdźmy jego arkusz danych. Akapit 2.3 System Address Map
przekonuje nas, że zakres adresowalny tego procesora wynosi od 0 do 512 GiB z powodu 39-bitowej magistrali adresowej. Zauważ, że wciąż jest daleko od teoretycznego zakresu 16 EiB dla 64-bitowego procesora. Zaskakujące jest to, że dodatkowo wyjaśnia, że ten procesor obsługuje maksymalnie 32 GiB użytecznej pamięci RAM (w przeciwieństwie do 64 GB na stronie internetowej). Istnieje również interesujący obraz Figure 2-2. System Address Range Example
:
wykonuje dobrą robotę ilustrując problem z cieniowaniem pamięci przez urządzenia PCI itp. Sugeruje również sposób przezwyciężenia tego problemu poprzez mapowaniezakres od rzeczywistej pamięci RAM do górnego zakresu adresów w zakresie adresowalnym przez CPU . W ten sposób odzyskujesz tę ukrytą pamięć do użytku. Zauważ, że to ponowne mapowanie jest wykonywane przez BIOS / (U) EFI przy inicjalizacji sprzętowej i właśnie z tego powodu umieściłem BIOS / (U) EFI na powyższej liście punktowej.
Wziąłem produkty Intela jako przykłady, ale to samo dotyczy AMD.
Teraz porozmawiajmy o zaangażowaniu systemów operacyjnych. Jądro Linux zawiera pełną obsługę trybu PAE, poczynając od wersji 2.3.23, i jest możliwe, że w systemie 32-bitowym można używać więcej niż 4 GiB pamięci z jądrem Linux. Należy jednak pamiętać o nieokreślonym problemie z 32-bitowym jądrem Linuksa w systemie z więcej niż 4 GiB pamięci RAM na niektórych urządzeniach (z mojego doświadczenia wynika, że ma to coś wspólnego ze strzelaniem do TLB). W każdym razie Wikipedia ma dobre informacje na temat obsługi PAE . Interesujące jest to, jak Windows XP jest ograniczony do 4 GB, podczas gdy Windows Server 2003 Enterprise / Datacenter SP2 jest w stanie uzyskać pełne 64 GB. To samo dotyczy innych par Windows-Desktop.
Jak widać, istnieje wiele kombinacji między wymienionymi komponentami, aw niektórych przypadkach może pomóc wymiana procesora lub systemu operacyjnego. Znacznie trudniej jest poradzić sobie z BIOS / (U) EFI lub MCU, ponieważ ten pierwszy jest zastrzeżony i wbudowany w system i nie jest łatwy do modyfikacji, ten drugi jest wbudowany w procesor lub lutowany na płycie.
pokazuje 3574 MB pamięci RAM, ponieważ tyle pamięci RAM jest DARMOWE i dostępne dla komputera w dowolnym momencie. Ta liczba to pamięć RAM, do której komputer ma pełny dostęp, ponieważ programy i ustawienia wstępnie zainstalowane na komputerze używają określonej ilości pamięci RAM, która w twoim przypadku wynosi 426 MB. Mój 6 GB 64-bitowy komputer pokazuje 5,8 GB dostępnej pamięci RAM, a nie pełne 6 GB. Najlepszym rozwiązaniem byłoby uaktualnienie komputera