|
Перевод: Дмитрий Чеканов
Intel очень сильно рассчитывает на успех своей технологии HyperThreading (HT). Фактически, основным фокусом недавно выпущенной линейки компиляторов от Intel является HT, компания говорит: "мы прокладываем путь для технологии Intel HyperThreading". К тому же, новые компиляторы успокоят недовольство обозревателей по поводу отсутствия готовых компиляторов на момент выпуска первых HT процессоров. Как утверждает Intel, при работе приложений на HT процессорах Pentium 4 достигается 25% улучшение производительности, однако этот прирост по большей части связан с использованием нужного компилятора. В отношении программ технология Intel HT, позволяющая одному физическому процессору создавать второй логический процессор для параллельной работы с первым, даст ощутимый прирост производительности к 3,06 ГГц и более быстрым процессорам Pentium 4, независимо от тактовой частоты и в широком спектре приложений. Если в словах Intel содержится истина, преимущество от HT получат предположительно все программы с "тяжелыми" вычислениями. Сюда включены массивные транзакционные вычисления, финансовые, инженерные и научные расчеты, игры и приложения по созданию спецэффектов, или, говоря кратко, все приложения, полностью загружающие процессор и имеющие более одного потока. Максимальный 25% прирост производительности наблюдается с помощью стандартных тестов, например, по числу кадров в секунду в графических приложениях.
Однако HT не даст ощутимого прироста приложениям, незначительно нагружающим процессор. Это электронные таблицы, текстовые редакторы или почтовые программы - а ведь именно с такими приложениями работает средний пользователь. В общем, толку от HT мало, если процессор не загружается под самое горло и приложение не использует несколько потоков.
Intel описывает главный признак ориентированных на HT приложений с точки зрения многозадачности следующим образом: поток планировщика работает на процессоре все время для максимизации использования ресурсов процессора. Каждому процессу выдается временной промежуток, во время которого он выполняется. Создание процесса включает генерацию адресного пространства и образа приложения в памяти, где содержится секция кода, секция данных и стек. Параллельное программирование включает создание двух или более процессов и механизма связи между процессами для координации параллельной работы. Потоки - это задания, работающие независимо друг от друга в контексте процесса. Поток разделяет код и данные с родительским процессом, но имеет свой уникальный стек и архитектурное состояние, которое включает указатель инструкций. Потоки требуют меньше системных ресурсов, чем процессы. К примеру, связь внутри процесса осуществляется намного "дешевле", чем связь между процессами.
Как утверждает Intel, разбиение приложения на потоки может привести к увеличению производительности на однопроцессорной машине или на многопроцессорной системе. Потоки повышают время реакции графического интерфейса. Они также помогают улучшить взаимосвязь между операциями ввода/вывода и вычислениями. Если в системе присутствует несколько процессоров, то многопоточные приложения получают ощутимый прирост производительности.
Разбиение существующего приложения на потоки увеличивает его сложность, как говорит Intel. Совместное использование ресурсов, типа общих данных, может привести к появлению ошибок в параллельном программировании типа конфликтов хранения и т.д. Отладка таких ошибок сложна, поскольку возникают они в случайные моменты времени. Для отладки следует использовать специальные механизмы.
Технология 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).
![]() |
Продолжение читайте в следующей части
Источник: http://tech.stolica.ru/