ТЕХНОЛОГИИ

Корпорация Sun Microsystems (www.sun.com) традиционно является одним из лидеров на рынке высокопроизводительных серверов, постоянно вкладывая значительные средства в совершенствование своих технологий. Естественно, очень большое место в планах компании занимает разработка новых процессоров, идущих на смену нынешним UltraSPARC’ам. О перспективах этого направления на прошедшем 23 июня в Москве семинаре рассказал Роберт Людман, директор по развитию бизнеса в области процессоров и сетевых продуктов Sun.

Современные процессоры г-н Людман уподобил спринтерам - очень быстро пробежав небольшую дистанцию, они вынуждены останавливаться и переводить дыхание (ждать, пока из медленной памяти поступят данные для дальнейшей обработки), причем нет особых надежд на то, что ситуация улучшится: скорость процессоров удваивается каждые два года, а памяти - только каждые шесть лет. Старый подход к созданию процессоров, заключавшийся в увеличении тактовой частоты и количества одновременно исполняемых команд, уже не срабатывает: например, в процессорах Intel, по словам г-на Людмана, рост тактовой частоты на 40% ведет к повышению производительности системы лишь на 5%, но сопровождается значительным увеличением выделения тепла. Поэтому возникла потребность в марафонце, который бежит сравнительно медленно, но зато (в идеале) без остановок.

Как известно, компания Sun недавно отказалась от продолжения работ над процессорами Gemini и Millennium (UltraSPARC V), полностью сосредоточив усилия на технологии Throughput Computing. Последняя подразумевает создание новых процессоров под кодовыми названиями Niagara и Rock, в которых на одном кристалле будет размещаться несколько процессорных ядер, причем каждое сможет выполнять несколько потоков команд. Технология многопоточных процессоров получила название CMT (Chip MultiThreading), в известном смысле она аналогична технологии Hyper-Threading (HT) корпорации Intel, реализованной в процессорах Pentium IV и более поздних. Над новыми проектами, как утверждают представители Sun, сейчас трудится свыше 1600 инженеров.

Начало поставок кристаллов Niagara запланировано на 2006 г. Этот процессор, разрабатываемый под 90 нм технологию, будет иметь восемь ядер. Каждое ядро будет поддерживать четыре потока, однако эти потоки смогут выполняться только последовательно. Таким образом, один кристалл сможет одновременно выполнять восемь потоков из 32. Niagara обещает многократное увеличение производительности на многопоточных задачах, однако в однопоточных особых преимуществ перед нынешними UltraSPARC не имеет.

Многопоточные процессоры

"Лишние" транзисторы, появившиеся на кристалле процессора благодаря улучшению полупроводниковых технологий, можно использовать по-разному. Можно, например, ввести в процессор дополнительные исполнительные блоки и увеличить глубину конвейера, чтобы обеспечить одновременное исполнение нескольких машинных команд. Именно этим способом Intel почти удвоила производительность первых Pentium’ов по сравнению с 80486. Однако, хотя нынешние технологии позволяют разместить на одном кристалле десятки исполнительных блоков, существенного выигрыша это уже не дает: высокоскоростные "числодробилки" значительную часть времени простаивают без дела, поскольку сравнительно медленная память не успевает выдавать им новые порции информации.

Частично проблема решается применением скоростной кэш-памяти, интегрированной на кристалле процессора, но здесь встречаются свои проблемы. Такой кэш очень дорог (сравните цены на процессоры Intel Pentium III и Celeron или AMD Athlon и Duron с одинаковыми ядрами, но разными объемами кэша) и потребляет много энергии, вызывая сильный разогрев кристалла. Кроме того, прирост эффективности кэша падает по мере роста его объема, т. е. переход при прочих равных условиях с 16- на 32-килобайтный кэш даст куда больший прирост производительности, чем переход с 1- на 2-мегабайтный. Таким образом, увеличение количества исполнительных блоков и наращивание объема кэша, за счет чего (наряду с "лобовым" ростом тактовой частоты) раньше осуществлялось повышение производительности процессоров, уже не приносит должного эффекта, и разработчики пошли по другому пути - реализовали выполнение на одном процессоре нескольких потоков одновременно.

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

Другие многопоточные процессоры (в частности, Niagara от Sun) работают несколько иначе. Поток полностью занимает процессор, а остальные потоки в это время стоят - примерно так же, как происходит в обычной однопроцессорной системе. Когда выполнение потока останавливается, процессор автоматически переключается на другой поток, готовый к выполнению. Таким образом, хотя потоки выполняются последовательно, как на обычном однопоточном процессоре, простоев значительно меньше.

