Недавно два микропроцессорных гиганта – Intel и AMD – дружно выпустили свои первые двухъядерные процессоры, которые уже успели наделать много шума. Новые микропроцессоры получились не просто интересными, но представляют собой весьма многогранные продукты, тщательное исследование которых не может ограничиться одним-двумя обзорами, написанными по горячим следам. Мы постараемся рассказать об этих новых продуктах более подробно и, по возможности, с разных сторон...
Итак, недавно два микропроцессорных гиганта – Intel и AMD – дружно выпустили свои первые двухъядерные процессоры, которые уже успели наделать много шума. Эти продукты стали не просто очередными конкурирующими новинками от лидеров отрасли персональных компьютеров (как это часто бывало в последние годы), но возвестили своим появлением о начале (не побоимся громких слов) целой эры (в тактическом и даже стратегическом понимании) «настольных» вычислений, очередного витка проникновения профессиональных технологий в потребительский сегмент. Новые микропроцессоры получились не просто интересными, но представляют собой весьма многогранные продукты, тщательное исследование которых не может ограничиться одним-двумя обзорами, написанными по горячим следам (каковыми можно признать большинство статей с тестами, спешно выполненными за несколько дней после получения сэмплов). Мы постараемся рассказать об этих новых продуктах более подробно и, по возможности, с разных сторон, не ограничивая себя жесткими временными рамками. Впрочем, мы также приглашаем к обсуждению этих продуктов и наших читателей – нa нашем Форуме и в виде авторских заметок, которые, при удачном сочетании таланта и смекалки их написавших, могут быть опубликованы на нашем ресурсе. :)
Но начнем мы, как и подобает, с теории. Благо, здесь явно есть, что обсудить.
Классификация: SMP, NUMA, кластеры…
Очевидно, что «ноги» у новых процессоров растут из многопроцессорных систем. А вариантов создания многопроцессорных систем – неисчислимое множество: даже простое перечисление всего созданного за прошедшие годы заняло бы слишком много места. Однако существует их общепринятая классификация:
1. SMP-системы (Symmetrical Multi Processor systems). В подобной системе все процессоры имеют совершенно равноправный доступ к общей оперативной памяти (см. рисунок). Работать с такими системами программистам – сущее удовольствие (если, конечно, создание многопоточного кода можно назвать «удовольствием»), поскольку не возникает никаких специфичных «особенностей», связанных с архитектурой компьютера. Но, к сожалению, создавать подобные системы крайне трудно: 2-4 процессора – практический предел для стоящих разумные деньги SMP-систем. Конечно, за пару сотен тысяч долларов можно купить системы и с большим числом процессоров… но при цене в несколько миллионов (!) долларов за SMP с 32-мя CPU становится экономически более целесообразно использовать менее дорогостоящие архитектуры.
2. NUMA-системы (Non-Uniform Memory Access systems). Память становится «неоднородной»: один её кусок «быстрее», другой – «медленнее», а отклика от во-о-он того «дальнего» участка вообще можно ждать «пару лет». В системе при этом образуются своеобразные «островки» со своей, быстрой «локальной» оперативной памятью, соединенные относительно медленными линиями связи. Обращения к «своей» памяти происходят быстро, к «чужой» - медленнее, причем чем «дальше» чужая память расположена, тем медленнее получается доступ к ней (см. рис.). Создавать NUMA-системы куда проще, чем SMP, а вот программы писать сложнее – без учета неоднородности памяти эффективную программу для NUMA уже не напишешь.
3. Наконец, последний тип многопроцессорных систем – кластеры. Просто берем некоторое количество «почти самостоятельных» компьютеров (узлы кластера или «ноды») и объединяем их быстродействующими линиями связи. «Общей памяти» здесь может и не быть вообще, но, в принципе, и здесь её несложно реализовать, создав «очень неоднородную» NUMA-систему. Но на практике обычно удобнее работать с кластером в «явном» виде, явно описывая в программе все пересылки данных между его узлами. То есть если для NUMA еще можно создавать программы, почти не задумываясь над тем «как эта штука работает» и откуда берутся необходимые для работы потоков данные; то при работе с кластером требуется очень четко расписывать кто, что и где делает. Это очень неудобно для программистов, и, вдобавок, накладывает существенные ограничения на применимость кластерных систем. Но зато кластер – это очень дешево.
Intel сегодня предпочитает создавать SMP-системы; AMD, IBM и Sun - те или иные варианты NUMA. Основная «область применения» кластеров – суперкомпьютеры.
Многоядерные процессоры
Основные вехи в истории создания двухъядерных процессоров таковы:
1999 год – анонс первого двухъядерного процессора в мире (IBM Power4 для серверов)
2001 год – начало продаж двухъядерного IBM Power4
2002 год – почти одновременно AMD и Intel объявляют о перспективах создания своих двухъядерных процессоров
2002 год – выход процессоров Intel Xeon и Intel Pentium 4 с технологией Hyper-Threading, обеспечивающей виртуальную двухпроцессорность на одном кристалле
2004 год – свой двухъядерный процессор выпустила Sun (UltraSPARC IV)
2004 год – IBM выпустила второе поколение своих двухъядерных процессоров (IBM Power5). Каждое процессорное ядро Power5 поддерживает аналог технологии Hyper-Threading
2005 год, 18 марта – Intel выпустила первый в мире двухъядерный процессор архитектуры x86
2005 год, 21 марта – AMD анонсировала полную линейку серверных двухъядерных процессоров Opteron, анонсировала десктопные двухъядерные процессоры Athlon 64 X2 и начала поставки двухъядерных Opteron 8xx
2005 год, 20-25 мая – AMD начинает поставки двухядерных Opteron 2xx
2005 год, 26 мая – Intel выпускает двухъядерные Pentium D для массовых ПК
2005 год, 31 мая – AMD начинает поставки Athlon 64 X2
Идея многоядерного процессора выглядит на первый взгляд совершенно тривиальной: просто упаковываем два-три (ну или сколько там влезет) процессора в один корпус - и компьютер получает возможность исполнять несколько программных потоков одновременно. Вроде бы бесхитростная стратегия… но конкретные её реализации в недавно вышедших настольных процессорах AMD и Intel заметно различаются. Различаются настолько, что сугубо «количественные» мелочи в конечном итоге переходят в качественные различия между процессорами этих двух компаний. Поэтому перед тем как переходить собственно к тестам современных двухъядерников, попробуем разобраться в различиях подходов этих микропроцессорных гигантов и, так сказать, «авансом» высказать некоторые предположения об их производительности.
Intel Smithfield: «классика жанра»
При создании многоядерных процессоров для настольных ПК микропроцессорный гигант предпочел пойти на первых порах по пути «наименьшего сопротивления», продолжив традиции создания привычных для себя SMP-систем с общей шиной. Выглядит подобная MP-система чрезвычайно просто: один чипсет, к которому подключается вся оперативная память, и одна процессорная шина, к которой подключены все процессоры:
В случае новеньких двухъядерных процессоров Smithfield два обычных ядра, аналогичных Prescott, просто расположены рядом на одном кристалле кремния и электрически подключены к одной (общей) системной шине. Никакой общей схемотехники у этих ядер нет.
Smithfield
Рисунок. Intel Smithfield чип
У каждого «ядра» Smithfield – свой APIC, вычислительное ядро, кэш-память второго уровня и (что особенно важно) – свой интерфейс процессорной шины (Bus I/F). Последнее обстоятельство означает, что двухъядерный процессор Intel с точки зрения любой внешней логики будет выглядеть в точности как два обыкновенных процессора (типа Intel Xeon).
Рисунок. Ядро Smithfield
Сегодняшнее ядро Smithfield является «монолитным» (два ядра образуют единый кристалл процессора), однако следующее поколение настольных процессоров Intel (Presler, изготавливаемый по 65-нм технологии) будет еще тривиальнее – два одинаковых кристалла одноядерных процессоров (Cedar Mill) просто будут упакованы в одном корпусе (см. рис.).
|
|
Presler |
Cedar Mill |
Точно таким же будет и первый серверный процессор Intel данной микроархитектуры, известный сейчас под именем Dempsey. Но если у Smithfield на каждое из ядер приходится по 1 Мбайт кэш-памяти второго уровня, то у Presler и Dempsey это будет уже по 2 Мбайт на ядро.
|
|
Presler |
Dempsey |
Между тем, позднее у Intel пойдут другие, более сложные в плане микроархитектуры варианты двухъядерных процессоров, среди которых стоит отметить Montecito (двухъядерный Itanium), Yonah (двухъядерный аналог Pentium M) и Paxville для многопроцессорных серверов на базе Intel Xeon MP. Еще в марте этого года Патрик Гелсингер объявил, что в разработке у Intel находятся аж 15 различных многоядерных CPU, и пять из них корпорация даже демонстрировала в работе.
Причем, если еще в середине 2004 года официальные лица Intel отмечали, что многоядерные процессоры – это не «очередная гонка за производительностью», поскольку программная инфраструктура была тогда еще не очень готова поддержать такие процессоры оптимизированными приложениями, то теперь многоядерность у Intel поставлена во главу угла во всех базовых направлениях деятельности, в том числе – в разработке и отладке приложений (ну разве что кроме коммуникаций и сенсорных сетей – пока ;)). И в этом нет ничего удивительного – тактовую частоту процессоров стало наращивать все труднее и труднее, и, стало быть, надо искать что-то на cмену «гонки за мегагерцами». А добавляя ядра, производительность в ряде современных приложений уже можно заметно поднять, не повышая частоты. Да и пресловутый закон Мура (удвоение числа транзисторов на кристаллах) надо бы чем-то поддержать, а многоядерность – чуть ли не самый простой путь для этого… :)
Собственно, мультиядерность в текущем понимании Intel – это один из трех возможных вариантов:
1. Независимые процессорные ядра, каждое со своей кэш-памятью, расположены на одном кристалле и просто используют общую системную шину. Это - 90-нанометровый Pentium D на ядре Smithfield.
2. Похожий вариант – когда несколько одинаковых ядер расположены на разных кристаллах, но объединены вместе с одном корпусе процессора (многочиповый процессор). Таким будет 65-нанометровое поколение процессоров семейств Pentium и Xeon на ядрах Presler и Dempsey.
3. Наконец, ядра могут быть тесно переплетены между собой на одном кристалле и использовать некоторые общие ресурсы кристалла (скажем, шину и кэш-память). Таким является ближайший Itanium на ядре Montecito. А также мобильный Yonah, выход которого обещает наделать очень много шума.
Попутно отметим, что Montecito, изготавливаемый по 90-нм техпроцессу, будет иметь по сравнению с предшественником на 130-нм ядре Madison и ряд других преимуществ: наличие Hyper-Threading (то есть он будет виден в системе как 4 логических процессора), заметно меньшее энергопотребление, более высокую производительность (в 1,5 раза и выше), вчетверо больший размер кэш-памяти (свыше 24 Мбайт: 2x1 Мбайт L2 инструкций, 2x12 Мбайт L3 данных), 1,72 миллиарда транзисторов против 410 миллионов и другое. Выйдет этот процессор в четвертом квартале 2005 года.