Технология HT явилась, по сути, одним из многих улучшений, которые инженеры Intel ввели для преодоления потенциальных проблем задержек, когда одноядерные процессоры тратили больше половины тактов вхолостую. В середине 90-х годов Intel обнаружила, что традиционные однопоточные программы используют только около 35% ресурсов процессора. Проблема была решена путём добавления нового уровня абстракции, когда процессор мог выполнять хотя бы ещё один поток в неиспользованное время. Но при этом каждый поток должен "верить", что он монопольно владеет процессором, включая регистры, кэш и доступ к шине процессора. Так что HT выполняет два потока (пока что) попеременно: несколько тактов для потока 1, ещё несколько - для потока 2. Но только тогда, если работа одного потока не повлияет на работу другого. Другими словами, HT может попеременно выполнять только те инструкции, которые не будут друг другу мешать.

Важным преимуществом параллелизма HT является то, что он не требует программной поддержки. Программы, находящиеся в каждом из потоков, могут "не знать" ни о каком параллелизме вообще. Каждый поток, "не зная", что он работает в разделённом окружении, "верит", что процессор весь принадлежит только ему. В результате программное обеспечение, изначально скомпилированное для стандартных одноядерных процессоров типа Pentium 4 и Xeon, не нужно перекомпилировать для работы в параллельном окружении. В итоге мы получим рост суммарной производительности без увеличения тактовой частоты.

Архитектура Itanium IA-64, напротив, подразумевает (если не вдаваться в подробности), что код программы сам будет определять, когда и где происходит деление на потоки. Такой подход, который продолжен в процессоре Itanium 2, назван Explicitly Parallel Instruction Set (EPIC). Термин "explicitly" здесь подразумевает, что программное обеспечение "знает", когда и где разделять потоки.

Мы побеседовали с доктором Кришной Палемом (Dr. Krishna Palem), начальником центра исследований встроенных систем (Director of the Center for Research in Embedded Systems, CREST) Технического университета Джорджии. Кришна является экспертом в области параллелизма и одним из трёх создателей прототипа компилятора Trimaran для EPIC и IA-64. Если не вдаваться в детали, доктор Палем объяснил, что для увеличения производительности через параллелизм существует две возможности. Первая касается функциональных и исполняющих блоков процессора, а вторая - прохождения данных в память и из неё. "В зависимости от того, где вы будете реализовывать эти возможности, вы получите различные типы вычислений. ... Как убедиться, что указанные функции эффективно реализованы? Нужно либо использовать их статически - в компиляторе, либо положиться на аппаратные блоки, которые будут реализовывать их "на лету". Цена последнего решения не увеличивается линейно с добавлением ядер на чип."

"Но если аппаратные решения типа HT экономически выгодны, - отметил доктор Палем, - на практике прирост производительности может ощутимо меняться. Не все оптимально скомпилированные потоки подходят для разделения. Очень легко установить на процессор сто вычислительных блоков, но очень трудно найти поток с таким же количеством инструкций ADD, которые бы выполнялись "на лету".
 

Copyright @ by Lehach, 2009