Тайминги оперативной памяти: как получить производительность "на ровном месте"


Сегодня будем говорить про тайминги - что это такое, как их настроить и как не имея возможности разгона поднять производительность своего компьютера. Немного отступим:

Так как у меня конфиг на серверном железе, процессор не поддерживает память выше заявленной частоты. У меня две одноранговые планки от Samsung с частотой 2133 МГц, и когда я выставил им частоту в 2666 МГц, скажем, сильно удивился их работе "всего" на 2400 МГц.

Однако разгон - не единственный способ поднять производительность памяти. Вместо того, можно попробовать снизить тайминги - задержки памяти, но могут ли они полноценно заменить разгон?

А почему тайминги - не разгон?

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

Img

В большинстве случаев, тайминги с завода завышены, а в случае с моей памятью (которая серверная), все идет по стандарту Jedec. Иными словами, на 2133 МГц она выставляет тайминги 15-15-15-36, что как-то дофига для такой частоты. В случае с XMP/EXPO на обычной памяти, тайминги могут ужиматься хуже, так как производитель может лучше подогнать их под конкретную модель памяти.

Типа как с частотой?

Типа да, как с частотой. Производители памяти преследуют две вещи: дешевизна и стабильность. Планки памяти одной линейки могут быть построены, скажем, одна - на B-Die от Samsung, другая на каком-нибудь хуниксе, но продаваться будут под одним названием, под одним ценником и с одинаковыми заявленными характеристиками.

Img

Но так как чипы разные, надо подобрать такие тайминги, чтобы оба варианта работали с одинаковыми характеристиками. Тогда производитель ориентируется на показатели худшей версии и выставляет тайминги для ее стабильной работы, даже если конкретная планка может работать лучше. Не стоит забывать и некоторый "запас" для стабильности.

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

И как в случае с разгоном, реальный предел своей железки пользователю надо отчекрыживать самостоятельно.

Как сжать тайминги?

Вообще принято снижать 4 параметра:

  • CAS Latency (tCL) - Задержка от подачи команды к ее исполнению;
  • RAS to CAS Delay (tRCD) - задержка между RAS и CAS;
  • RAS Precharge (tRP) - задержка между обработками строк;
  • Active to Precharge Delay (tRAS) - задержка между активацией и началом обработки;

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

    Собственно, к делу

    Как удачно, недавно писал статью про оперативную память, где сделал тест своего конфига. Вот только не надо сейчас смеяться:

    Img

    Тут все грустно: задержка - высокая, скорость - такая себе, даже по меркам не самой частотной DDR4 3200 МГц. По сути, это - результат DDR5 в одноканале, что меня категорически не устраивает. Частоту поднимаю до 2400 МГц, а вот тайминги...

    Img

    tRAS удалось снизить с 36 до 25, что вкупе с увеличением частоты дало прирост почти 4.5 гигабайта в секунду на чтение и около 1700 мб/с на запись, прирост в копировании - 3.5 Гб/с, и это все при снижении задержек на 6.2 нс.

    Короче, прирост от ~5 до почти 12 процентов, причем прирост везде - не только в ПСП, но и в задержках. Тут уже меня понесло, так как 15-е тайминги - это все еще многовато для такой частоты:

    Img
    Справа - результат на 13-х таймингах, слева - сток

    Снижение таймингов до 13-13-13-24 почти не привело к росту пропускной способности, зато задержка упала еще на две наносекунды. Дальше я переключился на настройку вторичных таймингов, которые сегодня затрагивать не будем - это надо смотреть по таблице и подбирать значения, в общем, вот промежуточный результат:

    Img

    А вот уже финальный, с тотальной настройкой всех таймингов:

    Img

    Ну прямо бесплатная производительность!

    Почему так происходит?

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

    Img

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

    Представьте, что пропускная способность памяти - это пассажиропоток в маршрутке. Чем он выше - тем лучше.

  • Частота - это скорость маршрутки - как быстро она проезжает от остановки к остановке;
  • Тайминги - это скорость оплаты, скорость пассажиров, входящих в маршрутку, фиксированное время ее остановки, и все в таком духе.

    Если тайминги слишком низкие - маршрутка хоть и будет приезжать на остановку быстро, но не все пассажиры успеют зайти, кому-то может даже что-то оторвет закрывающейся дверью (в случае с памятью - она просто начнет сыпать ошибками, так как не будет успевать за шиной), в то время как при низкой частоте (скорости маршрутки), мы можем отчасти это скомпенсировать тем, что она будет меньше времени стоять на остановках, средняя скорость будет выше.

    Img

    Надеюсь, пример понятный. Именно поэтому при росте частоты растут и задержки - чипы просто не успевают работать с такой скоростью, поэтому надо находить баланс между частотой и таймингами (частота все же дает больший прирост ПСП).

    И хотя тайминги я ужал, мне все еще не дает покоя, что два слота на моей МП пустые. 4-канальный режим не работает, так что в ближайшее время надо озаботиться покупкой еще пары планок, чтобы все было прям красиво. В итоге планирую на серверной DDR4 2400 выйти на уровень DDR5 по пропускной способности - если в 2-канале у меня такая ПСП, то в 4-канале будет около 75 Гб/с, а это уже серьезно.