Почему при использовании AMD64 не распознается более 3 ГБ ОЗУ?

8

Почему Ubuntu 10.10 amd64 (Maverick Meerkat) не использует более 3 ГБ ОЗУ?

Моя машина - 64-разрядный процессор Intel Centrino Duo Toshiba P205-S6287 и 4 ГБ оперативной памяти на частоте 667 МГц.

Согласно подробным спецификациям , ноутбук оснащен 64-битным процессором Core 2 Duo T5300 и чипсетом 945GM Express.

Питер Мортенсен
источник
3
Это загадка, можете ли вы сообщить о выходе uname -a, о выходе, free -mа также подтвердить, что у вас есть более 3 ГБ оперативной памяти, посмотрев на ваш dmidecode.
Мартин Оуэнс -доктормо-
1
И вы уверены, что у вас есть 64-битная версия Ubuntu. Что uname -aговорит?
Войтех Трефни
та же проблема, optiplex gx620 5 Гб Ram

Ответы:

16

Это связано с мобильным Intel 945GM Express в вашем ноутбуке.

У меня есть Thinkpad T60, который использует тот же чипсет. Это был один из первых северных мостов Intel для 64-разрядных процессоров Core2Duo. Они потерпели неудачу в разработке этого.

Чипсет может теоретически адресовать только 4 ГБ ОЗУ, но также должен работать и с другим оборудованием (память ввода / вывода). Для этого он резервирует верхний диапазон памяти в 1 ГБ. Поддержка 64-битных адресов логической памяти в ядре Linux не помогает, потому что материнская плата и северный мост обеспечивают только 32-битную шину физических адресов к процессору. И нет обходного пути.
http://forums.lenovo.com/t5/T61-and-prior-T-series-ThinkPad/Thinkpad-s-and-N100-sw-945PM-chipset-can-t-address-gt-3G-Ram/ Т. пл / 2730

Существует теоретический вариант в разработке переключения банка памяти. Тем не менее, ядро ​​не поддерживает его и не имеет смысла для архитектуры x86. Контроллер памяти i810 945GM, вероятно, слишком ленив, чтобы это имело смысл.

марио
источник
1

Мой короткий ответ: скорее всего, потому что дизайнер BIOS был небрежным.

Длинный ответ:

Несмотря на то, что у вас установлено 4 ГБ ОЗУ, вы не можете ожидать, что с набором микросхем Intel 945GM будет доступно 4 ГБ оперативной памяти. Это ограничение чипсета. Об этом можно узнать из спецификации чипсета:

http://www.intel.com/content/www/us/en/intelligent-systems/navy-pier/mobile-945-express-chipset-datasheet.html

Цитата из раздела 9.2: " М Emory С ontroller H . УБС обеспечивает максимальную DRAM адрес декодирование пространства 4 ГБ МЧА не переназначить APIC или пространства памяти PCI Express Это означает , что объем физической памяти заполняется в системе достигает. 4 ГБ, будет физическая память, которая существует, но не адресуется и поэтому не может использоваться системой ".

BIOS должен зарезервировать диапазоны адресов для нескольких ресурсов, а именно для самого BIOS, отображенного пространства памяти PCI и PCI Express, внутренней графики, пространства памяти APIC и других окон памяти для доступа к вводу / выводу. Все эти диапазоны адресов должны находиться в пределах адресного пространства 4 ГБ и, как таковые, занимают диапазоны адресов, которые больше не доступны системной памяти. Вы могли бы сказать, что эти ресурсы «крадут» пространство физической оперативной памяти.

При этом, если у вас установлено 4 ГБ, вы можете ожидать, что доступно более 3 ГБ системной памяти .

Объем физической памяти, доступной системе, зависит от того, сколько усилий разработчик BIOS прилагает к настройке этих диапазонов адресов. Например, BIOS может выделить наименьшее количество, необходимое для каждого ресурса. Или это может позволить отключить или ограничить распределение адресов для PCI Express в зависимости от использования вашей системой устройств PCI Express.

Разработчик BIOS вашей системы, вероятно, установил для верхнего предела полезной памяти статический максимум 3 ГБ, даже если вы установили 4 ГБ. Этот подход обеспечивает статическое адресное окно размером 1 ГБ для разработчика BIOS и, как таковое, упрощает задачу разработчиков BIOS для выделения диапазонов адресов для ресурсов, чтобы они не конфликтовали с любым другим диапазоном адресов.

Даниэль К.
источник
1

Есть несколько возможных причин.

Во-первых, вы на самом деле не используете сборку amd64. Другая причина заключается в том, что ваша материнская плата и / или BIOS повреждены и не сообщают правильный объем ОЗУ.

Во-вторых, у вас есть видеопамять и другие аппаратные ресурсы, занимающие место в области памяти размером 3-4 ГБ, и ваша материнская плата / BIOS не в состоянии поднять затененную оперативную память на более высокие адреса, чтобы к ней можно было получить доступ.

Выяснить, что требует рассмотрения вашего dmesgвывода.

psusi
источник
0

Псуси прав.

У меня такая же ситуация здесь:

Хотя они называют его «64-битным процессором», вы часто не можете адресовать 4 ГБ + память.

Большинство старых материнских плат имеют только 32-битные адреса, и из этого пула видеокарте также нужно получать их адреса.

= 4 ГБ - память графической карты (1 ГБ) = 3 ГБ.

Боюсь, что нет возможности исправить это путем исправления или обновления прошивки чего-либо.

Если вы заинтересованы в деталях, я рекомендую: Расширение физического адреса

aatdark
источник
Также: если это вообще возможно, обычный 32-битный установщик автоматически включит ядро ​​Physical Address Extension при необходимости, позволяя вам использовать всю вашу память.
Стефано Палаццо
Как было сообщено @StefanoPalazzo и другими, установка ядра PAE решает проблему. Просто найдите ядро ​​PAE в менеджере пакетов synaptic и установите: hailubuntu.blogspot.com/2010/09/ubuntu-detecting-less-ram.html
wisemonkey
1
@wisemonkey: нет, ядро ​​PAE не дает мне полных 4ГБ. Потому что я уже использую 64-битное ядро ​​и даже отчеты BIOS: всего 4 ГБ -> 3,2 ГБ можно использовать.
aatdark
@aatdark: в вашей настройке BIOS есть поле «Общая видеопамять»? Если да, вы можете отключить его (рекомендуется только если у вас есть дискретная видеокарта), но опять же, как вы сказали, если его старый компьютер, то полная память не адресуется.
wisemonkey
1
«Наборы микросхем Intel® 945 для баз данных обеспечивают максимальное адресное пространство 4 ГБ и не поддерживают переназначение памяти. Поскольку части этого адреса необходимо резервировать для других устройств, вы не сможете использовать более 3,2 ГБ системной памяти с ваша текущая конфигурация системы. Никакое обновление BIOS или 64-битная операционная система никогда не изменит это. Это чипсет, а не плата или ограничение BIOS. "
aatdark