Почему четыре? Несколько лет назад после длительной «гонки мегагерц» производители процессоров вдруг уткнулись в технологический предел, не позволяющий им дальше сохранять темп прироста тактовых частот. Ожидавшееся еще в 2004 г. преодоление серийными изделиями 4-ГГц рубежа так и не состоялось. Более того, если в 2005 г. Intel удалось практически вплотную подойти к этому рубежу (выпущены модели с тактовыми частотами 3,6 и 3,8 ГГц — оставался всего один шаг!), то сейчас промышленность вынуждена была пойти по другому пути — почти все высокопроизводительные процессоры работают в диапазоне частот 2—3 ГГц.

К 2005 г. стало ясно, что увеличивать производительность за счет дальнейшего роста тактовой частоты невозможно в связи с резким ростом потребляемого тока, а следовательно, и рассеиваемой мощности. А накопленный багаж уже разработанного программного обеспечения не позволяет радикально изменить архитектуру процессора, например, перейти к векторной обработке данных (отчасти векторные вычисления уже введены в систему команд х86 посредством расширений MMX, SSE/2/3/4). Поэтому остается единственный путь — многопроцессорность. Благо современные технологические нормы вполне позволяют перейти к производству нескольких ядер на одном кристалле.

В то же время использование нескольких процессорных ядер в одной программе несет немалые сложности как теоретического (далеко не каждый алгоритм может быть распараллелен), так и практического плана: требует явного распараллеливания вычислений с выделением потоков, применения средств синхронизации и, кроме того, дополнительных усилий по балансировке вычислительной нагрузки между потоками. Достаточно сказать, что современные видеокодеки осуществляют распараллеливание вычислений, но переход от двух к четырем ядрам сопровождается лишь 30—40%-ным приростом производительности вместо теоретически возможного двукратного.

Но особого разнообразия выбора, похоже, у нас уже нет: одноядерные модели можно найти разве лишь в запасах неликвидов, минимум сегодня — это два ядра, а производители, видимо, и их уже рассматривают как вчерашний день — на тестирование в редакцию последнее время попадают только модели с четырьмя ядрами.

Представляем участников тестирования. Вот и сейчас перед нами три модели четырехъядерных процессоров: две — компании Intel, это Core 2 Quad Q9650 (тактовая частота 3,0 ГГц, объем кэш-памяти второго уровня 12 Мбайт) и Q9300 (тактовая частота 2,5 ГГц, объем кэш-памяти второго уровня 6 Мбайт) и одна от AMD — Phenom X4 9850 (тактовая частота 2,5 ГГц). Первые две ничем принципиально не отличаются от уже неоднократно описанных нами ранее четырехъядерных процессоров, правда, экземпляров с 6-Мбайт кэш-памятью к нам до сих пор не попадало. А вот изделие AMD имеет целый ряд особенностей. Самое интересное — это, конечно, кэш-память третьего уровня. Последний раз нам такое встречалось в Pentium 4 Extreme Edition — одноядерном процессоре, выполненном по технологии Northwood/Gallatin (2004 г). Двухъядерные процессоры семейства х86 с кэш-памятью третьего уровня не выпускались.

Если ядра процессоров Intel имеют независимую кэш-память только первого уровня, а второй у них разделяется двумя ядрами, то у AMD каждое ядро помимо кэш-памяти первого уровня оснащено еще индивидуальной кэш-памятью второго уровня объемом 512 Кбайт. Обмениваться данными ядра процессоров AMD могут посредством кэш-памяти третьего уровня, имеющей объем 2 Мбайт и общей для всех процессорных ядер. При межъядерном обмене данными в процессорах Intel возможны две ситуации: либо оба ядра принадлежат одной паре, и в этом случае обмен данными происходит через кэш-память второго уровня, либо — к разным, и тогда межъядерный обмен возможен лишь посредством оперативной памяти. Во втором случае помимо задержек из-за обращения к медленной памяти на внешнюю шину данных ложится дополнительная нагрузка.

Для сравнения в тестовых испытаниях также принимал участие один двухъядерный процессор Intel Core 2 Duo E6700 с тактовой частотой 2,66 ГГц и объемом кэш-памяти 4 Мбайт.

Что показали тесты? Собственно, по формальным признакам можно сравнивать только модели Intel Q9300 и AMD X4 9850, работающие на одинаковой тактовой частоте. Однако они имеют различный объем кэш-памяти и существенно различаются по цене (на момент написания статьи Q9300 был более чем на треть дороже). Но в целом картина получилась достаточно представительная.

С точки зрения реальных приложений безусловное преимущество на стороне Intel (диаграмма 1). Правда, разница все равно не так велика, как различие в цене, но ведь процессор — далеко не единственная часть компьютера. А для системы в сборе различие в цене станет существенно менее заметным.

диаграмма 1. Производительность в реальных приложениях

Синтетические приложения (диаграмма 2) дают более неоднозначную картину: AMD превосходит младшую из двух представленных моделей Intel в вычислениях (как в целочисленных, так и с плавающей точкой), но уступает ей при работе с памятью.

диаграмма 2. Производительность в синтетических тестах