Конечно, емкость кэша многопоточного процессора оказывается поделенной между несколькими потоками, а поэтому шанс "промаха" (т. е. отсутствия в кэше требуемых данных) каждого отдельного потока в многопоточном процессоре выше, чем в однопоточном с тем же объемом кэш-памяти. Однако, как уже отмечалось, эффективность кэша зависит от его объема отнюдь не линейно, поэтому, например, общее количество "попаданий" двух потоков в свои кэши объемом по 256 Кб каждый будет ощутимо больше, чем одного потока в 512-килобайтный кэш. Результат очевиден: хотя каждый отдельно взятый поток на многопоточном процессоре выполняется медленнее, чем на однопоточном, общая производительность многопоточного процессора существенно выше благодаря уменьшению количества простоев, связанных с ожиданием данных из сравнительно медленной оперативной памяти компьютера.

Еще одним фактором, влияющим на производительность, является количество одновременно исполняемых машинных инструкций. Современные процессоры от Intel способны выполнить до четырех команд за каждый такт, но только при условии, что вся необходимая для этого информация доступна, а сами инструкции между собой логически не связаны. Для обеспечения последнего условия в процессорах применяются различные ухищрения вроде переименования регистров, однако помочь они могут далеко не всегда. Кроме того, неправильное предсказание ветвления приводит к тому, что все предварительно выбранные и декодированные команды "идут на свалку" и процессор теряет порядка 30 тактов на то, чтобы вновь заполнить конвейер и выйти на максимальную мощность.

Sun пошла по другому пути. Каждое процессорное ядро Niagara за один такт выполняет всего одну инструкцию, благодаря чему отпадает необходимость в сложных механизмах обеспечения одновременного выполнения команд, упрощается разработка самого процессора и уменьшается необходимое количество транзисторов, а следовательно, и площадь кристалла вкупе с потребляемой энергией. Кроме того, ошибка в предсказании ветвления в таком процессоре приведет к простою конвейера в течение всего 5-6 тактов, а не нескольких десятков - а это весьма благотворно сказывается на общей производительности.

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

Новые процессоры сохранят полную совместимость на уровне машинного кода со своими предшественниками. Это очень важно, что наглядно продемонстрировал опыт Intel: отказавшись в 64-разрядных процессорах Itanium от прямой совместимости с архитектурой x86 (приложения для которой работают на этой платформе в режиме эмуляции), она, по мнению г-на Людмана, уступила пальму первенства в области рабочих станций и серверов начального уровня своему главному конкуренту AMD, предложившему альтернативную архитектуру x86-64, которую теперь вынуждена повторять и сама Intel.

Процессоры Niagara будут использованы в младших моделях новой линейки серверов под кодовым названием Advanced Product Line (APL). Старшие модели будут оснащаться процессорами компании Fujitsu, с которой Sun уже 20 лет связывает стратегическое партнерство. Кристаллы от Fujitsu оказались более производительными, чем "родные" изделия Sun, и последняя, как объясняют ее руководители, приняла весьма мудрое решение: не устраивать своего рода гонку вооружений с партнером-конкурентом, а просто использовать его кристаллы в наиболее мощных моделях APL, а самой сосредоточить усилия на совершенно новых разработках. Что же касается серверов APL, то их разработка ведется двумя корпорациями совместно.

Sun стремится к увеличению производительности не отдельно взятой задачи, а системы в целом, что обеспечивается в первую очередь одновременным выполнением в многопроцессорной системе нескольких задач. Однако постоянно увеличивать число процессоров невозможно (прежде всего из-за ограничений по габаритам), и именно здесь многоядерные многопоточные кристаллы способны показать себя с наилучшей стороны. Что же касается поддержки со стороны ОС, то для Solaris режим симметричного мультипроцессирования (SMP) - "родной", заложенный в нее изначально, а не добавленный при выпуске очередной версии, именно поэтому данная ОС отличается лучшей масштабируемостью, чем те системы, в которых режим SMP появился позднее.

В России Sun, по данным Gartner, является брендом N 1 на рынке Unix-серверов (46% в стоимостном и 78% в количественном выражении), и планы корпорации по продвижению нового поколения серверов ясно свидетельствуют о том, что сдавать свои позиции она не собирается. Однако борьба предстоит нелегкая, и в первую очередь противником Sun, по мнению ее руководства, будет корпорация IBM, активно продвигающая ОС Linux. Правда, Sun уже приняла решение об открытии исходных текстов Solaris, что в определенной степени лишает сторонников Linux одного из наиболее весомых аргументов в свою пользу. Тем не менее это решение выглядит явно запоздавшим - вице-президент Sun по исследованиям и разработкам Джон Гейдж считает, что, если бы этот шаг был предпринят лет десять назад, никакой Linux, по всей вероятности, просто не было бы.