Появление AMD64/EM64T 64-битных процессоров от компаний AMD и Intel безусловно можно считать одним из самых интересных событий на процессорном рынке за последние пять лет. Конечно, поголовный переход на новые платформы случится не сразу, особенно учитывая неторопливость Microsoft. К счастью новые процессоры полностью совместимы с используемым сегодня IA32 программным обеспечением.
Чего однако нельзя сказать о представленной еще в 2001 году компанией Intel 64-х битной архитектуре IA64 и ее главном продукте — процессоре Itanium. Обсуждать историю возникновения и развития этой линейки мы здесь не будем, отметим, однако, что IA64 создавалась на основе архитектуры EPIC и ей (как это часто бывает для новых продуктов) пророчили блестящее будущее, не забывая в маркетинговых материалах писать стандартные слова «high availability, scalability and performance needed for high-end enterprise and technical computing applications». За четыре года процессор вырос с 733 МГц ядра с 4 МБ кэша L3 и шины в 2,1 ГБ/с до 1,6 ГГц/9 МБ/6,4 ГБ/с. Однако сказать, что прямо так все high-end enterprise закупили себе по пачке Itanium'ов пожалуй нельзя. Кроме того, в связи с выходом продуктов AMD64/EM64T многие обозреватели все чаще переводят название процессора как «Итаник».
Безусловно, поддерживать две архитектуры, которые явно между собой соперничают, очень сложно. Однако Intel большой, и, я думаю, у него все получится :), особенно если правильно развести продукты по рынкам.
Кстати о рынках. Сегодня потребители избалованы универсальностью IA32/x86. Эта архитектура работает как в тонких терминалах на AMD Geode, так и в восьмипроцессорных серверах на Intel Xeon MP. Насколько эффективно она там работает это совсем другой вопрос :). Однако факт остается фактом — IA32 сегодня самая популярная архитектура. И сильно изменить ее действительно практически невозможно.
Но стоит ли ее менять?
Конечно когда речь идет о Васе, который просто любит вечерами поиграть на своем пентиуме и совершенно не вдается в подробности о ассоциативности L1 кэша и используемом авторами игры компиляторе, то вопрос о поддержке всего софта, залитого на его 400 ГБ жесткий диск очень важен. Однако когда мы выходим из области развлечений и заглядываем в тот самый high-end enterprise, ситуация заметно меняется. И главным становится эффективность решения заранее определенных задач.
В этой ситуации компании может быть совершенно не важно, сколько и каких процессоров будет установлено в ее новом сервере, какая там ОС и кто написал базу данных. Действительно важным становится сочетание всех этих факторов — готовое решение поставленной задачи. Ну и конечно не упускаются из виду стоимость (решения!), надежность, поддержка и другие «взрослые» понятия.
Если честно, меня очень радуют часто встречающиеся последнее время сообщения в прессе, что мэрия города Ъ перешла на использование OpenSource ПО и прилично на этом сэкономила. Но представить аналогичную ситуацию у нас я просто не могу :). Понятно, что «у них» люди на работе обычно заняты делом, а наш менталитет, я думаю, просто не перенесет невозможности запуска купленной на рынке игрушки. Конечно терминалы Сбербанка замечательно продолжают работать под MS-DOS, но вот в других местах…
Хорошо, если компания такая большая и красивая, что может позволить себе попробовать то или иное решение и на основании максимально точной и подробной информации сделать выбор.
Другим же часто приходится пользоваться различными источниками, например статьями в журналах и сетевых СМИ, результатами тестов производителей. Обращать внимание только на выводы в этих статьях обычно не стоит, т.к. используемое в обзорах и тестированиях понятие производительности хоть и является чаще всего объективным, но лишено смысла без дополнительных уточнений, в частности стоимости, надежности, времени реализации решения.
Конечно есть чисто научные понятия в этой области, например «мегафлопсы», однако их красота и простота видимо больше интересна собственно тем, кто занимается наукой (что как известно представляет собой «наилучший современный способ удовлетворения любопытства отдельных личностей за счет государства» (С) :)).
Остальным приходится учитывать множество других факторов, причем как вполне объективных (например, стоимость), так и субъективных (перспективность). Ну и далее уже идут их сочетания до бесконечности :) (выбор поставщика, основанный на объективной стоимости и субъективной надежности).
Конечно, для большинства пользователей домашних ПК все обычно достаточно просто — определяется сумма, которую можно/нужно/не жалко потратить на новую железку и подбирается максимально быстрый вариант (конечно определение «быстроты» у каждого свое).
Для «больших» решений оценка производительности имеет две особенности. Во-первых для нахождения оптимума нужно попробовать связать скорость с финансовой выгодой, что является не всегда простым занятием, во-вторых может использоваться вызывающее аллергию у оверклокеров понятие достаточной производительности. Например, пользователю системы видеонаблюдения совершенно не обязательно знать, как и чем обеспечивается скорость оцифровки данных с шестнадцати видеокамер, главное, что бы работало. В случае более обтекаемой задачи (например — «файл-сервер для 1000 клиентов») приходится строить различные модели.
Один из вариантов моделирования как раз и реализован в тестах SPEC. В данном случае речь идет о «научно-вычислительном» поле. Написали мы по этому поводу уже много статей :), так что повторяться не будем, а попробуем оценить привлекательность IA64 для «числодробительных» задач основываясь на данных теста SPEC CPU2000.
В тестах использовалась система
- платформа Intel SBHG2 Tiger 2
- процессор Itanium2 1,3 ГГц/3 МБ L3
- четыре модуля DIMM DDR 512 МБ PC2700 ECC Reg
- два диска 36 ГБ U320 SCSI Fujitsu MAP3367NC
- ОС Windows 2003 Ent Server 64-bit
- компилятор Intel Compiler for IA64 версии 8.1 (билды компиляторов: C/C++ — 022, Fortran — 025).
Конечно это не шестнадцатипроцессорный Bull NovaScale 6320 HPC, но наш опыт показывает, что для оценки скорости счета и составления прогноза и эта система подойдет.
Конфигурационный файл для режима IA64 был создан на базе опубликованного на www.spec.org компанией Dell.
Для начала приведем интегральные результаты, достигнутые системой в режиме IA64:
- SPECint_base2000: 1017
- SPECfp_base2000: 1979
Мало это или много? Сравнение с процессорами Pentium 4 показывает, что по целочисленному счету протестированный Itanium 2 находится на уровне 2,8 ГГц процессора (без учета платформы, версий компилятора и т.п.), а вот по работе с вещественными числами опережает даже Pentium 4 570J (3,8 ГГц).
Из-за разницы архитектур проводить подробный дополнительный анализ практически бесполезно. Отметим только, что «гуляния» по отдельным приложениям достигают для CINT2000 ±40%, а для CFP2000 еще больше: -40%…+90% (и конечно особенно отличился благодаря 3 МБ кэшу 179.art, он прибавил целых 217%, причем даже если его «не считать» в интегральной оценке, то результат нашего Itanium 2 всего лишь сравняется с P4 3,8).
Итого можно сказать, что исследуемый процессор очень хорошо показал себя в вычислениях с плавающей точкой. С учетом того, что мы исследовали не самую быструю модель, на IA64 можно достичь и большей производительности. Максимальный результат с компилятором от Intel, опубликованный на www.spec.org, составил 2712 баллов (SPECfp_base2000) у модели Itanium 2 1,6 ГГц 9 МБ L2 (под RHAS, под Windows 2003 AS никто почему-то не тестирует). Таким образом, он превосходит все настольные процессоры и если вам нужна максимальная производительность, то альтернатив просто нет (кстати, это относится ко всем существующим системам, хотя стоит отметить, что IBM Power5 отстает совсем немного, правда у него 36 МБ кэша L3 :)). В многопроцессорных конфигурациях он тоже является однозначным лидером.
При работе с целыми числами ситуация похуже. В однопроцессорном режиме самый быстрый Itanium 2 отстает от сегодняшнего лидера AMD Athlon 64 FX-55 примерно на 10%. Однако в мультипроцессорных конфигурациях он берет реванш и снова становится победителем.
Безусловно, ложкой дегтя является высокая стоимость систем на базе Itanium 2. И если двухпроцессорную систему на AMD Opteron можно приобрести за разумные деньги, то рабочую станцию на Itanium 2 еще придется поискать. Кстати интересно, что HP убрал со своего сайта информацию о рабочих станциях на Itanium (сервера, конечно, остались), но в META тегах HTML кода слово Itanium еще встречается :). Да и видимо даже Intel не верит в такое позиционирование этого процессора, поскольку список партнеров, опубликованный на их сайте, на проверку оказывается неверным. Из 16-и указанных компаний ни у одной нет именно Workstation на Itanium 2. Сервера — да, есть. А вот рабочие станции — сплошь Opteron, Xeon, иногда Pentium 4 и PowerPC (а как все красиво начиналось…).
С «нативным» режимом работы Itanium 2 мы разобрались. Теперь опробуем оценить его возможности по выполнению 32-битных приложений IA32. Конечно, реально гонять многотысячные машины для расчетов в 32-бит режиме никто в нормальных условиях не будет, однако понять, чего стоит ожидать от использования 32-бит ПО все-таки интересно.
Как показал опыт, по умолчанию Itanium 2 может исполнять 32-бит код, включая инструкции MMX и SSE (то есть он совместим с Pentium III), при этом обычные приложения, которыми вы привыкли пользоваться на обычной 32-бит системе прекрасно работают (16 бит Windows и MS-DOS мы даже не пробовали… хотя наверное было бы интересно запустить Norton Commander на Itanium 2 :)).
Во второй половине 2003 года компания Intel представила программную прослойку для IA64 систем, призванную поднять производительность на 32-бит коде IA-32 Execution Layer. Обещали достижение уровня Xeon 1,5 ГГц. В IA32EL используется динамическая трансляция 32-х битного кода в «родной» код IA64 архитектуры. Кроме увеличения скорости, была добавлена поддержка инструкций набора SSE2 (интересно, что моделируется и инструкция CPU_ID, так что компилятор Intel версии 8.x находит в процессоре «своего» и разрешает использовать оптимизацию под Northwood). В настоящий момент это ПО доступно для свободного скачивания на сайте Microsoft для операционных систем этой компании и входит в поставки многих IA64 дистрибутивов Linux (по данным Intel).
Итак, если не использовать IA32EL, то результаты Itanium 2 в тестах SPEC CPU2000 на 32-бит коде просто никакие… SPECint_base2000/SPECfp_base2000=306/170, что соответствует Pentium III 700/450 МГц. Да, эмуляция самого популярного набора команд дается тяжело… С другой стороны частота тестируемого процессора всего в два/четыре раза выше, так что видимо это не так уж и плохо. Наследие прошлого дорого стоит.
Зато использование IA32EL значительно повышает настроение: SPECint_base2000/SPECfp_base2000=569/530. Ну это хоть что-то, примерно уровень Pentium 4 1,7 ГГц, Athlon XP 1600+/ Pentium 4 1,7 ГГц, Athlon XP 1700+. Получается, что обещание дотянуть до Xeon 1,5 ГГц компания выполнила. Так что использование IA32EL крайне рекомендуется тем, кому нужно запускать 32-бит приложения на Itanium 2. Даже если это всего лишь Far или pkzip :). В целом рост производительности на IA32 приложениях при использовании IA32EL составил от 20 до 410% (небольшую лепту вносит и появление поддержки SSE2).
Заключение
Проведенное тестирование платформы c Intel Itanium 2 показало, что данный процессор заслуженно занимает лидирующие позиции по производительности в операциях с вещественными числами среди всех современных процессоров.
К сожалению, у нас нет возможности провести тестирование 128-ми процессорных систем, но схожесть полученных нами результатов с официальными позволяет не сомневаться в опубликованных на www.spec.org цифрах для SGI Altix 3700 и HP Integrity Superdome. Однако не нужно забывать, что столь высокая производительность стоит очень дорого, впрочем, как и все самое-самое :).
Режим совместимости с IA32 кодом, присутствующий в процессоре, вполне работоспособен. Так что любимые программы типа офиса и блокнота работать будут (ну и конечно обязательные для серверов системы мониторинга и управления от сторонних разработчиков). А вот если нужное ПО занимается действительно интенсивными расчетами, то лучше его портировать на IA64, в крайнем случае, можно использовать IA32EL для временного решения проблемы с производительностью.