SPEC CPU2000. Часть 27: Процессор Intel Core 2 Extreme X6800, компиляторы Intel C++/Fortran 9.1


В связи с анонсом компанией SPEC нового долгожданного тестового пакета SPEC CPU2006, вполне возможно, что этот материал окажется последним в нашем цикле статей, посвященных исследованию различных платформ с помощью пакета SPEC CPU2000. Тем не менее, он вполне имеет право на существование и будет посвящен топовому процессору, недавно представленному компанией Intel — процессору Intel Core 2 Extreme X6800.

К сожалению, «экстремальность» этого процессора на сей раз (в сравнении с другими «экстремалами» от Intel) оказалась достаточно минимальной — опуская не имеющие прямого отношения к делу детали (в виде разблокированного вверх множителя частоты системной шины), единственное отличие этого процессора от предыдущего «неэкстремального» представителя Intel Core 2 Duo E6700 заключается лишь в более высокой штатной частоте ядра — 2.93 ГГц, что на 266 МГц (т.е. на одну ступень) выше. Когда-то планируемая более высокая частота системной шины (333-МГц) не стала  отличительной особенностью «экстремальности» данного процессора от других представителей семейства десктопных процессоров Core 2. Таким образом, настоящее исследование, фактически, сводится к постановке вопроса «что могут дать дополнительные 266 МГц процессорному ядру Conroe», и ответу на этот вопрос в рамках тестов SPEC CPU2000.

Задачи тестового пакета SPEC CPU2000 компилировались с помощью следующих версий компиляторов:

  • Intel(R) C++ Compiler for 32-bit applications, Version 9.1 Build 20060323Z Package ID: W_CC_P_9.1.022
  • Intel(R) Fortran Compiler for 32-bit applications, Version 9.1 Build 20060323Z Package ID: W_FC_C_9.1.024

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

  • PASS1_CFLAGS= -Qipo -O3 -Qprof_gen
  • PASS2_CFLAGS= -Qipo -O3 -Qprof_use

Процессор Intel Core 2 Extreme X6800

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

 Без опт.-QxK-QxW-QxN-QxB-QxP-QxT
164.gzip1618179718081795179818021803
175.vpr214322732263226123222242
176.gcc333333603375337833913385
181.mcf3961366936725084511350935102
186.crafty2337235627072714269026772704
197.parser1654165216171647164716551653
252.eon296532553744377535663766
253.perlbmk3281326032273307332532613302
254.gap2869286930543066304830523050
255.vortex4776476748064771480148564872
256.bzip22472234923172340233823322341
300.twolf2622309031973175317533343342
SPECint_base20002711275728542943293029602895

Целочисленные тесты SPECint преподнесли нам некоторый сюрприз — помимо привычной неработоспособности задач 175.vpr и 176.gcc в варианте «без оптимизации кода», к ним добавилась задача 252.eon в варианте оптимизации -QxT, специфичном для процессоров семейства Core 2. Заметим, что эта задача не отличалась таким поведением на процессоре Core 2 Duo E6700, участвовавшего в нашем предыдущем исследовании.

Что касается расположения различных вариантов оптимизации задач SPECint 2000 по своей производительности, по интегральной оценке SPECint_base2000 они располагаются так: «без оптимизации» < -QxK < -QxW < -QxT < -QxB < -QxN < -QxP. По сравнению с данными исследования процессора Core 2 Duo E6700, вариант -QxT в этом ряду опустился несколько пониже, расположившись между вариантами -QxW и -QxB. Очевидно, это связано с выбыванием задачи 252.eon из списка участников в этом случае и, соответственно, снижении интегральной оценки, поскольку эта задача вносит достаточно существенный вклад. Сопоставляя индивидуальные показатели целочисленных задач, легко убедиться, что вариант -QxT, родной для процессоров семейства Core 2, в большинстве из них оказывается не хуже, а то и лучше абсолютного лидера — варианта оптимизации кода -QxP, ныне именуемого как варианта оптимизации «под процессоры Intel Pentium 4/D, Core Solo/Duo, а также совместимых с ними процессоров Intel с поддержкой SSE3».

 Без опт.-QxK-QxW-QxN-QxB-QxP-QxT
168.wupwise3838366039434527428346044598
171.swim2625299930713071307030663047
172.mgrid1431178318571868183418701868
173.applu1566166216972224210322342230
177.mesa1925269928332827247928472678
178.galgel2748509264027057636370767068
179.art8242915393019286922984388442
183.equake2723268027282714269330943089
187.facerec2399299130052985296830383032
188.ammp1944194920982079199820951991
189.lucas2537249529412887253528982891
191.fma3d1725172721872208192421852214
200.sixtrack7697461163114472611361159
301.apsi1713174118341846184018531833
SPECfp_base20002223249327642858263328752853

Задачи с вещественными числами SPECfp 2000 не преподнесли нам никаких сюрпризов. По усредненной оценке SPECfp_base2000 результаты здесь расположились так: «без оптимизации» < -QxK < -QxB < -QxW < -QxT < -QxN < -QxP, т.е. в такой же последовательности, как и результаты тестирования процессора Core 2 Duo E6700.

Сопоставление с Intel Core 2 Duo E6700

Перейдем к следующему этапу рассмотрения полученных результатов — в сравнении их с предыдущим лидером, процессором Core 2 Duo E6700. Напомним, что, фактически, мы сравниваем здесь одно и то же процессорное ядро Conroe (правда, несколько разных ревизий — Core 2 Duo E6700 был представлен инженерным образцом с более ранней ревизией ядра — B0 против B1), но с разной частотой: 2.93 и 2.66 ГГц, соответственно.

