
Успех экстремальных оверклокерских опытов зависит от физической выносливости компонентов платформы, стабильности питающих напряжений и эффективного отвода тепла. Кроме этого следует принять во внимание интеллектуализацию разгона, главным инструментом которой, безусловно, являются оверклокерские профили (XMP). Записав в SPD-чип параметры для всего ряда экстремальных частот, производитель модуля, как эксперт, делится своим бесценным опытом с энтузиастами.
Условия и цель опыта
Будет небольшой оверклокерский эксперимент и много инсайдерской информации о производительности и бенчмарках. Для этого нам понадобится системная плата MSI X370 XPower Gaming Titanium с процессором AMD Ryzen 5 1600 Six-Core Processor и оперативная память HyperX HX434C19FBK2 в двухканальной конфигурации на основе двух DIMM. Отметим, что информация в SPD отличается от маркетинговой — HX3466C19D4/16G.
Одной из целей исследования станет экспериментальное определение своеобразной производной, характеризующей эффективность оверклокинга. Очевидно, зависимость будет нелинейной и убедившись в этом на опытах, мы разберем теорию и проанализируем причины.
Итак, разгоняем оперативную память до частоты 3466 MHz, основываясь на параметрах XMP-профилей с минимальными ручными правками опций CMOS Setup. Для оценки эффективности разгона за точку отсчета возьмем штатный параметр DDR Speed, равный 2666 MHz. Интересует, как изменится производительность интерфейса при увеличении на 30% частоты тактирования шины памяти.
Выбор XMP-профиля в CMOS Setup платформы для разгона оперативной памяти до 3466 MHz
Отметим, нумерация XMP-профилей в различных экранах CMOS Setup может различаться.
Для напряжения питания DRAM Voltage было вручную установлено значение 1.300V, так как алгоритм его автоматического определения, реализуемый UEFI платформы, кажется, только ухудшает стабильность.
Что показывает AIDA64 от FinalWire
Прежде, чем выйти на экстремальное значение в 3466 MHz, зафиксируем исходную точку на штатной для данной платформы частоте в 2666 MHz с помощью популярной утилиты AIDA64 от FinalWire. Выполним последовательно тесты чтения и записи, используя полученные из этого «черного ящика» результаты для верификации заранее известных алгоритмов оценки производительности.
Чтение при DRAM CLK 2666 MHz: немногим более 41 GBPS
(по клику — на новой вкладке полный экран теста AIDA64 Extreme с указанием таймингов)
Запись при DRAM CLK 2666 MHz: чуть менее 41 GBPS
Далее пронаблюдаем взаимосвязь тактовой частоты памяти и производительности, задумываясь о пропорциях и диспропорциях.
Чтение при DRAM CLK 3466 MHz: около 49 GBPS
Запись при DRAM CLK 3466 MHz: около 47 GBPS
Анализ, включающий сравнение полученных результатов и теоретических лимитов, будет выполнен в заключительной части статьи.
Запускаем NUMA CPU and RAM Benchmark
Утилита NCRB (NUMA CPU and RAM Benchmark), разработанная в тестовой лаборатории «Компостер», дает оценку производительности кэш-памяти и DRAM в среде Windows x64.
Первая серия замеров — на консервативной частоте 2666 MHz.
Скорость чтения оперативной памяти при DRAM CLK 2666 MHz равна 40901 MBPS
(текстовое окно Simple mode benchmark утилиты NCRB)
Зависимость скорости чтения от размера читаемого блока, DRAM CLK 2666 MHz
Скорость записи данных в оперативную память при DRAM CLK 2666 MHz равна 39042 MBPS
(текстовое окно Simple mode benchmark утилиты NCRB)
Зависимость скорости записи от размера записываемого блока, DRAM CLK 2666 MHz
Вторая серия замеров — на экстремальной частоте 3466 MHz.
Скорость чтения оперативной памяти при DRAM CLK 3466 MHz равна 49549 MBPS
(текстовое окно Simple mode benchmark утилиты NCRB)
Зависимость скорости чтения от размера читаемого блока, DRAM CLK 3466 MHz
Скорость записи данных в оперативную память при DRAM CLK 3466 MHz равна 46846 MBPS
(текстовое окно Simple mode benchmark утилиты NCRB)
Зависимость скорости записи от размера записываемого блока, DRAM CLK 3466 MHz
Все операции выполняются в 6 потоков, по числу ядер процессора. В операционной системе включена поддержка Large Pages. Используются 256-битные инструкции AVX в режиме некэшируемых операций чтения и записи, о чем детально пойдет речь ниже.
В силу особенностей процессора, полностью избежать влияния кэш-памяти на операцию чтения DRAM не удалось, о чем свидетельствуют графики. Это значит, что для чтения информативна минимальная скорость, соответствующая максимальному значению параметра CPI (Clocks Per Instruction), а не усредненная величина. Для записи устранение влияния кэш-памяти происходит достаточно эффективно.
Интегральный результат, формируемый в текстовом окне Simple mode benchmark, учитывает эти обстоятельства автоматически.
Про динамический оверклокинг
Устойчивым трендом последних лет является интеллектуализация оверклокинга. Динамический выбор оптимальной частоты тактирования ядра является функцией множества факторов, в частности температуры CPU и его рабочей нагрузки. Принимая во внимание, что главные участники событий: термодатчик и схема умножения частоты находятся на процессорном кристалле, минимизация роли программных посредников выглядит логичным шагом, гарантирующим как оптимальную утилизацию термального запаса, так и оперативную реакцию на достижение критических температур.
Вместе с тем, автономное «самовольное», изменение тактовой частоты ядра процессора является фактором, ухудшающим повторяемость результатов и требующим дополнительного внимания.
Результаты измерений производительности ОЗУ главным образом зависят от тактовой частоты DRAM-интерфейса, где в качестве опорной частоты утилита NCRB использует счетчик TSC. Значения обеих частот являются константами в течение сеанса, по крайней мере, на исследуемой платформе, поэтому динамический разгон не стал критическим фактором для исследования DRAM. Забегая вперед отметим, что на скорость работы кэш-памяти указанное обстоятельство влияет в большей степени.
Про некэшируемую запись и чтение
В тестах, оценивающих производительность DRAM, роль кэш-памяти должна быть минимизирована. Одним из решений является выбор размера читаемых или записываемых данных, кратно превышающего размер кэш-памяти последнего уровня (в данном случае L3). Но ограничившись такой мерой, достоверный результат получить невозможно. Загрузка в кэш-память «ненужной» информации, то есть такой, которая будет вытеснена еще до момента ее повторного использования, приводит к вытеснению «нужной» или многократно используемой информации, в частности контекста выполняемого приложения и как следствие, некоторому падению производительности.
Кроме того, современные процессоры загружают в кэш содержимое оперативной памяти не только при чтении, но и при записи, ведь кэширование всегда ускорит повторный доступ к данным. Но в сценарии DRAM-бенчмарок такого повторного доступа нет, а потому кэшируемая запись, заменяющая обычную запись в память на последовательное выполнение чтения и записи, приведет в нашем случае примерно к двукратному падению скорости.
К счастью, разработчики x86-архитектуры начали учитывать это обстоятельство еще в процессоре Pentium III. Термин non-temporal hint, появившийся с набором команд SSE, означает возможность явного указания процессору на то, что определенные данные не следует кэшировать. Приведем примеры инструкций некэшируемого чтения и записи для современных процессоров.
Описание инструкции PREFETCHNTA в документации AMD64 Architecture Programmer's manual
SSE-инструкция PREFETCHNTA применяется перед операцией чтения из памяти и несет два атрибута:
- Атрибут prefetch hint означает заблаговременное чтение из оперативной памяти, что обеспечит готовность данных в момент их востребования.
- Атрибут non-temporal hint означает, что загружаемые данные с высокой вероятностью будут использованы однократно, а значит предписываемую заблаговременную загрузку следует выполнить не в кэш-память, а в Implementation-Specific транзитные буферы.
Описание инструкции VMOVNTPD в документации AMD64 Architecture Programmer's manual
AVX-инструкция VMOVNTPD записывает в память 256-битный операнд, источником которого является один из векторных регистров YMM0-YMM15. При этом, в отличие от обычной 256-битной записи (инструкции VMOVAPD), адресуемая область памяти не кэшируется.
Теория и практика
Проверим соответствие теории и практики, разобравшись в физическом смысле полученных результатов. Скорость работы любого интерфейса определяется произведением ширины шины (разрядности) и эффективной частоты передачи данных.
Разрядность одного DRAM-канала составляет 64 бита или 8 байт. Количество каналов равно 2. Поскольку информация передается по фронту и спаду синхросигнала, эффективная частота передачи данных равна удвоенному значению физической тактовой частоты интерфейса. Для исследованных конфигураций, первая из величин устанавливалась на тестовой платформе в диапазоне от 2666 и до 3466 MHz. Перемножив количество байт на канал, количество каналов и эффективную тактовую частоту, получим.
- 8 * 2 * 2666 = 42656
- 8 * 2 * 3466 = 55456
Для перевода в гигабайты в секунду, полученные значения потребуется разделить на 1024, получим соответственно около 41.6 и 54.2 GBPS.
Рассмотрим сводную диаграмму полученных результатов. Очевидно, имеет место нелинейность: приращение производительности меньше приращения тактовой частоты интерфейса. Почему?
За последние два десятилетия эволюция оперативной памяти шла по пути увеличения тактовой частоты интерфейса, при этом скорость работы базовой DRAM-ячейки оставалась величиной консервативной. Сложившееся противоречие компенсировалось увеличением разрядности внутренней шины данных микросхем памяти с применением буфера предвыборки для согласования потоков информации и введением дополнительных тактов задержки, количество которых увеличивается с ростом частоты.
Различие приращений также объяснимо. В идеале, для оценки производительности DRAM, код, осуществляющий бенчмаркинг должен содержать исключительно операции чтения и записи памяти. На практике, избежать дополнительных служебных операций невозможно, и поэтому измеренный результат зависит от сценария тестирования и дизайна машинного кода: используемых ассемблерных инструкций, разворота циклов и других факторов.
В приведенных расчетах условно принимается, что информация между оперативной памятью и процессором передается непрерывно, в каждом такте. В силу физических ограничений, присущих DRAM такой тайминг недостижим. Процессы выборки информации из запоминающей матрицы, определение состояния DRAM-ячейки при чтении и изменение этого состояния при записи, являются достаточно медленными, в сравнении с работой шины памяти. Это означает, что расхождение теории и практики, и увеличение этого расхождения с ростом тактовой частоты интерфейса является неизбежным, ведь производительность определяется не только тактовой частотой, но и количеством тактов, затрачиваемых на заданную операцию.
Резюме
Сделаем выводы, оставив за скобками многочисленные технические подробности и посмотрев на ситуацию глазами потребителя. Приращение производительности в 19-25%, доказанное независимыми тестовыми методами, позволяет утверждать, что о тупике экстенсивного развития DRAM говорить пока можно лишь в будущем времени, а протестированные DDR4-модули памяти HyperX HX434C19FBK2 достойны внимания энтузиастов. Их показатели совсем немного уступают теоретическим расчетам.