<!–#set var="article_header" value="HyperThreading и разработка приложений:
анализ текущего состояния” –>
Введение
Intel очень сильно рассчитывает на успех своей технологии HyperThreading (HT). Фактически, основным фокусом недавно выпущенной линейки компиляторов от Intel является HT, компания говорит: “мы прокладываем путь для технологии Intel HyperThreading”. К тому же, новые компиляторы успокоят недовольство обозревателей по поводу отсутствия готовых компиляторов на момент выпуска первых HT процессоров. Как утверждает Intel, при работе приложений на HT процессорах Pentium 4 достигается 25% улучшение производительности, однако этот прирост по большей части связан с использованием нужного компилятора. В отношении программ технология Intel HT, позволяющая одному физическому процессору создавать второй логический процессор для параллельной работы с первым, даст ощутимый прирост производительности к 3,06 ГГц и более быстрым процессорам Pentium 4, независимо от тактовой частоты и в широком спектре приложений. Если в словах Intel содержится истина, преимущество от HT получат предположительно все программы с “тяжелыми” вычислениями. Сюда включены массивные транзакционные вычисления, финансовые, инженерные и научные расчеты, игры и приложения по созданию спецэффектов, или, говоря кратко, все приложения, полностью загружающие процессор и имеющие более одного потока. Максимальный 25% прирост производительности наблюдается с помощью стандартных тестов, например, по числу кадров в секунду в графических приложениях.
Однако HT не даст ощутимого прироста приложениям, незначительно нагружающим процессор. Это электронные таблицы, текстовые редакторы или почтовые программы – а ведь именно с такими приложениями работает средний пользователь. В общем, толку от HT мало, если процессор не загружается под самое горло и приложение не использует несколько потоков.
HT приложения
Intel описывает главный признак ориентированных на HT приложений с точки зрения многозадачности следующим образом: поток планировщика работает на процессоре все время для максимизации использования ресурсов процессора. Каждому процессу выдается временной промежуток, во время которого он выполняется. Создание процесса включает генерацию адресного пространства и образа приложения в памяти, где содержится секция кода, секция данных и стек. Параллельное программирование включает создание двух или более процессов и механизма связи между процессами для координации параллельной работы. Потоки – это задания, работающие независимо друг от друга в контексте процесса. Поток разделяет код и данные с родительским процессом, но имеет свой уникальный стек и архитектурное состояние, которое включает указатель инструкций. Потоки требуют меньше системных ресурсов, чем процессы. К примеру, связь внутри процесса осуществляется намного “дешевле”, чем связь между процессами.
Преимущества
Как утверждает Intel, разбиение приложения на потоки может привести к увеличению производительности на однопроцессорной машине или на многопроцессорной системе. Потоки повышают время реакции графического интерфейса. Они также помогают улучшить взаимосвязь между операциями ввода/вывода и вычислениями. Если в системе присутствует несколько процессоров, то многопоточные приложения получают ощутимый прирост производительности.
Недостатки
Разбиение существующего приложения на потоки увеличивает его сложность, как говорит Intel. Совместное использование ресурсов, типа общих данных, может привести к появлению ошибок в параллельном программировании типа конфликтов хранения и т.д. Отладка таких ошибок сложна, поскольку возникают они в случайные моменты времени. Для отладки следует использовать специальные механизмы.
Патентная опора Intel HT
Технология HT с момента своего введения была ориентирована на конкретные применения. Фактически, поданный Intel патент описывает широкое использование технологии HT, которое компания видит в будущем, опирающемся на параллелизм HT и процессоров. В патенте “Инструкции быстрой записи для микро движка, используемого в многопоточной параллельной процессорной архитектуре” Intel является ассигнованной стороной, а Дональд Хупер из Шрусбери (Массачусетс) – изобретателем, в тексте содержатся очень интересные применения HT в области сетей, мультимедиа и систем хранения данных.
Патент, к примеру, описывает, как многопоточный процессор может взаимодействовать с сетевыми контроллерами типа гигабитных Ethernet карт. Хотя в патенте нет оценки численному приросту производительности, в нем объясняется, как многопоточный сетевой процессор может взаимодействовать с несколькими различными типами устройств связи и коммутировать/маршрутизировать большие объемы данных. В сценарии патента рассматривается маршрутизатор, получающий пакеты данных от двух гигабитных источников данных, и независимо обрабатывающий каждый пакет. Другими словами, для выполнения работы двух сетевых процессоров можно использовать только один (неудивительно, что Intel усиленно агитирует за это применение, поскольку компания инвестировала большие средства в бизнес сетевых процессоров). Что касается подсистем хранения данных, типа массивов недорогих дисков с избыточностью (RAID), в патенте описывается, как программы с поддержкой HT смогут реализовать одновременную работу двух или более дисков для повышения отказоустойчивости и производительности. Технология также будет полезна и в области безопасности, к примеру, в электронной коммерции, где используются специальные алгоритмы для передачи информации между продавцом и покупателем.
Рисунок “от руки” в патенте Intel HT, поданном в марте 2001 года.
Поскольку HT процессоры и HT компиляторы были выпущены не так давно, патент раскрывает большие амбиции Intel по поводу HT. Компания вновь напрягла свой привычный маркетинговый мускул, проталкивая HT Pentium 4 и серверные процессоры Xeon. Из чего логически следует, что после выпуска новых компиляторов для большинства стандартных языков программирования и операционных систем Windows и Linux, Intel вероятно будет дальше расширять применение HT, как описано в патенте. Следите за поведением Intel в не-ПК секторе коммуникаций и систем хранения данных.
Тенденции в области редактирования видео
Что касается рынка настольных компьютеров, то здесь мы используются приложения по редактированию видео, которые могут существенно выиграть от использования HT. В документации Intel гипотетически описывает, как процессор будет считывать поток несжатого видео, накладывать на него спецэффекты в реальном времени, параллельно с сохранением потока на жестком диске. Выполнение подобной задачи зависит от производительности системы, поскольку спецэффекты должны накладываться в реальном времени. Время обработки каждого кадра ограничено, и кадр нужно успеть просчитать, пока не пришел следующий.
Как вы знаете, для успеха многопоточной версии программы необходимо наличие нескольких моментов. К примеру, если на каждый пиксель видео кадра накладывается сложный спецэффект, то мы получает сложные вычисления, на которые и рассчитана технология HT. То есть наше приложение соответствует критерию сложных вычислений. В зависимости от размера кадра, обработка каждого кадра может быть разделена на несколько частей, и каждая часть будет конкурентно просчитываться в своем потоке. Мы переходим к тому, что Intel называет “проблемой разбиения данных”, которая связана с выделением времени для каждого потока. В любом многопоточном дизайне, первые целевые области содержат в себе наиболее зависящие от процессора участки кода. В гипотетическом примере по редактированию видео, наиболее “тяжелой” задачей в области потребления ресурсов процессора является наложение спецэффектов, затем следуют операции ввода/вывода по чтению и записи кадра. Основной поток работает в роли потока-мастера и разделяет текущий кадр видео на четыре части в фазе подготовки, как показано на иллюстрации (a). Как только данные будут подготовлены, поток-мастер пробуждает три остальные потока и все четыре потока (включая мастер) работают над своей секцией видео кадра. Как только поток закончит обработку своей части данных, он будут ждать момента, когда все потоки закончат обработку своей части кадра. Затем мастер приостановит все рабочие потоки и запишет обработанный кадр на диск перед чтением следующего кадра из потока (b) и (c).
Описание иллюстрации находится выше.
Измеряя прирост производительности
Подобное применение HT в области создания спецэффектов опирается на балансировку нагрузки – главный алгоритм не будет работать в полную силу, чтобы неиспользованные области конвейера смогли обрабатывать другой поток. В приложениях по редактированию видео наложение спецэффектов, к примеру, может занимать 80% времени процессора, а операции ввода/вывода – оставшиеся 20% времени, в первую половину кадр будет считываться, во вторую – записываться. Как утверждает Intel, даже при идеальных условиях разложения задачи по потокам, выигрыш в производительности подобных приложений будет выше не более чем в пять раз. С использованием четырех потоков, максимальный прирост производительности составляет 2,5 раза, поскольку последовательная часть кода составляет 20% и параллельная часть – 80%. Это максимальный порог увеличения производительности при использовании четырех потоков. В реальности же, в связи с сопутствующими многопоточному приложению накладными расходами, прирост производительности будет меньше 2,5 раз.
Многопоточные компиляторы
Как утверждает Intel, новые HT компиляторы Intel и утилиты охватывают широкий спектр приложений. По информации Intel, версии 7.0 Intel C++ и Intel Fortran компиляторов под Windows и Linux могут улучшить производительность приложений для систем на базе процессоров Intel Itanium 2, Intel Xeon и Intel Pentium 4 до 40% по сравнению с компиляторами других поставщиков. Что касается HT, новые версии 7.0 компиляторов Intel содержат опцию авто-параллельности, которая автоматически проверяет приложение на возможность создания нескольких исполнительных потоков. Также в них улучшена поддержка OpenMP, открытого стандарта, позволяющего использовать высокоуровневые команды для упрощения создания и отладки многопоточных приложений.
Компиляторы пришлись по душе CERN
Один ученый в Европейской организации по ядерным исследованиям (CERN) в Женеве (Швейцария), положившей начало “всемирной паутине” WWW (см. CERN – наш общий дом), утверждает, что он импортировал 800.000 строчек кода C++ и 90.000 строчек кода C в компилятор Intel за полдня, в то время как раньше подобная задача отнимала неделю. “Благодаря хорошей GNU GCC совместимости компиляторов Intel, мы не столкнулись с большим количеством проблем” – сказал Фонс Рейдмейкерс, ученый CERN. “Наше приложение, несмотря на его огромную структуру, работает как на 32 Мб карманном компьютере Ipaq, так и на масштабных Itanium системах”. Его программа, называемая ROOT, является приложением по анализу данных (LDA).
Анонс программы ROOT.
Какие программы помогут вам осознать преимущество HT?
Как вы, наверное, поняли, вам не следует многого ожидать от HT, если вы не используете программы с большой вычислительной нагрузкой, типа приложений по редактированию видео или high-end игр, разработанных с учетом использования преимуществ HT. Причем сегодня подобные игры еще не поступили в продажу. Сегодняшние приложения, получающие преимущество от HT, имеют такую поддержку совершенно непреднамеренно. Связано это с тем, что программы типа Adobe PhotoShop и Windows Media Decoder реализовали многопоточную поддержку в отладочных целях. Однако с выпуском новых компиляторов от Intel, программисты вскоре должны принести преимущества HT для настольных приложений, равно как и для сетевых приложений, работающих на серверах Xeon. В общем, компьютер с набором многопоточных программ и Pentium 4 с поддержкой HT позволят осуществлять редактирование видео параллельно с прослушиванием сетевой радиостанции и периодическим просмотром результатов матча NBA в сети, на заметно выросших скоростях. Однако при создании электронных таблиц и просмотре Интернета преимущества от HT, вероятно, будут близки к нулю. Итак, по мере того, как программисты, стиснув зубы, работают над новыми компиляторами Intel, мы вправе ожидать появления приложений с улучшенным использованием технологии HT.