Целочисленные тесты SPECint 2000. Преимущество Core 2 Extreme X6800 над Core 2 Duo E6700 наблюдается во всех целочисленных задачах, правда, с разными количественными показателями. Наименее выигрывает в целом задача 181.mcf (которая, согласно результатам наших предыдущих исследований, является весьма требовательной к пропускной способности оперативной памяти), показывая лишь 0.2% преимущества в неоптимизированном варианте кода, и 4.7-4.9% в вариантах оптимизации под современные процессоры. Максимальное преимущество наблюдается в задаче 256.bzip2 и достигает 13.9% в варианте кода -QxB. Заметим, что максимально ожидаемый прирост от тактовой частоты ядра в чистом виде должен составлять 2.93/2.66 = 1.10 раз, т.е. примерно 10% в наших обозначениях. Возможно, сказываются некоторые изменения в более новой ревизии ядра B1, возможно, это просто укладывается в погрешность измерений. Как бы там ни было, прирост по целочисленным задачам в среднем (по SPECint_base2000) составляет от 8.5 до 9.6% (если не считать не совсем корректный результат варианта -QxT, в котором отсутствует задача 252.eon), т.е. укладывается в те самые 10%, заданные различиями в частотах процессоров.

Тесты с вещественными числами, как обычно, показывают менее однозначную картину. Здесь наблюдается как стабильный провал производительности задачи 171.swim во всех вариантах оптимизации (от -4.8 до -6.0%), объяснить который достаточно сложно (разве что различиями в ревизиях ядер, на этот раз — не в пользу более новой B1), так и больший разброс величин — например, в задаче 178.galgel (прирост от 9.0 до 16.3%). Здесь также можно отметить достаточное количество задач, получающих лишь незначительный прирост в скорости на новом «экстремальном» процессоре — например, 173.applu, 183.equake и 189.lucas. По усредненному показателю SPECfp_base2000, как ни странно, прирост попадает в достаточно узкий интервал 5.5-6.0%, т.е. оказывается меньшим по сравнению с приростом по целочисленным задачам. Вполне возможно, что это связано с большей требовательностью вещественных задач SPEC CPU2000 к пропускной способности оперативной памяти, которая в обоих исследованиях является одинаковой (пиковая ПСП двухканальной DDR2-800, реально ограниченная ПСП 266-МГц системной шины на уровне 8.53 ГБ/с).

Эффективность «двухъядерного» исполнения

Напоследок, по аналогии с предыдущими исследованиями двухъядерных процессоров, оценим эффективность параллельного запуска двух копий задач SPEC CPU2000, используя для этой цели метрику «rate». В качестве эталона сравнения будем использовать величины, полученные в этой метрике при количестве копий, равном 1.

Эффективность параллельного запуска двух копий целочисленных задач оказывается весьма высокой практически во всех случаях, за исключением задачи 181.mcf. По нашим предыдущим исследованиям, эта задача не отличается высокой эффективностью параллельного запуска и на других двухъядерных процессорах, включая Intel Pentium Extreme Edition, Intel Core Duo и Intel Core 2 Duo. По сделанному ранее предположению, столь низкая эффективность параллельного исполнения этой задачи связана с уменьшением доступного объема L2-кэша в пересчете на одно ядро (в данном случае — с 4 МБ до 2 МБ) при высокой требовательности данной задачи к пропускной способности кэша/памяти. Заметим, что по результатам как этой задачи, так и всех остальных целочисленных задач SPECint 2000 и усредненной оценке SPECint_rate2000 эффективность параллельного запуска двух копий задач на Core 2 Extreme X6800 оказывается несколько ниже по сравнению с таковой, наблюдаемой на Core 2 Duo E6700. Так, по усредненной оценке прирост при запуске двух копий на Core 2 Extreme составляет 76-78%, тогда как на Core 2 Duo этот показатель составлял 78-82%.

Общая картина сопоставления производительности двух копий вещественных задач по сравнению с производительностью одной копии задач на процессоре Core 2 Extreme X6800 на качественном уровне выглядит аналогично картине, полученной на Core 2 Duo E6700. Как и в целочисленных тестах, отличия здесь кроются в количественных показателях, и вновь не в пользу Core 2 Extreme. Так, по усредненной оценке SPECfp_rate2000, прирост при запуске двух копий задач составляет 47-56%, что несколько ниже в сравнении с результатом, полученным на Core 2 Duo (54-63%).

Заключение

Результаты, полученные в настоящем исследовании, выглядят достаточно естественными и логичными. Увеличение тактовой частоты процессорного ядра Conroe с 2.66 до 2.93 ГГц (т.е. примерно на 10%) в среднем сопровождается сопоставимым увеличением производительности задач тестового пакета SPEC CPU2000 — от 8.5 до 9.6% для целочисленных задач и от 5.5 до 6.0% для задач с вещественными числами, более требовательными к пропускной способности памяти, нежели к тактовой частоте процессора. В то же время, эффективность параллельного запуска задач на «экстремальном» варианте процессорного ядра Conroe с большей тактовой частотой оказывается несколько ниже по сравнению с ранее исследованным «неэкстремальным» вариантом (с меньшей частотой и более ранней ревизией ядра). Прирост в скорости при запуске двух копий задач составляет 76-78% для целочисленных тестов и 47-56% для тестов с вещественными числами.




30 августа 2006 Г.