13 лет назад 3 августа 2005 в 22:22 78

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

ЧТО ТАКОЕ ДВУХЪЯДЕРНОСТЬ
Двухъядерный чип – это, по сути, два процессора на одном кристалле в одном разъеме. Прирост производительности в данном случае заметен в многопоточных приложениях (таких, где одновременно происходит работа нескольких подпрограмм, выполняются параллельно несколько задач или задача разделена на несколько частей и они обрабатываются одновременно). Такие приложения работают быстрее на двухъядерных процессорах, поскольку операционная система может распределять потоки между ядрами, в одноядерных же системах потоки выстраиваются в очередь и выполняются попеременно.

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

Результаты блиц-опроса “Купите ли Вы двухъядерную систему?”
Опрос был проведен в разделе Hardware локальной конференции сети Swamp (forum.swamp.ru)
Да, потому что толково – 32%
Да, потому что круто – 10%
Нет, считаю это бесперспективным – 2%
Нет, мне хватает одноядерной – 46%
Затрудняюсь ответить – 10%

КАК ЭТО РАБОТАЕТ?
Для начала рассмотрим SMP-системы (системы с симметричной многопроцессорностью). Система состоит из N процессоров (N>1). Все процессоры системы имеют одинаковые права на доступ к памяти, шинам и периферии. То есть и скорость работы с системной памятью для всех одинакова, и любой из N-го количества процессоров имеет одинаковый доступ к любому сегменту памяти. Обычно в такой системе используются одинаковые процессоры, и их количество равно степени двойки (2, 4, 8, 16 и т. д.).

В настоящее время существует два варианта организации подобных систем: первый, когда все процессоры имеют свою собственную шину, и второй, когда для всех процессоров шина одна. Последний вариант часто используется в современных SMP-системах. Рассмотрим первый вариант. В данном случае от каждого процессора к чипсету подводится шина и уже внутри моста происходит координация работы, распределение запросов и прочие вещи. Помимо этого к чипсету подключены как минимум DMA-контроллер и контроллер видеокарты. Логическая схема получается достаточно простой: добавили несколько шин к чипсету – не так уж и страшно, а делает он, в общем-то, то же самое. На практике из-за высокой скорости шины разводка платы затрудняется – необходимо найти место под шину и как-то изолировать наводимые ею помехи. Больше двух процессоров на одной плате в реальности, увы, не получается.

Второй вариант: оставить одну шину на все процессоры, а передачу данных осуществлять по очереди – память все равно общая, и контроллер памяти обычно один. При этом устройства, с которыми разделяется шина, могут отследить изменения в памяти и сделать свои “пометки”, если по интересующему конкретное устройство адресу произошли изменения. Вариант, как оказывается, не менее разумен, чем первый, но сложности есть и тут. Необходимо каким-то образом координировать работу процессоров, разрешать/запрещать им использовать шину. Из-за того, что к памяти обращается множество устройств, необходим блок, так называемый арбитр, который занимался бы координацией доступа к памяти. В какой-то мере координирующий блок присутствует и в первом варианте, но в более простом виде.

ДОСТОИНСТВА И НЕДОСТАТКИ
Постараемся кратко рассмотреть достоинства и недостатки современных SMP-систем. Начнем с достоинств. Первое – простота написания программ для SMP-систем. Архитектура не накладывает ограничений на модель программирования, и с точки зрения операционной системы нет никакой разницы, на каком процессоре выполнять ту или иную задачу. Помимо этого существуют достаточно эффективные способы автоматического распараллеливания.

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

Во-первых, плохая масштабируемость. Можно рассчитать теоретическое ускорение работы программы (S) в параллельной архитектуре в зависимости от количества процессоров (p) и соотношения параллельного и последовательного выполнения кодов программы (f), воспользовавшись законом Амдала (формула на рисунке). При хорошей оптимизации, когда 4/5 программы выполняется параллельно, увеличение количества процессоров до двух дает 170% производительности по сравнению с однопроцессорной системой, до четырех – 220% и т. д.

