Современный персональный компьютер — продукт массового спроса, и зачастую его используют люди, очень далекие от вычислительной техники. Это вполне закономерно, ведь он служит инструментом для выполнения тех или иных задач, а они у представителей различных профессий также крайне разнообразны. Не секрет, что немало пользователей применяют ПК для отдыха, и неразумно требовать, чтобы они в совершенстве разбирались в технических тонкостях развлекательного оборудования. Тем не менее подавляющее большинство владельцев сумеют ответить на вопрос, какой процессор установлен в их компьютере, многие знают, какого типа видеоплата и каков объем ОЗУ, меньшинство способны вспомнить марку системной платы и почти никто — параметры используемой памяти, за исключением разве что частоты работы. Между тем эти характеристики могут оказывать существенное влияние на производительность системы. Что же еще характеризует оперативную память? Во-первых, тип, а их совсем не мало. К тому же зачастую память различных типов, работающая на одинаковой тактовой частоте, демонстрирует существенно различающуюся производительность. Во-вторых, тайминги, т.е. характерное время задержек, выраженное в тактах частоты внешней шины (подробности см. в статье «Что такое динамическая память и как она работает» на «Мир ПК-диске»).
Память и производительность
Так же как автомобиль и многие другие технологические изделия, компьютер нередко становится для своего владельца предметом культа. Одни используют машину как средство передвижения, а другие все вечера проводят в гараже, ухаживая за своей любимицей. Похоже обстоит дело и с компьютерами. Есть немало энтузиастов, страстно желающих выжать из своего ПК максимальную производительность. Опять «производительность»... Собственно, ради нее люди тратят деньги на новый ПК или модернизируют старый, покупают агрегат, стоящий в 2—3 раза дороже офисного аналога, практически неотличимого по внешнему виду. Именно нехватка быстродействия приводит к тому, что свежекупленная игра показывает на экране слайд-шоу с частотой всего несколько кадров в секунду или программа обработки изображения «задумывается» на пару минут при выполнении, казалось бы, несложных операций.
Известно, что на производительность компьютера значительное влияние оказывает центральный процессор. В программах с трехмерной графикой, как правило, основной вклад в производительность вносит видеоплата. Скорость архивации, резервного копирования, загрузки ОС и прикладных программ в значительной степени зависит от производительности жесткого диска... А в каких же случаях проявляет себя оперативная память?
Наиболее драматичное падение производительности наблюдается при элементарной нехватке объема ОЗУ. Данные, не помещающиеся непосредственно в память, складываются в файл подкачки на жесткий диск. В принципе это стандартный режим работы компьютера, но при острой нехватке оперативной памяти на диске оказываются часто используемые данные. Что и приводит к беде. Например, в игре нужно на каждое обновление экрана (те самые пресловутые кадры в секунду — FPS) произвести обсчет двух десятков игровых сцен (локаций), а все одновременно они в памяти не помещаются — только поочередно. Среднее время позиционирования головок жесткого диска — 15 мс, значит, чтобы сохранить одну локацию и загрузить на ее место новую, потребуется никак не менее 30 мс. Для 20 локаций — 0,6 с, вот и имеем чуть более 1 кадр/c.
Поскольку время доступа к данным, хранящимся в оперативной памяти, составляет менее 1 мкс, то получается, что теоретически производительность может снизиться на пять порядков. Но поскольку часть времени тратится на обработку данных, на практике замедление происходит только примерно на два порядка, что также совсем не мало. Впрочем, каждая программа требует вполне конкретного объема оперативной памяти, и если ей достаточно имеющегося, то дальнейшее наращивание положительного эффекта не дает.
Признаком нехватки объема ОЗУ служит «хруст» жесткого диска, сопровождающийся частым миганием или постоянным горением индикатора его активности при операциях, не связанных непосредственно с загрузкой данных: при обработке больших рисунков, таблиц, текстовых документов с иллюстрациями и т.д. Также признаком нехватки памяти являются «торможение» и обращение к диску при переключении режимов работы программы, например между «походным» и «боевым» режимами в компьютерной игре или между режимом захвата и редактирования видео в программе нелинейного монтажа. Если таких эффектов не наблюдается, увеличение объема оперативной памяти не приведет к повышению скорости работы системы.
Именно из-за того что при нехватке ОЗУ производительность может резко упасть, объем памяти и считается чуть ли не единственным параметром, влияющим на ее величину. Разумеется, дела обстоят далеко не так, в чем можно наглядно убедиться, воспользовавшись специализированными тестами.
Еще на заре развития вычислительной техники, когда ПК не было и в помине, а ЭВМ, занимавшие площади в сотни и тысячи квадратных метров, предназначались исключительно для важных научных, военных и государственных работ, возникла потребность в оценке и сравнении производительности вычислительных систем. Одной из задач, предложенных в качестве эталонного теста (и оставшихся в этой роли до сих пор), стало решение системы линейных уравнений. В исходном виде бралась система из 100 уравнений со 100 неизвестными. Тем, кто привык решать уравнения на бумаге, такие цифры кажутся довольно внушительными, да и для первых ЭВМ это была непростая задача (не в последнюю очередь как раз из-за требуемых объемов оперативной памяти). Сейчас же они выглядят просто смешными даже для ПК — 80 Кбайт памяти и менее 1 мс на вычисления. Соответственно возникла идея решать аналогичную задачу с увеличенным количеством уравнений и неизвестных — тысяч, а то и десятков-сотен тысяч.
При определении производительности по данному алгоритму, названному по имени создателя тестом Донгарра, учитываются только арифметические операции с плавающей запятой. Целочисленные операции (организация циклов), передача управления (вызов подпрограмм) и выборка из оперативной памяти не учитываются, поскольку в то время самыми медленными были именно операции над числами с плавающей запятой (Float Operation, откуда и пошел термин FLOP).
Сейчас акценты несколько сместились — за счет конвейеризации существенно уменьшилось время выполнения линейных участков кода, в частности всех арифметических операций. Характер зависимости производительности от объема данных показан на рисунке. В качестве примера был выбран наиболее производительный процессор, обладающий шириной шины, совпадающей с разрядностью обрабатываемых данных. Приведенную зависимость можно разбить на три участка. На первом производительность определяется исключительно скоростью работы процессорного ядра и кэш-памяти первого уровня объемом 64 Кбайт. В результате уменьшения доли операций, не учитываемых при подсчете, производительность монотонно возрастает, и даже трудно определить ее асимптотическое значение. На втором производительность уже ограничивается скоростью работы кэш-памяти второго уровня и в целом заметно ниже, чем та, которую способно обеспечить процессорное ядро. На третьем производительность системы лимитируется скоростью основного объема оперативной памяти. Нетрудно видеть, что она как минимум в 4—5 раз ниже обеспечиваемой процессором. Таким образом, при обработке больших массивов данных, не вмещающихся в кэш-память процессора, скорость работы приложения порой определяется исключительно скоростными характеристиками памяти.
Итак, на производительность системы памяти ПК влияют ее тип (FPM, EDO DRAM, RАMBUS, SDR, DDR, DDR2 SDRAM), частота работы, объем, а также тайминги. О влиянии недостаточного объема памяти уже было сказано, однако и его чрезмерное увеличение также снижает общую производительность. Во-первых, из-за повышения времени, расходуемого на регенерацию, поскольку возрастание объема ведет к увеличению количества строк в матрице микросхемы памяти. Во-вторых, из-за того, что в защищенном режиме, в котором работают все современные ОС, перед обращением к ОЗУ осуществляется обращение к таблице страниц, хранящейся обычно в кэш-памяти, т.е. на одно логическое обращение к памяти происходят два физических. В этой таблице 4 байта соответствуют 4 Кбайт памяти, т.е. суммарный объем таблиц в 1024 раза меньше полного объема. Поэтому увеличение объема памяти (выраженного в мегабайтах), сверх объема кэш-памяти (выраженного в килобайтах), приводит к тому, что таблицы перестают помещаться в кэш-памяти и производительность ОЗУ уменьшается до 2 раз.
Кроме того, необходимо учитывать, что и тайминги при большем объеме также имеют тенденцию к удлинению, поскольку увеличивается длина строки, и следовательно, время, необходимое для перезарядки конденсаторов ячеек памяти.
Как тестировать?
Так как детальные характеристики интересуют лишь немногих, неудивительно, что производители также в основном не слишком озабочены их популяризацией и достижением высоких показателей. В частности, на наше предложение о тестировании откликнулась лишь одна компания-производитель, выпускающая память под торговой маркой Corsair. Официально наибольшими значениями важнейших с точки зрения производительности величин таймингов, допустимыми для памяти типа DDR2, приняты пять тактов. Большинство изготовителей ничего другого и не предлагают. Более того, нестабильность работы отдельных подобных модулей в стандартном режиме привела к тому, что нередко производители системных плат позволяют устанавливать тайминги, соответствующие шести тактам системной шины, для восстановления устойчивой работы. Кроме того, память, работающая внатяжку, вряд ли позволит разогнать систему, а именно к этому зачастую стремятся компьютерные энтузиасты.
Итак, при тестировании модулей ставилась задача определить, обеспечивают ли они возможность разгона системы и соответствуют ли указанные тайминги (если они отличаются от максимально допустимых 5.5.5.х) тем, с которыми система способна устойчиво работать.
Дополнительно нужно было оценить, какие из режимов работы памяти наиболее чувствительны к установке тех или иных таймингов.
Увы, контроллеров памяти, для которых документирована частота выше 800 МГц, пока еще нет. Потому мы не смогли провести тестовые испытания так, чтобы в режиме разгона работала лишь оперативная память (разгонять выше номинальных частот пришлось одновременно все компоненты ядра вычислительной системы, т.е. центральный процессор, контроллер памяти и саму оперативную память). Впрочем, хотя такой режим не гарантирует определение максимальных возможностей именно оперативной памяти, он наиболее близок к тому, что будут делать многочисленные «оверклокеры» (от overclocking — разгон компонентов компьютера). От повышения питающих напряжений мы решили отказаться, так что приводимые в таблицах цифры отнюдь не предел возможного.
В процессе тестирования были выявлены определенные особенности и было решено повторить часть тестов на альтернативной аппаратной платформе, а именно с процессором AMD Athlon 64 X2 3800+ и системной платой Biostar Tforce 570 U Deluxe, собранной на базе набора микросхем NVIDIA nForce 570 Ultra.
Тестирование на возможность разгона происходило следующим образом. Тактовая частота работы системы последовательно увеличивалась ступенями по 1% (4 МГц частоты шины или 8 МГц частоты передачи данных). Сначала происходили загрузка с дискеты DOS и проверка памяти программой CheckIt 7.0. При успешном прохождении проверки загружалась Windows XP. Если проблем не возникало, последовательно запускались тесты 3DMark 2003, 3DMark 2006, SiSoft Sandra 2005, aCPURAMtest 2.6, а также CPU-Z 1.38. Результаты работы программ протоколировались. Суммарное время испытаний одной конфигурации — около 2 ч. При успешном выполнении всех тестов конфигурация считалась работающей устойчиво. Для модулей Corsair CM2X1024-6400C3 дополнительно определялась зависимость производительности системы в перечисленных приложениях при таймингах 4.4.4.9, 5.4.4.9, 4.5.4.9, 4.4.5.9 и 5.5.5.15 для системы на базе процессора Intel и при таймингах 4.4.4.9, 6.4.4.9, 4.6.4.9, 4.4.6.9 и 4.4.6.12 для системы на основе процессора AMD. Итак, среди участников нашего теста — модули памяти Corsair CM2X512-8500, Corsair CM2X1024-6400PRO, Corsair CM2X1024-6400C3.
Corsair CM2X512-8500
На самом модуле написано: 1066 МГц 5.5.5.15, однако, по информации в SPD (полученных с помощью CPU-Z), оказалось, что только две записи соответствуют частотам 270 (вместо 266!) и 400 МГц (это соответствует частотам передачи данных 540 и 800 МГц). Причем для 800 МГц тайминги соответствовали указанным на корпусе для 1066 МГц. Что же, в режиме по умолчанию (800 МГц 5.5.5.15) мы ее и испытывали.
Corsair CM2X1024-6400PRO
Эти модули памяти содержат на верхнем торце светодиодный индикатор, показывающий степень загрузки памяти. Следовательно, высота модуля больше, чем обычно, хотя толщина примерно такая же, как и у других модулей памяти, снабженных радиаторами.
Записи в SPD здесь были для тех же частот, что и в предыдущем варианте, правда, для 800 МГц тайминги составили 5.5.5.18, тогда как на корпусе красуется надпись 5.5.5.12. А вот BIOS системной платы решила, что по умолчанию должно быть 5.5.5.13. Эта модель исследовалась при двух значениях таймингов: 5.5.5.13 и 5.5.5.12.
Corsair CM2X1024-6400C3
По умолчанию системная плата установила частоту памяти в 667 МГц при таймингах 5.5.5.15. Как выяснилось впоследствии, в SPD помимо основных (совпадающих со значениями в предыдущих модулях) били «пробиты» два ряда значений, но для частот 400 и 533 МГц, что соответствует частоте передачи данных 800 и 1066 МГц. Утилита CPU-Z называет эти значения EPP profile, указывая, что напряжение питания при этом должно составлять 2,2 В против 1,95 В в стандартном режиме. Значит, хотя память и заявлена как DDR2-800 PC6400, в SPD фигурирует рабочая частота 1066 МГц, т.е. ситуация явно противоположна сложившейся с CM2X512-8500. Кстати, для частоты 1066 МГц тайминги как раз составили 5.5.5.15. Попытка установить 3.х.х.х без поднятия напряжения питания заканчивалась в лучшем случае характерными звуковыми сигналами BIOS, а в худшем — тем, что плата вообще не подавала никаких признаков жизни. При 4.4.3.13 система Windows пыталась загрузиться, но без ошибок ей это не удавалось. Таким образом, минимальными таймингами, при которых удавалось добиться устойчивой работы системы без поднятия питающего напряжения, оказались 4.4.4.9. Эта модель также исследовалась при двух значениях таймингов: 4.4.4.9 и 5.5.5.15.
Подведем итоги
Проведенные тесты показали, что при таймингах памяти 5.5.5.х система может быть разогнана без повышения напряжения питания примерно на 20%. Судя по тому, что для различных модулей ОЗУ результаты оказались близкими, можно предположить, что лимитирующим фактором здесь является не память, а процессор или НМС. Кстати, частота процессора при проведении измерений иногда превышала 3,2 ГГц, что для Intel Core 2 достаточно много.
При установке таймингов 4.4.4.9 систему удалось разогнать только на 14%. В принципе при такой тактовой частоте величине тайминга 4 соответствует 4,39 нс, а значению тайминга 5 при разгоне на 21% — 5,17 нс. Это позволяет надеяться, что 20% запас памяти по тактовой частоте при таймингах 5.5.5.х не исчерпывается.
При выполнении различных алгоритмов и программ снижение производительности в результате увеличения величины таймингов не превышало 1,5—2,5%, а в большинстве случаев было менее 0,5%, что, очевидно, связано с эффективной работой кэш-памяти.
Влияние настроек памяти на производительность, как и следовало ожидать, из-за существенно различающегося объема кэш-памяти для платформы Intel оказалось заметно слабее, чем для платформы AMD. В то же время утилита latency, входящая в состав CPU-Z, отчетливо показала, что наличие встроенного контроллера памяти в процессорах AMD приводит к существенному снижению задержки при обращении к основному объему памяти (около 30%). При последовательном доступе к памяти степень влияния различных таймингов на результат примерно соответствует их расстановке в схеме, однако влияние TRAS, как показали наши измерения, оказалось выше, чем у TRP. Что же касается произвольного доступа, здесь картина совершенно иная: к наибольшему падению производительности приводил рост TRCD и TRP, а увеличение TRAS, напротив, в некоторых случаях давало положительный эффект. Поскольку в реальных приложениях последовательный характер доступа встречается чаще произвольного, то можно отметить, что в общепринятой схеме в среднем тайминги расставлены по приоритетам верно. Вместе с тем если на реальных приложениях изменение производительности было невелико, то при произвольном доступе оно достигало 20% для операции записи и 10% для операции чтения в случае увеличения одного из таймингов в 1,5 раза. При последовательном доступе этот параметр доходил до 8,5%. Видимо, приведенные цифры следует считать максимальными.
Таким образом, хотя минимизация таймингов не слишком сильно влияет на производительность системы в штатном режиме, тем не менее наличие таких значений свидетельствует о большом разгонном потенциале модулей памяти, что является необходимым условием достижения наивысшей производительности в результате разгона системы.
Полный вариант статьи см. на «Мир ПК-диске».
Напоминаем, что...
Тайминг — характерное время доступа памяти.
SPD ( Serial Presence Detect) — микросхема, хранящая характеристики модуля памяти, в частности значения таймингов для различных частот.
Таблица 1. Производительность системы (Intel Core 2 E6700) при номинальной и максимальной частотах