Эффективное кэширование — сильная сторона процессоров Intel, позволявшая еще Pentium 4 с низкопроизводительным ядром успешно конкурировать с процессорами AMD, а теперь, после возврата к архитектуре Pentium Pro/Pentium II/Pentium III/Pentium M/Core, и уверенно лидировать по общей производительности.

Наш традиционный тест на производительность в многопоточном режиме, где распараллеливанию подвергается задача построения фрактала Жюлиа (рис. 1), привел к вполне ожидаемым результатам по соотношению производительности разных процессоров.

рис. 1. Производительность в задаче построения фрактала Жюлиа

При увеличении количества потоков до числа ядер наблюдается пропорциональный рост производительности, после чего она остается практически постоянной вплоть примерно до сотни потоков, затем плавно уменьшается за счет роста накладных расходов на переключение между потоками.

Вычисление фрактала — итерационная задача, связанная с интенсивными вычислениями с плавающей точкой, но нетребовательная к оперативной памяти. Другая задача, где используется обмен данными между потоками, демонстрирует гораздо более интересные результаты.

Первое, что бросается в глаза (рис. 2 и 3), — двухъядерный процессор сразу набирает обороты, демонстрируя максимальную производительность уже на четырех потоках (при этом два из них работают, а два ожидают), в то время как четырехъядерные выходят на максимальную производительность не сразу: чаще всего на 32 потоках, а то и позже.

рис. 2—3. Эффективность обмена данными между потоками.Обмен данными между потоками по 4 Кбайт    рис. 2—3. Эффективность обмена данными между потоками. Обмен данными между потоками по 64 Кбайт

Сравнение шкалы производительности на рис. 2 и 3 свидетельствует, что доля накладных расходов на синхронизацию потоков составляет более половины: абсолютный максимум производительности при передаче данных блоками по 4 Кбайт примерно втрое ниже, чем по 64 Кбайт (а для четырехъядерных процессоров — вчетверо). Причем у четырехъядерных процессоров этот эффект проявляется намного сильнее, а двухъядерный демонстрирует максимальную среди всех процессоров производительность, так как вся работа, включая как обработку данных, так и межпоточную синхронизацию, у него происходит в кэш-памяти второго уровня, тогда как у остальных процессоров задействуется кэш L3, а то и оперативная память.

При передаче данных блоками по 64 Кбайт явное преимущество наблюдается у процессора AMD, который обходит даже наиболее мощный процессор Intel. При этом преимущество над четырехъядерными процессорами достигается за счет того, что не происходит обращения к основному объему оперативной памяти, а над E6700 — банально за счет количества ядер.

Подведем итоги. В отдаленной перспективе (т.е. когда программисты научатся писать «правильные» программы, использующие многопоточность) более предпочтительной представляется новая архитектура AMD (ну на то она и новая; посмотрим, что к тому времени придумает Intel), что и показывают синтетические тесты. В настоящее время увеличение количества ядер с точки зрения повышения производительности неэффективно для компьютерных игр (во всех рассмотренных нами случаях «двухъядерник» на 2,66 ГГц опередил «четырехъядерник» на 2,5 ГГц, см. табл. 1), малоэффективно для видеосжатия (в лучшем случае 30—40% при удвоении количества ядер, см. табл. 2) и может быть целесообразно лишь для каких-то специфических случаев, когда заранее известно, что программа допускает эффективное распараллеливание (например, в научных расчетах).

Большинство пользователей работают в стандартных офисных или интернет-приложениях, не требующих и десятой доли производительности, обеспечиваемой современными процессорами. Тем не менее на комфортность работы могут влиять фоновые «тяжелые» приложения. Двухъядерная система гарантирует, что при наличии одного ресурсоемкого процесса пользователь не будет ощущать «тормозов» при работе с другими программами. Если же вы привыкли одновременно проверять диски на присутствие вирусов, сжимать видеофайлы, компилировать ядро Linux, а пока компьютер занимается всем этим, не теряя времени, общаться в Сети, то четырехъядерный процессор — то, что вам нужно. Пусть даже самый маломощный. Для любителей современных трехмерных игр лучшим выбором, пожалуй, остается мощный двухъядерный процессор, хотя, если нет ограничений в средствах, почему бы не выбрать и четырехъядерный? Если же комфорт ассоциируется не столько со скоростью работы, сколько с минимальным уровнем шума, лучше остановиться на «двухъядернике» семейства Core начального уровня. Устаревшие одноядерные процессоры потребляют слишком много электроэнергии и потому нуждаются в интенсивном теплоотводе, что, как правило, сопряжено с повышенным шумом.

Если сравнивать процессоры Intel и AMD, можно сказать, что соотношение цен в целом адекватно отражает расстановку сил на сегодняшний день. Когда будут написаны программы, которых сегодня пока нет, предпочтительнее окажется архитектура AMD. В то же время у процессоров AMD есть слабая сторона — малый объем кэш-памяти, а при неизбежном росте объема оперативной этот недостаток начнет проявляться все сильнее. То есть различные тенденции могут сместить баланс как в одну, так и в другую сторону.

