Освежить память: заметки об апгрейде

09 Янв 2016

Выполняем модернизацию правильно: заметки об апгрейде оперативной памяти

Вы решили самостоятельно расширить оперативную память ноутбука или компьютера. После приобретения одного или нескольких DIMM-модулей и установки их в соответствующие гнёзда, система успешно запустилась, суммарный объем памяти увеличился. Казалось бы, все хорошо, но поработав некоторое время обнаруживается, что вместо ожидаемой прибавки производительности, система «тормозит». Запуск программ и открытие документов происходит несколько медленнее, чем до модернизации, на которую были потрачены время и деньги. Почему так бывает?

Что такое двухканальный режим памяти

Многоканальный, или как частный случай двухканальный режим работы контроллера оперативной памяти используется в индустрии персональных вычислительных платформ уже около 15 лет. Все началось с набора системной логики Intel 865, впервые задействовавшего данный путь повышения производительности. Суть предельно проста — доступ к данным можно выполнять параллельно для двух банков памяти, при этом за единицу времени будет прочитано или записано в 2 раза больше информации.

Два банка памяти на системной плате компьютера, каждый из которых выполнен в виду двух DIMM-сокетов
Рис 1Два банка памяти на системной плате, каждый из которых выполнен в виду двух DIMM-сокетов

Для реализации этого принципа, память нужно разделить на небольшие блоки, например 8 байт. Все «четные» 8-байтные блоки будем хранить в первом банке, все «нечетные» — во втором. Теперь, представим, что от процессора поступил запрос на чтение или запись 16 байт данных. При обработке такого запроса, 8 байт передается из первого банка, 8 байт из второго. В результате банки работают параллельно и производительность удваивается. Конечно, реальные механизмы взаимодействия процессора и памяти значительно сложнее и наш наивный пример затрагивает самую простейшую ситуацию, которая, тем не менее является довольно показательной.

Требование симметрии банков памяти

Чтобы оптимально разделить передачу блока данных на два отдельных «задания», которые можно «выдать» четному и нечетному банку или каналу, для их параллельной работы, размеры каналов должны быть симметричными.

Представим, что исходно на плате расположены два модуля памяти размером 1 гигабайт. Модули правильно расположены по разъемам, то есть каждый модуль соответствует отдельному каналу. Платформа работает в двухканальном режиме с оптимальной производительностью.

Добавляем один модуль размером 1 ГБ, надеясь увеличить объем памяти и улучшить производительность платформы
Рис 2Добавляем один модуль размером 1 ГБ, надеясь увеличить объем памяти и улучшить производительность

Руководствуясь исключительно светлыми и чистыми намерениями, вы добавляете один модуль размером 1 гигабайт, желая увеличить объем памяти от исходных двух до трех гигабайт. Памяти стало больше, но симметрия банков разрушена и их параллельная работа невозможна. В результате получаем снижение производительности.

Системная логики и оперативная память

Первые реализации двухканальных контроллеров (Intel 865, Intel 875) требовали довольно строгой симметрии. Не только суммарный размер, но и количество, а также тип модулей памяти, установленных в разъемы каждого канала должны быть одинаковыми. Иначе система работает, но в одноканальном режиме.

Системная плата с двухканальным контроллером памяти
Рис 3Системная плата с двухканальным контроллером памяти и четырьмя DIMM-сокетами

Начиная с набора системной логики Intel 915, для включения двухканального режима достаточно симметрии размеров. Например, в двух разъемах относящихся к первому каналу может быть установлено два модуля по 1 гигабайту а в одном разъеме, относящемуся ко второму каналу — один модуль размером 2 гигабайта. Отметим, что для выше рассмотренных чипсетов Intel 865/875 в этой же ситуации двухканальный режим невозможен.

И наконец, системная логика Intel 965, а также последующие реализации контроллеров памяти в составе микросхемы центрального процессора, допускают гибкий режим (Flex Memory Mode), при котором нарушение симметрии каналов обрабатывается особым образом. Представим, что в первом канале установлено два гигабайта памяти, а во втором один. Используя по одному гигабайту из каждого канала, контроллер соберет диапазон, размером 1+1=2 гигабайта, доступ к которому будет двухканальным. Оставшийся от первого канала «хвостик», размером 1 гигабайт будет размещен в отдельном диапазоне, доступ к которому будет одноканальным. Мы получим систему, в которой скорость работы программ зависит от адреса их загрузки в память. Снижение производительности в результате несимметричного заполнения банков также будет проявляться, еще и непредсказуемо.

Системная логика в составе центрального процессора допускает Flex Memory Mode
Рис 4Системная логика в составе центрального процессора допускает гибкий режим Flex Memory Mode

Современные платформы используют контроллеры памяти с количеством каналов более двух. Например, системы базирующиеся на процессорном разъеме Intel Socket 1366, поддерживают три канала памяти. Системы на основе процессорного разъема Intel Socket 2011, поддерживают четыре канала. Все вышеизложенные рекомендации справедливы и для таких систем, но вместо наличия двух банков памяти одинакового размера, здесь требуется соответственно три или четыре одинаковых банка. При несоблюдении этого правила система будет работать и распознавать всю установленную оперативную память, но производительность будет низкой.

Резюме

Проверить оптимальность конфигурации можно с помощью информационно-диагностического программного обеспечения. Например, количество используемых каналов оперативной памяти можно посмотреть с помощью программы AIDA64, в меню «Системная плата», подменю «Чипсет», и далее – «Северный мост»