Задержки устройства DRAM выражаются размерностью цикла (tCK), т.е. равны произведению времени цикла на выбранное значение задержки CAS (tCL). Типичные значения задержек для устройств типа DDR2 попадают в интервал 12-20 нс., на основании которого и выбирается используемое значение задержки CAS. Использование больших величин задержки нецелесообразно из соображений производительности подсистемы памяти, а меньших — ввиду необходимости стабильной работы устройства памяти.
Стандарт DDR2 также вносит изменения в спецификацию задержки записи (команды WRITE). Различия в поведении команды записи в устройствах DDR и DDR2 представлены на рисунке.
DDR SDRAM имеет задержку записи, равную 1 такту. Это означает, что устройство DRAM приступает к «захвату» информации по шине данных в среднем через один такт после поступления команды WRITE. Тем не менее, учитывая возросшую скорость устройств DDR2, этот промежуток времени оказывается слишком малым для того, чтобы устройство DRAM (а именно, его буфер ввода-вывода) могло успешно подготовиться к «захвату» данных. В связи с этим, стандарт DDR2 определяет задержку записи как задержку выдачи CAS за вычетом 1 такта (tWL = tCL - 1). Отмечается, что привязка задержки WRITE к задержке CAS не только позволяет достичь более высоких частот, но и упрощает синхронизацию команд чтения и записи (настройку таймингов Read-to-Write).
Процедура записи в память типа SDRAM аналогична операции чтения с разницей в дополнительном интервале tWR, характеризующем период восстановления интерфейса после проведения операции (обычно это двухтактная задержка между окончанием выдачи данных на шину и инициированием нового цикла). Этот временной интервал, измеряемый от момента окончания операции записи до момента вхождения в стадию регенерации (Auto Precharge), обеспечивает восстановление интерфейса после проведения операции записи и гарантирует корректность ее выполнения. Отметим, что стандарт DDR2 не вносит изменений в спецификацию периода восстановления после записи.
Таким образом, задержки устройств типа DDR2 в целом можно считать одной из немногих характеристик, по которой новый стандарт проигрывает спецификации DDR. В связи с чем совершенно очевидно, что использование равночастотной DDR2 вряд ли будет иметь какие-либо преимущества в плане скорости по отношению к DDR. Как это обстоит на самом деле — как всегда, покажут результаты соответствующих тестов.
Что ж, самое время теперь перейти к результатам тестирования, полученным в тестовом пакете RightMark Memory Analyzer версии 3.1. Напомним, что главными преимуществами этого теста по отношению к другим доступным тестам памяти является широкая функциональность, открытость методики (тест доступен всем желающим для ознакомления в виде исходного кода) и тщательно проработанная документация.
· Процессор: Intel Pentium 4 3.4 ГГц (ядро Prescott, Socket 478, FSB 800/HT, 1 МБ L2) на частоте 2.8 ГГц
· Материнская плата: ASUS P4C800 Deluxe на чипсете Intel 875P
· Память: 2x512 МБ PC3200 DDR SDRAM DIMM TwinMOS (тайминги 2.5-3-3-6)
· Процессор: Intel Pentium 4 3.4 ГГц (ядро Prescott, Socket 775, FSB 800/HT, 1 МБ L2) на частоте 2.8 ГГц
· Материнская плата: Intel D915PCY на чипсете Intel 915
· Память: 2x512 МБ PC2-4300 DDR2 SDRAM DIMM Samsung (тайминги 4-4-4-8)
· Windows XP Professional SP1
· Intel Chipset Installation Utility 5.0.2.1003
· RightMark Memory Analyzer 3.1
Измерение максимальной реальной пропускной способности памяти проводилось с помощью подтеста Memory Bandwidth, пресеты Maximal RAM Bandwidth, Software Prefetch, MMX/SSE/SSE2. Как говорит само название выбранных пресетов, в этой серии измерений используется стандартный метод оптимизации операций чтения из памяти — Software Prefetch, суть которого заключается в предварительной выборке данных, которые будут востребованы позже из оперативной памяти в L2 кэш процессора. Для оптимизации записи в память используется метод прямого сохранения данных (Non-Temporal Store), позволяющий избежать «засорения» кэша. Результаты с использованием регистров MMX, SSE и SSE2 оказались практически идентичными — для примера, ниже приведена картина, полученная на платформе Prescott/DDR2 с использованием SSE2.
Отметим, что существенных качественных отличий между DDR и DDR2 на равночастотных Prescott в этом тесте не наблюдается. Но более интересно то, что и количественные характеристики ПСП DDR-400 и DDR2-533 оказываются весьма близки! (см. таблицу). И это — несмотря на то, что память типа DDR2-533 имеет максимальную теоретическую ПСП 8.6 ГБ/с (в двухканальном режиме). Собственно, ничего удивительного в полученном результате мы не видим — ведь шина процессора — это по-прежнему 800 МГц Quad-Pumped Bus, а ее пропускная способность — 6.4 ГБ/с, поэтому именно она и является лимитирующим фактором.
Тип памяти | Максимальная реальная пропускная способность, МБ/с | |
Чтение (Software Prefetch) | Запись (Non-Temporal) | |
DDR-400 | 6277.9 | 4276.0 |
DDR2-533 | 6327.4 | 4266.0 |
Что касается эффективности операций записи, по отношению к чтению — легко увидеть, что она осталась такой же. Впрочем, это вновь выглядит вполне естественно, поскольку в данном случае предел ПСП на запись (2/3 от ПСП на чтение) явно задается микроархитектурными особенностями процессора Prescott.
Прежде всего, остановимся несколько подробнее на том, как и почему мы измеряли «истинную» латентность памяти, поскольку ее измерение на платформах Pentium 4 — на самом деле, далеко нетривиальная задача. А связано это с тем, что процессоры этого семейства, в частности, новое ядро Prescott, характеризуются наличием довольно «продвинутого» асинхронного аппаратного префетчера данных, весьма затрудняющего объективные измерения указанной характеристики подсистемы памяти. Очевидно, что использование методов последовательного обхода памяти (прямого либо обратного) для измерения ее латентности в данном случае совершенно не годятся — алгоритм Hardware Prefetch в этом случае работает с максимальной эффективностью, «маскируя» латентности. Использование случайных режимов обхода гораздо более оправдано, однако, истинно случайный обход памяти имеет другой существенный недостаток. Дело в том, что такое измерение выполняется в условиях практически 100% промаха D-TLB, а это вносит существенные дополнительные задержки, о чем мы уже писали. Поэтому единственным возможным вариантом (среди реализованных в RMMA методов) является псевдослучайный режим обхода памяти, при котором загрузка каждой последующей страницы осуществляется линейно (сводя на нет промахи D-TLB), тогда как обход в пределах самой страницы памяти является истинно случайным.
Тем не менее, результаты наших прошлых измерений показали, что даже такая методика измерений довольно сильно занижает значения латентности. Мы считаем, что это связано с еще одной особенностью процессоров Pentium 4, а именно, возможностью «захвата» сразу двух 64-байтных строк из памяти в L2-кэш при каждом обращении к ней. Для демонстрации этого явления на представленном ниже рисунке приведены кривые зависимости латентности двух последовательных обращений к одной и той же строке памяти от смещения второго элемента строки относительно первого, полученные на платформе Prescott/DDR2 с помощью теста D-Cache Arrival, пресет L2 D-Cache Line Size Determination.
Из них видно (кривая случайного обхода является наиболее показательной), что доступ ко второму элементу строки не сопровождается какими-либо дополнительными задержками до 60 байт включительно (что отвечает истинному размеру строки L2-кэша, 64 байта). Область 64-124 байт соответствует чтению данных из следующей строки памяти. Поскольку величины латентности в этой области увеличиваются лишь незначительно, это означает, что последующая строка памяти действительно «подкачивается» в L2-кэш процессора сразу вслед за запрашиваемой. Какой же можно сделать из всего этого практический вывод? Самый прямой: для того, чтобы «обмануть» эту особенность алгоритма Hardware Prefetch, работающую во всех случаях обхода памяти, достаточно просто обходить цепочку с шагом, равным так называемой «эффективной» длине строки L2-кэша, которая в нашем случае составляет 128 байт.
Итак, перейдем непосредственно к результатам измерений латентности. Для наглядности, приведем здесь графики разгрузки шины L2-RAM, полученные на платформе Prescott/DDR2.
Как и в случае тестов реальной ПСП, кривые латентности на другой платформе — Prescott/DDR — на качественном уровне выглядят абсолютно так же. Несколько отличаются лишь количественные характеристики. Самое время обратиться к ним.