SPEC CPU2000. Часть 25: 65-нм двухъядерные процессоры Intel Pentium Extreme Edition 965 (Presler) и Intel Core Duo T2500 (Yonah)

Процессоры Intel, производимые по нормам нового 65-нм технологического процесса, были представлены в начале 2006 года в виде двухъядерных процессорных ядер Presler (микроархитектура NetBurst) и Yonah (микроархитектура «P6+»). С тех пор были достаточно подробно изучены как микроархитектурные аспекты этих процессорных ядер, так и проведены различные сравнительные тестирования процессоров Pentium D / Pentium Extreme Edition и Core Duo в различных приложениях. В настоящей статье мы изучим поведение этих процессоров (и представляемых ими процессорных ядер) в задачах тестового пакета SPEC CPU2000.

При компиляции задач будем использовать следующие версии компиляторов:

  • Intel(R) C++ Compiler for 32-bit applications, Version 9.0 Build 20050624Z Package ID: W_CC_C_9.0.024
  • Intel(R) Fortran Compiler for 32-bit applications, Version 9.0 Build 20050624Z Package ID: W_FC_C_9.0.024

Во всех случаях (различные варианты оптимизации кода) используем одинаковые общие ключи компиляции кода, отвечающие «двухпроходной» компиляции кода с оптимизацией по профилю приложения (profile-guided optimization, PGO):

PASS1_CFLAGS= -Qipo -O3 -Qprof_gen

PASS2_CFLAGS= -Qipo -O3 -Qprof_use

Процессор Intel Pentium Extreme Edition 965

Для начала, изучим производительность кода задач SPEC CPU2000 в чистом виде, т.е. в абсолютных величинах, при применении всех возможных вариантов оптимизации кода. Для этого используем «обычный» однопоточный вариант запуска тестов (метрику base).

Как и в наших предыдущих исследованиях процессоров с помощью тестов SPEC CPU2000 версии 1.3, в сводной таблице результатов отсутствуют показания для задачи 255.vortex, что связано, как было выявлено впоследствии, с ошибками в наборе входных данных для этой задачи в этой версии тестового пакета. Кроме того, «неоптимизированные» варианты задач 175.vpr и 176.gcc, как и во всех предыдущих исследованиях (включая более раннюю версию SPEC CPU2000 1.2), некорректно завершают свою работу, в связи с чем их рейтинг их производительности в приведенной ниже таблице также отсутствует.

Таблица 1.1. SPECint CPU2000, Pentium Extreme Edition 965, 3.73 ГГц

 Без опт.-QxK-QxW-QxN-QxB-QxP
164.gzip114612571265126712671259
175.vpr12241319130912841302
176.gcc21332118214121172144
181.mcf192319311928247824732483
186.crafty122712561368137313631365
197.parser103510321027103110181035
252.eon173417572113232120852322
253.perlbmk205319942001199620172037
254.gap215320212093205120812084
255.vortex
256.bzip2148214371418139813951433
300.twolf149418361847186418261871
SPECint_base2000153615801634168416601692

Таблица 1.2. SPECfp CPU2000, Pentium Extreme Edition 965, 3.73 ГГц

 Без опт.-QxK-QxW-QxN-QxB-QxP
168.wupwise166716541955188516853229
171.swim247131503184318531143189
172.mgrid105312771602173613681736
173.applu163815851674179116551808
177.mesa136914711673164515331637
178.galgel145233083839401237744039
179.art278329333238329331225070
183.equake240924052464246423832845
187.facerec189023172320232322922368
188.ammp128212661402140812631414
189.lucas224221242564260921182566
191.fma3d142414201773182114651776
200.sixtrack604600748741621741
301.apsi130413261391140213111404
SPECfp_base2000157517511969199818002163

Как и следовало ожидать, производительность как целочисленных задач, так и задач с вещественными числами в целом (по усредненным оценкам SPECint_base2000 и SPECfp_base2000) плавно возрастает в ряду «код без оптимизации» < -QxK (оптимизация для Pentium III/SSE) < -QxW (оптимизация для ранних Pentium 4 Willamette / SSE2) < -QxN (оптимизация для Pentium 4 Northwood / SSE2) < -QxP (оптимизация для Pentium 4 Prescott / SSE3). Несколько «посередине» находится лишь вариант -QxB (оптимизация для процессоров Pentium M), который в случае целочисленных тестов располагается между -QxW и -QxN, а в случае тестов с вещественными числами — между вариантами -QxK и -QxW. Таким образом, ничего необычного в случае запуска тестов SPEC CPU2000 на ядре Presler не произошло — наилучшим вариантом оптимизации кода оказывается вариант -QxP, «родной» для процессорных ядер Prescott и их последователей, к которым вполне относится и ядро Presler.

