DDR4 в серверах: чего ждать?

27 Окт 2014

Оценка производительности памяти DDR4 на современной многоканальной платформе Intel Xeon E5-2600 v3

Вряд ли появление памяти DDR4 стало каким-то особенным событием в мире IT. Еще одна цифра, обозначающая следующее и более быстрое поколение оперативных запоминающих устройств, теряется на фоне давно известных DDR3 и DDR5. Последние из перечисленных, правда, используются в сочетании с графическими процессорами, а DDR4 впервые применяется в серверных платформах. Этим она обязана появ­ле­нию новинки от Intel – процессору Xeon E5-2600 v3. Его при­ме­не­ние позволит увеличить пропускную способность подсистемы памяти на 44%, а энергоэффективность – вполовину.

Так утверждает пресс-релиз производителя. Независимые источники обещают прирост в скорости поскромнее: соответственно 34% и 20%. Откуда берутся эти цифры? Все очень просто: частота DDR4=3200 МГц на 34 процента выше максимального значения, применяемого в схемах подключения DDR3=2133 МГц.

По правде, все эти аргументы – чистая схоластика. Существующие реализации DDR3 не работают на частотах свыше 1866 МГц, решения для DDR4 пока ограничены тактированием в 2400 МГц (см. спецификацию от Micron). Сомнительна и сама практика бумажных состязаний применительно к техническим решениям. Для того чтобы реально оценить преимущества DDR4 решено было сделать небольшое тестирование.

Исходные предпосылки

Для получения простейших бенчмарок решено было использовать модель поведения неоптимизированного приложения в среде операционной системы Windows x64. Неоптимизированное – означает, что мы используем только один поток и при этом не контролируем, чтобы диапазон памяти, выделенный нам операционной системой, отображался на подсистему памяти, подключенную к процессору, на котором выполняется наш поток.

Идея такого подхода в том, чтобы убедиться в первую очередь в преимуществах многоканального контроллера DDR4. А сравнение близких по характеристикам DDR3 и DDR4 вынести за скобки. Скажем так: наращивая количество каналов оперативной памяти на платформе Intel Xeon E5-2600 v3, ожидаем прирост производительности. Будет ли он адекватным или продемонстрирует иную зависимость – нас интересует постольку поскольку.

         Примечание: компания Microsoft для оптимальной утилизации оперативной памяти рекомендует использовать NUMA API и работу с потоками. Под UEFI требуется самостоятельно анализировать таблицу SRAT и запускать потоки путем непосредственного взаимодействия с контроллерами APIC, генерируя IPI. Наш тест в настоящее время находится в процессе обогащения этими возможностями. Пока же мы готовимся демонстрировать производительность RAM без этого.

Отметим попутно, что в качестве исследуемой платформы выбрана двухсокетная серверная плата Tyan S7070, любезно предоставленная компанией Entry. Она содержит два физических процессора, каждый из которых располагает собственной подсистемой памяти. Очевидно, для каждого из них доступ к своей памяти выполняется быстрее.

В качестве тестовой платформы была выбрана серверная плата Tyan S7070

Наш тест использует 256-битную форму инструкции VMOVAPD и при чтении оперативной памяти одним потоком получает пропускную способность, приблизительно соответствующую одному каналу. Размер читаемого блока от сотен мегабайт до гигабайта, что существенно превышает размеры кэш-памяти всех уровней и гарантирует, что мы читаем именно оперативную память, а не ее кэш-копию. Использование VMOVAPD минимизирует накладные расходы, неизбежно сопровождающие операции меньшей разрядности.

Несколько слов о модулях памяти. В силу того, что а) память DDR4 пока в дефиците; б) памяти нужно много: по два модуля на канал – в сумме 8 модулей, – мы обратились в представительство Kingston, где нас любезно снабдили всем необходимым. В тестировании принимали участие модули KVR21R15S4/8 объемом 8ГБ, тактируемые частотой в 2133 МГц, латентность при обмене CL15. Линейки RDIMM регистровые с коррекцией ошибок (ECC) и двухсторонним расположением чипов Hynix H5AN4G4NMFR, но при этом одноранковые.

В тестировании принимали участие модули Kingstone KVR21R15S4/8 объемом 8ГБ, тактируемые частотой в 2133 МГц, латентность при обмене CL15

Тестирование

Ниже приводятся скриншоты результатов тестирования. Они соответствуют (слева-направо) одноканальному заполнению банков памяти, 2-х канальному и 3-х канальному. Результаты прохождения теста содержат следующую информацию:

  • dT(ms) – время выполнения теста в миллисекундах;
  • dTSC/Sec (MHz) – частота работы счетчика процессорных тактов TSC, в мегагерцах (процессоры, поддерживающие технологию Intel Turbo Boost, могут находиться в таких ACPI-состояниях, в которых частота TSC не равна тактовой частоте ядра процессора);
  • dTSC/Pass (Clks) – количество тактов TSC на одну итерацию. Для тестов, использующих 256-битную форму инструкции VMOVAPD, за одну итерацию читается из памяти или пишется в память 512 байт (шестнадцать 256-битных регистров YMM0-YMM15);
  • Speed (MBPS) – скорость чтения или записи памяти в мегабайтах в секунду (это основной результат бенчмарок);
  • RAX – отладочный код, содержимое 64-битного x86-регистра RAX (не информативно в данной ревизии программы).

Тест чтения

Расчетные значения мы определяем следующим образом. Пропускная способность одного канала памяти DDR4-2133 вычисляется как произведение эффективной тактовой частоты передачи данных 2133 MHz и разрядности шины данных модуля DIMM, без учета ECC (это 8 байт = 64 бита): 2133 * 8 = 17064 , что составляет около 17 гигабайт в секунду.

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

Тест записи

После тестирования чтением у нас не было иллюзий, что на записи 2-х канальный режим, например, будет вдвое производительнее одноканального. Однако, результаты получились непредсказуемыми: запись все-таки оказалась ближе к расчетным цифрам, за исключением 3-х канального режима, который, как и в предыдущих тестах, дал снижение результатов.

Выводы

Выводы делать рано: по этой причине мы не публикуем результаты теста при 4-х канальном заполнении банков памяти. Подержим интригу, а заодно разберемся, почему цифра "3" оказывается роковой для платформы Intel Xeon E5-2600 v3.

Не покидает ощущение, что многоканальность становится «котом в мешке» и добиться преимущества с ее помощью – задача нетривиальная. Если написанный код не подтверждает прирост производительности, то на каких задачах можно воспользоваться разрекламированным увеличением скорости доступа? С учетом того, что многие приложения написаны до нашей эры, а их код не знает вкуса даже MMX-команд, не говоря уже о всех последующих SSE-улучшениях.

P.S. В старые времена злые языки поговаривали, что MMX означает More Money eXtraction.