Во-вторых, ограничения процессорной шины. Разделяемая шина становится узким местом, то есть одновременно с усложнением ее структуры и возрастанием электрических нагрузок на нее уменьшается пропускная способность шины на каждый отдельно взятый процессор. Значит, если мы имели шину, работающую на частоте 1066 МГц, то для двух процессоров получим 533 МГц, для четырех – 266 МГц, для восьми – 133 МГц! Очевидно, что в таких условиях процессоры будут больше простаивать, а если вспомнить, что еще и память не резиновая, то перспектива получается совсем не радужная.

В-третьих, усложнение системы прерываний. Прерывания поступают по разным причинам, и использование их оправданно и необходимо, так как немыслимо постоянно проверять статус всего, что только может быть (представьте постоянный опрос всех USB-портов на появление в них нового устройства). В однопроцессорной системе с этой задачей легко справляется один обработчик прерываний, в многопроцессорных же приходится вдобавок к индивидуальным для каждого процессора реализовывать общий, который занимается синхронизацией обработки прерываний на всех процессорах (к примеру, необходимо закрыть многопоточное приложение, которое работает на нескольких процессорах).

В-четвертых, сложность распределения доступа к памяти. Процессоры работают с одной и той же оперативной памятью, поэтому необходимо синхронизировать данные в кэшах каждого из них, дабы обеспечить когерентность этих самых кэшей (наличие в них верных на данный момент данных). Когерентность обеспечивается благодаря общей шине, которая позволяет процессорам отследить изменения в памяти по тому или иному адресу и сделать пометку в своих кэшах, как то: Modified, Exclusive, Shared, Invalid (MESI) у Intel или Modified, Owner, Exclusive, Shared, Invalid (MOESI) у AMD.
Возможна ситуация, в которой одновременно два процессора попробуют записать данные в одну и ту же ячейку памяти. Например, оба процессора увидят, что ячейка не занята и начнут в нее скидывать свои данные независимо друг от друга, после чего каждый поставит флаг, что теперь-то в ней что-то записано. Во избежание подобной ситуации в SMP-системах применен механизм блокировки доступа к оперативной памяти во время проверки статуса ячейки всем процессорам, кроме того, который производит запись.

НА ОДНОМ КРИСТАЛЛЕ. INTEL
Intel на данном этапе выбрала самый простой подход, объединив в новом процессоре два ядра Prescott на одном кристалле и окрестив все это именем Smithfield. Оба ядра имеют общую процессорную шину, ничего нового к классической SMP не прибавляется. У каждого процессора имеется свой обработчик прерываний, к тому же в чипсете располагается общий обработчик прерываний.

Следствием такого объединения стало удвоение размеров ядра Smithfield: 230 млн. транзисторов и 206 кв. мм. площади против 125 млн. и 112 кв. мм. у Prescott. Суммарный объем кэш-памяти стал равен 2 Мб, но при этом каждое ядро работает только со своим 1 Мб. Частота системной шины пока для всех двухъядерных процессоров Intel равна 800 МГц. (Значение 1066 МГц пока лишь дело будущего; учитывая тот факт, что процессоры взаимодействуют фактически по шине, повышение ее частоты – вещь необходимая.)

Новое ядро наследует все технологии родителя: 64-битные расширения EM64T, технологию безопасности Execute Disable Bit, а также полный набор средств Demand Based Switching для управления тепловыделением и энергопотреблением. Новые процессоры упаковываются в привычные корпуса LGA775 и имеют частоты 2,8; 3,0; 3,2 ГГц, модельные номера 820, 830 и 840 соответственно. Они не будут поддерживать технологию Hyper-Threading, но для энтузиастов компания предлагает Pentium Extreme Edition с процессорным номером 840, то есть, по сути, тот же Pentium D 840 плюс Hyper-Threading.

Что касается материнских плат, то тут не все гладко. Для новых процессоров необходима плата на основе новых чипсетов Intel 945/955 либо Nforce4 NVIDIA. Кроме того, нужны будут качественный блок питания и хорошая система охлаждения для обеспечения стабильного функционирования. А теперь приятный момент. Цена процессоров достаточно демократична и начинается с $243 за младшую модель, то есть Intel не делает существенной разницы между одноядерными и двухъядерными семействами. Воспринимается это как грамотный маркетинговый ход: “Двухъядерность в массы!” А ведь корпорация еще и начала активную рассылку систем разработчикам программного обеспечения.

