Игры с памятью: внимание к задержкам
Современные системы очень прожорливы до памяти – им нужно не менее 512 Мбайт, а лучше 1 Гбайт. Всё усложняется, когда вы приходите в большой компьютерный магазин, – там обычно большой выбор модулей DDR400 от разных производителей и в различных вариациях. Конечно, мы не имеем в виду мелкие фирмы с одним видом памяти в продаже. Так какую же память выбрать? Следует ли слушать то, что говорит продавец?
При любом обсуждении памяти часто всплывает термин “латентность/задержка CAS”, или CL, для краткости. Однако не следует забывать и о многих других факторах, которые тоже влияют на скорость работы памяти. В данной статье мы внимательно рассмотрим эти факторы и объясним, что означают все эти таинственные цифры на модулях.
Затем мы перейдём к цели нашей статьи – определим, как система будет работать с лучшими, средними и худшими задержками. Мы провели 19 отдельных тестов на всех доступных платформах (Athlon XP, Athlon 64, Athlon 64 FX, Pentium 4, Pentium 4 EE), чтобы пролить свет на эту проблему.
Как работает SDRAM?
Современные модули памяти передают данные пакетами по 64 бита. Модули содержат чипы DRAM, которые отсылают данные синхронно с тактовым импульсом и обычно используют шину с удвоенной скоростью (DDR). Различие между шинами памяти DDR и SDR заключается в том, что модули DDR передают по шине данные на обоих фронтах тактового импульса, а SDR – только на одном. То есть реальная тактовая частота модулей DDR400 составляет 200 МГц, а эффективная – 400 МГц DDR.
Лучшим показателем скорости работы памяти является время цикла модуля, которое представляет собой время, необходимое для завершения одного такта. Время цикла в 10 нс означает возможность работы памяти со скоростью 100 миллионов тактов в секунду, то есть чипы могут работать на 100 МГц. Чтобы достичь 133 МГц, необходимо время цикла 7,5 нс, а для 166 МГц – 6,0 нс.
Время цикла, T | Макс. частота, f | Пропускная способность SDR* | Пропускная способность DDR* |
10 нс | 100 МГц | 800 Мбайт/с (PC100) | 1600 Мбайт/с (DDR200) |
7,5 нс | 133 МГц | 1064 Мбайт/с (PC133) | 2100 Мбайт/с (DDR266) |
6 нс | 166 МГц | – | 2700 Мбайт/с (DDR333) |
5 нс | 200 МГц | – | 3200 Мбайт/с (DDR400) |
* Максимальная теоретическая пропускная способность высчитывалась по следующей формуле: частота x ширину интерфейса (64 бита – это 8 байт). Память DDR RAM даёт в два раза большую пропускную способность, чем память SDR RAM. Мы рассматриваем одноканальный вариант.
Номенклатура: названия RAM
С обычной памятью SDR-SDRAM особых проблем не возникало – модули просто именовались по тактовой частоте (PC100, PC133 SDRAM). С выпуском DDR RAM правила изменились. Модули обозначаются с использованием максимальной теоретической пропускной способности (в Мбайт/с). Так возникла PC2100 = DDR266, PC2700 = DDR333 и т.д. Это изменение было продиктовано номенклатурой памяти Rambus DRAM (RDRAM), чьи названия – PC800 или PC1066 – также являются производной частоты. Следующая таблица даёт более подробную информацию.
Название | Тип | Эффективная тактовая частота | Ширина шины | Пропускная способность |
PC66 | SDRAM | 66 МГц | 64 бита | 0,5 Гбайт/с |
PC100 | SDRAM | 100 МГц | 64 бита | 0,8 Гбайт/с |
PC133 | SDRAM | 133 МГц | 64 бита | 1,06 Гбайт/с |
PC1600 | DDR200 | 100 МГц | 64 бита | 1,6 Гбайт/с |
PC1600 | Dual-DDR200 | 100 МГц | 2 x 64 бита | 3,2 Гбайт/с |
PC2100 | DDR266 | 133 МГц | 64 бита | 2,1 Гбайт/с |
PC2100 | Dual-DDR266 | 133 МГц | 2 x 64 бита | 4,2 Гбайт/с |
PC2700 | DDR333 | 166 МГц | 64 бита | 2,7 Гбайт/с |
PC2700 | Dual-DDR333 | 166 МГц | 2 x 64 бита | 5,4 Гбайт/с |
PC3200 | DDR400 | 200 МГц | 64 бита | 3,2 Гбайт/с |
PC3200 | Dual-DDR400 | 200 МГц | 2x 64 бита | 6,4 Гбайт/с |
PC4200 | DDR533 | 266 МГц | 64 бита | 4,2 Гбайт/с |
PC4200 | Dual-DDR533 | 266 МГц | 2 x 64 Bit | 8,4 Гбайт/с |
PC800 | RDRAM Dual | 400 МГц | 2 x 16 бит | 3,2 Гбайт/с |
PC1066 | RDRAM Dual | 533 МГц | 2 x 16 бит | 4,2 Гбайт/с |
PC1200 | RDRAM Dual | 600 МГц | 2 x 16 бит | 4,8 Гбайт/с |
PC800 | RDRAM Dual | 400 МГц | 2 x 32 бита | 6,4 Гбайт/с |
PC1066 | RDRAM Dual | 533 МГц | 2 x 32 бита | 8,4 Гбайт/с |
Как работает доступ к памяти
Память организована в виде матриц, где есть строки (row) и столбцы (column). Ёмкость чипа определяется числом строк и столбцов. Если несколько массивов объединяются, они создают банк памяти.
Чипы, на самом деле, адресуются специальными сигналами управления, типа строба адреса строки (RAS), строба адреса столбца (CAS), разрешения записи (WE), выбора чипа (CS), и несколькими дополнительными командами (DQ). Вам также необходимо знать, какая строка в матрице памяти активна в любой момент времени.
В современных компьютерах скорость команд (command rate) определяется в BIOS – обычно, 1-2 такта. За это время выполняется RAS после выбора чипа памяти.
Контроллер памяти выбирает активную строку. Но перед тем, как строка станет активной, контроллеру нужно подождать 2-3 такта – tRCD (задержка RAS-to-CAS). Затем отсылается команда чтения, за которой следует задержка CAS. Для памяти DDR RAM, задержка CAS составляет 2, 2,5 или 3 такта. Как только это время завершится, на контакты DQ поступят данные. После получения данных, контроллер должен деактивировать строку, что осуществляется за время tRP (RAS precharge time).
Существует ещё одно техническое ограничение – tRAS (active-to-precharge delay). Это минимальное число тактов, в течение которых строка должна быть активной перед тем, как она будет вновь деактивирована. Обычно tRAS составляет 5-8 тактов.
Ниже мы привели задержки памяти в зависимости от их значимости:
Тестовая конфигурация
Процессоры Intel (Socket 478) | |
200 МГц FSB (двухканальная DDR400) | Pentium 4 3,20 ГГц Extreme Edition (3200 МГц 12-8/512/2048 кбайт) |
200 МГц FSB (двухканальная DDR400) | Pentium 4 3,20 ГГц (3200 МГц 12-8/512 кбайт) |
Процессоры AMD (Socket A) | |
200 МГц FSB (двухканальная DDR400) | Athlon XP 3200+ (2200 МГц 128/512 кбайт) |
Процессоры AMD (Socket 940) | |
200 МГц FSB (двухканальная DDR400) | Athlon64 FX-51 (2200 МГц 128/1024 кбайт) |
Процессоры AMD (Socket 754) | |
200 МГц FSB (одноканальная DDR400) | Athlon64 3200+ (2000 128/1024 кбайт) |
Память | |
DDR400 (200 МГц) | Corsair TWINX PC3500 2x 512 Мбайт CL 2,0-3-2-6 (Socket 754 и Socket A) 4x 256 Мбайт PC3500, CL 2,5-2-2-5 (Socket 478) |
DDR400 (200 МГц) | Legacy Electronics регистровая ECC PC3200 2 x 512 Мбайт CL 2,0-3-2-6 Чипы (88S6HDAR-1TDG 5733) Infineon |
Материнская плата | |
Intel 875 (Socket 478) |
Asus P4C800-E Deluxe Rev: 1.02 Bios: 1011 BETA 006 4 x 256 Мбайт Corsair TWINX PC3500 |
NVIDIA nForce 2 Ultra (Socket A) |
Asus A7N8X Rev: 2.00 Bios: 1006 2x 512 Мбайт Corsair TWINX PC3200 |
VIA K8T800 (Socket 940) |
MSI K8T Master 1-FAR (MS-9130) Bios: 1.0Bd Rev: 1 2 x 512 Мбайт Legacy Electronics (Reg. DDR) |
VIA K8T800 (Socket 754) |
MSI 8KT Neo (MS-6702) Bios: 1.0 Rev: 1.0 2 x 512 Мбайт Corsair TWINX PC3200 |
Общее аппаратное обеспечение | |
Звуковая карта | Terratec Aureon 7.1 Space 96,00 кГц |
Графическая карта | MSI FX5900U-VTD256 GPU: NVIDIA GeForce FX 5900 Ultra Память: 128 Мбайт DDR-SDRAM Частота памяти: 400 МГц DDR Частота чипа: 450 МГц |
Жёсткий диск (система AMD) | FastTrak S150 TX2plus (Bios: 1.00.0.30) 2 x SATA Maxtor 6Y080M0 (Raid 0) 80 Гбайт/ кэш 8 Мбайт/ 7200 об/мин |
Жёсткий диск (система Intel) | Intel FW82801ER ICH5R 2 x SATA Maxtor 6Y080M0 (Raid 0) 80 Гбайт/ кэш 8 MB Мбайт/ 7200 об/мин |
DVD/CD-ROM | MSI MS-8216 16x DVD |
Сеть (Intel – i875) | Intel 82547ET (CSA) |
Сеть (AMD – nForce 2) | Сетевой контроллер NVIDIA nForce MCP |
Сеть (AMD – VIA 8KT800) | Broadcom BCM5705KFB |
Программное обеспечение | |
Чипсет Intel | V 5.00.1012 Intel Application Accelerator RAID Ed. V 3.51 |
Драйвер NVIDIA | Detonator V 53.03 WHQL |
VIA K8T800 | Hyperion 4in1 Ver. 4.51 |
DirectX | 9.0b |
ОС | Windows XP, Build 2600 SP1 |
Тесты: методика
Хотя сегодня практически невозможно найти один модуль RAM, который будет работать на всех четырёх платформах, на результаты нашего тестирования это не повлияло. Мы не ставили своей целью сравнить различные платформы, мы просто пожелали узнать, как задержки памяти влияют на производительность.
Для каждой платформы мы протестировали максимально быструю конфигурацию памяти. Для Pentium 4 и Pentium 4 Extreme Edition на плате Asus P4C800-E (Intel 875P) мы использовали четыре модуля DIMM 256 Мбайт DIMM от Corsair, поскольку они позволили установить минимально возможные задержки CL2,0-2-2-5.
Подобная конфигурация была невозможна с двумя модулями DIMM по 512 Мбайт, поскольку самые быстрые, которые мы нашли – тоже от Corsair – поддерживали “всего” CL2,0-3-2-6.
Что касается тестирования других платформ, то Athlon64 FX и Athlon64 стабильно работают с четырьмя модулями DIMM только на значительно увеличенных задержках, в то время как плата nForce2 от Asus предлагает только три слота DIMM. Поэтому мы использовали два упомянутых выше модуля Corsair по 512 Мбайт. Для Athlon64 FX мы поменяли память Corsair на соответствующую пару модулей Legacy Electronics.
Система | Платформа | Используемая память | Причина |
AMD Athlon XP | nVIDIA nForce2 Ultra 400 | 2x 512 Мбайт Corsair TWINX, CL2,0-3-2-6 | Отсутствие более скоростных модулей DIMM по 512 Мбайт |
AMD Athlon64 | VIA K8T800 | 2x 512 Мбайт Corsair TWINX, CL2,0-3-2-6 | Отсутствие более скоростных модулей DIMM по 512 Мбайт, конфигурация 4 x 256 Мбайт возможна только при увеличении задержек |
AMD Athlon64 FX | VIA K8T800 | 2x 512 Мбайт Legacy Electronics, CL2,0-3-2-6 | Отсутствие более скоростных модулей DIMM по 512 Мбайт |
Intel Pentium 4 | Intel 875P | 4x 256 Мбайт Corsair TWINX CL2,0-2-2-5 | Самая быстрая память среди доступной нам |
Intel Pentium 4 EE | Intel 875P | 4x 256 Мбайт Corsair TWINX CL2,0-2-2-5 | Самая быстрая память среди доступной нам |
Лучшие задержки | Средние задержки | Худшие задержки | |
AMD Athlon XP | 2,0-3-2-6 | 2,5-3-3-6 | 3,0-4-4-8 |
AMD Athlon 64 | 2,0-3-2-6 | 2,5-3-3-6 | 3,0-4-4-8 |
AMD Athlon 64 FX | 2,0-3-2-6 | 2,5-3-2-6 | 3,0-3-2-6 |
Intel Pentium 4 | 2,0-2-2-5 | 2,5-3-3-6 | 3,0-4-4-8 |
Intel Pentium 4 EE | 2,0-2-2-5 | 2,5-3-3-6 | 3,0-4-4-8 |
Игры OpenGL: Quake 3
Wolfenstein Enemy Territory
Unreal Tournament
Warcraft III – The Frozen Thorne
Синтетические: 3D Mark 2003
AquaMark3
Main Concept MPEG Encoder
Xmpeg и Divx 5.1
Lame MP3 Encoder
Winrar 3.2
3D Studio Max 5.1
PC Mark 2002
SiSoft Sandra Max 3
Заключение – выбирайте разумно
В большинстве тестов видно, что задержки памяти не оказывают такого большого влияния, как несколько лет назад, когда у всех стояла память SDRAM и начала появляться память DDR первого поколения. Или, говоря другими словами, установка быстрой или медленной памяти не сможет радикально сместить баланс между последними процессорами AMD и Intel.
Однако мы сделали одно интересное наблюдение во многих игровых тестах: хотя Pentium 4 3,2 ГГц обычно работает чуть быстрее Athlon64 3200+, он быстро начинает отставать от Athlon, если вы будете использовать медленные модули памяти.
Ситуация становится напряжённее, если вы будете сочетать вычислительные задачи с обработкой больших массивов данных – типа архивации. В таких случаях задержки памяти оказывают сильное влияние на производительность – процессоры Pentium 4 либо выходят в лидеры, либо в аутсайдеры, в зависимости от задержек. Мы были впечатлены процессором Athlon64 FX-51, который сохранял свой рейтинг независимо от вида памяти, которая была ему дана. Подобный характер поведения, в большей степени, обусловлен встроенным контроллером памяти.
Мораль сей басни такова: хотя мы, по-прежнему, рекомендуем покупать только фирменные модули памяти для обеспечения совместимости (особенно для двухканальных систем), не следует гнаться за максимально возможными задержками. На современном рынке вам необходимы быстрые модули памяти, только если ваш компьютер будет заниматься массивными вычислениями или кодировать видео. В остальных случаях медленная память будет работать ничуть не хуже.