Нещодавно я оновив оперативну пам’ять свого комп'ютера до 4 Гб. Моя 32-розрядна установка Windows містить лише 3574 Мб пам'яті. Як змусити Windows використовувати повну кількість оперативної пам’яті?
Нещодавно я оновив оперативну пам’ять свого комп'ютера до 4 Гб. Моя 32-розрядна установка Windows містить лише 3574 Мб пам'яті. Як змусити Windows використовувати повну кількість оперативної пам’яті?
Відповіді:
Ви не можете:
Дивіться чувак, де мої 4 гігабайти оперативної пам’яті?
якщо ви хочете встановити пам'ять та пристрої в 32-бітний діапазон адрес: не весь наявний 4 ГБ адресного простору можна передавати в пам'ять.
Що ж насправді станеться, якщо ви вийдете і придбаєте 4 Гб пам'яті для свого ПК?
У вашій карті пам’яті є дірка для IO. (Зараз це лише 25% загального адресного простору, але це все-таки велика діра.) Отже, найнижчі 3 Гб вашої пам’яті будуть доступні, але з цим останнім 1 Гб є проблема.
Єдине практичне рішення - встановити 64-бітну операційну систему. У Windows Vista та новіших версіях 32-бітні та 64-бітні ліцензійні ключі є взаємозамінними. Якщо ви можете отримати інсталяційний носій Windows для 64-бітної версії вашої операційної системи, ви можете перевстановити за допомогою свого оригінального ліцензійного ключа.
По-перше, Windows XP (32 біт) підтримує лише 4 ГБ. Це не стосується лише Windows XP. Натомість це стосується 32-бітових настільних систем Windows - 32-бітових систем Linux з PAE та багатьох 32-бітових версій Windows Server, які підтримують більше 4 Гб на додану статтю. Ви ніколи не побачите більше 4 ГБ, якщо використовуєте 32-розрядну Windows XP. Однак я знайшов більш детальну причину, чому ваша система показує менше доступного оперативної пам'яті, ніж те, що фактично встановлено.
З проблеми оперативної пам’яті 3 Гб, а не 4 Гб (блог Microsoft MSDN):
Через архітектурне рішення, прийняте давно, якщо у вас встановлено 4 Гб фізичної оперативної пам’яті, Windows може повідомити лише про частину фізичної 4 ГБ оперативної пам’яті (коливається від ~ 2,75 ГБ до 3,5 ГБ залежно від встановлених пристроїв, чіпсета материнської плати та & BIOS).
Така поведінка обумовлена "пам’яттю, відображеною на пам’яті IO». Ці застереження перекривають фізичний адресний простір і маскують ці фізичні адреси, щоб їх не можна було використовувати для роботи пам'яті. Це не залежить від ОС, що працює на машині.
Значні фрагменти адресного простору нижче 4 Гб (найвища адреса, доступна через 32-розрядні), зарезервовані для використання системним обладнанням:
- BIOS - включаючи підтримку ACPI та застаріле відео
- Шина PCI, включаючи мости тощо.
- Підтримка PCI Express зарезервує щонайменше 256 Мб, до 768 МБ, залежно від встановленої відеокарти
Це означає, що типова система може бачити від ~ 256 МБ до 1 Гб адресного простору нижче 4 ГБ, зарезервованого для апаратного використання, до якого ОС не може отримати доступ. Характеристики чіпсетів Intel досить добре пояснюють, який діапазон адрес стає зарезервованим за замовчуванням, а в деяких випадках зазначають, що 1,5 Гб завжди зарезервовано і, таким чином, недоступне для Windows.
Більше інформації, якщо перевірити джерело. Однак, можливо, ви зможете скористатися встановленими повними 8 ГБ, якщо дотримуєтесь цих інструкцій .
Якщо говорити з особистого досвіду, це не нова проблема. Я зіткнувся з цією самою проблемою кілька років тому, коли я вперше випустив 32-розрядну систему Windows Vista на 4 ГБ. В Інтернеті було незліченну кількість форумів, пов’язаних із цією ж темою.
Читайте також Microsoft KB 929605 - системна пам'ять, про яку повідомляється в діалоговому вікні Інформація про систему в Windows Vista, менше, ніж ви очікували, якщо встановлено 4 ГБ оперативної пам’яті .
Якщо ви використовуєте 32Bit Windows XP, це неможливо. Оскільки не вистачає адресного простору для використання додаткової оперативної пам’яті
Найкращим рішенням було б оновлення до 64-бітної версії Windows, оскільки вона підтримує 4+ ГБ оперативної пам’яті.
2^32
достатньо "адресного простору" для розміщення 4 Гб. Ви помиляєтеся адресним простором та фізичною пам'яттю. Кожен процес у сучасних версіях Windows бачить повний адресний простір 4 Гб, хоча зазвичай лише 2 Гб є придатним через розділення UM / KM віртуального адресного простору.
Як сказали інші, це неможливо.
Пояснення:
Кожен фрагмент пам'яті має адресу. Операційна система вказує довжину адреси. Для старих операційних систем довжина адреси становить 32 біти, що дозволяє лише 2 ^ 32 (4 294 967 296) адреси. Тепер, дивлячись на це число, може здатися, що ваша операційна система повинна підтримувати 4 Гб, але все інше обладнання (що найважливіше, відео таран у вашій відеокарті), що має внутрішню пам'ять, також потрапляє у цей адресний простір.
Це як ви намагаєтесь розповсюдити 1200 000 шестизначних телефонних номерів.
Стара материнська плата підтримувала лише 4 Гбіт фізичної оперативної пам’яті, сучасна підтримує набагато більше. Процесор Intel P4 завжди може адресувати більше 4 Гбіт (використовуючи те, що називається розширення фізичної адреси або PAE)
Microstoft прийняв «маркетингове рішення» не підтримувати більше 4 Гбіт фізичного адресного простору у «клієнтських» версіях усіх 32-бітових версій своїх Операційних систем - що включає в себе все, від w2k до 32-бітної Windows 8 (якщо ви відвідуєте MS KB на сторінках ви зауважите, що версії 32-бітного сервера можуть підтримувати набагато більше - до 128 Гбіт. Я вважаю, що у 32-бітній «Enterprise Edition») - саме тому «належні» 32-бітні ОС (Linux тощо) на точно однаковому апаратному забезпеченні завжди могли отримати доступ до ВСІХ фізична ОЗП.
(бічна примітка - 32-бітні користувачі Win7 настільки набридли цим "дурним" обмеженням, що вони "зламали" Кернал, щоб дозволити підйом до повної фізичної оперативної пам'яті. Потрібно говорити, що це порушує вашу Ліцензію і насправді є незаконним в США (DCMA )
32-бітний Windows XP "резервує" частину адресного простору lo 4Gb для використання драйверів. Немає причини, чому ви не можете "звертатися" до фізичної оперативної пам'яті понад 4 Гбіт (використовуючи PAE), однак багато СТАРИХ Драйверів навколо Windows XP Pro цього не зробили, і ви отримаєте помилку "BSOD" (сучасні драйвери використовують PAE правильно та В ТЕОРІЇ немає причин, чому їм потрібно більше ніж приблизно 32 Мб сторінок простору "lo" (як "вікно") навіть для підтримки графічної карти 2Gb (2gb буде знаходитись у просторі "привіт", тобто вище 4Gb позначка)
У XP SP2 MS майже втричі збільшила кількість адресного простору, «зарезервованого» для драйверів, намагаючись усунути BSOD, і це було з тих пір (MS не хочуть «налагоджувати» драйвери == вони хочуть продати вам 64-бітний Натомість ОС). Апаратне обладнання ACTUAL має майже нульовий вплив на цей «зарезервований» простір.
Так, якщо у вас є 4 Гбіт або більше фізичної оперативної пам’яті, найбільше XP Pro sp2 + буде бачити приблизно 3,25 Гбіт. До решти МОЖЕТЕ отримати доступ, використовуючи різні різні дискові драйвери оперативної пам’яті (не звичайно MS) = шукайте щось, що використовує "Простір невидимих адрес" або "високий простір 4 ГБ" в XP Pro) .. використання "відсутнього" .75 Гб як частини вашої "віртуальної пам'яті" може пришвидшити вашу систему ...
Зауважте, що перемикач / 3G може дозволити 32-бітовим програмам отримати доступ до 3 Гбіт на 32-бітній ОС (якщо у їхньому заголовку .exe встановлений прапор LargeAddressAware - у цьому випадку вони мають доступ до 4 Гбіт на 64-бітній ОС), але на XP вам потрібно вказати / USERVA, щоб не допустити «витіснення» ОС з оперативної пам’яті :-)
Якщо ви хочете використати повний 4 Гб, єдиний варіант - оновити до 64-бітної операційної системи:
Звичайна система Windows XP становить лише 32 біт, і це обмежує пам'ять до 3,5 Гбіт макс. Перегляньте посилання, розміщене VonC, щоб отримати детальну інформацію про цю тему.
Якщо ви використовуєте інтегровану графіку, ви можете відключити це, і це означає, що система зможе адресувати більше вашої оперативної пам’яті.
Але найкращим рішенням, безумовно, є отримання x64 ОС.
Причини не надто все одно. Більшість програм працює в x64 з XP / Vista / 7, що мають емуляційний шар x86. Це може бути проблема лише у драйверах .
Це досить складне питання, оскільки для розробки потрібні кілька компонентів. Ці компоненти:
Останній пункт не стосується проблеми безпосередньо, але я його додав заради повноти.
Коротше кажучи, всі перераховані вище компоненти повинні підтримувати більше 4 Гб пам'яті, щоб досягти успіху.
Почнемо з процесора. Але спочатку важливо зазначити, що процесор взагалі не має ніякої магічної здатності використовувати будь-яку пам'ять . Натомість він міг просто отримати доступ до будь-якої адреси у своєму адресному просторі . Тепер ось іде біт-річ. 32-розрядний процесор здатний отримувати доступ до адрес у межах від 0 до 4 Гб. Цей діапазон , однак повинен враховувати не тільки наявний RAM, ROM, SMRAM , Графік Адреса Remapping Таблиця але і всі необхідні відображається в пам'яті введення / виведеннята багато іншого, що може потребувати значної частини цього діапазону адрес. Як наслідок, цілком можливо, що деякі адреси пам’яті були затінені цим використанням, і тому вони недоступні для операцій з ОЗУ. Для відновлення прихованої пам'яті необхідно розширити адресний простір, доступний для процесора . У разі 32-бітного процесора може допомогти фізичне розширення адреси . Що дозволяє адресувати до 64 Гб. 64-розрядний процесор, що працює в рідному 64-бітному режимі, за замовчуванням може отримати доступдо 16 EiB, що досить величезно і не потребує таких хитрощів. Але з іншого боку, для 64-розрядного процесора використовувати 64-бітну адресацію недоцільно, тому насправді вони все ще обмежені шиною адреси меншим діапазоном, ніж 16 EiB.
Спочатку він був розташований у Northbridge , але його перенесли на процесорну матрицю AMD, починаючи зі своїх процесорів AMD64 та Intel зі своїми процесорами Nehalem. Навіть якщо процесор з PAE здатний самостійно отримати доступ до 64 GiB, йому все одно потрібен MCU для доступу до оперативної пам'яті. Простіше кажучи: центральний процесор, що отримує доступ до певної адреси, отримує свою відповідь або з пристрою PCI, флеш-пам’яті BIOS ROM або MCU, якщо запитувана адреса знаходиться в оперативній пам’яті тощо. Однак, не рідкість MCU (будь то в Northbridge або CPU) може підтримувати набагато менш адресний простір, ніж 64 Гб, наприклад, з маркетингових причин.
BIOS / (U) EFI також важливі, оскільки їх обов'язком є налаштування обладнання до того, як все дійсно може працювати. Крім усього іншого, вони відповідають за відображення всього адресного простору процесора з діапазоном пам'яті апаратних пристроїв, шин, оперативної пам’яті тощо. Цікаво, що може статися так, що вся оперативна пам’ять розділилася на частини і склала на декілька доступних непомітних місць. Проблема в BIOS полягає в тому, що його розробники можуть не сподіватися на використання більше 3 ГБ оперативної пам’яті в своїй системі і тому такий BIOS не буде належним чином відображати всю пам'ять, яка буде використовуватися. Швидше за все, це не відбудеться з (U) ІФІ.
Операційна система також повинна підтримувати адреси більш ніж 4 гігабайтів. Щоб бути більш конкретним, він повинен налаштувати ЦП для використання PAE. Деякі 32-бітні ОС цілком здатні використовувати PAE та отримувати доступ до більш ніж 4 Гб, інші мають обмеження програмного забезпечення на максимальну пам’ять, хоча вони дозволяють PAE для підвищення безпеки (наприклад, Windows XP). Знову ж таки, 64-бітні ОС не мають таких труднощів і зазвичай підтримують більше 4 ГБ пам'яті.
Останній пункт - з іншого світу, оскільки програми, як правило, працюють у віртуальному адресному просторі , я додав його для повноти. Тим не менш, під час компіляції для додатку потрібно зробити кілька додаткових кроків, щоб мати можливість використовувати більше пам'яті. За замовчуванням 32-розрядна програма, здатна використовувати лише 2 ГБ пам'яті. Той самий 32-розрядний додаток може адресувати до 4 Гб пам'яті, за умови, що ОС підтримує це і ввімкнув CPE PAE. Більш конкретно, це може використовуватидо 3 гігабайтів пам'яті, інші 1 GiB можуть бути адресовані як звичайні бібліотеки та ядро ОС, але не підлягають запису (в кінцевому підсумку це залежить від архітектури ОС, а не від самого програми). Знову ж таки, 64-розрядні програми, які в основному підтримують адресування понад 4 ГБ пам'яті, і не мають таких проблем в першу чергу.
Щоб поставити все це в перспективу, давайте розглянемо кілька прикладів.
Розглянемо контролер пам'яті Intel® 82945G . Веб-сайт Intel заявляє, що він не підтримує PAE і обмежений 4 ГБ оперативної пам’яті. Давайте зверніться до параграфа 9 System Address Map
даних. У ньому багато інформації. Найцікавіше Figure 9-3. Main Memory Address Range
:
і абзац 9.2 Main Memory Address Range (1 MB to TOLUD)
, який гласить так:
Цей діапазон адрес поширюється від 1 Мб до верхньої частини фізичної пам’яті, дозволено бути доступною (G) MCH (як запрограмовано в реєстрі TOLUD). Всі звернення до адрес у цьому діапазоні передаються (G) MCH в основну пам'ять, якщо вони не потрапляють у додатковий TSEG, необов'язковий отвір ISA або необов'язкове вкрадене VGA пам'яті IGD. (G) MCH забезпечує максимальний простір декодування основної адреси пам'яті 4 ГБ (2 ГБ для 82945GC / 82945GZ / 82945PL). (G) MCH не перезаряджає простір пам'яті APIC або PCI Express. Це означає, що коли кількість фізичної пам’яті, заселеної системою, досягає 4 ГБ (2 Гб для 82945GC / 82945GZ / 82945PL), фізична пам'ять, яка існує, ще не адресована і тому система непридатна для використання.
Як мовиться, оскільки він не підтримує PAE, він в кінцевому підсумку не в змозі перевстановити PCI і всі інші MMIO вище 4 Гб, тому частина пам'яті буде затінена і не використана. Це означає, що навіть якщо він використовується з процесором, що підтримує 36-бітну адресацію, пам'ять, що перевищує 4 Гб, все ще буде недоступною, а частина пам'яті, близької до межі 4 ГБ, також буде невикористана.
І навпаки, давайте розглянемо контролер пам’яті Intel® 82955X , який пов'язаний з попереднім, але він вказаний на підтримку 8 Гб всупереч попередньому! Абзац даних аркуша 2.1 Host Interface Signals
говорить про те, що він використовує 36-бітну шину адреси до процесора, що є хорошим знаком. Абзац 7 System Address Map
має подальші уявлення. Порівняйте Figure 7-1. System Address Ranges
з тим, який ми бачили раніше:
Це явно говорить про те, що він здатний використовувати більше 4 ГБ оперативної пам’яті за умови, що він використовується з процесором, здатним також до 36-бітної адреси. Варто також зазначити, що в цьому пункті 7 System Address Map
зазначено MCH supports 64 GB of addressable memory space
. Однак далі уточнюється, що максимально корисна оперативна пам’ять обмежена 8 ГБ. Це ще раз оголошує різницю між адресною такорисний, як я намагався передати в розділі процесора.
На закінчення я хотів би зазначити, що два пов'язаних чіпсета насправді мають величезну різницю в обробці пам'яті.
Дозволяє ознайомитись з процесором Intel® Pentium® Extreme Edition 840 . Він підтримує 64-розрядний набір інструкцій, але не підтримує PAE. Що означає, що якщо працювати в 32-бітному режимі, він не зможе використовувати більше 4 Гб оперативної пам’яті (будь ласка, виправте мене, якщо я помиляюся з цим припущенням). Дозволяє перевірити таблицю даних та таблицю Table 4-3. Signal Description
. Незважаючи на те, що цей процесор здатний 64-розрядний, він все ще обмежений шиною адреси 36-бітною адресою, що обмежує його доступним діапазоном адрес, починаючи від 0 до 64 Гб.
Тепер давайте розглянемо новіший процесор. Візьмемо для прикладу процесор Intel® Core ™ i7-7700 . Він рекламується для підтримки до 64 ГБ оперативної пам’яті. Тепер давайте перевіримо його аркуш. Пункт 2.3 System Address Map
переконує нас в тому , що цей процесорі в адресації діапазон від 0 до 512 гинув з - за 39-бітну шину адреси. Зауважте, що це ще далеко від теоретичного діапазону 16 EiB для 64-бітного процесора. Дивно , хоча він додатково роз'яснює , що цей процесор підтримує до 32 гинув від використовуваного максимуму RAM (всупереч 64 ГБ на веб - сайті). Тут також є зображення, яке цікавить Figure 2-2. System Address Range Example
:
Це непогано проілюструє проблему із затіненням пам'яті пристроями PCI тощо. Також він пропонує спосіб подолати цю проблему шляхом відображеннядіапазон від реальної оперативної пам’яті до діапазону верхньої адреси в діапазоні, адресованому процесором . Таким чином, повернення цієї прихованої пам'яті для використання. Зауважте, що це перекомпонування проводиться BIOS / (U) EFI після ініціалізації апаратних засобів, і саме з цієї причини я включив BIOS / (U) EFI до списку куль.
Я взяв продукти Intel як приклад, але те саме стосується AMD.
Тепер давайте обговоримо, як задіяні операційні системи. Ядро Linux включає повну підтримку режиму PAE, починаючи з версії 2.3.23, і цілком можливо мати більше 4 Гб оперативної пам’яті, яка може використовуватися з ядром Linux в 32-бітній системі. Однак слід пам’ятати про невизначені проблеми з 32-розрядним Linux ядром у системі з більш ніж 4 ГБ оперативної пам’яті на деякому апаратному забезпеченні (на мій досвід, це має щось спільне з відсіками TLB). У будь-якому випадку у Вікіпедії є хороша інформація про підтримку ПАЕ . Цікавим є те, як Windows XP обмежений 4 Гб, тоді як Windows Server 2003 Enterprise / Datacenter SP2 здатний повною мірою 64 Гб. Те саме стосується інших пар Windows-Desktop-Server.
Як бачите, серед перерахованих компонентів існує багато комбінацій, а в деяких випадках заміна процесора чи ОС може допомогти. Набагато складніше мати справу з BIOS / (U) EFI або MCU, оскільки перший є власником і вбудовується в систему і не може легко змінюватися, другий вбудовується в процесор або припаюється на борту.
він показує 3574 Мб оперативної пам'яті, тому що стільки оперативної пам'яті БЕЗКОШТОВНО та доступно для використання комп'ютером у будь-який час. Ця цифра є оперативною пам’яттю, до якої ваш комп'ютер має повний доступ, оскільки програми та налаштування, попередньо встановлені на ПК, використовують встановлений об’єм оперативної пам’яті, який у вашому випадку має становити 426 Мб. Мій 6 Гб 64-бітний ПК демонструє 5,8 ГБ оперативної пам’яті, і це більше 6 Гб. Вашим найкращим вибором буде розглянути оновлення вашого ПК