Изучим теперь величины, характеризующие производительность задач SPEC CPU2000 на процессоре Pentium Extreme Edition 965 относительно величин, полученных ранее на процессоре Pentium 4 670 (хотя и с более несколько ранними версиями компиляторов). Этот процессор наиболее близок к изучаемому по своим характеристикам (в частности, одинаковому объему L2-кэша в 2 МБ) и тактовой частоте (3.8 ГГц против 3.73 ГГц). Единственное ощутимое различие заключается в использовании более высокой частоты системной шины на платформе с процессором Pentium Extreme Edition 965 (266 МГц против 200 МГц у Pentium 4 670). Таким образом, следует ожидать, что задачи, наиболее чувствительные к пропускной способности памяти, получат дополнительное преимущество на Pentium Extreme Edition 965.

По целочисленным тестам SPEC CPU2000, Presler несколько проигрывает немного более высокочастотному Prescott лишь в задачах 186.crafty (до -2.6%), 252.eon (до -4.3%) и 300.twolf (до -2.8%). В большинстве остальных, независимо от варианта оптимизации кода, как правило, наблюдается незначительное преимущество. Исключение составляет задача 181.mcf, в которой достигается от 16.6 до 20.8% преимущества над ядром Prescott. По-видимому, здесь сказывается та самая увеличенная частота FSB (следовательно, увеличенная ПСП) на платформе Presler. Вместе с тем, эта отдельная задача вносит небольшой вклад в общую оценку производительности SPECint_base2000, поскольку по последней 65-нм ядро выигрывает у своего 90-нм аналога лишь незначительно (до 2.5%).

Среди тестов с вещественными числами, наименее однозначно ведет себя лишь задача 168.wupwise, показывая значительный разброс в относительных величинах скорости в зависимости от варианта оптимизации кода, причем как в положительную, так и в отрицательную стороны — от 10.8 до -20.3%. Остальные задачи ведут себя намного более предсказуемо и либо являются практически нечувствительными к выбору процессора (177.mesa и 200.sixtrack), либо получают ощутимое преимущество на Presler (наибольшее — у 171.swim и 179.art, до 24%). Выигрышным оказывается и общий рейтинг SPECfp_base2000 на процессорном ядре Presler, показывающим до 8.3% преимущества над Prescott, даже несмотря на несколько меньшую тактовую частоту. На этом показателе может сказываться как большая величина ПСП на платформе с процессором Pentium Extreme Edition 965, так и микроархитектурные особенности ядра Presler, вроде наличия аппаратной предвыборки данных на уровне L2-кэша процессора. Также можно предположить, что ядро Presler обладает лучшей производительностью при операциях с вещественными числами (причем как в случае x87-, так и SSE/SSE2/SSE3-кода) по сравнению с равночастотным, и даже несколько более высокочастотным ядром Prescott.

Поскольку процессор Pentium Extreme Edition 965 является двухъядерным, оценим теперь эффективность параллельного запуска нескольких копий задач SPEC CPU2000, используя для этой цели метрику «rate». При этом в качестве эталона будем использовать величины, полученные в этой метрике с количеством копий, равным 1, а в качестве основного измерения — с количеством копий, равным 4 (количеству логических ядер, присутствующих в данном процессоре).

Все целочисленные тесты получают прирост в скорости при использовании второго ядра и технологии Hyper-Threading. Из общей картины выпадает лишь 181.mcf, в которой наблюдается лишь 11-18% прироста. По-видимому, это связано с уже упомянутой выше требовательностью этой задачи к ПСП, поскольку переход к двум ядрам не сопровождается столь же кратным увеличением ПСП (ввиду общей для обоих ядер системной шины). В большинстве остальных задач наблюдается более чем 100% прирост в скорости, свидетельствующий об эффективности не только двухъядерности, но и технологии Hyper-Threading (т.к. теоретически максимальный прирост от использования второго ядра в данном случае составляет 100%). Наиболее отличаются в этом плане задачи 164.gzip и 256.bzip2. По интегральной оценке SPECint_rate2000, прирост в скорости от второго ядра также превышает 100% и составляет 104-108%.

