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 Г.

SPEC CPU2000. 27: Intel Core 2 Extreme X6800, Intel C++/Fortran 9.1

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.gzip 1618 1797 1808 1795 1798 1802 1803
175.vpr 2143 2273 2263 2261 2322 2242
176.gcc 3333 3360 3375 3378 3391 3385
181.mcf 3961 3669 3672 5084 5113 5093 5102
186.crafty 2337 2356 2707 2714 2690 2677 2704
197.parser 1654 1652 1617 1647 1647 1655 1653
252.eon 2965 3255 3744 3775 3566 3766
253.perlbmk 3281 3260 3227 3307 3325 3261 3302
254.gap 2869 2869 3054 3066 3048 3052 3050
255.vortex 4776 4767 4806 4771 4801 4856 4872
256.bzip2 2472 2349 2317 2340 2338 2332 2341
300.twolf 2622 3090 3197 3175 3175 3334 3342
SPECint_base2000 2711 2757 2854 2943 2930 2960 2895

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.wupwise 3838 3660 3943 4527 4283 4604 4598
171.swim 2625 2999 3071 3071 3070 3066 3047
172.mgrid 1431 1783 1857 1868 1834 1870 1868
173.applu 1566 1662 1697 2224 2103 2234 2230
177.mesa 1925 2699 2833 2827 2479 2847 2678
178.galgel 2748 5092 6402 7057 6363 7076 7068
179.art 8242 9153 9301 9286 9229 8438 8442
183.equake 2723 2680 2728 2714 2693 3094 3089
187.facerec 2399 2991 3005 2985 2968 3038 3032
188.ammp 1944 1949 2098 2079 1998 2095 1991
189.lucas 2537 2495 2941 2887 2535 2898 2891
191.fma3d 1725 1727 2187 2208 1924 2185 2214
200.sixtrack 769 746 1163 1144 726 1136 1159
301.apsi 1713 1741 1834 1846 1840 1853 1833
SPECfp_base2000 2223 2493 2764 2858 2633 2875 2853

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% .