К теме раскрытия реального потенциала двухканальной памяти DDR2 мы обращались, так или иначе, уже неоднократно. Причина этого заключается в реальном потенциале памяти типа DDR2 как таковой, пропускная способность которой в двухканальном режиме работы, начиная с самых первых вариантов вроде DDR2-533, оказывается весьма высокой и, как правило, всегда превышает пропускную способность какого-либо компонента, лежащего на пути «регистры процессора — оперативная память» и лимитирующего пропускную способность подсистемы памяти в целом.
Чаще всего, «узким местом» системы оказывалась системная шина, связывающая шинный интерфейс (BIU) процессора (фактически — его L2-кэш) с контроллером памяти, расположенном в северном мосту чипсета. Именно так обстояло дело на платформах Intel, которые, как известно, обладают именно такой организацией подсистемы памяти. Частота системной шины на этих платформах не превышает 200 (большинство систем класса Pentium 4, включая двухъядерные Pentium D) или 266 МГц («экстремальные» варианты процессоров Pentium 4 Extreme Edition и двухъядерные Pentium Extreme Edition, а также новые платформы с двухъядерными процессорами с микроархитектурой Intel Core), что в терминах пропускной способности соответствует всего лишь двухканальной DDR2-400 или DDR2-533, соответственно. В связи с этим достаточно очевидно, что использование более высокоскоростных видов памяти вроде DDR2-667, DDR2-800 и, тем более, «неофициальных» вариантов DDR2-1066 на этом классе платформ не является оправданным по крайней мере с точки зрения пропускной способности памяти. С другой стороны, более высокая частота функционирования подсистемы памяти приводит к снижению ее системных задержек, что не может не являться плюсом и служит, так сказать, некоторым словом в защиту использования высокоскоростных разновидностей памяти DDR2 на платформах Intel.
Как бы там ни было, большие надежды на раскрытие реального потенциала памяти типа DDR2-667 и выше возлагалось на новую платформу AMD «AM2» (или, более официально — AMD K8 New Platform Technology, NPT), обладающую интегрированным в процессор двухканальным контроллером памяти, отныне «переделанным» для работы с памятью типа DDR2 (от DDR2-400 до DDR2-800 включительно) вместо устаревающей DDR, которая официально так и не превзошла частотный предел в виде DDR-400. Действительно, ведь в этом случае контроллер памяти расположен непосредственно в процессоре, функционирует на полной частоте процессора и имеет свой собственный интерфейс обмена данными с оперативной памятью, частота которого может составлять от 200 до 400 МГц и задается неким целым делителем полной частоты ядра процессора. И казалось бы — ничего не мешает «прокачивать» данные из памяти в регистры процессора с максимально возможной скоростью… так нет, наши исследования показали, что «узким местом» системы в этом случае оказывается шина L1-L2 кэша процессора, обладающая сравнительно низкой разрядностью (по 64 бита — в каждую сторону) и сложной (эксклюзивной) организацией. Ее пиковая пропускная способность, в теории, равна 8.0 байт/такт, однако тесты показывают, что ее реальная пропускная способность оказывается примерно вдвое ниже (порядка 4.0 байт/такт), что недостаточно для обеспечения бесперебойной «прокачки» данных из двухканальной DDR2-800 в регистры процессора даже у процессора Athlon 64 FX-62 с тактовой частотой ядра 2.8 ГГц.
Поскольку «узким местом» системы на платформе AMD «AM2» оказались, так сказать, именно «внутренности» ядра процессора, в заключительной части упомянутого выше исследования нам ничего не оставалось сделать, кроме как предположить, что «два ядра — лучше, чем одно». Ведь шина контроллера памяти в процессорах AMD Athlon 64 X2 является общей для обоих ядер, а «внутренности» у каждого ядра свои и, следовательно, большей утилизации пропускной способности памяти можно достичь при одновременном обращении к оперативной памяти со стороны обоих ядер процессора. По крайней мере — в теории, а как оно окажется на практике, нам покажут результаты, представленные в настоящей статье.
Итак, цель исследования, поставленного в рамках настоящей статьи, заключается в сравнении эффективности утилизации пропускной способности двухканальной памяти типа DDR2-800 при обращении к ней со стороны обоих ядер процессора, по сравнению с обращением к ней лишь одного ядра. Для проведения этого исследования мы воспользовались недавно разработанной утилитой RightMark Multi-Threded Memory Test, входящей в состав тестового пакета RightMark Memory Analyzer версии 3.7 и выше. Напомним, что эта утилита рассчитана на измерение пропускной способности подсистемы памяти (либо L2-кэша процессора, чему было посвящено наше предыдущее исследование с использованием этого инструмента, либо оперативной памяти, чему посвящено настоящее исследование) в условиях одно- или многопоточного обращения при осуществлении следующих операций: чтение (Read), запись (Write), чтение с программной предвыборкой (Read PF) и запись методом прямого сохранения данных (Write NT). Для сравнения, мы решили провести это исследование не только на платформах класса AMD «AM2», но и современных платформах на базе двухядерных процессоров Intel Core 2 Duo, первые исследования которых показали не самую высокую эффективность утилизации пропускной способности даже 266-МГц системной шины процессора в условиях «одноядерного» обращения.
Конфигурация тестовых стендов
Тестовый стенд №1
- Процессор: Intel Core2 Duo E6600, 4 МБ L2, 2.4 ГГц (266 МГц x 9)
- Чипсет: Intel 965G
- Материнская плата: Gigabyte 965G-DS3, BIOS F3 от 05.09.2006
- Память: 2 x 1 ГБ Corsair XMS2-8500C5 в режиме DDR2-800, тайминги 4-4-4-12
- Видео: Sapphire Radeon X1900XTX, 512 МБ
- HDD: Western Digital WD1600, SATA
Тестовый стенд №2
- Процессор: Intel Core2 Duo E6600, 4 МБ L2, 2.4 ГГц (266 МГц x 9)
- Чипсет: Intel 975X
- Материнская плата: ASUS P5W DH Deluxe, BIOS 0801 от 14.07.2006
- Память: 2 x 1 ГБ Corsair XMS2-8500C5 в режиме DDR2-800, тайминги 4-4-4-12
- Видео: Sapphire Radeon X1900XTX, 512 МБ
- HDD: Western Digital WD1600, SATA
Тестовый стенд №3
- Процессор: Athlon 64 X2 4800+ (Socket M2), 1+1 МБ L2, 2.4 ГГц
- Чипсет: NVIDIA MCP590
- Материнская плата: ASUS CROSSHAIR, версия BIOS 0121 от 24.07.2006
- Память: 2 x 1 ГБ Corsair XMS2-6400C3 в режиме DDR2-800, тайминги 4-4-4-12 (2T/1T)
- Видео: Sapphire Radeon X1900XTX, 512 МБ
- HDD: Western Digital WD1600, SATA
Intel Core 2 Duo
Рассмотрение результатов нашего исследования мы решили начать именно с этой платформы, поскольку раскрытие реального потенциала двухканальной DDR2-800 на этой платформе следует ожидать в меньшей степени, чем на платформе AMD «AM2», которую мы рассмотрим следом.
Эффективность доступа к памяти на Intel Core 2 Duo мы решили исследовать в двух различных конфигурациях — с участием нового, так сказать, специально разработанного под новую платформу чипсета семейства Intel 965 (в виде его представителя Intel 965G на материнской плате Gigabyte 965G-DS3, стенд №1) и несколько более старого чипсета Intel 975X (материнская плата ASUS P5W DH Deluxe, стенд №2), предположительно, обладающего несколько более высокими скоростными показателями.
Рис.1. Пропускная способность памяти (ГБ/с), Intel Core 2 Duo E6600, Intel 965G
Результаты измерений с участием чипсета Intel 965G представлены на рисунке 1. Здесь и далее, используемый размер блока во всех случаях составлял 32 МБ (32 МБ при однопоточном доступе, 16+16 МБ при двухпоточном доступе). В условиях однопоточного обращения к памяти на этом процессоре достигается пропускная способность порядка 5.96 ГБ/с (69.8% от теоретической ПС системной шины) при операциях чтения и 2.39 ГБ/с (28.0%) при операциях записи. Использование программной предвыборки данных (Software Prefetch, дистанция предвыборки подбиралась так, чтобы показатели ПСП были максимальными и составила 1024 байта) увеличивает ПСП на чтение до 6.76 ГБ/с (79.2%), а использование метода прямого сохранения данных (Non-Temporal Store) увеличивает ПСП на запись до 4.84 ГБ/с (56.7%). Таким образом, во всех случаях реальные величины ПСП явно далеки от теоретического предела ПС процессорной шины, равного 8.53 ГБ/с. В лучшем случае (чтение с предвыборкой), они составляют примерно 80% от указанного предела.
Параллельное включение второго потока (т.е. задействование второго ядра процессора) для доступа к данным, находящимся в оперативной памяти, практически не влияет на пропускную способность памяти при операциях записи данных — как «обычной», так и методом прямого сохранения. В то же время, ПСП на чтение возрастает до 7.38 ГБ/с (на 23.8%) при операциях чтения и до 8.33 ГБ/с (на сопоставимую величину — 23.2%) при чтении с программной предвыборкой. Полученный результат выглядит намного лучше, поскольку максимальная наблюдаемая ПСП в этом случае составляет уже почти 98% от теоретического предела. Тем не менее, говорить о раскрытии потенциала DDR2-800, обладающей теоретической ПСП в 12.8 ГБ/с, здесь явно не приходится. Впрочем, учитывая пропускную способность процессорной шины на уровне DDR2-533, его и не стоило ждать на этой платформе.
Рис.2. Пропускная способность памяти (ГБ/с), Intel Core 2 Duo E6600, Intel 975X
Несколько иные значения абсолютных показателей ПСП наблюдаются на чипсете Intel 975X (рис. 2). Сравнивая результаты исследования этого чипсета с рассмотренными выше, нельзя сказать об однозначном преимуществе того или иного чипсета Intel. В одних случаях преимуществом обладает Intel 965G, в других — Intel 975X. А именно, Intel 975X (при прочих равных условиях) характеризуется несколько более высокими ПСП на чтение (как «обычное», так и с программной предвыборкой) в условиях однопоточного обращения — 6.15 и 6.96 ГБ/с против 5.96 и 6.76 ГБ/с. В то же время, в операциях записи данных в память (как «обычной», так и методом прямого сохранения) сравнение оказывается не в пользу Intel 975X — соответствующие величины на этом чипсете составляют 1.81 и 4.72 ГБ/с против 2.39 и 4.84 ГБ/с. Наилучший результат по ПСП в условиях однопоточного доступа на этом чипсете вновь наблюдается при чтении данных с программной предвыборкой и составляет примерно 81.6% от максимальной теоретической ПС процессорной шины.
Что касается «двухъядерного» обращения, легко заметить, что прирост от использования второго потока доступа к памяти на этом чипсете оказывается менее выраженным по сравнению с Intel 965G, как по абсолютным, так и по относительным показателям. Они составляют 7.12 ГБ/с (прирост — 15.8%) и 8.00 ГБ/с (прирост — 14.9%) при «обычном» чтении и чтении с программной предвыборкой. Следует также отметить, что на этом чипсете несколько более заметен прирост при «двухпоточной» записи данных (ПСП возрастает с 1.81 до 2.28 ГБ/с). Итак, максимально достижимая ПСП при использовании обоих ядер процессора с участием чипсета Intel 975X составляет 8.00 ГБ/с, что соответствует примерно 93.8% от теоретической ПС процессорной шины. Учитывая полученные результаты, можно предположить, что новый чипсет Intel лучше оптимизирован для работы с памятью в условиях доступа к ней со стороны обоих ядер одновременно, нежели доступа лишь одного ядра процессора.
AMD Athlon 64 X2
Для исследования платформы AMD «AM2» был выбран достаточно высокопроизводительный процессор Athlon 64 X2 4800+ с тактовой частотой ядра 2.4 ГГц. При этом, поскольку процессоры AMD позволяют непосредственно настраивать величину задержек командного интерфейса (CMD rate), измерения проводились при величине задержек 2T (типичный режим для двух 1-ГБ модулей памяти DDR2-800) и 1T. Важно заметить, что даже новейшие модули памяти DDR2-800 от Corsair — XMS2-6400C3, обладающие экстремально низкими задержками в целом (для них позволительна схема таймингов 3-4-3-9), не обеспечивают 100% стабильную работу системы при уменьшенной величине задержек командного интерфейса 1T, хотя и достаточную для проведения измерений. Поэтому результаты измерений в режиме 1T, приведенные в настоящем исследовании, более полезны с теоретической, нежели практической точки зрения. Тем не менее, они могут стать более практически полезными при использовании меньших объемов памяти, например, двух 512-МБ модулей DDR2-800.
Рис.3. Пропускная способность памяти (ГБ/с), AMD Athlon 64 X2 4800+, 2T CMD rate
Результаты измерений в номинальном режиме «2T» приведены на рис. 3. По сравнению с рассмотренной выше платформой Intel, для процессоров AMD характерны более высокие показатели ПСП при операциях записи (как «обычной», так и методом прямого сохранения), что хорошо известно из наших предыдущих исследований. Величины ПСП на чтение и на запись в условиях однопоточного доступа довольно близки и составляют 3.97 и 3.17 ГБ/с, соответственно, что в пересчете на теоретическую ПСП двухканальной DDR2-800 составляет всего 31.0% и 24.8%, соответственно. Использование оптимизаций — программной предвыборки при чтении данных (дистанция предвыборки 1024 байта) и метода прямого сохранения при записи данных позволяет ощутимо увеличить эти показатели до значений 7.59 ГБ/с (59.3%) и 6.90 ГБ/с (53.9%), соответственно.
Наиболее существенное возрастание ПСП при использовании двухпоточного доступа к памяти наблюдается в случае «обычного» чтения данных — соответствующий показатель возрастает до 6.76 ГБ/с, что на 70.3% выше по сравнению с однопоточным обращением. Менее заметен прирост в ПСП при двухпоточной записи данных — ПСП при этой операции возрастает до 4.11 ГБ/с, т.е. примерно на 29.7%, а также при чтении с программной предвыборкой — прирост в ПСП в этом случае составляет всего 15.9% (с 7.59 до 8.80 ГБ/с). Тем не менее, наиболее неожиданный результат наблюдается в случае записи данных методом прямого сохранения — реальная ПСП в этом случае при двухпоточном обращении оказывается ниже (примерно на 4.5%) относительно ПСП при однопоточном доступе.
Теоретически, «двухъядерный» вариант доступа к памяти, по сравнению с «одноядерным», более не должен лимитироваться скоростью обмена данными внутри процессора (т.к. каждое из ядер обладает независимыми L1- и L2-кэшем данных). Иными словами, теоретически вполне можно ожидать почти двукратное возрастание ПСП при переходе от однопоточного к двухпоточному доступу к памяти. В связи с этим, последние два результата — сравнительно невысокий прирост в ПСП при операциях чтения с программной предвыборкой и вовсе ее уменьшение при операциях записи методом прямого сохранения, по-видимому, связаны уже с ограничениями самого контроллера памяти DDR2, реализованного в процессорах AMD «AM2», на уровне шины общих запросов к контроллеру со стороны обоих ядер либо шины памяти как таковой. Как бы там ни было, наилучший результат, показанный при чтении данных с программной предвыборкой, весьма далек от теоретической ПСП двухканальной DDR2-800, т.к. составляет лишь 68.8% от этой величины.
Рис.4. Пропускная способность памяти (ГБ/с), AMD Athlon 64 X2 4800+, 1T CMD rate
Посмотрим, насколько может исправить это положение использование режима уменьшенных задержек командного интерфейса «1T» (рис. 4). На качественном уровне, картина выглядит совершенно аналогично, отличаются лишь количественные показатели (естественно, в пользу режима «1T»). Использование двухканального доступа к памяти в этом случае вновь оказывает наибольшее влияние на ПСП при операциях чтения — ее увеличение составляет 68.9%. Увеличение ПСП при операциях записи выражено менее (прирост равен 28.1%), при операциях чтения с программной предвыборкой наблюдается прирост ПСП примерно в 17.0%, наконец, двухпоточная запись методом прямого сохранения приводит к замедлению ПСП при этой операции на 4.6% по сравнению с однопоточным вариантом. Тем не менее, и в этом случае наилучший результат по ПСП составляет лишь 9.30 ГБ/с, что не достигает уровня даже двухканальной DDR2-667 (10.67 ГБ/с), не говоря о двухканальной DDR2-800 (12.8 ГБ/с).
Заключение
Проведенное исследование эффективности одновременного обращения к памяти со стороны обоих ядер современных двухъядерных процессоров Intel Core 2 Duo и AMD Athlon 64 X2 показало, что «двухъядерный» вариант доступа к памяти действительно приводит к увеличению реально наблюдаемой пропускной способности памяти. Однако нельзя сказать, что это увеличение является весьма заметным и ярко выраженным.
Так, на платформе Intel Core 2 Duo с частотой системной шины 266 МГц реальная ПСП оказывается ограниченной именно на уровне ПС процессорной шины (8.53 ГБ/с), которая заведомо меньше теоретической пропускной способностью двухканальной DDR2-800 (12.8 ГБ/с). Так что для раскрытия реального потенциала высокоскоростной DDR2 все надежды здесь следует возлагать на будущее поколение процессоров/чипсетов Intel, рассчитанных на 333-МГц частоту системной шины (что увеличит ее ПС до уровня теоретической ПСП DDR2-667).
Что касается платформы AMD «AM2», где, казалось бы, более не должно быть никаких ограничений на раскрытие реального потенциала DDR2-800 — т.к. изначально выявленные ограничения в «одноядерном» режиме доступа были связаны со скоростью передачи данных внутри самого ядра процессора. В случае двух ядер передача данных могла бы осуществляться параллельно и с удвоенной скоростью, если бы не новое ограничение, на этот раз, по всей видимости, связанное не с микроархитектурными особенностями ядра процессора, но с реализацией общей шины системных запросов и/или шины памяти интегрированного контроллера памяти.
Итак, печально, но факт: реальный потенциал двухканальной DDR2-800, в плане ее высокой пропускной способности, в очередной раз остается нераскрытым. На сей раз, не таким успешным оказался принцип «два ядра — лучше, чем одно», все «уперлось», в одном случае — в пропускную способность системной шины, в другом — в эффективность реализации контроллера памяти. Что же тогда говорить о ныне существующей, пусть и «неофициальной» пока памяти DDR2-1066, а также грядущей DDR3 с обещанными рейтингами производительности вплоть до DDR3-1600? Нам остается лишь напомнить вывод, сделанный ранее: оперативная память явно перестает быть «узким местом» системы, и производителям процессоров и чипсетов определенно стоит считаться с этим фактом. Будем надеяться, что этот опыт будет учтен с выпуском новых процессоров и чипсетов, рассчитанных на более высокую частоту системной шины либо оснащенных более совершенным интегрированным контроллером памяти.