Ранговость — характеристика, которую редко выносят на упаковку крупным шрифтом, хотя при равных частоте и таймингах она способна изменить производительность подсистемы памяти заметнее, чем пара ступеней частоты. Понять её проще всего, если разобраться, что физически происходит при обращении к модулю.
Что такое ранг
Ранг — это группа микросхем на модуле, которые вместе образуют полную ширину шины данных и выбираются одним общим сигналом. Для обычного модуля DIMM ширина составляет 64 бита. Если на плате стоят восемь микросхем по восемь бит каждая, все они вместе дают эти 64 бита и образуют один ранг. Модуль с одним рангом называют одноранговым.
Если микросхем шестнадцать — например, по восемь с каждой стороны текстолита, — они собираются в две независимые группы по 64 бита. Это двухранговый модуль. Существуют и четырёхранговые, а также сборки, где несколько кристаллов уложены в один корпус; в серверных решениях применяются регистровые и нагруженно-регистровые модули, где буфер между шиной и микросхемами позволяет собрать в модуле ещё больше рангов.
Важное уточнение: количество микросхем определяет ранговость не напрямую, а вместе с их разрядностью. Восемь микросхем по восемь бит — один ранг. Шестнадцать микросхем по четыре бита — тоже один ранг, просто собранный из более узких чипов. Двусторонняя компоновка сама по себе ничего не доказывает.
Ранги внутри канала разделяют одну и ту же шину данных. Одновременно передавать данные может только один ранг — сигнал выбора активирует именно его, остальные держат выходы в высокоимпедансном состоянии. То есть ранги не расширяют шину и не складывают пропускную способность, как это делают каналы.
Откуда берётся прибавка
Выигрыш даёт не параллельная передача, а чередование обращений. Работа с динамической памятью состоит не только из передачи данных. Перед чтением строку нужно активировать, после работы — закрыть, а банк после закрытия требует паузы перед следующей активацией. Кроме того, вся динамическая память периодически регенерируется: заряд в ячейках утекает, и содержимое приходится перезаписывать. На время этих операций соответствующая часть массива недоступна.
Когда в канале два ранга, контроллер может отправить команду активации второму рангу, пока первый занят закрытием строки или регенерацией. Служебные интервалы одного ранга прячутся под полезной работой другого, и шина простаивает меньше. Эффект тем сильнее, чем плотнее поток обращений и чем чаще приходится переключаться между разными строками.
Отсюда характер прибавки. Она не выглядит как рост пиковой пропускной способности — пик остаётся тем же, потому что ширина шины не изменилась. Она проявляется как рост фактической загрузки шины: реальная скорость приближается к теоретической. В задачах с интенсивным потоком обращений и в приложениях, чувствительных к задержкам, двухранговая конфигурация обычно оказывается впереди одноранговой при полностью одинаковых частоте и таймингах.
Два одноранговых модуля в одном канале дают контроллеру ровно ту же возможность чередования, что и один двухранговый. С точки зрения логики важен суммарный ранг на канал, а не то, на скольких кусках текстолита они размещены.
Обратная сторона: нагрузка на шину
Чередование не бесплатно. Каждый ранг — это дополнительная электрическая нагрузка на линии данных и адреса: входные ёмкости микросхем, ответвления дорожек, отражения сигнала. Чем больше рангов на канал, тем хуже форма сигнала на высокой частоте и тем труднее контроллеру подобрать окно выборки.
Практическое следствие видно в таблицах поддерживаемых частот у производителей плат: для одного однорангового модуля на канал заявляется одна цифра, для одного двухрангового — ниже, для двух двухранговых — ещё ниже. Разрыв между крайними вариантами достигает нескольких ступеней частоты. Поэтому конфигурация из четырёх двухранговых модулей на настольной плате почти всегда работает медленнее по частоте, чем пара одноранговых, и вопрос сводится к тому, окупает ли выигрыш от чередования потерю частоты. Ответ зависит от платформы и обычно решается проверкой.
Есть и второй эффект: увеличение числа рангов удлиняет процедуру тренировки памяти при включении. Плата подбирает задержки для каждого ранга отдельно, и старт заметно затягивается.
Как узнать ранговость и что с этим делать
Ранговость записана в конфигурационной микросхеме модуля и читается любой утилитой, показывающей характеристики памяти. В маркировке она иногда кодируется буквами: обозначения вида 1Rx8 и 2Rx8 расшифровываются как один или два ранга при восьмибитных микросхемах. Считать чипы на глаз ненадёжно — часть модулей закрыта радиатором, а разрядность по внешнему виду не определить.
Практический ориентир при подборе. Если плата имеет два слота, разумно рассматривать двухранговые модули: они дают чередование без увеличения числа планок. Если слотов четыре и предполагается заполнить все, суммарная нагрузка складывается, и от предельной частоты придётся отказаться. Соображения по расстановке модулей и заполнению слотов разобраны в разделе про оперативную память.
Отдельный случай — серверные платформы. Там на канал приходится больше слотов, а регистровые модули с буферизацией командной шины специально созданы для того, чтобы обслуживать много рангов без развала сигнала. Ценой становится дополнительный такт задержки на прохождение команд через буфер. Особенности этой ветки собраны в разделе о памяти с коррекцией ошибок.
Обобщая: ранги не расширяют канал, а заполняют его простои. Прибавка есть, она стабильна и не требует разгона, но упирается в электрическую нагрузку — и именно на этом балансе строится выбор между большим числом рангов и высокой частотой.