Как мы тестировали

Для того чтобы оценить, насколько та или иная архитектура приспособлена к работе приложений, написанных с использованием многопоточности и осуществляющих интенсивный обмен данными между потоками (т.е. именно таких, какими должны быть ресурсоемкие приложения по мнению сторонников многоядерной архитектуры), была составлена программа, запускающая от двух до 256 потоков, попарно обменивающихся данными с использованием механизмов синхронизации. То есть в каждый момент из всех запущенных потоков работает только половина, а вторая половина ждет, когда освободятся данные. Часть ресурсов процессора при этом, очевидно, уходит на реализацию механизма синхронизации. Исследования проводились с использованием различных размеров блоков памяти, которыми обменивались процессоры, — от 1 до 64 Кбайт.

Тестовая система имела следующую конфигурацию: центральный процессор — Intel Core 2 Quad Q9650 и Q9300, Duo E6700, AMD Phenom X4 9850; оперативная память — 1024 Мбайт DDR2 SDRAM 800 МГц (два модуля Corsair CM2X512-8500 по 512 Мбайт); системные платы — Intel DG45ID для процессоров Intel и Foxconn A79A-S для процессора AMD; видеосистема — MSI RX3870 (ATI Radeon HD 3870) 512 Мбайт DDR4; жесткий диск — Western Digital WD2000JD-00HBB0, 200 Гбайт, SATA-150, 7200 об/мин, 8 Мбайт; привод DVD-ROM — Teac DV-516GA; блок питания — HIPER type M 630 Вт.

Многоядерные : история эволюции

Уже к концу прошлого века процессоры ПК, достигнув тактовых частот в сотни мегагерц, стали способны практически незаметно для пользователя выполнять объемы работ, покрывающие более 90% потребностей в использовании ПК. По сути дела индустрии пришлось выдумывать новые задачи для ПК, чтобы объяснить пользователю необходимость дальнейшего наращивания вычислительной мощи. Свою роль здесь сыграли и разработчики программного обеспечения: программы, написанные в 80-х годах прошлого века, зачастую работали на компьютерах тех лет быстрее, чем современные аналогичные по назначению приложения на компьютерах в тысячи раз производительнее.

Придумать новые задачи также оказалось нетрудно: с одной стороны, этому способствовала индустрия компьютерных игр, способная за счет привлечения более сложных алгоритмов поглотить практически неограниченные вычислительные ресурсы, с другой — вовлечение в сферу влияния ПК тех областей, которые в силу своей ресурсоемкости раньше были недоступны бытовым компьютерам, например домашнее видео. Так или иначе, но спрос на увеличение процессорной мощности есть.

Тот факт, что для решения подавляющего большинства практических задач вполне достаточно мощности любого даже самого слабого процессора, позволил Intel в 2000 г. перейти на новую архитектуру NetBurst, мало полезную для вычислений, но позволяющую достигать существенно более высоких тактовых частот. Точнее сказать, архитектура была оптимизирована для обработки потоковых данных, но крайне неэффективна с точки зрения обычных программ. То есть видео на ней обрабатывалось хорошо, а снижения производительности на «обычных» приложениях не было заметно за счет ее заведомо избыточного запаса.

Но и о реальной вычислительной мощности тоже не следовало забывать. Причина низкой производительности заключалась в сверхдлинном конвейере, из-за которого часть исполнительных блоков процессора простаивала. Чтобы загрузить их, была придумана новая технология — Hyper-Threading (HT), позволяющая выполнять второй поток команд. При этом если в обычном одноядерном процессоре ресурсоемкий поток мог захватить более 99% ресурсов, то с HT эта величина была ограничена примерно 80% (введение второго логического ядра увеличивает суммарную производительность примерно на четверть по сравнению с одиночным процессором; в однопоточном режиме эта четверть остается свободной). В случае ресурсоемкого приложения это довольно плохо: ресурсы кристалла нельзя использовать полностью. Но в отношении всех остальных процессов в системе — очень хорошо: вместо долей процента остаются «свободными» процентов двадцать, т.е. вполне достаточно, чтобы пользователь, запустивший один «тяжелый» процесс (например, архивацию, антивирусную проверку или видеосжатие), не почувствовал от него торможения всей остальной работы (скажем, работы в текстовом процессоре или браузере). Другими словами, даже такая «виртуальная многоядерность» способствовала существенному увеличению комфорта при работе с ПК.

В этой связи интересно отметить, что, в отличие от платформы IBM PC/Intel/Windows, в компьютерах Apple уже давно используются два процессора, даже в моделях среднего уровня, — еще с тех времен, когда для этого приходилось ставить два отдельных процессорных гнезда. Недаром компьютеры именно этой компании всегда считались наиболее дружественными по отношению к пользователю.


Таблица 1. Результаты игровых тестов на основе SmartFPS.com: Serious Sam 2, Call of Duty 2, Prey и The Chronicles of Riddick, кадр/с

Таблица 2. Результаты специализированных тестов — видеосжатие, время сжатия, мин:с. (video: DivX Rate=780, audio: MPEG-1 layer 3)