НА ОДНОМ КРИСТАЛЛЕ. AMD
Архитектура AMD64 изначально задумывалась с перспективой на многоядерность, поэтому и реализована она несколько иначе, чем у Intel, хотя, по сути, это та же SMP-система. Но, как известно, процессор имеет встроенный контроллер памяти, который, появившись в однопроцессорных системах, вызвал массу споров по поводу его целесообразности. Многим казалось, что это отрицательно скажется на быстродействии, кому-то не нравилось усложнение структуры чипа, отсутствие возможности у производителей чипсетов сделать свой, возможно, более производительный контроллер памяти. Тем не менее сейчас понятно, что именно тогда была заложена основа SMP-системы, которая дает массу преимуществ.

Благодаря шине System Request Interface (SRI – Интерфейс системных запросов), работающей на полной частоте процессора, ядрам нет необходимости ожидать результатов работы друг друга в очереди при обращении к памяти на медленной процессорной шине. К тому же при необходимости обращения какого-либо ядра к внешним ресурсам задействуется Crossbar-switch (перекрестный переключатель), выделяя ту или иную порцию времени для общения с периферией и памятью. То есть разгружается системная шина, а скорость взаимодействия ядер только повышается, поскольку “общение между собой” происходит на другом уровне.

Единственным узким местом данной реализации остается медленная двухканальная память DDR-400, пиковая пропускная способность которой ограничена 6,4 Гб в секунду. В будущем AMD планирует перейти на более быструю память DDR2-667, что должно заметно увеличить производительность как раз двухъядерных систем. Данное ограничение объясняется желанием AMD обеспечить совместимость с существующими системами, то есть новые процессоры имеют корпусировку Socket 939, встроенный двухканальный контроллер памяти и работают с шиной Hyper Transport с частотой до 1 ГГц. Для работы на уже имеющихся материнских платах Socket 939 часто достаточно обновить BIOS. Отсюда имеем более широкий спектр совместимых чипсетов.

Ко всему прочему инженерам удалось удержать параметры тепловыделения в разумных пределах – 110 ватт (при 89 для одноядерных) против 130 у Intel. Пока объявлены четыре варианта процессоров с рейтингами 4200+, 4400+, 4600+, 4800+, отличающиеся объемом кэш-памяти (1 Мб и 2 Мб суммарно) и частотой (2,2 ГГц и 2,4 ГГц). Примечательно, что старший одноядерный Athlon 64 4000+ имеет также частоту 2,4 ГГц и 1 Мб кэш-памяти второго уровня. Процессоры с кодовым названием Toledo несут по одному мегабайту кэш-памяти на ядро, Manchester – 512 кб, являясь, по сути, “удвоенными” ядрами San Diego и Venice соответственно. Параметры ядра, как и следовало ожидать, возросли приблизительно вдвое: 233 млн. транзисторов и 199 кв. мм. площади для Toledo.

Контроллер памяти усовершенствован и позволяет использовать разные модули на разных каналах в двухканальном режиме одновременно вплоть до неодинакового объема. Линейка Athlon 64 X2 позиционируется AMD как самостоятельное явление, которое не повлияет на остальные (Athlon 64 FX, Athlon 64 и Sempron). Но, учитывая, что все, кроме Athlon 64 FX, имеют унифицированную систему рейтингов, можно предположить, что для Athlon 64 рост частот прекращен и будущее за двухъядерными системами, которые пока стоят не так дешево. Экономя на материнской плате, мы выкладываем от $537 за младшую модель до $1001 за топовую. В данном случае политика AMD в корне отличается от политики Intel. Хотя если просто проследить линейку рейтингов начиная с Athlon 64 2800+, то прекрасно видно, что цена растет вместе с рейтингом и вместе с новыми процессорами появляются самые старшие рейтинги и самые высокие цены.

