В истории развития ПК можно выделить следующие этапы:
- 40-е годы - разработка первого компьютера.
- Начало 70-х - создание первого микропроцессора.
- Середина 70-х - производство первого ПК.
- Начало 80-х - возникновение линейки х86 - IBM PC-совместимых компьютеров, ставших сейчас стандартом де-факто.
- Начало 90-х - разделение процессоров для ПК на два ценовых сегмента, связанное с тем, что мощь наиболее производительных процессоров существенно превысила минимальные требования, необходимые для работы большей части приложений.
- Середина 90-х - введение в ПК специализированного процессора, называемого 3D-ускорителем.
- Начало первого десятилетия третьего тысячелетия - разделение процессоров для ПК на три ценовых диапазона, вызванное, с одной стороны, тем, что даже самые слабые процессоры оказались способными обеспечить комфортную работу в подавляющем большинстве приложений, а с другой - тем, что наиболее мощные далеко зашли за пределы требований, предъявляемых к ПК. По сути появление третьего, верхнего ценового диапазона ПК ознаменовало исчезновение класса рабочих станций.
- К середине 10-х годов нынешнего столетия - массовый переход верхнего ценового диапазона на многопроцессорные (многоядерные) технологии. Впрочем, появившийся еще до этого PowerMac сделал заявку на то, что к многопроцессорности переходят даже ПК среднего уровня.
Так получилось, что флагманы архитектуры х86, компании Intel и AMD, с разницей всего в несколько дней представили свои двухъядерные процессоры. К нам в редакцию их образцы также попали практически одновременно. И в это же время у нас появился новый AMD Athlon 64 FX-55, так что мы можем рассмотреть три новых процессора.
На ввод компанией Intel в набор команд инструкции cpuid, позволяющей программе запросить у процессора его характеристики (до этого определение типа процессора в программах строилось на основе анализа небольших различий в обработке отдельных команд), компания AMD ответила расширением, позволяющим получить 48-символьную строку с названием процессора. Intel поддержала это расширение, правда, если ее процессор в этой строке всегда выдает одно и то же значение в соответствии со своей маркировкой, то изделия AMD при изменении режимов работы адекватно изменяют модельный номер — рейтинг процессора. И вот здесь, когда мы познакомились с новым двухъядерным процессором AMD, нас поджидал курьез. Процессор объявил о себе следующее: «AMD Hammer Family processor — Model Unknown». Еще раз подчеркну, что это не сообщение диагностической утилиты, которая незнакома с новым процессором, а строка, выдаваемая самим процессором. Хотя, вообще говоря, называть его следует AMD Athlon 64 X2 4800+, я не могу отказать себе в удовольствии именовать его так, как он представляется сам, поэтому во всех диаграммах модель 4800+ будет фигурировать как Unknown Hammer.
Но недоработка справочной функции процессора встречается не только у изделия AMD. Так, процессор Intel сообщает о себе как об обычном, уже слегка устаревшем 3,2-ГГц процессоре без всяких указаний на двухъядерность или принадлежность к элитному семейству Extreme Edition. Из рассматриваемых моделей только у AMD Athlon 64 FX-55 в этом отношении все в порядке.
Время первых сообщений о появлении двухъядерности в номенклатуре ведущих процессорных производителей прошло, и пора переходить к их тестированию и анализу возможностей. Трех процессоров в принципе вполне достаточно для сравнения, по крайней мере между собой. Но известно, что Intel и AMD исповедуют совершенно различные подходы к архитектуре вычислительных систем, поэтому результаты простого сравнения производительности на отдельных приложениях могут различаться до 2—3 раз в любую сторону. Кроме того, если процессоры Intel работают с 533-МГц памятью типа DDR2 (по крайней мере двухъядерные, для нижнего ценового диапазона возможна альтернатива), то AMD — только с памятью DDR 400 (варианты 333, 266 не рассматриваем). И хотя различие не так уж велико (DDR2 400 работает медленнее, чем DDR 400), определенная разница, связанная с различием тактовых частот, все же имеется. Поэтому интересно сравнить новые процессоры с теми, что уже появлялись на страницах нашего журнала. Для сопоставления были выбраны Athlon 64 4000+, Athlon 64 3500+ и 3,6-ГГц Pentium 4, причем последний на базе двух разных системных плат, отличающихся применяемым НМС и типом памяти. Увы, подобрать полностью идентичную конфигурацию среди результатов прошлых измерений не удалось, также различие проявляется в объеме оперативной памяти и типе видеоадаптера.
Процессор снижает свою тактовую частоту в режиме простоя |
Уже второй раз за последние годы тестовая лаборатория сталкивается с определенными сложностями при выборе методики тестирования новых процессоров. Первый раз это случилось после появления Athlon 64 — оказалось, что практически невозможно найти никаких других приложений, использующих 64-разрядный режим, кроме бета-версии 64-разрядной Windows XP и теста SiSoft Sandra. Точно так же и сейчас: почти все программное обеспечение, ориентированное на рынок ПК, разработано с учетом того, что в системе есть лишь один процессор. И даже заявки на «логическую» двухпроцессорность в виде HyperThreading не изменяют положения вещей.
Оба двухъядерных процессора при снижении нагрузки уменьшают свою тактовую частоту, что индицируется тестовыми утилитами и может вызвать панику у неискушенного пользователя (продавцы обманули!). AMD снижает частоту ядра с 2,4 до 2,2 ГГц, а Intel — с 3,2 до 2,8 ГГц.
При работе однопоточных программ производительность двухъядерной системы равна производительности одного процессора с соответствующими параметрами (тактовой частотой и объемом кэш-памяти). И в этом случае безусловным лидером оказался Athlon 64 FX-55. А ведь у AMD есть еще модель 57!
Тесты же, поддерживающие многопоточность (в том числе PassMark 2002), в тех случаях, когда оценивается производительность процессора, честно сообщают об удвоившейся (!) производительности. На скорость работы с памятью это, конечно, не распространяется.
Интересно, что оригинальный тест Донгарра был полностью однопоточным алгоритмом, правда, легко допускавшим распараллеливание вычислений путем как многопоточности, так и векторизации (в данном случае — SSE).
Вот мы и определили границы, в которых может изменяться прирост производительности при использовании двух процессорных ядер вместо одного — от 0 до +100%. Как видим, практика находится в полном соответствии с теорией.
Очень интересно ведут себя разные версии программы 3DMark. При сравнении процессоров AMD и Intel они показывают диаметрально противоположные результаты. Можно даже сказать, что получается «диаметральность в квадрате»: в версии 03 тест оценивает производительность процессоров AMD несколько выше, чем аналогичный показатель Intel, и в то же время общая производительность имеет противоположное соотношение. Причем в тестах была использована одна и та же видеоплата. А в версии 05 все соотношения меняются местами. Можно лишь отметить, что более поздний продукт в гораздо большей степени чувствителен к многоядерности. Что же, это правильная тенденция. А вот PCMark 2002 оказался совершенно нечувствителен к присутствию второго ядра, в отличие от PassMark того же года выпуска.
Следующие же два теста, анализирующие производительность системы с позиций как OpenGL, так и DirectX, «не заметили» наличия второго ядра. Любопытны попытки программы AquaMark3 определить вклад видеоплаты и процессора в общую производительность. Оценив производительность одной из плат как более высокую, программа попыталась вычесть ее из общей производительности, чтобы оценить вклад ЦП, и при этом ошиблась более чем вдвое.
Приведенный пример, с одной стороны, показывает, что получить адекватную оценку на примере двух-трех тестовых программ совершенно нереально (впрочем, это прекрасно видно и на примере 3DMark), а с другой — в какой-то степени оправдывает нас, компьютерных журналистов, «мучающих» десятки разнообразных программ в стремлении составить более или менее объективное представление о свойствах исследуемых образцов.
В качестве тестовых игровых приложений в этот раз была использована лишь одна игра, но она позволила оценить свойства системы при использовании как DirectX, так и OpenGL.
Явные преимущества процессоров AMD бросаются в глаза. А вот по части влияния многоядерности ситуация не столь очевидна: при использовании DirectX преимущества на стороне более высокочастотного из процессоров AMD, а с применением OpenGL — наоборот, на стороне двухъядерного. Я не думаю, что для разных API программисты применяли различное распределение вычислений по потокам. Скорее всего расчет был поставлен по классической двухпоточной схеме: звук — в одном потоке, все остальное — в другом.
При этом лучшая оптимизация движка, использующего OpenGL, привела к тому, что перенос звука на другое ядро способствовал выигрышу в производительности по сравнению с более быстрым ядром, обрабатывающим оба потока. А в случае DirectX общая доля вычислений звукового модуля оказалась пренебрежимо мала по сравнению со всем остальным и не смогла помочь двухъядерному процессору выиграть состязание у более высокочастотного изделия AMD. В целом же мы видим, что при классическом подходе к разделению игровой программы на процессы влияние второго ядра будет весьма незначительно. Но, пожалуй, самые интересные результаты были получены при работе с медиаконтентом.
Первое, что бросается в глаза: процессор Intel, претендующий на звание самого мощного, проигрывает своим конкурентам практически по всем статьям. Только в единственном режиме — «Аудио и видео» — он в двух случаях из трех обходит модель Athlon 64 FX-55, но ведь у AMD есть еще FX-57! Но самое главное, проигрыш наблюдается и при видеосжатии, т.е. в той области, где Intel традиционно побивает конкурентов.
Второй важный вывод непосредственно связан с основной темой настоящей статьи — многоядерностью. Если для обычного одноядерного процессора добавление к видеопотоку аудиопотока заметно увеличивает время кодирования, то для двухъядерных это не так: звуковой поток «отправляется» на второе ядро и поэтому никак не влияет на временные затраты. Вот оно — истинное значение двухъядерности. Правда, следует отметить, что объемы работы при аудио- и видеосжатии довольно сильно различаются, поэтому о равномерной нагрузке на ядра и, следовательно, о существенном росте производительности при использовании двухъядерности говорить не приходится.
Третий результат можно считать курьезом: при сжатии одного из трех файлов в режиме «Аудио и видео» процессор Intel не продемонстрировал возможностей второго ядра. Все измерения проводились неоднократно, поэтому такое поведение не может быть отнесено к спонтанной погрешности. Можно высказать предположение, что его подвел режим HyperThreading: ОС распределила два потока по четырем виртуальным процессорам, загрузив, естественно, только два из них. По иронии судьбы оказалось, что оба виртуальных процессора принадлежат одному физическому ядру.
Сейчас не будем рассматривать графики зависимости скорости обмена с памятью, а также производительность при решении различных систем уравнений. Отметим только, что все они являются однопоточными приложениями, а потому вполне естественно, что первое место по расстановке сил занял Athlon 64 FX-55, второе — его двухъядерный коллега, а на последнем оказался процессор фирмы Intel.
Итак, хотя Intel и удалось опередить AMD с датой официального представления своих двухъядерных процессоров для ПК, их дебют получился не слишком впечатляющим. По сути дела Intel объявила топовой моделью устройство, состоящее из двух процессоров вчерашнего дня, — планку в 3,2 ГГц компания преодолела более двух лет назад. В то время как AMD сумела объединить на одном кристалле мощь двух ядер, являющихся аналогами недавно вышедшего 4000+. Причем интересно, что если Intel позиционировала новое устройство как представителя из верхнего ценового диапазона (Extreme Edition), то AMD — лишь как верхнюю модель среднего (с модельным номером и без обозначения FX). Кстати, и модельный ряд AMD выглядит куда представительнее. Опять же появились сомнения относительно сочетания HyperThreading с двухъядерностью — хорошо это или плохо? В то же время AMD продолжает наращивать мощь своих изделий верхнего уровня, которые в однопоточных приложениях (а таких еще очень много) обходят всех конкурентов.
Правда, одно дело — представить новое изделие, и совсем другое — насытить им рынок. А здесь у AMD традиционно наблюдалось отставание от Intel. Если же компании AMD удастся зарекомендовать себя реальным поставщиком наиболее производительных решений, то ситуация на рынке может резко измениться. В настоящее время Intel занимает более 80% рынка процессоров для ПК и большинство разработчиков ПО оптимизируют наиболее ресурсоемкие программы только под них. Если AMD сумеет убедить пользователей в наибольшей производительности своих решений, а программистов — в целесообразности оптимизации кода под AMD 64, то соотношение производительности процессоров двух основных конкурентов на реальных приложениях может существенно сместиться в сторону, крайне нежелательную для Intel, что должно стимулировать взрывной рост интереса к продукции компании AMD. Но пока говорить об этом преждевременно. Гораздо лучше пофантазировать, каких изменений в программном обеспечении нам следует ожидать от того факта, что отныне ПК (и не только Apple) становится многопроцессорным.
Компания AMD скромно, всего лишь на 20%, увеличила рейтинг устройства за счет введения второго ядра, в то время как мы узнали, что в некоторых случаях можно добиться прямого двукратного прироста производительности. Но мы также видим, что весьма существенная часть уже написанных программ еще не готова воспользоваться преимуществами данной архитектуры, даже несмотря на то, что технология HyperThreading, сравнительно давно введенная Intel, вроде бы требовала от разработчиков начать задумываться о многопоточности. Но все-таки она не настоящая двухпроцессорность. Например, если мы хотим разделить потоки видео и звука по разным исполнительным устройствам, то наталкиваемся на то, что оба потока используют дискретное косинусное преобразование, а потому производительность обоих логических процессоров лимитируется общим набором исполнительных блоков, способных осуществлять расчет тригонометрических функций. Так что отсутствие энтузиазма среди программистов вполне понятно. Настоящая двухпроцессорность, конечно, решает эту проблему, но не слишком эффективно — из-за существенно различающихся объемов работы по обработке аудио и видео. Процессор, обрабатывающий звук, все равно большую часть времени будет простаивать, поджидая коллегу, «потеющего» над изображением.
Другое дело — компьютерные игры. Здесь помимо звука можно выделить гораздо больше составляющих: хотя бы уже упомянутые искусственный интеллект, игровую физическую модель и расчет трехмерной графики. Вопрос в том, насколько эти части могут быть уравновешены по объему вычислений. Увы, результаты для используемой в качестве теста игры Serious Sam наводят на грустные размышления: только замена одного трехмерного API на другой способна вдвое изменить время расчета кадра. Остается сделать вывод, что на графику приходится существенно более половины всех процессорных ресурсов.
Редакция благодарит представительства компаний Intel и AMD за предоставленные для проведения тестирования образцы.