Задача в общем виде*
* — данное вступление, для удобства читателей, повторяется в начале каждой статьи этой серии
Наши постоянные читатели, быть может, помнят серию статей, которая выходила в 2009 году под общим заголовком «Влияние различных характеристик на быстродействие процессоров современных архитектур». В ней мы рассматривали некоторое количество сферических процессоров в вакууме, чтобы на основе анализа их быстродействия составить общее впечатление о скорости процессоров реальных и факторах, на неё влияющих. В новом году, после выхода следующей версии методики, мы решили творчески переработать опробованный ранее метод с уклоном в большую реалистичность исследуемых вопросов, то есть моделируя ситуации по возможности реальные. Как и в прошлый раз, начать мы решили с продукции компании AMD, а именно — с самой новой её платформы: Socket AM3. Благо, производитель обещает этой платформе достаточно долгую жизнь, популярность её в пользовательской среде велика, да и название себе компания подобрала более удачное, чем конкурент — с точки зрения сортировки по алфавиту. :)
Нынешняя линейка AMD на первый взгляд кажется несколько хаотичной (мы бы сказали, что и на все последующие тоже…), однако логику производителя понять можно: разумеется, гораздо приятнее бракованный процессор продать, чем выбросить. А т. к. модификаций с различными объёмами и типами кэшей и количеством ядер эта компания выпускает достаточно много, соответственно, есть большой соблазн придумать для экземпляра с «бракованным» ядром или кэшем какое-то название, ядро или часть кэша отключить, а процессор всё-таки продать. :) Благодаря этой замечательной, новаторской политике AMD, в линейке производимых ею AM3-процессоров наблюдается аж три разновидности двухъядерных — с разными объёмами L2-кэша, и даже с наличием L3; две модификации трёхъядерных — с L3 и без него; и снова три модификации четырёхъядерных — с L3 и без него, а также с различными объёмами L3. Кроме того, выпускается для платформы AM3 ещё и одноядерный Sempron. Сведя в одну небольшую таблицу основные технические характеристики CPU для платформы AM3, мы наконец-таки имеем шанс понять, что определённого рода логика в модельном ряде AMD есть:
Sempron | Athlon II X2 | Phenom II X2 | Athlon II X3 | Phenom II X3 | Athlon II X4 | Phenom II X4 | Phenom II X6 | |
ядер | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 6 |
кэш L2, КБ | 1024 | 2×512/1024 | 2×512 | 3×512 | 3×512 | 4×512 | 4×512 | 6×512 |
кэш L3, КБ | − | − | 6144 | − | 6144 | − | 4096/6144 | 6144 |
Итак, мы наблюдаем достаточно логичное «путешествие» от 1 ядра к 6, сопровождающееся вариациями на тему объёма L2-кэша, а также наличия или отсутствия L3 и его объёма. При этом объёмом L2 AMD «играется» на относительно слабых процессорах (двухъядерных), а далее в качестве универсального «убыстрятеля всего» используется введение L3. Также можно отметить два одинаково странно смотрящихся процессора: Phenom II X2, который при всего 2 ядрах имеет гигантский L3-кэш, и, наоборот, Athlon II X4 — который при 4 ядрах лишён оного совсем. По идее, первый должен являться идеальным вариантом для старого ПО без многопоточной оптимизации (хотя тогда ему и второе-то ядро не очень нужно…), а второй — процессором для оптимистов, надеющихся на то, что 4-ядерный CPU победит все процессоры с меньшим количеством ядер, невзирая на парусник объём кэша. Так оно будет или не так — посмотрим на результаты…
Соответственно, вырисовываются наиболее интересные сопоставления с точки зрения анализа производительности:
- Увеличение количества ядер при одинаковом объёме кэша:
- от 1 ядра к 2;
- от 2 ядер к 3;
- от 3 ядер к 4;
- от 4 ядер к 6.
- Увеличение количества кэша при одинаковом количестве ядер:
- на 2-ядерных процессорах (L2, добавление L3);
- на 3-ядерных процессорах (добавление L3);
- на 4-ядерных процессорах (добавление L3, разные размеры L3).
- Вариации на тему «меньше ядер, но больше кэш*»:
- 1-ядерный процессор в сравнении с 2-ядерным;
- 2-ядерный процессор в сравнении с 3-ядерным.
* — подразумевается: на одиночное ядро.
Как видите, почвы для исследований — поле непаханое. Правда, для того чтобы мы могли зафиксировать своё внимание именно на влиянии вышеперечисленных факторов, убрав все мешающие, нам понадобилось всё-таки сделать один реверанс в сторону «синтетичности» — независимо от того, существует ли такая модель CPU в реальности, все участники тестов работали на одной частоте ядра: 2,6 ГГц. Впрочем, не так уж всё и плохо: Athlon II X3/X4, Phenom II X3/X4 с такой частотой действительно существуют, не бывает только 2600-мегагерцевых Sempron, Athlon/Phenom II X2 и Phenom II X6.Тестирование
Как и было сказано выше, тестирование проводилось в соответствии с новейшей методикой 2010 года, с некоторыми незначительными модификациями:
- Поскольку задача перед нами стояла достаточно масштабная и интересная, а все участники тестов вели себя весьма пристойно, и необъяснимых с точки зрения логики странностей практически не демонстрировали, нами было принято волюнтаристское решение все опциональные тесты объявить постоянными — таким образом, они присутствуют в основном разделе, и участвуют на общих основаниях в среднем балле.
- Поскольку некоторое количество рассмотренных процессоров являются, так сказать «виртуальными», и в реальности не производятся, для данного цикла, для удобства сравнения, был выбран свой собственный эталонный (100-балльный) процессор из числа принимавших участие именно в этой серии тестов: AMD Phenom II X4 810.
Традиционно, мы даём ссылку на XLS-таблицу с подробными результатами всех тестов.
Также некоторым, быть может, покажется неожиданной последовательность поднимаемых в различных сериях вопросов: очевидно, что логическому осмыслению она не поддаётся. :) Здесь вам придётся просто простить нам некую хаотичность в последовательности выхода серий: она обуславливается простым «рабочим моментом» — серии будут выходить в той последовательности, в которой будут становиться доступны рассматриваемые в них результаты. К сожалению, обширность нашей методики тестирования обуславливает один её неизбежный недостаток: тесты идут очень долго. Соответственно, мы решили пожертвовать красотой ради оперативности, и, надеемся, вы нас поймёте. К тому же формат сериала, который условно можно обозначить как «одна статья — один ответ на конкретный вопрос», — вполне располагает к такому подходу: ведь нет «важных» и «неважных» вопросов, каждый из них по-своему интересен, и каждый наверняка найдёт своего читателя.
Приступим к практической части. В этой серии мы рассмотрим переход с одного ядра на два в тех двух вариантах, которые предлагает нам компания AMD: с сохранением объёма кэша второго уровня (1024 КБ на ядро) и с его уменьшением (512 КБ на ядро). Что характерно: одноядерных процессоров Sempron с пониженным до 512 КБ объёмом L2, у AMD в ассортименте для платформы Socket AM3 пока просто нет. Таким образом, мы сможем оценить преимущества в производительности двухъядерной платформы Socket AM3 над одноядерной, а также выяснить, настолько ли первой нужен большой L2.
3D-визуализация
Для начала напомним, что проценты прироста производительности, приведенные во всех таблицах, в обоих случаях считаются относительно одноядерного процессора, а красным цветом мы выделяем результаты, с трудом укладывающиеся в привычную нам картину, и достойные отдельного обсуждения.
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
3ds max | 79 | 79 | 0% | 79 | 0% |
---|---|---|---|---|---|
Lightwave | 91 | 89 | -2% | 94 | 3% |
Maya | 90 | 89 | -1% | 94 | 4% |
UGS NX 6 | 83 | 83 | 0% | 98 | 18% |
Pro/ENGINEER | 90 | 90 | 0% | 95 | 6% |
SolidWorks | 31 | 94 | 203% | 98 | 216% |
Group Score | 77 | 87 | 13% | 93 | 21% |
Отрицательные цифры прироста у Lightwave и Maya можно попытаться объяснить тем, что они наблюдаются только у двухъядерного процессора с уменьшенным количеством L2 на ядро (соответственно, если исходить из предположения о том, что процесс визуализации второе ядро практически не затрагивает — всё логично). А можно и не объяснять вовсе — расхождение до 2%, если оно не систематическое, вполне укладывается в погрешность измерений, о чём мы уже неоднократно писали раньше. Существенно интереснее ситуация с SolidWorks — мы неоднократно перепроверяли результаты всех трёх процессоров, и можем с полной уверенностью утверждать: это не ошибка. Действительно, проценты ускорения от перехода с одного ядра на два такие вот «зашкаливающие». Разумеется, мы имеем дело с ошибкой в программе (более точно: с очень неоптимальной реализацией какого-то алгоритма), в результате которой процессор, имеющий менее 2 ядер, оказывается в сильном проигрыше. Сложность в том, что мы даже не знаем точно, кого винить: поскольку мы тестируем скорость визуализации, виноват может быть даже не сам пакет SolidWorks, а какая-нибудь специфическая функция OpenGL, «кривовато» реализованная в драйвере видеокарты. Правда, на этих двух кандидатах, рассуждая логически, список заканчивается.
Рендеринг трёхмерных сцен
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
3ds max | 37 | 63 | 70% | 63 | 70% |
---|---|---|---|---|---|
Lightwave | 23 | 49 | 113% | 51 | 122% |
Maya | 25 | 47 | 88% | 48 | 92% |
Group Score | 28 | 53 | 89% | 54 | 93% |
Сверхлинейный рост скорости рендеринга в Lightwave при переходе с одного ядра на два, мы уже отмечали и раньше. Правда, тогда в том же был замечен и пакет 3ds max. В этот раз, наоборот, 3ds max продемонстрировал весьма скромные показатели прироста (да-да, 68% для рендеринга — это очень скромный показатель!). Возможно, дело в новой версии используемого нами движка V-Ray, а может быть — в сцене для рендеринга, об этом навскидку судить сложно.
Научные и инженерные расчёты
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Maya | 57 | 89 | 56% | 89 | 56% |
---|---|---|---|---|---|
UGS NX 6 | 89 | 89 | 0% | 96 | 8% |
Pro/ENGINEER | 87 | 89 | 2% | 94 | 8% |
SolidWorks | 71 | 85 | 20% | 92 | 30% |
MAPLE | 96 | 96 | 0% | 98 | 2% |
Mathematica | 44 | 63 | 43% | 65 | 48% |
MATLAB | 51 | 73 | 43% | 74 | 45% |
Group Score | 71 | 83 | 17% | 87 | 23% |
Как и раньше, инженерные CAD в табели о рангах параллельной оптимизации плетутся в самом хвосте. Только SolidWorks продемонстрировал более-менее пристойный показатель, но до MATLAB и Maya ему далеко. И уже в третий раз двухъядерник с 1024 КБ L2 демонстрирует весьма скромный отрыв от двухъядерника с 512-килобайтовым.
Растровая графика
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
ACDSee | 87 | 98 | 13% | 101 | 16% |
---|---|---|---|---|---|
Corel PaintShop | 88 | 95 | 8% | 96 | 9% |
Corel PhotoImpact | 92 | 97 | 5% | 99 | 8% |
Adobe Photoshop | 49 | 71 | 45% | 73 | 49% |
Group Score | 79 | 90 | 14% | 92 | 16% |
В этой группе всё традиционно: самая лучшая параллельная оптимизация у Adobe Photoshop, некие намёки на её наличие — у ACDSee, и нечто совсем невнятное — у двух пакетов Corel. Как ни странно, к большому кэшу все 4 пакета оказались в достаточной степени равнодушны.
Сжатие данных
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
7-zip | 28 | 52 | 86% | 55 | 96% |
---|---|---|---|---|---|
RAR | 64 | 79 | 23% | 83 | 30% |
Unpack (RAR) | 88 | 88 | 0% | 90 | 2% |
Group Score | 60 | 73 | 22% | 76 | 27% |
Новая версия 7-Zip вкупе с новыми опциями демонстрирует очень хорошую многопоточную оптимизацию. При сохранении объёма L2-кэша (напомним, что у Sempron он равен 1024 КБ), переод на 2 ядра даёт почти идеальное ускорение. А вот уполовинивание кэша ухудшает результат достаточно существенно — на целых 10%. Впрочем, это только у 7-Zip, а у WinRAR всё намного спокойнее и индифферентнее. Что же касается распаковки, то она вообще однопоточная.
Компиляция
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Group Score | 32 | 51 | 59% | 57 | 78% |
---|
Первый тест, в котором уполовиненный L2-кэш оказался намного хуже.
Java
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Group Score | 28 | 52 | 86% | 55 | 96% |
---|
И снова ускорение от 2-го ядра существенно зависит от объёма L2. Если он сохраняется таким же, как у одноядерного процессора — почти идеальное, если половинного размера — тоже неплохо, но уже не так впечатляюще. Но, вообще, следует отметить, что ситуация с типами ПО и многопоточной оптимизацией становится существенно «веселее», чем несколько лет назад: тогда оптимизм внушали только рендеры да видеокодеры.
Браузеры
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Flashbench | 72 | 87 | 21% | 90 | 25% |
---|---|---|---|---|---|
Google v8 | 94 | 91 | -2% | 93 | -1% |
Sun Spider | 102 | 93 | -9% | 94 | -8% |
Group Score | 91 | 91 | 0% | 93 | 2% |
Из серии «и так тоже бывает»: JavaScript-бенчмарки Sun и Google в принципе не любят многоядерность. А вот прирост во Flashbench как бы намекает нам, что некая многопоточная оптимизация во flash-плеере Adobe присутствует…
Кодирование аудио
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Apple Lossless | 25 | 50 | 100% | 50 | 100% |
---|---|---|---|---|---|
FLAC | 25 | 49 | 96% | 50 | 100% |
Monkey’s Audio | 25 | 50 | 100% | 50 | 100% |
MP3 (LAME) | 26 | 50 | 92% | 50 | 92% |
Nero AAC | 25 | 49 | 96% | 51 | 104% |
Ogg Vorbis | 26 | 50 | 92% | 50 | 92% |
Group Score | 25 | 50 | 100% | 50 | 100% |
Идеальный показатель, но оно и понятно: dBpoweramp запускает столько потоков кодирования, сколько найдёт процессоров. Чувствительности к кэшу практически никакой — видимо, объём одновременно обрабатываемых данных довольно небольшой.
Кодирование видео
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
DivX | 56 | 75 | 34% | 77 | 38% |
---|---|---|---|---|---|
Mainconcept (VC-1) | 38 | 63 | 66% | 64 | 68% |
Adobe Premiere | 24 | 48 | 100% | 49 | 104% |
Sony Vegas | 29 | 53 | 83% | 55 | 90% |
x264 | 27 | 50 | 85% | 50 | 85% |
XviD | 43 | 72 | 67% | 72 | 67% |
Group Score | 36 | 60 | 67% | 61 | 69% |
Наилучшая многопоточная оптимизация у Adobe Premiere, наихудшая, как ни странно — у DivX (почему странно? да потому, что очень распространённый продукт, к тому же коммерческий: могли бы уж озадачиться…) Большой L2 на двухъядернике не то что бы не даёт никакого эффекта, но выдающимся преимущество в 5% тоже назвать нельзя.
Воспроизведение видео
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
DXVA/H.264 | 38 | 47 | 24% | 50 | 32% |
---|---|---|---|---|---|
DXVA/VC-1 | 33 | 96 | 191% | 104 | 215% |
Software/H.264 | 34 | 52 | 53% | 53 | 56% |
Software/VC-1 | 24 | 45 | 88% | 48 | 100% |
Group Score | 32 | 60 | 88% | 64 | 100% |
А вот и третий артефакт: теперь сверхлинейный рост при переходе на 2 ядра продемонстрировал тест на проигрывание видео, закодированного в формат VC-1 с задействованием функций аппаратного ускорения видеокарты. Напомним, в чём суть данной группы тестов: замеряется средняя загрузка процессора во время воспроизведения видеоролика. Таким образом, как только мы переходим с двухъядерного процессора на одноядерный — нагрузка невероятным образом растёт. И снова нельзя определить точно, кто виноват: проигрывающее ПО (Media Player Classic Home Cinema), или драйверы видеокарты (ведь используется её аппаратное ускорение).
Виртуальная машина
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Ubuntu Linux | 49 | 68 | 39% | 71 | 45% |
---|---|---|---|---|---|
Windows XP | 51 | 72 | 41% | 75 | 47% |
Group Score | 50 | 70 | 40% | 73 | 46% |
Как ни странно, большой L2 не сильно сказывается на результатах.
Игры
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Batman | 41 | 73 | 78% | 77 | 88% |
---|---|---|---|---|---|
Borderlands | 54 | 81 | 50% | 85 | 57% |
Dirt2 | 32 | 53 | 66% | 62 | 94% |
Far Cry 2 | 36 | 64 | 78% | 69 | 92% |
Fritz Chess | 25 | 47 | 88% | 48 | 92% |
GTA IV | 13 | 45 | 246% | 51 | 292% |
Resident Evil 5 | 46 | 62 | 35% | 65 | 41% |
S.T.A.L.K.E.R. «Pripyat» | 82 | 92 | 12% | 92 | 12% |
UT3 | 43 | 54 | 26% | 60 | 40% |
Crysis: Warhead | 43 | 76 | 77% | 84 | 95% |
World in Conflict | 33 | 56 | 70% | 65 | 97% |
Group Score | 41 | 64 | 56% | 69 | 68% |
А вот и четвёртый артефакт, впрочем, уже знакомый нам по предыдущим тестированиям: Grand Theft Auto IV. Сверхлинейный рост впечатляет: почти 300%! Разумеется, ничем кроме ошибки программистов это объяснить нельзя. В целом же, игры зарекомендовали себя чуть ли не самыми кэшелюбивыми приложениями: двухъядерник с большим L2 выигрывает у своего собрата целых 12%. Так и просится в следующее сравнение Phenom II X2 — у него суммарный объём кэша ещё больше.
Общий балл
1 ядро 1024 КБ L2 | 2 ядра 2×512 КБ L2 | %% | 2 ядра 2×1024 КБ L2 | %% | |
Group Score | 50 | 68 | 36% | 71 | 42% |
---|
Разумеется, мы подозревали ;), что в 2010 году второе ядро будет (нет — просто обязано!) давать достаточно существенное преимущество в скорости выполнения приложений. Вопрос был: насколько существенное. И действительно: 5 лет подряд нас кормят рассказами про то, что «многоядерность это наше всё» — пора бы уже предъявить некий реальный эффект. А двухъядерность — это как раз минимальный вариант той самой многоядерности, меньше уже не придумаешь.
Intel, правда, придумала, но мы сейчас обсуждаем линейку процессоров AMD.
Поэтому наши выводы будет просты, но отнюдь не восторженны: да, конечно, два ядра имеют смысл. 36% — цифра хорошая, большая. 42% — ещё больше, приятно. Правда, по состоянию на момент написания статьи, равночастотный одноядерному Sempron 140 двухъядерный Athlon II X2 215 стоит ровно на 36% больше, т. е. с финансовой точки зрения обладает точно таким же соотношением цены к производительности. Плюс к тому, неожиданно обнаруженные нами отнюдь не единичные программисты-склеротики, забывшие о существовании одноядерных процессоров артефакты производительности (SolidWorks, Lightwave, GTA IV, DXVA/VC-1) свидетельствуют о том, что увеличение разрыва между одноядерными и многоядерными системами может обеспечиваться в том числе дальнейшим распространением среди программистов этой разновидности склероза накоплением подобных артефактов, а вовсе не объективной разницей в скорости.
В общем, всё как всегда: оптимисты могут утешать себя тем, что всё могло быть намного хуже, пессимистам же вполне допустимо горевать о том, что всё отнюдь не так хорошо, как можно было ожидать. Реалисты же (не страдающие склерозом), возможно, вспомнят о том, что в прошлом году у сферического двухъядерного процессора в вакууме прирост производительности относительно одноядерного аналога составил 49% — а значит, вполне возможно, дело не только в количестве ядер, но и в каких-то других характеристиках (мы ещё исследуем этот вопрос чуть позже на примере Phenom II X2). Косвенно данную гипотезу подтверждает двухъядерник с 2×1024 КБ L2-кэша — его средняя производительность на 6% выше, чем у двухъядерника с 2×512 КБ L2. Хотя, честно говоря, от вдвое большего L2 мы почему-то ждали более весомого эффекта.
Ну и напоследок, в качестве справочной информации: средний прирост по группам приложений при переходе с 1 ядра на 2 на платформе AMD Socket AM3.
%% прироста | |
3D-визуализация | 17% |
---|---|
Рендеринг | 91% |
Расчёты | 20% |
Графика | 15% |
Упаковка | 24% |
Компиляция | 69% |
Java | 91% |
Браузеры | 1% |
Кодирование аудио | 100% |
Кодирование видео | 68% |
Воспроизведение видео | 94% |
Виртуальная машина | 43% |
Игры | 62% |
Процессоры AMD Sempron и Athlon II X2 предоставлены компанией |