Процессор Pentium D 820 Pentium D 830 Pentium D 840 Pentium EE 840 Athlon 64 X2 4200+ Athlon 64 X2 4400+ Athlon 64 X2 4600+ Athlon 64 X2 4800+
Тактовая частота, ГГц 2,8 3,0 3,2 3,2 2,2 2,2 2,4 2,4
Объем L2 кэш, Мб 2×1 2×1 2×1 2×1 2×0,5 2×1 2×0,5 2×1
Частота шины* 800 800 800 800 1000 1000 1000 1000
Энергопотребление, ватт 95 95 130 130 110 110 110 110
Список совместимых чипсетов Intel 945/955, NVIDIA Nforce4 NVIDIA Nforce4, ATI Radeon Express 200, VIA K8, SIS 75x и выше
Поддержка мультимедиа и 3D-наборов инструкций SSE2, SSE3 3DNow!, SSE2, SSE3
Комментарии – – – Неблокированный множитель, поддержка технологии Hyper-Threading Встроенный двухканальный контроллер памяти Unbuffered DDR SDRAM
Цена 241 316 530 999 537 581 803 1001
Примечание *Для процессоров Intel – частота системной шины, для AMD – частота шины Hyper-Transport

А СМЫСЛ?
Что же нам дает двухъядерность? В серверных системах многопроцессорность давно стала необходимой и привычной. А понятие “параллельные вычисления” успело стать наукой.
Но в настольном сегменте на данный момент далеко не все приложения оптимизированы под использование нескольких ядер одновременно, и прирост будет действительно заметен тем, кому необходимо выполнять параллельно несколько задач. Как мы уже убедились, из-за сложности изготовления большого кристалла мы поначалу потеряем в частоте и деньгах, но это временные неудобства. Совершенствование технологических процессов вскоре позволит с меньшими затратами производить чипы с большей частотой.

Все же после оптимизации программного кода должно быть заметно существенное увеличение скорости работы программ. Уже сегодня это можно оценить благодаря виртуальной многопроцессорности от Intel (Hyper-threading). В играх пока сильной разницы заметно не будет, что вполне логично, но в будущем программисты смогут разложить расчеты на два потока, например, выделив одно ядро для обсчета сцен, а второе для физики, искусственного интеллекта, каких-то иных задач либо просто распараллелив вычисления. Сегодня же в играх мы получим некоторое отставание двухъядерных процессоров от одноядерных из-за более низких частот.

Многопоточные драйверы NVIDIA
Пока писалась статья, в Сети появилась новость о том, что NVIDIA в скором будущем выпустит линейку драйверов ForceWare 80.xx, в которых будет реализована поддержка многопоточности – это даст ряд преимуществ. В настоящих драйверах при обработке данных часть специфических вычислений отдается процессору, когда видеокарта занята; в двухъядерных системах данные вычисления можно будет выделить в отдельный поток и более эффективно распределять нагрузку.

Резюмируя теоретическую часть, можно сказать, что увеличение числа ядер должно прибавить системе “проходимости”. Другими словами, при сильной загрузке она должна меньше “пробуксовывать” по сравнению с одноядерными, отставая при этом в однопоточных задачах незначительно, зато сильно вырываясь вперед в многопоточных. (Даже “зависание” компьютера – задача, реализуемая вдвое сложнее, так как надо “подвесить” оба ядра одновременно.)

ПРАКТИКА
Хорошо, когда можно не откладывать проверку собственных измышлений, а просто взять и детально исследовать предмет обсуждения в реальных, можно сказать, полевых условиях. Чтобы составить сколько-нибудь внятную картину, мы взяли четыре процессора, и у двухъядерных AMD Athlon 64 X2 4800+ и Intel Pentium D840 появились одноядерные напарники: Athlon 64 FX-55 и Intel Pentium 4 EE 3,73 ГГц. Таким образом, в одном тесте мы собрали все топовые модели десктопных процессоров.

Тестовый стенд
Процессоры
– AMD Athlon 64 X2 4800+ 2,4 ГГц
– AMD Athlon 64 FX-55 2,6 ГГц
– Intel Pentium D840 3,2 ГГц
– Intel Pentium 4 EE 3,73 ГГц
Материнские платы
– MSI K8N Daimond
– ASUS P5ND2-SLI Deluxe
Память
– 2×512 Мб, Corsair CMX512-3200XLPRO (2-2-2-5)
– 2×512 Мб, Corsair CM2X512A-5400UL (4-4-4-14)
Видеокарта – ATI Radeon X800 XT PCI-E x16
Жесткий диск – Western Digital WD2500JB 250 Гб
Операционная система – Microsoft Windows XP SP2 (32-bit)