Если рассмотренные выше целочисленные тесты все без исключения отличались приростом в скорости при переходе к «4-поточному» режиму тестирования, то среди задач с вещественными числами есть не только таковые, не демонстрирующие прироста (171.swim в большинстве вариантов), но и проигрывающие в скорости при запуске 4 копий (179.art, показывающая до 47% снижения производительности). Большинство остальных задач показывает значительный прирост в скорости, который в некоторых случаях также оказывается свыше 100% (200.sixtrack и 301.apsi). По интегральной оценке SPECfp_rate2000, «4-поточный» режим «rate» запуска теста на двухъядерном процессоре Pentium Extreme Edition 965 также оказывается выигрышным на 54-72% по сравнению с аналогичным «однопоточным» запуском.

Процессор Intel Core Duo T2500

Аналогично, начнем рассмотрение результатов с абсолютных показателей производительности тестов SPEC CPU2000.

Таблица 2.1. SPECint CPU2000, Core Duo T2500, 2.0 ГГц

 Без опт.-QxK-QxW-QxN-QxB-QxP
164.gzip100511311136113211411143
175.vpr12741342132713191342
176.gcc18141816182118261829
181.mcf138413441343188518811887
186.crafty129012961475147014931486
197.parser974974961968971968
252.eon171317241855199020221980
253.perlbmk161116601665165617071697
254.gap167715581651165016641663
255.vortex
256.bzip2127011751180119212141211
300.twolf168720042036205620332023
SPECint_base2000137314181461151715281526

Таблица 2.2. SPECfp CPU2000, Core Duo T2500, 2.0 ГГц

 Без опт.-QxK-QxW-QxN-QxB-QxP
168.wupwise127812911258126013381717
171.swim176919771906190619601906
172.mgrid91312211184119512441194
173.applu103510541004120511961205
177.mesa121715341605157515581612
178.galgel172326562651301630863018
179.art269226962817291629402891
183.equake160215891595158915991700
187.facerec141816911689168316971645
188.ammp909896886869886896
189.lucas156814771641167616871672
191.fma3d104710471150118211171192
200.sixtrack483485503503509504
301.apsi105810781052104010641046
SPECfp_base2000124213551369140414201446

Благодаря реализации поддержки инструкций SSE3 в процессорном ядре Yonah оказывается возможным использовать вариант оптимизации кода -QxP, традиционно относящийся к процессорному ядру Prescott, изначально обладающему поддержкой вышеназванных инструкций. По непонятным причинам, подсчет итоговой оценки SPECint_base2000 на процессоре Core Duo T2500 в этом случае «не проходит» (несмотря на то, что в этой серии тестов и в предыдущей серии на Pentium Extreme Edition 965 использовался один и тот же бинарный код), поэтому соответствующая оценка была подсчитана вручную, как среднее геометрическое по результатам всех подтестов. Как видно, вариант -QxP в целочисленных задачах в среднем практически не уступает варианту -QxB, наиболее подходящему для всех предыдущих процессоров класса Pentium M. А в тестах с вещественными числами вариант -QxP и вовсе оказывается выигрышным по сравнению с -QxB и всеми остальными вариантами оптимизации кода. Эффективность последних как в целочисленных, так и вещественных тестах убывает в ряду -QxB > -QxN > -QxW > -QxK > «без оптимизации».

Для рассмотрения полученных результатов в относительных величинах в качестве образца сравнения выберем исследованный ранее процессор Intel Pentium M 770, также обладающий весьма близкими характеристиками с исследуемым процессором (частота ядра — 2.13 ГГц против 2.0 ГГц, объем L2-кэша — 2 МБ, являющийся полным объемом L2 у Pentium M и «эффективным» объемом L2 при использовании лишь одного из ядер процессора Core Duo).

По сравнению с Pentium M, большинство целочисленных задач SPEC CPU2000 либо не получают преимущества, либо несколько проигрывают в скорости на менее высокочастотном процессоре Core Duo. Исключение составляют уже известная по рассмотренному ранее процессору Pentium Extreme Edition 965 задача 181.mcf, получающая до 30.7% преимущества, очевидно, за счет более высокой пропускной способности процессорной шины и памяти на новой платформе, а  также 254.gap (до 33.4% преимущества), не показывающая явного преимущества на Presler и, следовательно, в данном случае получающая прирост не только из-за более высокой ПСП. Тем не менее, общая оценка SPECint_base2000 в относительных величинах вновь является лишь незначительно более выигрышной (до 3.2%) на Core Duo 2.0 ГГц по сравнению с Pentium M 2.13 ГГц.

