В связи с анонсом компанией 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% для тестов с вещественными числами.