РЕЗУЛЬТАТЫ ТЕСТОВ
Офисные приложения
Результат, полученный в тесте Business Winstone 2004, совершенно не удивителен, поскольку это, по сути,эмуляция работы нескольких офисных приложений, но не одновременно, а последовательно. Именно поэтому лучшие результаты показывают не двухъядерные процессоры, а процессоры с более высокой тактовой частотой. Но в пакет Business Winstone 2004 входят и Multitasking-тесты, эмулирующие работу офисных приложений при одновременном выполнении в фоновом режиме одной из следующих задач: копирование файлов, архивирование файлов и проверка диска на наличие вирусов. Самые интересные результаты получились в наиболее ресурсоемком, последнем тесте, именно поэтому они приведены на диаграмме. Оба двухъядерных процессора оказываются в выигрышном положении по сравнению со своими одноядерными собратьями, но при этом результат, показываемый Athlon 64 X2 4800+, выглядит просто потрясающе.

В тесте Communication из пакета SYSmark 2004 двухъядерный Pentium D840 катастрофически отстает от всех остальных участников. В чем причина? Очевидно, в низкой частоте ядра – оптимизация приложения под Hyper-Threading ничего не решает, поскольку она реализована и в обычных Pentium 4, так что в данном тесте все зависит лишь от частоты. Аналогичная ситуация возникает и в тесте Document Creation пакета SYSmark 2004, а Data Analysis из того же пакета демонстрирует абсолютное превосходство частоты – процессоры Intel 3,2 и 3,73 ГГц оказываются на лидирующих позициях.

Создание мультимедиаконтента
Внимательно изучив результаты, полученные с помощью теста Multimedia Content Creation Winstone 2004 и трех тестов 3D Creation, 2D Creation и Web Publication из пакета SYSmark 2004, мы пришли к выводу, что достаточно проиллюстрировать на диаграмме один из трех последних, поскольку везде ситуация оказывается примерно одна и та же: как только возникает серьезная многозадачная нагрузка двухъядерные процессоры с успехом демонстрируют свою мощь. Как видно на диаграмме SYSmark 2004 2D Creation, оба двухъядерника серьезно опережают противников.

3D-рендеринг
Теоретически задача финального рендеринга должна очень хорошо распараллеливаться, и, стало быть, неудивительно, что на диаграмме 3ds max Ape Animation двухъядерные процессоры показывают лучшее время. Но та же задача в пакете Lightwave утверждает лишь безусловное превосходство AMD Athlon 64 X2 4800+, а Intel Pentium D840 оказывается последним.

Игровые тесты
К сожалению, пока игры пишутся “в один поток” – многопоточная реализация движков, очевидно, не за горами, но сейчас мы имеем лишь то, что имеем. Поэтому во всех тестах, основанных на играх (Quake III, UT2004, Far Cry, Half-Life 2, Doom 3 и т. д.), картина примерно одна и та же: на верхней позиции – Athlon 64 FX-55, а на нижней – Pentium D840. Приведенная диаграмма Unreal Tournament 2004 наглядно иллюстрирует ситуацию в целом.

Такой же результат выдают и 3DMark2001 SE и 3DMark05, но интересными оказались мучительные (fps действительно просто вымучиваются) CPU-тесты последнего пакета. За счет одновременного выполнения процессором нескольких задач двухъядерники снова оказались впереди.

Полученные результаты позволяют нам сделать два вывода. Вывод первый и, пожалуй, основной: если учесть, что ситуации, смоделированные во многих многозадачных тестах различных пакетов, вполне жизненные, становится понятно, что многоядерные процессоры отнюдь не очередной способ вытянуть деньги из кармана потребителя, а вполне реальный шаг к выходу из наметившегося гигагерцевого тупика. Вывод второй: AMD Athlon 64 X2 4800+ на данный момент является одним из самых быстрых процессоров, предназначенных для настольных систем; единственный нюанс, который сложно не учитывать – его немалая стоимость.