Оптимизация памяти
Мне очень часто задают вопрос, - "какую память выбрать для той или иной системы?" Не менее часто задают и другой вопрос, - "а почему при тестировании платы без поддержки
DDR400 вы используете именно ее?" Например, при тестировании платы Asus P4G8X на чипсете Granite Bay я использовал память DDR333 и DDR400, хотя официально чипсет поддерживает
только память DDR266. Естественно, этот момент вызвал непонимание среди читателей.
Начну с того, что в подавляющем большинстве случаев более скоростная память может работать на меньших частотах. То есть, хоть я и устанавливаю модуль DDR400 (200Мгерц) на плату с чипсетом E7205, он в любом случае работает синхронно с процессорной шиной - 133Мгерц (как DDR266). Устанавливать быструю память можно по двум причинам: во-первых, она не будет мешать разгону, а во-вторых, есть возможность установить более низкие тайминги работы. И в том, и в другом случае мы получаем прибавку производительности.
Естественно, могут быть и исключения: например, модуль Samsung DDR400 имел CAS по умолчанию = 3, а некоторые платы (например Iwill P4GB) не поддерживали такие модули. В результате система не стартовала.
Итак, было приобретено несколько различных модулей DDR333 и DDR400, а также оверклокерские модули Kingston HyperX PC2700.
Вообще модули памяти, предназначенные для разгона, практически не продаются в России. Найти продукцию таких фирм как Corsair, OCZ или Geil практически невозможно. Поэтому
факт появления первых подобных модулей без сомнения радует.
Модуль памяти облачен в алюминиевые доспехи - своеобразные распределители тепла. Причем, распределители есть с обоих сторон модуля, хотя сам модуль односторонний (т.е. чипы установлены только с одной стороны :).
То что теплораспределители установлены заводским образом - это однозначно плюс. Поскольку, если посмотреть на обычный модуль памяти, то как правило, на нем есть наклейка
с маркировкой, а также различные гарантийные стикеры. Поэтому если устанавливать радиаторы самому, то все наклейки придется снять; в результате на модуль памяти теряется гарантия. А если этого не сделать, то при повышении напряжения на памяти (Vmem) повышается и тепловыделение каждого чипа. И в том месте, на котором наклеена бумажка может возникнуть локальный перегрев и, как следствие возникнет ошибка доступа памяти, и все последующие проблемы - вплоть до зависания системы.
Итак, установив оба модуля памяти в систему, я стал искать ответ на первый вопрос - какой именно процент производительности мы теряем при переходе к асинхронному режиму ?. Для этого я установил частоту системной шины = 200Мгерц, минимальные тайминги памяти (2-2-5-2) и последовательно протестировал режимы 2\3 (частота памяти 133Мгерц), 4\5 (160Мгерц) и 1\1 (200Мгерц). В качестве тестов использовались приложения, которые чутко реагируют на малейшее изменение пропускной способности памяти.
Результаты:
| FSB=200Mhz |
Sandra Int |
Sandra Float |
PCMark Mem |
Q3 Fastest |
| 2\3 (DDR266) |
3985 |
3974 |
6986 |
361,5 |
| 4\5 (DDR320) |
4409 |
4381 |
7397 |
374,3 |
| 1\1 (DDR400) |
4676 |
4669 |
7839 |
384,9 |
А теперь то же самое, только в виде графика процентов падения производительности относительно режима 1\1.
Как мы видим, чисто синтетический тест Sandra показывает падение производительности до 15% при использовании множителя 2\3 и 5-6% - при использовании 4\5. Тест PCMark (тоже синтетический) менее категоричен: 10 и 5 процентов, соответственно. А вот в реальных приложениях (Quake3) падение производительности еще меньше: 6 и 3 процента.
Вывод прост - в штатных режимах и при небольшом разгоне нужно использовать синхронный режим. Но как только память начинает препятствовать разгону - использовать
множитель частоты памяти = 4\5. Но это не всегда удается: вот например при максимальном разгоне нашего процессора до FSB=283Мгерц, и при использовании множителя 2\3 частота памяти равна 189Мгерц, а при множителе 4\5 - она уже равна 226Мгерц (DDR452). И в последнем случае у меня не нашлось модуля памяти способного работать на такой частоте.
Однако столь высокие частоты FSB (до 300Мгерц включительно) доступны только для младших моделей процессоров (2.4C, 2.6C). А при разгоне старших моделей максимум частоты
системной шины не будет превышать 250Мгерц. Например, если разгонять процессор 3.0С, то при множителе = 15 и частоте FSB = 240Мгерц мы оказываемся около технологического
предела степпинга D1 - 3.6Ггерц.
После этого я установил базовую частоту FSB = 250Мгерц и провел серию тестов, в которых исследовал, как влияют тайминги памяти на общую производительность.
Тест №1 - множитель памяти = 2\3, частота 166Мгерц (DDR333).
| FSB\MEM=250\166 |
Sandra Int |
Sandra Float |
PCMark Mem |
Q3 Fastest |
| 2-2-5-2 |
4996 |
4985 |
8675 |
450,2 |
| 2-3-6-3 |
4892 |
4883 |
8361 |
425,4 |
| 2.5-2-5-2 |
4986 |
4980 |
8492 |
444,6 |
| 2.5-3-6-3 |
4857 |
4873 |
8338 |
424,2 |
А теперь то же самое, только в виде графика процентов падения производительности
относительно производительности системы с минимальными таймингами (2-2-5-2).
Следующий тест: множитель памяти = 4\5, частота 200Мгерц (DDR400).
| FSB\MEM=250\200 |
Sandra Int |
Sandra Float |
PCMark Mem |
Q3 Fastest |
| 2-2-5-2 |
5486 |
5446 |
9097 |
464,9 |
| 2-3-6-3 |
5268 |
5292 |
8978 |
448,9 |
| 2.5-2-5-2 |
5446 |
5449 |
9059 |
463,3 |
| 2.5-3-6-3 |
5192 |
5329 |
8817 |
448,2 |
и то же самое, только в виде графика процентов падения производительности относительно производительности системы с минимальными таймингами (2-2-5-2).
Результаты получились очень интересные: оказывается переход с Cas Latency = 2 на CAS=2.5 практически не понижает производительности. И что особо интересно, на платформе SocketA (на чипсете VIA KT333\KT400) эта операция серьезно понижает производительность. Зато увеличение параметров "Precharge to Active"(Trp), "Active to precharge" (Tras)
и "Active to CMD"(Trcd) приводит к довольно ощутимой потере скорости работы (чего, опять же, не было на платформе SocketA).
Конечно, чтобы данное исследование было полным, нужно протестировать несколько различных модулей на нескольких платах (в том числе и на чипсете i865PE). Однако уже сейчас можно сделать предварительный вывод: при разгоне процессоров Intel Pentium4 c 800Мгерцовой шиной наиболее производительный режим работы памяти - синхронный. Но в этом случае результаты разгона напрямую зависят от качества оперативной памяти. При переходе к асинхронным режимам мы теряем небольшую часть производительности (приблизительно 3% -6%), но это позволяет нам достичь большей частоты FSB, а следовательно и лучшего разгона. При этом, если для достижения большей частоты памяти используется повышение таймингов работы, это не всегда оправдано.