Значительно лучше выглядит ситуация в задачах с вещественными числами. Незначительный проигрыш, да и то не во всех вариантах оптимизации кода, наблюдается лишь в задачах 168.wupwise, 177.mesa, 188.ammp и 200.sixtrack. Остальные задачи демонстрируют явное преимущество на Core Duo, вплоть до феноменальных величин порядка 153%(!) в задаче 171.swim. Соответственно, интегральная оценка SPECfp_base2000 на Core Duo T2500 также оказывается на 29-36% более выигрышной по сравнению с более высокочастотным Pentium M 770. Таким образом, производительность ядра Yonah в задачах с вещественными числами оказывается заметно выше по сравнению с аналогичным (по тактовой частоте и объему L2-кэша) процессорным ядром Dothan. Аналогичный результат, но не со столь высокими числовыми показателями, наблюдался и выше, при сопоставлении процессорных ядер Presler и Prescott.

Поскольку процессор Core Duo также является двухъядерным, оценим напоследок эффективность параллельного запуска двух копий тестов SPEC CPU2000 в метрике «rate», сопоставив результаты с таковыми для «rate»-запуска одной копии тестов.

В целочисленных задачах «из ряда вон выходящей» вновь является 181.mcf, демонстрирующая в данном случае не только отсутствие прироста, но и некоторое снижение производительности при запуске двух копий. Причину этого явления понять достаточно легко — очевидно, эта задача не только является требовательной к ПСП, но и оперирует сравнительно большими объемами данных, так что больший размер L2-кэша способствует увеличению ее производительности. А поскольку при «двухпоточном» запуске каждое из ядер в первом приближении получает лишь половину общего объема L2-кэша, наблюдается снижение ее производительности. Несмотря на уменьшение объема L2-кэша в пересчете на ядро, все остальные задачи получают ощутимое преимущество при переходе к «двухъядерному» режиму теста. Наименьшее преимущество наблюдается в задаче 300.twolf и составляет 36-45%, наибольшее — в задаче 252.eon и приближается к теоретическому максимуму в 100%. По интегральной оценке SPECint_rate2000, прирост в скорости в двухъядерном режиме в среднем составляет 67-70%.

Задачи с вещественными числами в целом демонстрируют не менее удачную картину. За исключением 179.art, для которой параллельный запуск скорее вредит, чем помогает делу (напомним, то же самое наблюдалось и на процессорном ядре Presler), задачи с вещественными числами показывают неплохой прирост в скорости, в ряде случаев весьма близко приближающийся к теоретическому максимуму. Тем не менее, по интегральной оценке SPECfp_rate2000 выигрыш в целом в этом классе задач оказывается несколько меньшим и составляет 48-53%.

Заключение

Исследованные 65-нм процессорные ядра Presler (на примере процессора Pentium Extreme Edition 965) и Yonah (на примере процессора Core Duo T2500) в целочисленных тестах SPEC CPU2000 показали результат, как минимум немного превосходящий таковой для предыдущих поколений процессорных ядер — Prescott и Dothan, соответственно, при условии равенства объема L2-кэша и некоторой форы по тактовой частоте в пользу 90-нм ядер. В тестах SPEC CPU2000 с вещественными числами процессорное ядро Presler показывает несколько большее по сравнению с целочисленными задачами (до 8% в SPECfp_base2000), а ядро Yonah — и вовсе значительное (до 36% в SPECfp_base2000) преимущество по сравнению с процессорными ядрами Prescott и Dothan, соответственно.

Исследования эффективности параллельного запуска задач в метрике «rate» показали, что большинство тестовых задач SPEC CPU2000, не требовательных к объему L2-кэша и пропускной способности памяти, способны показать ощутимый прирост в производительности при запуске нескольких копий приложения, равных количеству системных процессоров (4 — в случае Pentium Extreme Edition 965, 2 — в случае Core Duo T2500). Вследствие дополнительного использования технологии Hyper-Threading, этот прирост составляет 104-108% для целочисленных задач и 54-72% для задач с вещественными числами на Presler, тогда как абсолютные показатели прироста на ядре Yonah составляют 67-70% в целочисленных задачах и 48-53% в задачах с вещественными числами.

20 июня 2006 Г.