Оперативная память типа DDR2 известна уже довольно давно — начиная со своих первых вариантов DDR2-400 и DDR2-533, появившихся примерно 2 года назад и обладавших весьма высокими задержками (как динамическими, связанными с характеристиками самих микросхем памяти, так и системными, связанными с изначально медленными схемами таймингов — 3-3-3 и 4-4-4 соответственно), и заканчивая ее современными разновидностями, обладающими как высокими скоростями функционирования (DDR2-667, DDR2-800 и неофициальные DDR2-1000/1066), так и сравнительно низкими задержками (вплоть до схем вида 4-4-4 для DDR2-800). Тем не менее, реальный потенциал памяти данного типа в двухканальном режиме ее функционирования вплоть до сегодняшнего дня остается нераскрытым (использование сравнительно дорогой высокоскоростной памяти DDR2 в одноканальном режиме не оправдано по крайней мере экономическими причинами, т. к. гораздо более дешевая DDR400 в двухканальном режиме обладает как минимум не худшими, а зачастую — лучшими характеристиками). Причина этого заключается в том, что память типа DDR2 до сих пор поддерживалась (а фактически — предназначалась для) лишь одним классом платформ — Intel Pentium 4/Pentium D с чипсетами Intel, начиная от 915-й и заканчивая современной 975-й серией (как вариант — NVIDIA nForce 4 Intel Edition или чипсеты конкурентов, но это принципиально не меняет дело). Главное ограничение на раскрытие потенциала памяти DDR2 в этом классе платформ заключается в их традиционной «шинной» архитектуре, когда процессор связан посредством системной шины (Front-Side Bus, FSB) с северным мостом чипсета, важнейшим составляющим которого является собственно контроллер памяти, способный функционировать в двухканальном режиме. Несмотря на то что такой контроллер памяти способен обеспечить пропускную способность по своей «внутренней» шине, равную теоретической ПСП двухканальной DDR2 (от 6.4 ГБ/с для DDR2-400 до 12.8 ГБ/с для DDR2-800), реальная скорость обмена данными процессора с памятью ограничивается пропускной способностью системной шины процессора, которая функционирует на частоте 200 либо 266 МГц (для «экстремальных» вариантов процессоров). Пропускная способность последней составляет всего 6.4 либо 8.53 ГБ/с — что, как нетрудно заметить, в лучшем случае не превышает теоретическую пропускную способность двухканальной памяти DDR2-533. Исходя из этой простой математики, мы не устаем делать основной вывод о том, что даже на сегодняшний день двухканальной памяти типа DDR2-533 для платформ Intel по-прежнему хватает «за глаза». Конечно, практика показывает, что более высокоскоростная память типа DDR2-667 или DDR2-800 все же имеет преимущество и на этом классе платформ, которое заключается исключительно в снижении задержек при случайном доступе к оперативной памяти. Однако согласитесь, что постоянный случайный доступ к памяти вряд ли является типичным режимом ее функционирования, характерным для большинства реальных задач.
Итак, «необходимость и достаточность» памяти DDR2-533 могла бы еще долго оставаться такой — как минимум, до тех пор, пока не появились бы процессоры и чипсеты Intel, обладающие более высокой частотой системной шины (каковыми, кстати, станут грядущие процессоры Intel Core 2 (ядра Conroe/Merom/Woodcrest) и соответствующие им чипсеты). Если бы не решение конкурента, обладающее, по крайней мере «на бумаге», потенциально лучшими характеристиками обмена данными с памятью.
Как известно, существенным отличием процессоров/платформ класса AMD Athlon 64 (включая их двухъядерную реализацию Athlon 64 X2) является наличие интегрированного контроллера памяти (двухканального либо одноканального — в бюджетном секторе решений), функционирующего на полной частоте (равной частоте ядра процессора) и имеющего прямую шину обмена командами и данными с оперативной памятью. Последняя функционирует на частоте, максимально приближенной (именно «максимально приближенной», а не «равной», т. к. последняя получается делением частоты процессора на некую целую постоянную) к номинальной частоте памяти. При этом роль «системной шины» в привычном ее понимании играет шина HyperTransport, никак не связанная с шиной памяти и служащая для обмена данными с периферией посредством чипсета (говорить о строгом разделении последнего на северный и южный мосты здесь не приходится, поскольку отчасти функции северного моста выполняет сам процессор). Очевидно, что применение такой схемы, по крайней мере в теории, позволяет полностью «выбрать» реальную пропускную способность памяти даже при ее двухканальном подключении — обмен данными с памятью идет напрямую, минуя всевозможные «узкие места» (если, конечно, таковые не встречаются непосредственно в самом ядре процессора, о чем ниже). По нашим многочисленным исследованиям мы можем констатировать, что с нынешними процессорами AMD Athlon 64 (начиная от первой ревизии ядра («C») и заканчивая последней («E»)), интегрированный контроллер памяти которых рассчитан на использование памяти типа DDR400 (в последнем случае — и выше, вплоть до неофициальной «DDR533»), так оно и есть — наблюдаемые реально максимальные значения ПСП весьма близки к теоретическим.
Новое решение от AMD — двухъядерные процессоры с тем же названием Athlon 64 X2 (топовые модели — Athlon 64 FX), но ревизией ядра/контроллера памяти «F» и несколько иным процессорным разъемом «Socket AM2» в некоторой степени является принципиально новым — как уже можно было догадаться, интегрированный контроллер памяти этих процессоров теперь поддерживает память типа DDR2 (и только DDR2, начиная от DDR2-400 и пока что заканчивая DDR2-800). Пожалуй, это единственное серьезное отличие — бегло проведенные нами микроархитектурные тесты данного процессора в RightMark Memory Analyzer не выявили каких-либо заметных отличий от всех предыдущих ревизий процессоров класса AMD64 (чего не скажешь о постоянно меняющихся ревизиях ядер процессоров Intel!). Что ж, самое время посмотреть, на что способен новый контроллер памяти от AMD, сможет ли он раскрыть реальный потенциал двухканальной памяти DDR2-800. Или, перефразируя последнее предложение, «пришла ли наконец-то пора по-настоящему быстрой DDR2?» :)
Конфигурации тестовых стендов
Тестовый стенд №1
- Процессор: AMD Athlon 64 X2 4000+ (ревизия ядра «F»), Socket AM2
- Чипсет: NVIDIA nForce 570 SLI (MCP55P)
- Материнская плата: MSI K9N SLI Platinum
- Память: 2x1024 МБ Corsair XMS2 PRO PC2-6400 (DDR2-800, тайминги 5-5-5-12)
Тестовый стенд №2
- Процессор: Intel Pentium 4 Extreme Edition 3,73 ГГц (Prescott N0, 2 МБ L2)
- Чипсет: Intel 975X, частота FSB 200 и 266 МГц
- Материнская плата: ASUS P5WD2-E Premium, версия BIOS 0404 от 03/22/2006
- Память: 2x512 МБ Corsair XMS2-8500 (DDR2-1066 в режиме DDR2-800, тайминги 5-5-5-18)
Тестовый стенд №3
- Процессор: AMD Athlon 64 4000+, 2.4 ГГц (rev. SH-CG, 1 МБ L2)
- Чипсет: NVIDIA nForce4 SLI X16
- Материнская плата: ASUS A8N32-SLI Deluxe, версия BIOS 0502 от 10/06/2005
- Память: 2x1024 МБ Corsair XMS PRO PC3500, «DDR437» (в режиме DDR400, тайминги 2-3-2-6)
Результаты тестирования
Начнем с изучения результатов тестирования новой платформы как таковой (стенд №1), а затем сопоставим их с уже имеющимися результатами тестирования как памяти типа DDR2-800 на платформе Intel (стенд №2), так и памяти типа DDR400 на нынешнем поколении платформ AMD Athlon 64 (стенд №3).
В настройках контроллера памяти в BIOS материнской платы MSI K9N SLI Platinum, как и для предыдущих ревизий ядер AMD64, можно задать максимальную частоту функционирования памяти (MemCLK Limit). В данном случае она, выраженная в терминах скоростной категории памяти, может принимать значения «DDR2-400», «DDR2-533», «DDR2-667» и «DDR2-800», что соответствует четырем принятым стандартам памяти типа DDR2. В очередной раз оговоримся, что речь идет именно о максимальной, но не номинальной частоте функционирования памяти, поскольку она получается путем деления частоты процессора (контроллера памяти) на некоторое целое значение. Таким образом, реальная частота шины памяти может оказаться меньшей или равной заданному пределу MemCLK Limit.
К сожалению, узнать реальную частоту шины памяти в том или ином случае в точности не представляется возможным. Данный параметр просто не фигурирует в конфигурационных регистрах «северного моста» процессора (в них хранится лишь вышеупомянутый предел частоты памяти), поэтому всегда вычисляется эмпирическим путем, однако логика выставления частоты шины памяти процессором может отличаться от таковой, реализованной в системных утилитах (включая наш тест RMMA). Заметим также, что переориентация интегрированного контроллера памяти AMD64 на память типа DDR2 в новой ревизии ядер «F» неизбежно повлекла за собой многочисленные изменения в параметрах конфигурационных регистров, и, таким образом, на настоящий момент как сам процессор, так и настройки его контроллера памяти определяются неверно. Так, последняя версия RMMA (3.65) утверждает, что перед нами — процессор «AMD Athlon 64 FX-39» с частотой шины памяти 100 МГц (независимо от выставленного предела частоты), а большинство значений таймингов памяти просто не определяется. С нетерпением ждем новой документации от AMD, дабы исправить это положение, а пока вернемся к нашим тестам.
В приведенной ниже таблице представлены результаты тестирования памяти типа DDR2-800 (тайминги выставлялись в настройках BIOS по умолчанию) во всех четырех скоростных режимах, поддерживаемых новым контроллером памяти. Для каждого из этих режимов представлена теоретическая пропускная способность памяти, рассчитанная с учетом наиболее вероятной реальной частоты шины памяти (она отличается от номинала лишь в случае DDR2-533 и составляет 250 (500) МГц), а также реально измеренные величины ПСП и задержек при псевдослучайном (случайность в пределах одной страницы памяти, прямой последовательный обход страниц) и истинно случайном обходе 32-мегабайтного блока памяти.
Параметр/Режим | DDR2-400 | DDR2-533 | DDR2-667 | DDR2-800 |
---|---|---|---|---|
Теоретическая ПСП, МБ/с | 6400 | 8000* | 10667 | 12800 |
Средняя ПСП на чтение, МБ/с | 2548 | 2950 | 3368 | 3590 |
Средняя ПСП на запись, МБ/с | 2063 | 2394 | 2759 | 2909 |
Макс. ПСП на чтение, МБ/с | 5213 (81.5%) | 5944 (74.3%) | 6590 (61.8%) | 6819 (53.3%) |
Макс. ПСП на запись, МБ/с | 5626 (87.9%) | 5695 (71.2%) | 5758 (54.0%) | 5790 (45.2%) |
Минимальная латентность псевдослучайного доступа, нс | 44.6 | 38.0 | 31.8 | 28.8 |
Максимальная латентность псевдослучайного доступа, нс | 49.4 | 42.0 | 35.1 | 31.9 |
Минимальная латентность случайного доступа**, нс | 141.6 | 117.6 | 96.3 | 85.3 |
Максимальная латентность случайного доступа**, нс | 149.5 | 123.0 | 99.5 | 88.5 |
*реальная частота памяти 250 МГц, режим «DDR2-500»
**размер блока 32 МБ
Результаты, мягко говоря, не впечатляют. Уже в случае наименее скоростного режима DDR2-400 максимальная реальная ПСП едва превышает 5.2-5.6 ГБ/с (заметим, что она оказывается ниже при чтении данных с программной предвыборкой, нежели при записи данных методом прямого сохранения) — что явно меньше типичных 6.2-6.4 ГБ/с, наблюдаемых в нынешнем поколении платформ AMD64 с памятью типа DDR400.
При переходе от наименее скоростного режима DDR2-400 к более скоростным изменение частоты шины памяти явно происходит — об этом говорят все более возрастающие величины ПСП, однако сам прирост указанных величин вряд ли заслуживает похвалы. В режиме DDR2-533 ПСП при чтении данных из памяти начинает превышать ПСП при записи данных (что сохраняется и при дальнейшем увеличении частоты шины памяти), но по-прежнему не достигает значений, типичных для… DDR400. Паритет достигается примерно в области DDR2-667 — в этом режиме ПСП при чтении начинает немного превышать ПСП DDR400, но достигает лишь порядка 62% от собственного теоретического максимума. Еще меньший эффект заметен в максимально скоростном режиме — ПСП достигает лишь 6.8 ГБ/с, т. е. примерно 53% от теоретического предела. Картина выглядит более чем печально — как показали наши недавние тесты, гораздо лучших результатов можно достичь с нынешним поколением контроллеров памяти AMD64 ревизии «E», применяя нестандартную (оверклокерскую) память типа DDR533.
Единственный приятный момент при переходе к высокоскоростным режимам функционирования DDR2 заключается лишь в постоянном уменьшении задержек, наиболее заметном по латентности случайного доступа к памяти (от 142 до 85 нс). Однако и этому находится достаточно прозаическое объяснение — во всех режимах использовалась одна и та же схема таймингов по умолчанию (5-5-5-12), которая в абсолютных величинах выглядит совершенно по-разному для режимов DDR2-400 и DDR2-800 (чтобы быть точным, различие составляет ровно два раза в пользу DDR2-800).
Сопоставим теперь полученные результаты с типичными скоростными показателями памяти типа DDR2-800 на платформах Intel и DDR400 на платформах AMD, взятыми из результатов тестирования модулей памяти Corsair XMS2 PC2-8500 (в режиме DDR2-800) и Corsair XMS 3500LLPRO (в режиме DDR400).
Параметр/Платформа | DDR2-800, AMD «AM2» (стенд №1) | DDR2-800, Intel P4EE (стенд №2) | DDR400, AMD64 (стенд №3) | |
---|---|---|---|---|
Теоретическая ПСП, МБ/с | 12800 | 6400* | 8533** | 6400 |
Средняя ПСП на чтение, МБ/с | 3590 | 5614 | 6878 | 4344 |
Средняя ПСП на запись, МБ/с | 2909 | 2175 | 2415 | 2555 |
Макс. ПСП на чтение, МБ/с | 6819 (53.3%) | 6530 (102.0%) | 8527 (99.9%) | 6400 (100.0%) |
Макс. ПСП на запись, МБ/с | 5790 (45.2%) | 4279 (66.8%) | 5685 (66.6%) | 6213 (97.1%) |
Минимальная латентность псевдослучайного доступа, нс | 28.8 | 52.7 | 45.7 | 31.6 |
Максимальная латентность псевдослучайного доступа, нс | 31.9 | 61.9 | 53.2 | 35.3 |
Минимальная латентность случайного доступа***, нс | 85.3 | 105.7 | 95.4 | 62.8 |
Максимальная латентность случайного доступа***, нс | 88.5 | 130.5 | 114.8 | 67.0 |
*ПС системной шины, частота 200.0 МГц
**ПС системной шины, частота 266.7 МГц
***размер блока 32 МБ
О сопоставлении величин ПСП, полученных в настоящем исследовании, с результатами тестирования других платформ мы уже отчасти говорили выше — даже в максимальном скоростном режиме DDR2-800 они лишь незначительно опережают типичные величины для DDR400 на текущем поколении платформ AMD. На платформе Intel, явно ограничивающей реальный потенциал DDR2-800, и то наблюдаются значительно более высокие показатели — по крайней мере, соответствующие почти 100% эффективности утилизации процессорной шины, являющейся «узким местом». Достаточно приятную картину интегрированный контроллер DDR2 показывает лишь по части задержек — они оказываются меньше по сравнению с таковыми на платформе Intel, обладающей внешним контроллером памяти (в обоих случаях величины получены при включенной аппаратной предвыборке данных), т. е. некоторое преимущество интегрированного контроллера памяти над «традиционной» схемой построения подсистемы памяти все же имеется. Задержки при псевдослучайном обходе DDR2-800 на платформе «AM2» также не уступают задержкам при псевдослучайном обходе DDR400, а по части истинно случайного доступа к памяти новый интегрированный контроллер памяти DDR2 все же несколько проигрывает своему предыдущему DDR-аналогу.
Вместо заключения
Каковы же могут быть причины наблюдаемых результатов? На наш взгляд, их как минимум две. Первая из них достаточно очевидна — это «сырость» самого интегрированного контроллера памяти DDR2, который явно «не тянет» высокоскоростные режимы вроде DDR2-800, в связи с чем большую часть времени, по всей видимости, занимается отправкой «пустых» команд NOP по шине памяти :). Вторая причина менее очевидна, к тому же, она способна объяснить лишь часть представленных фактов. Это — «узость», да и вообще ограничение схемы организации шины L1-L2 кэша процессора (двунаправленная шина, эффективная разрядность которой — всего 64 бита в каждую сторону, в противовес 256-битной шине L1-L2 кэша процессоров Intel Pentium 4/Pentium D, к тому же, обладающих инклюзивной организацией кэша, не требующей «лишнего трафика» по шине L1-L2). Ее пиковая пропускная способность — 8 байт/такт, что для процессора с тактовой частотой в 2 ГГц составляет ровно 16.0 ГБ/с (заведомо выше ПСП двухканальной DDR2-800, но уже сопоставимо с ПСП более скоростной двухканальной DDR2-1066), однако в реальности мы имеем совсем другую картину.
Реальная пропускная способность L1/L2 кэша и оперативной памяти
Итак, реальная ПС в области L2-кэша данных составляет всего 4 байта/такт, т. е. ровно 8.0 ГБ/с, что явно ниже, чем теоретическая ПСП двухканальной DDR2-800. Реальная пропускная способность памяти как таковой, как мы уже показали, оказывается еще ниже. Тем не менее, «узость» шины L1-L2, хотя и имеет место быть, неспособна объяснить крайне низкие значения ПСП на запись методом прямого сохранения данных (минуя иерархию кэшей процессора), которая во всех случаях ограничивается уровнем 5.6-5.7 ГБ/с (т. е. проигрывает даже предыдущему контроллеру памяти, рассчитанному на DDR400!). С чем связано последнее ограничение, пока не понятно, однако складывается впечатление, что схема записи в память через «буферы объединения записи» (write-combining buffers), реализованная еще во времена первых процессоров Athlon 64 и не претерпевшая изменений впоследствии, уже явно устарела и «не поспевает» за современными стандартами двухканальной DDR2, обладающей весьма серьезным потенциалом пропускной способности (как мы видим, она оказывается сопоставимой со скоростью внутрипроцессорных коммуникаций, а это весьма и весьма серьезно!).
Таким образом, увы, в очередной раз раскрыть реальный потенциал топовых моделей DDR2 (DDR2-667 и выше) не удалось, эра высокоскоростной DDR2 не настала :(. На наш взгляд, виновной на сей раз оказалась сама компания AMD, попытавшаяся привязать уже устаревающие технологии почти 5-летней давности, реализованные еще в первых процессорах Athlon 64 (вроде сравнительно узкой шины L1-L2 кэша с эксклюзивной организацией последнего) к самым современным технологиям памяти, пропускная способность которых стремительно приближается к скорости передачи данных внутри самого процессора. Оперативная память определенно перестает быть «узким местом» системы, так что производителям процессора уже стоит начинать считаться с этим фактом. Что ж, будем надеяться, что производители услышат наши слова, и в следующей ревизии «G» процессорных ядер AMD64 (или принципиально новом процессорном ядре от AMD) подобные пробелы будут устранены.