Софт

что такое Hyper Threading

Рейтинг: 4.6/5.0 (27 проголосовавших)

Категория: Windows

Описание

Что такое Hyper-threading и нужен ли он? » Познавательный блог

Архивы Что такое Hyper-threading и нужен ли он?

Hyper-threading (англ. Hyper-threading — Гиперпоточность, официальное название Hyper-Threading Technology (HTT)) — это торговая марка компании Intel для реализации технологии «одновременной мультипоточности» (англ. Simultaneous multithreading) на микроархитектуре Pentium 4. Расширенная форма суперпоточности (англ. Super-threading), впервые появившаяся в процессорах Intel Xeon и позднее добавленная в процессоры Pentium 4. Эта технология увеличивает производительность процессора при определённых рабочих нагрузках путём предоставления «полезной работы» (англ. useful work) исполнительным устройствам (англ. execution units), которые иначе будут бездействовать; к примеру, в случаях кэш-промаха. Процессоры Pentium 4 с включённым Hyper-threading операционная система определяет как два разных процессора вместо одного. В процессорах Core 2 Duo поддержка технологии Hyper-threading не была реализована.

Hyper Treading нужен только в серверных приложения или при работе с базами данных (с большим количеством полей). В о всех остальных случаях это тормоз. В некоторых (в т.ч. и играх) до 15-20%. Если у вас процессор работает с таким запасом (что сильно сомнительно), то можно не отключать. Многозадачность (в т.ч. переключение между прогами - альт+таб) будет лучше реализовываться. В играх многозадачность, а тем более параллелизм не применяется (пока).
Резюме: отключить.

Даже в этом случае надо отключать мультипоток. Потому, что: РЕАЛЬНАЯ мультипроцессорность и разрешение нескольких конкурентных потоков на одном камне - не одно и то же. Фактически гипертрединг забивает кеш и регистры несколькими инструкциями сразу. В случае когда за этими инструкциями следует выполнение маленьких вычислений (как в сервере с малой нагрузкой или в небольшой базе данных), то высокие частоты камня реализуют эту ЭМУЛЯЦИЮ многопроцессорности без потерь. Даже дают 10-15% прирост производительности, за счет минимизации простоев в ожидании новых инструкций. Если же несколько инструкций требуют тяжелых вычислений, как то: игры, рендеринг 3D, фильтры фотошоп и т.п. то процессор просто "затыкается" и ни одна из конкурирующих за ресурсы ядра инструкций не выполняется в полном объёме, что приводит к резкому снижению производительности.

что такое hyper threading:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Что такое Hyper-Threading

    Что такое Hyper-Threading

    Многие, наверняка, слышали о такой технологии, как Hyper-Threading, но далеко не все точно понимают, как именно она работает. Эта технология, которая переводится, как «многопоточность» принадлежит компании Intel и используется только в их процессорах. И так, что такое Hyper-Threading?

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

    Можно ли из этого сделать вывод, что два виртуальных ядра равны по мощности двум физическим? На самом деле нет. Это одно из самых распространенных заблуждений, скорее всего основанное на том, что в диспетчере задач виртуальные ядра отображаются наравне с физическими. Читайте о способах открытия диспетчера задач в Windows 10 .

    Чтобы понять, как в действительности работает эта технология, давайте разберем весь процесс на конкретном примере. Hyper-Threading можно сравнить с приемом пищи. Есть задача – доставить пищу в рот и для этого хватает и одной руки, однако, можно задействовать и другую руку. В итоге доставка происходит в два раза быстрее. Нечто подобное происходит и в процессоре – задача поступает и решается с гораздо меньшей задержкой. Однако, если «рот» уже полностью забит, то не важно, сколько рук вы используете – вы просто не успеете пережевать еще предыдущую порцию. То есть, если ядро и так уже сильно загружено по одному потоку, то второе ядро просто будет ждать в очереди.

    Важно заметить, что разные программы взаимодействуют с процессором по-разному. В некоторых случаях 2 ядра с Hyper-Threading дают производительность, сравнимую с четырьмя простыми ядрами, а в каких-то очень сильно проигрывают. Особенно это касается видео рендеринга, 3D рендеринга и обработки аудио.

    Кстати, Hyper-Threading есть не во всех процессорах Intel и далеко не все магазины указывают в характеристиках процессора его наличие или отсутствие, поэтому рекомендуется сверяться с официальным списком на сайте компании Intel.

    В заключении можно заметить, что с Hyper-Threading лучше, чем без него, но это не даст такой же производительности, как большее число реальных физических ядер. Имейте в виду, что большинству современных игр, за глаза хватает всего двух ядер.

    Что такое hyper threading

    Справочник » Технологии Hyper-Threading

    Технология Hyper-Threading существовала и ранее вне x86 мира в виде технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT).

    Идея этой технологии проста.
    Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами.
    В обоих случаях операционная система направляет потоки как на двухпроцессорную систему.
    Далее все вопросы решаются на аппаратном уровне.

    Работа множества потоков достигается за счет дублирования архитектурных состояний (логических процессоров) при совместном использовании единого набора ресурсов процессора.

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

    Проблема неполного использования исполнительных устройств связана с несколькими причинами.
    В результате недостаточной пропускной способности системной шины и шины памяти процессор не может получать данные с желаемой скоростью и исполнительные устройства будут использоваться не так эффективно.
    Кроме того, существует ещё одна причина — недостаток параллелизма на уровне инструкций в большинстве потоков выполняемых команд.

    Большинство производителей улучшают скорость работы процессоров путем увеличения тактовой частоты и размеров кэша.
    Конечно, таким способом можно увеличить производительность, но все же потенциал процессора не будет полностью задействован.
    Если бы мы могли одновременно выполнять несколько потоков, то мы смогли бы использовать процессор куда более эффективно.
    Именно в этом и заключается суть технологии Hyper-Threading.

    Программные приложения, способные работать с несколькими процессорами, могут без модификаций выполняться на удвоенном числе логических процессоров, имеющихся в системе.
    Каждый логический процессор может отвечать на прерывания независимо от других.
    Первый логический процессор может отслеживать потоки одной программы, в то время как второй будет заниматься потоками другой программы.

    Поскольку оба процессора совместно используют единый набор ресурсов исполнения, второй поток может задействовать ресурсы, которые при обработке всего одного потока простаивали бы.
    Здесь же мы получаем увеличение загрузки ресурсов исполнения в пределах каждого физического процессора.

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

    Большинство ресурсов исполнения сосредоточено в блоке быстрого исполнения (Rapid Execution Engine) и встроенной кэш-памяти, которые одновременно обрабатывают инструкции от двух потоков.
    Механизм выборки и доставки (Fetch and Deliver engine) и блок переупорядочения и изъятия (Reorder and Retire) выделяют ресурсы, которые поочередно предоставляются в распоряжение обоих потоков.

    Механизм выборки и доставки

    Этот механизм организует поочередную выборку инструкций то из одного логического процессора, то из другого и пересылает эти инструкции в блок быстрого исполнения (Rapid Execution Engine) для обработки.
    На первом уровне кэш-памяти (Execution Trace Cache) поочередно делается выборка по одной строке на каждый логический процессор.
    Это происходит в том случае, если оба логических процессора нуждаются в этой кэш-памяти.
    Если один из логических процессоров не запрашивает использование кэш-памяти, то другой может воспользоваться полной полосой пропускания этого типа кэш-памяти.

    Rapid Execution Engine

    Оба логических процессора используют модуль быстрого исполнения одновременно.
    Этот блок принимает инструкции из очередей и с максимальной скоростью пересылает их в операционные модули.
    Выбор инструкций зависит только от степени их соподчиненности и готовности функциональных модулей.
    Выборка инструкций может выполняться в произвольном порядке, т.е. более поздние, но независимые инструкции могут пройти впереди более ранних.

    Ядру исполнения по большей части «очевидно», какие из инструкций какому логическому процессору принадлежат, а планировщики не различают инструкций от различных логических процессоров — они просто переназначают независимые очереди инструкций на доступные для выполнения ресурсы.
    Например, планировщик может за один цикл диспетчеризовать две инструкции из потока №1 и одну инструкцию из потока №2.

    Встроенная кэш-память

    Поскольку подсистема встроенной кэш-памяти тактируется частотой ядра процессора, то по мере выпуска более быстрых процессоров соответственно будет возрастать и скорость этого типа памяти, обеспечивающего высокоскоростной доступ к важнейшим данным.
    Большие размеры линий кэширования также снижают среднее число промахов.
    Встроенные подсистемы кэширования, совместно используемые всеми логическими процессорами, помогают минимизировать потенциальные конфликты благодаря использованию высокого уровня ассоциативности наборов инструкций.

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

    Блок переупорядочения и изъятия

    Этот блок принимает все инструкции, которые выполнялись в произвольном порядке, и сортирует их в соответствии с порядком, определенным программой, а затем фиксирует их в этом состоянии.
    Изъятие инструкций происходит попеременно между логическими процессорами.

    Системная шина

    Высокоскоростная системная шина с тактовой частотой 400 МГц предназначена для увеличения пропускной способности многопроцессорных и многопотоковых серверных приложений.
    Она обеспечивает необходимую полосу пропускания для технологии Hyper-Threading при доступе к системной памяти.
    Эта шина использует схемы сигнализации и буферизации, обеспечивающие высокоскоростную передачу данных и позволяющие расширить полосу пропускания до 3,2 Гбайт/с.
    Когда один из логических процессоров не может найти требуемые данные во встроенной кэш-памяти, то эти данные должны быть переданы из памяти именно по системной шине.

    Поддержка Hyper-Threading в Pentium 4

    Для повышения производительности и пропускной способности современных приложений в семействе процессоров Intel Xeon технология Hyper-Threading используется совместно с микроархитектурой NetBurst.

    В первые технология Hyper-Threading реализована в модели c рабочей частотой 3.06 ГГц.
    Этот процессор создан по технологии 0.13 мкм, имеет ядро Northwood, кэш-память второго уровня (L2) 512 Кбайт, рабочую частоту 3.06 ГГц, рассчитан на работу в системах с процессорной шиной 533 МГц (тактовая частота FSB 133 МГц, что обеспечивает частоту передачи данных 533 МГц) и ориентирован на рынок настольных компьютеров.
    Производительность систем с Hyper-Threading может повышается на 30 %.

    Поддержка Hyper-Threading ОС

    Поддержка технологии Hyper-Threading осуществляется многозадачными операционными системами. Например, Linux (с версии ядра 2.4) и Windows XP.
    А вот Windows 95/98/ME для этих целей уже не подходят.
    Windows NT, обладающая поддержкой SMP (Symmetric Multi-Processor), увидеть второй логический процессор в новом Pentium 4 также не сможет: это связано с отсутствием в этой ОС поддержки ACPI.

    В силу своих корней, этой поддержкой обладают все ОС, основанные на идеологии Unix — всевозможные Free- Net- BSD, коммерческие Unix (такие как Solaris, HP-UX, AIX), и многочисленные разновидности Linux.

    Корпорация Microsoft разродилась официальным документом, из которого мы можем уяснить множество полезной информации, как, в частности:

    • В настоящее время технологию Hyper-Threading могут нормально использовать (не путать с полной поддержкой!) все версии Windows 2000, а также все 32-битные версии Windows XP и Windows .NET Server.
    В других операционных системах данная технология не поддерживается.

    • Для получения максимальной производительности необходимо выставлять в листинге BIOS в порядке загрузки первые логические процессоры физических CPU, и только затем — вторые логические процессоры.
    Пример: у вас — двухпроцессорная система с поддержкой Hyper-Threading.
    Соответственно, у вас — четыре логических процессора (к примеру, logCPU1a, logCPU1b, logCPU2a, logCPU2b).
    В создаваемой BIOS таблице — Multiple APIC Description Table описывается конфигурация, и вот здесь-то вам необходимо вначале указать ПЕРВЫЕ логические процессоры физических CPU, то есть в таком порядке: logCPU1a, logCPU2a, logCPU1b, logCPU2b.
    Это — перестраховка, и при прочих равных условиях гарантирует вам лучшую производительность.

    • Что касается Windows 2000 (все версии), то в данной операционной системе механизм распознавания процессоров не поддерживает точную идентификацию CPU с поддержкой Hyper-Threading.
    Это касается в том числе и систем с установленными текущими наборами Service Pack.
    Более того, в данной системе и в дальнейшем НЕ планируется вводить идентификацию CPU с поддержкой Hyper-Threading (т.е. в новых Service Pack'ах).
    Однако работоспособность системы Windows 2000 с Hyper-Threading реализована в полной мере.
    Например, если у вас — Windows 2000 Professional и один физический процессор с поддержкой Hyper-Threading, то система будет работать с двумя реализованными в нём логическими процессорами (так как лицензия Windows 2000 Professional распространяется на два процессора).
    При установке двух CPU Hyper-Threading под 2000 Professional вам придётся указывать только первые логические процессоры, как и было описано выше.
    Соответственно, Windows 2000 распознаёт логические процессоры в CPU с поддержкой Hyper-Threading как отдельные физические, и вам необходимо следить за их количеством:
    — Windows 2000 Professional: 2
    — Windows 2000 Standard Server: 4
    — Windows 2000 Advanced Server: 8
    — Windows 2000 Datacenter Server: 32

    • Что касается Windows XP и Windows .NET Server (все 32-битные версии), то здесь — ситуация более благоприятная.
    Операционная система использует обновлённые технологии распознавания процессоров Intel и вы получаете прямые выгоды от работы с Hyper-Threading.
    Проблем с лицензией не будет — она привязана только к числу физических процессоров, при полной поддержке всех логических CPU.

    Материалы по теме:

    Что такое Hyper Threading - Soft news for everybody

    Что такое Hyper Threading "два-в-одном" от Intel, или Скрытые возможности Xeon

    В нашем предыдущем материале по Intel Xeon 2,2 GHz мы писали, что использование однопроцессорных Xeon-систем лишено всякого смысла, поскольку при более высокой цене их производительность будет такой же, как и у Pentium 4 той же частоты. Теперь же, после более тщательного изучения, в это утверждение наверняка придется внести небольшую поправку. Технология Hyper-Threading, реализованная в Intel Xeon с ядром Prestonia, действительно работает и дает вполне ощутимый эффект. Хотя и вопросов при ее использовании тоже возникает немало…

    Даешь производительность


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


    Постоянный рост быстродействия, безусловно, нужен. По крайней мере, это прибыльный бизнес, и всегда найдется красивый способ подвигнуть пользователей на очередной апгрейд вчерашнего "суперпроизводительного CPU" на завтрашний "еще более супер…". Например, синхронное распознавание речи и синхронный же перевод на другой язык — это ли не мечта всех и каждого? Или необычайно реалистичные игры почти "киношного" качества (целиком поглощающие внимание и порой приводящие к серьезным изменениям в психике) — это ли не стремление множества геймеров от мала до велика?


    Но давайте в данном случае вынесем за скобки маркетинговые аспекты, сосредоточившись на технических. Тем более что не все так уж мрачно: есть насущные задачи (серверные приложения, научные расчеты, моделирование и пр.), где все более высокая производительность, в частности центральных процессоров, действительно необходима.


    Итак, какими же способами добиться увеличения их быстродействия?

    В современных условиях Hyper-Threading часто положительно сказывается на росте производительности процессора при кодировании видео, архивации и многих других операциях, оптимизированных под многопоточность.

    Будет интересно проверить, насколько эффективна эта технология в современных играх на примере процессора Intel Core i7 i920.

    На текущий момент большинство покупателей интересует не дорогая старшая линейка процессоров Intel Core i7 LGA 1366, а более доступные Core i5 и i7 в исполнении LGA 1156. Сегодняшнее тестирование покажет, есть ли польза от поддержки технологии Hyper-Threading двух- и четырехъядерными процессорами Intel.

    Модуль адресации это обнаруживает и посылает туда данные для последующего вычисления. Если данные специфичные, то данные блоки будут выполнять их медленней, однако простаивать данные не будут. Либо они предварительно их обработают, для дальнейшей быстрой обработки соответствующим блоком. Это и даёт дополнительный выигрыш в производительности.

    Двухпроцессорная система с поддержкой Hyper-ThreadingРис. 1.

    Аналогичная информация доступна через счетчик производительности «Processor: % Processor Time» либо для всех процессоров вместе или отдельно для каждого логического процессора. Получить эту информацию удобнее всего через PerfMon.exe (оснастка Performance).

    Иногда измерение только загруженности процессора не позволяет определить все операции, интенсивно использующие процессор, так как можно пропустить короткие всплески активности процессора, но такие всплески поможет выявить средство профилирования. В частности, для идентификации функций, сильно нагружающих процессор, удобно средство профилирования в CLR, а также другие средства профилирования, например VTune или поставляемые с Visual Studio 2005 Team System.

    Важно отметить, что измерение загруженности процессора через Task Manager или Perfmon может вводить в заблуждение. Операция, нагружающая процессор лишь из одного потока, будет давать загрузку процессора только на 50%. Но, поскольку логические процессоры тесно взаимосвязаны, крайне маловероятно, что полная нагрузка обоих процессоров приведет к удвоению производительности.

    В остальной части статьи я исхожу из того, что два потока (T1 и T2) выполняются на двух логических процессорах (LC1 и LC2) на одном физическом процессоре.

    Одна голова хорошо, а две быстрее

    Допустим, ваше клиентское приложение выполняет некую операцию, требовательную к ресурсам процессора, например сложные вычисления с набором данных. Вы заметили, что результат доступен через три секунды после того, как пользователь инициирует операцию. Очевидно, вам хотелось бы уменьшить время ожидания настолько, насколько это возможно.

    Следить за загруженностью процессора во время работы приложения, конечно, неплохо, но лучше использовать средства профилирования (скажем, в CLR), которые помогут определить участки приложения, интенсивно расходующие процессорное время и нуждающиеся в оптимизации.

    Если пользователь работает на компьютере с поддержкой Hyper-Threading, одно из решений заключается в том, чтобы распределять рабочую нагрузку между двумя потоками, выполняемыми одновременно. Это позволит задействовать оба логических процессора. Но вам придется ждать завершения работы обоих потоков. Заметьте: этот подход подразумевает, что обработка каждой части операции занимает одинаковое время; если это предположение неверно, возможности Hyper-Threading не будут полностью задействованы.

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

    Понимание технологии Hyper Threading важно, поскольку она является одной из ключевых функций в процессорах Intel.

    Несмотря на все успехи, которые были достигнуты процессорами, у них есть один существенный недостаток – они могут исполнять лишь одну инструкцию одновременно. Допустим, что вы запустили одновременно такие приложения, как текстовый редактор, браузер и Skype. С точки зрения пользователя, это программное окружение можно назвать многозадачным, однако, с точки зрения процессора это далеко не так. Ядро процессора будет выполнять по-прежнему одну инструкцию за определенный промежуток времени. При этом в задачу процессора входит распределение ресурсов процессорного времени между отдельными приложениями. Поскольку это последовательное выполнение инструкций происходит чрезвычайно быстро, вы этого не замечаете. И вам кажется, что никакой задержки не существует.

    Но задержка все-таки есть. Задержка появляется из-за способа снабжения процессора данными каждой из программ. Каждый поток данных должен поступать в определенное время и обрабатываться процессором индивидуально. Технология Hyper Threading делает возможным каждому ядру процессора планировать обработку данных и распределять ресурсы одновременно для двух потоков.

    Intel утверждает, что прибавка к скорости составляет 30 % по сравнению с идентичным процессорами Pentium 4 без технологии «Simultaneous multithreading». Однако прибавка к производительности изменяется от приложения к приложению: некоторые программы вообще несколько замедляются при включённой технологии Hyper-threading. Это, в первую очередь, связано с «системой повторения» (англ. replay ) процессоров Pentium 4, занимающей необходимые вычислительные ресурсы, отчего и начинают «голодать» другие потоки [2] [3] .

    - совместимость материнской платы с процессором соответствующего типа;

    - поддержка технологии операционной системой и конкретным приложением, работающим в ней.

    Если по первым двум пунктам особых проблем не должно появиться, то в аспекте совместимости программ с Hyper-Threading все же могут возникать некоторые накладки. Но можно отметить, что если приложение поддерживает, к примеру, работу с двухъядерными процессорами, то оно будет совместимо, практически гарантированно, с технологией от Intel.

    По крайней мере есть исследования, подтверждающие рост производительности программ, адаптированных к двухъядерным микросхемам, примерно на 15-18%, если в процессоре работают модули Intel Hyper Threading. Как отключить их — мы уже знаем (на случай, если у пользователя возникнут сомнения в целесообразности задействования технологии). Но ощутимых поводов для их появления, вероятно, очень немного.

    Опыт №2. 16 потоков на 4 процессора, Hyper-Threading выключен

    Hyper-Threading выключен. Максимальная скорость 797598 мегабайт в секунду. Точка перегиба имеет место при размере блока около 32 килобайт. Как и ожидалось, по сравнению с чтением одним потоком, скорость выросла приблизительно в 4 раза, по количеству работающих ядер.

    Тесты, проведенные даже в относительно небольшом количестве игр, показывают, что влияние Hyper-Threading на производительность может быть разным. Какие-то игры (например, Metro 2033) просто не любят эту технологию в принципе, какие-то ее не замечают (Battlefield 3, 3DMark). Но есть еще и многочисленная третья группа. Эти игры умеют использовать Hyper-Threading, но не используют больше четырех потоков данных. Как результат, двуядерные Core i3, в такой ситуации, выглядят просто превосходно на фоне Pentium. А вот Core i7 всегда проигрывает Core i5.

    В принципе, по большому счету это не проблема Core i7, а особенность современных игр. Они используют четыре потока по той причине, что процессоров с большим количеством ядер практически нет. Но если такие игры появятся (а должны, учитывая, что и PlayStation 4 и Xbox 720 имеют 8-ядерные процессоры), то Core i7 наверняка сможет раскрыть весь потенциал технологии Hyper-Threading, как это делает сейчас Core i3. Но это дело будущего.

    При существующих ограничениях и при имеющейся технологии упаковки, Hyper-Threading кажется более разумным выбором для потребительского рынка, чем, например, подход AMD в SledgeHammer – в этих процессорах используется целых два ядра. И до тех пор, пока не станут совершенными технологии упаковки, такие как Bumpless Build-Up Layer, стоимость разработки многоядерных процессоров может оказаться слишком высокой.

    Интересно заметить, насколько разными стали AMD и Intel за последние несколько лет. Ведь когда-то AMD практически копировала процессоры Intel. Теперь же компании выработали принципиально иные подходы к будущим процессорам для серверов и рабочих станций. AMD на самом деле проделала очень длинный путь. И если в процессорах Sledge Hammer действительно будут использоваться два ядра, то по производительности такое решение будет эффективнее, чем Hyper-Threading. Ведь в этом случае кроме удвоения количества всех исполнительных устройств снимаются проблемы, которые мы описали выше.

    Hyper-Threading ещё некоторое время не появится на рынке обычных ПК, но при хорошей поддержке разработчиков, она может стать очередной технологией, которая опустится с серверного уровня до простых компьютеров.

    Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

    Hyper-Threading от Intel #Intel

    15 декабря 2010, 22:02

    Терминология в мире технологий может быть запутанной и легко забывается, поэтому давайте начнем с разъяснения значения терминов, которые я буду использовать здесь. Многоядерным процессором называется процессор, содержащий более одного ядра в одной интегральной схеме. Многочиповый означает несколько микросхем, объединенных вместе. Многопроцессорный означает несколько отдельных процессоров, совместно работающих в одной системе. И конечно, ЦП означает центральный процессор, имеющий одно или более ядер, каждое из которых имеет устройство выполнения (с которого и выполняется вся математика).

    Hyper-Threading

    Так что же такое технология hyper-threading? Термин Hyper-threading используется компанией Intel для определения их технологии, которая позволяет операционной системе воспринимать одно ядро ЦП, как два ядра. Таким образом, операционная система работает с таким ядром так же, как с любым многоядерным чипом, направляя на него одновременно несколько процессов. Хотя при помощи этой технологии можно заставить систему воспринимать одно ядро, как три или более ядер, сложность архитектуры ограничила компанию Intel до выпуска hyper-threaded ядер, которые могут восприниматься только как два ядра.

    Здесь нет никакого фокуса. Компания Intel разработала архитектуру чипа для обработки процессов так же, как это делают многоядерные процессоры. По сути, компания Intel дублировала интенсивно используемые области ядра ЦП и обеспечила использование этих секций несколькими процессами одновременно. Поскольку эти области ядра являются раздельными (они находятся на одном кристалле, но используют различные области этого кристалла), эти процессы не мешают друг другу. Такие hyper-threading-совместимые ядра представляют собой не совсем то же самое, что многоядерные процессоры; не любой процесс может одновременно выполняться с другим процессом, он должен использовать отдельную часть ядра для своих операций.

    Hyper-threading представляет собой пример одновременной многопоточности (Simultaneous Multi-Threading – SMT). SMT является одним из двух типов многопоточности. Другой тип называется временной многопоточностью (Temporal Multi-Threading — TMT). При TMT ядро процессора выполняет инструкции сначала от одного потока, затем от другого, и затем снова от первого, и поэтому пользователю кажется, что выполняется сразу два потока, когда на самом деле потоки просто делят время ЦП между собой. При SMT инструкции от каждого потока могут выполняться одновременно. Эти технологии могут использоваться для повышения производительности.

    Пользователям также следует знать, что не все ОС поддерживают технологию hyper-threading. По заявлению компании Intel следующие ОС от Microsoft полностью оптимизированы под поддержку технологии hyper-threading:

    Microsoft Windows XP Professional Edition

    Microsoft Windows XP Home Edition

    Microsoft Windows Vista Home Basic

    Microsoft Windows Vista Home Premium

    Microsoft Windows Vista Home Ultimate

    Microsoft Windows Vista Home Business

    И как говорят в компании Intel, следующие ОС не полностью оптимизированы под технологию hyper-threading, и поэтому данная технология должна быть отключена в настройках BIOS:

    Microsoft Windows 2000 (все версии)

    Microsoft Windows NT 4.0

    Microsoft Windows ME

    Microsoft Windows 98

    Microsoft Windows 98 SE

    Иногда у таких приложений, как FireFox, возникают проблемы с hyper-threading. Лучшим способом решения этой проблемы является запуск приложения в режиме совместимости с Windows 98. Для этого нужно нажать правой клавишей мыши на значке приложения, перейти в свойства, выбрать совместимость и отметить флажком опцию "Запустить приложение в режиме совместимости (Run this program in compatibility mode)", выбрав Windows 98. Это отключит технологию hyper-threading для данного приложения, поскольку Windows 98 не поддерживает hyper-threading.

    Преимущества Hyper-Threading

    Есть множество преимуществ hyper-threading. Компания Intel утверждает, что дублирование определенных областей ядра ЦП увеличивает размер ядра примерно на 5 процентов, но при этом обеспечивает прирост производительности на 30 процентов по сравнению с другими идентичными ядрами процессоров без hyper-threading.

    Недостатки Hyper-Threading

    Хотя hyper-threaded ядра ЦП не обеспечивают полного объема преимуществ многоядерных процессоров, они все же имеют значительные преимущества по сравнению с обычными одноядерными процессорами. Конечно, всегда полезно знать о том, какие недостатки имеются у технологии, прежде чем ее использовать. Одним недостатком многих применений является высокий уровень энергопотребления. Поскольку все области ядра нуждаются в питании (даже в режиме ожидания), общий уровень энергопотребления hyper-threading ядер, а также всех ядер с поддержкой SMT, выше. Без максимального использования улучшений скорости, предлагаемых hyper-threaded ядром, оно просто будет ядром, потребляющим больше электроэнергии. Для многих ситуаций, включая фермы серверов, и мобильные компьютеры, такое повышенное энергопотребление нежелательно.

    Более того, если сравнить hyper-threaded ядро ЦП с non-hyper-threaded ядром, вы заметите значительное повышение переполнения кэша. ARM утверждает, что это повышение может составлять до 42%. Сравните это значение с многоядерными процессорами, где переполнение кэша снижено на 37%, и это действительно станет важным.

    Теперь, после прочтения информации обо всех этих недостатках вы, возможно, решите, что эти hyper-threaded ядра бесполезны. И вы правы, в некоторых ситуациях. Например, если энергопотребление является основным аспектом в вашей ситуации, то hyper-threaded ядра (или любые другие ядра с поддержкой SMT) будут нежелательными. Однако даже если потребление мощности стоит высоко в списке ваших требований, hyper-threaded ядра могут быть подходящим вариантом. Возьмём для примера серверную ферму. Обычно во внимание принимается энергопотребление фермами серверов (эти счета могут составлять многие тысячи долларов в месяц!). Однако в сегодняшних фермах серверов многие серверы являются виртуальными. Поэтому вполне может быть, что у вас есть несколько виртуальных серверов на одном физическом сервере, при этом требования производительности этих серверов не выше среднего. Вполне возможно, что такой тип конфигурации обеспечит достаточный уровень использования ЦП, чтобы использовать максимальный объем производительности hyper-threaded ядер, при этом энергопотребление будет сведено до минимума.

    Как всегда, важно четко учитывать все рабочие обстоятельства, прежде чем решить использовать технологию. Технологий без недостатков практически не бывает. Как правило, польза или бесполезность определенной технологии применительно к вашей ситуации выявляется только после тщательного пересмотра всех ее достоинств и недостатков. Hyper-threading – это всего лишь технология. Для дополнительной информации по этой теме рекомендую прочесть две мои предыдущие статьи. Во-первых, статью о согласовании кэша. в которой объясняется, как многоядерные процессоры получают доступ к кэш-памяти. Во-вторых, мою статью о сродстве процессоров. в которой говорится о взаимодействии между приложениями и множественными ядрами. Если у вас возникли вопросы о моей статье, присылайте их мне на почту, и я постараюсь ответить как можно быстрее.

    Автор:
    Рассел Хичкок (Russel Hitchcock)

    работает консультантом, в его обязанности входит сетевое аппаратное обеспечение (networked hardware), контрольные системы и антенны. Рассел также пишет технические статьи на различные темы.

    Did you like this? Share it:

    Что такое hyperthreading? Как узнать, поддерживает ли комп эту функцию?

    Что такое hyperthreading? Как узнать, поддерживает ли комп эту функцию?

    Сизов Максим Мудрец (18514) 7 лет назад

    Эмуляция вторго ядра, в теории помогает повысить производительность равномерно распределяя нагрузку по всем блокам процессора. На практике очень мало способствует повышению производительности.

    Striker Мастер (2207) 7 лет назад

    Hyper-threading (англ. Hyper-threading — Гиперпоточность, официальное название Hyper-Threading Technology (HTT)) — это торговая марка компании Intel для реализации технологии «одновременной мультипоточности» (англ. Simultaneous multithreading) на микроархитектуре Pentium 4. Расширенная форма суперпоточности (англ. Super-threading), впервые появившаяся в процессорах Intel Xeon и позднее добавленная в процессоры Pentium 4. Эта технология увеличивает производительность процессора при определённых рабочих нагрузках путём предоставления «полезной работы» (англ. useful work) исполнительным устройствам (англ. execution units), которые иначе будут бездействовать; к примеру, в случаях кэш-промаха. Процессоры Pentium 4 с включённым Hyper-threading операционная система определяет как два разных процессора вместо одного.
    Преимущества Hyper-threading представлены как: улучшенная поддержка многопоточного кода, позволяя запускать потоки одновременно; улучшена реакция и время отклика; увеличено количество пользователей, которое может поддерживать сервер.
    По словам Intel, первая реализация потребовала всего 5-процентного увеличения площади кристалла, но позволяла увеличить производительность на 15 - 30%.
    Intel утверждает, что прибавка к скорости составляет 30% по сравнению с идентичным процессорами Pentium 4 без технологии «Simultaneous multithreading». Однако прибавка к производительности изменяется от приложения к приложению: некоторые программы вообще несколько замедляются при включённой технологии Hyper-threading. Это, в первую очередь, связано с «системой повторения» процессоров Pentium 4, занимающей необходимые вычислительные ресурсы, отчего и начинают «голодать» другие потоки.
    (с) Википедия.
    Узнать, поддерживается ли - зайти в BIOS и глянуть.

    Алексей Яшкуль Оракул (55852) 7 лет назад

    Эта технология поддержки 2-х виртуальных процессоров на одном ядре. Посмотреть можно либо через Everest либо в биосе материнской платы.

    Еще раз о Hyper Threading

    Редакция сайта iXBT.com обращается к вам с просьбой отключить блокировку рекламы на нашем сайте.

    Дело в том, что деньги, которые мы получаем от показа рекламных баннеров, позволяют нам писать статьи и новости, проводить тестирования, разрабатывать методики, закупать специализированное оборудование и поддерживать в рабочем состоянии серверы, чтобы форум и другие проекты работали быстро и без сбоев.

    Мы никогда не размещали навязчивую рекламу и не просили вас кликать по баннерам. Вашей посильной помощью сайту может быть отсутствие блокировки рекламы.

    Спасибо вам за поддержку!

    Еще раз о Hyper Threading

    "…И мы горды — и враг наш горд
    Рука, забудь о лени. Посмотрим,
    кто у чьих ботфорт в конце
    концов склонит свои колени…"
    © х/ф "Д'артаньян и три мушкетера"

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

    Для начала сформулируем, что же именно мы знаем про технологию Hyper Threading:

    1. Данная технология предназначена для увеличения эффективности работы процессора. Дело в том, что, по оценкам Intel, большую часть времени работает всего 30% (кстати, достаточно спорная цифра — подробности ее вычисления неизвестны ) всех исполнительных устройств в процессоре. Согласитесь, это достаточно обидно. И то, что возникла идея каким-то образом "догрузить" остальные 70% — выглядит вполне логично (тем более что сам по себе процессор Pentium 4, в котором и внедрят эту технологию, отнюдь не страдает от избыточной производительности на мегагерц ). Так что эту идею автор вынужден признать вполне здравой.

    2. Суть технологии Hyper Threading состоит в том, что во время исполнения одной "нити" программы простаивающие исполнительные устройства могут заняться исполнением другой "нити" программы (или "нити" другой программы ). Или, например, исполняя одну последовательность команд, ожидать данных из памяти для исполнения другой последовательности.

    3. Естественно, выполняя различные "нити", процессор должен каким-либо образом отличать, какие команды к какой "нити" относятся. Значит, есть какой-то механизм (некая метка ), благодаря которой процессор отличает, к какой "нити" относятся команды.

    4. Ясно также, что, учитывая небольшое количество регистров общего назначения в архитектуре х86 (всего 8 ), у каждой нити свой набор регистров. Впрочем, это уже давно не новость — данное ограничение архитектуры уже довольно давно обходится при помощи "переименования регистров". Другими словами, физических регистров намного больше, чем логических. В процессоре Pentium III их 40. Наверняка это число для Pentium 4 больше — у автора есть ничем не обоснованное (кроме соображений "симметрии" :-) мнение, что их порядка сотни. Никаких достоверных сведений об их количестве найти не удалось. По неподтвержденным пока данным, их 256. По другим данным — другое число. В общем, полная неопределенность…. Кстати, позиция Intel по этому поводу совершенно непонятна :-( — автору непонятно, чем вызвана подобная секретность .

    5. Также известно, что в случае, когда несколько "нитей" претендуют на одни и те же ресурсы, либо одна из "нитей" ждет данных — во избежание падения производительности программисту необходимо вставлять специальную команду — "pause". Естественно, это потребует очередной перекомпиляции программ.

    6. Также понятно, что возможны ситуации, когда попытки одновременного исполнения нескольких "нитей" приведут к падению производительности. Например, из-за того, что размер кэша L2 не бесконечный, а активные "нити" будут пытаться загрузить кэш — возможна ситуация, когда такая "борьба за кэш" приведет к постоянной очистке и перезагрузке данных в кэше второго уровня.

    7. Intel утверждает, что при оптимизации программ под данную технологию выигрыш будет составлять до 30%. (Вернее, Intel утверждает, что на сегодняшних серверных приложениях и сегодняшних системах измеренный выигрыш до 30% ) Гм…. Это более чем достаточный стимул для оптимизации.

    Ну что же, некоторые особенности мы сформулировали. Теперь давайте попробуем обдумать некоторые следствия (по возможности опираясь на известные нам сведения ). Что же можно сказать? Ну, во-первых, необходимо тщательнее разобраться, что же именно нам предлагают. Так ли "бесплатен" этот сыр? Для начала разберемся, как именно будет происходить "одновременная" обработка нескольких "нитей". Кстати, что подразумевает корпорация Intel под словом "нить"?

    У автора сложилось впечатление (возможно, ошибочное ), что в данном случае имеется ввиду программный фрагмент, который мультизадачная операционная система назначает на исполнение одному из процессоров мультипроцессорной аппаратной системы. "Постойте!" — заявит внимательный читатель — "это же одно из определений! Что тут нового?". А ничего — в данном вопросе автор на оригинальность не претендует. Разобраться бы, что "наоригинальничала" Intel :-). Ну что же — примем в качестве рабочей гипотезы.

    Далее — исполняется некоторая нить. Тем временем декодер команд (кстати, полностью асинхронный и не входящий в пресловутые 20 стадий Net Burst ) осуществляет выборку и дешифрацию (со всеми взаимозависимостями ) в микроинструкции. Здесь надо пояснить, что автор подразумевает под словом "асинхронный" — дело в том, что результат "разваливания" х86 команд в микроинструкции происходит в блоке дешифрации. Каждая команда х86 может быть декодирована в одну, две, или более микроинструкций. При этом на стадии обработки выясняются взаимозависимости, доставляются необходимые данные по системной шине. Соответственно, скорость работы этого блока часто будет зависеть от скорости доступа данных из памяти — и в худшем случае определяется именно ею. Было бы логично "отвязать" его от того конвейера, в котором, собственно, и происходит выполнение микроопераций. Это было сделано путем помещения блока дешифрации перед trace cache. Чего мы этим добиваемся? А добиваемся мы при помощи такой "перестановки блоков" местами простой вещи — если в trace cache есть микроинструкции для исполнения — процессор работает более эффективно. Естественно, этот блок работает на частоте процессора — в отличие от Rapid Engine. Кстати, у автора сложилось впечатление, что данный декодер представляет собой нечто вроде конвейера длиной до 10–15 стадий. Таким образом, от выборки данных из кэша до получения результата проходит, по всей видимости, порядка 30 — 35 стадий (включая конвейер Net Burst. см. Microdesign Resources August2000 Microprocessor report Volume14 Archive8, page12).

    Полученный набор микроинструкций вместе со всеми взаимозависимостями накапливается в trace cache — в том самом, который приблизительно 12 000 микроопераций. По приблизительным оценкам источник такой оценки — строение микроинструкции P6; дело в том, что принципиально длина инструкций вряд ли кардинально поменялась (считая длину микроинструкции вместе со служебными полями порядка 100 бит ) размер trace cache получается от 96 КБ до 120 КБ. Однако! На фоне этого кэш данных размером 8 КБ выглядит как-то несимметрично :-)… и бледно. Конечно, при увеличении размера увеличиваются задержки доступа (к примеру, при увеличении до 32КБ задержки вместо двух тактов составят 4 ). Но неужели так важна скорость доступа в этот самый кэш данных, что увеличение задержки на 2 такта (на фоне общей длины всего конвейера ) делает такое увеличение объема невыгодным? Или дело просто в нежелании увеличивать размер кристалла? Но тогда при переходе на 0.13 мкм первым делом стоило увеличить именно этот кэш (а не кэш второго уровня ). Сомневающимся в данном тезисе стоило бы припомнить переход с Pentium на Pentium MMX — благодаря увеличению кэша первого уровня вдвое практически все программы получали 10 — 15% прироста производительности. Что же говорить об увеличении вчетверо (особенно учитывая, что скорости процессоров выросли до 2ГГц, а коэффициент умножения — с 2.5 до 20 )? По неподтвержденным данным, в следующей модификации ядра Pentium4 (Prescott) кэш первого уровня таки увеличат до 16 или 32 КБ. Также увеличится кэш второго уровня. Впрочем, на сегодняшний момент все это не более чем слухи. Откровенно говоря, слегка непонятная ситуация. Хотя — оговоримся — автор вполне допускает, что подобной идее мешает некая конкретная причина. Как пример — подойдут некие требования по геометрии расположения блоков или банальная нехватка свободного места вблизи конвейера (ясно ведь, что необходимо расположить кэш данных поближе к ALU ).

    Не отвлекаясь, смотрим на процесс дальше. Конвейер работает — пусть нынешние команды задействуют ALU. Ясно, что FPU, SSE, SSE2 и прочие при этом простаивают. Не тут-то было — вступает в действие Hyper Threading. Заметив, что готовы микроинструкции вместе с данными для новой нити, блок переименования регистров выделяет новой нити порцию физических регистров. Кстати, возможны два варианта — блок физических регистров общий для всех нитей, или же отдельный для каждого. Судя по тому, что в презентации Hyper Threading от Intel в качестве блоков, которые надо изменять, блок переименования регистров не указан — выбран первый вариант. Это хорошо или плохо? С точки зрения технологов — явно хорошо, ибо экономит транзисторы. С точки зрения программистов — пока неясно. Если количество физических регистров действительно 128, то при любом разумном количестве нитей ситуации "нехватка регистров" возникнуть не может. Затем они (микроинструкции ) отправляются в планировщик, который, собственно, направляет их на исполнительное устройство (если оно не занято ) или "в очередь", если данное исполнительное устройство сейчас недоступно. Таким образом, в идеале достигается более эффективное спользование имеющихся исполнительных устройств. В это время сам процессор с точки зрения ОС выглядит как два "логических" процессора. Гм… Неужели все так безоблачно? Давайте присмотримся к ситуации: часть оборудования (как-то кэши, Rapid Engine, модуль предсказания переходов ) являются общими для обоих процессоров. Кстати, точность предсказания переходов от этого, скорее всего, слегка пострадает. Особенно, если исполняемые одновременно нити не связаны друг с другом. А часть (например, MIS [Microcode Instruction Sequencer] — планировщик последовательности микрокоманд — подобие ПЗУ, содержащее набор заранее запрограммированных последовательностей обычных операций и RAT [Register Alias Table] — таблица переименования [псевдонимов] регистров ) блоков должна отличать различные нити, запущенные на "разных" процессорах. Попутно (из общности кэша ) следует, что, если две нити являются "жадными" к кэшу (то есть увеличение кэша дает большой эффект ), то применение Hyper Threading способно даже снизить скорость. Это происходит потому, что на сегодняшний момент реализован "конкурентный" механизм борьбы за кэш — "активная" в данный момент нить вытесняет "неактивную". Впрочем, механизм кэширования, по-видимому, может измениться. Также понятно, что скорость (по крайней мере, на текущий момент ) будет снижаться в тех приложениях, в которых она снижалась и в честном SMP. Как пример — SPEC ViewPerf обычно на однопроцессорных системах показывает более высокие результаты. А посему наверняка на системе с Hyper Threading результаты будут меньше, чем без нее. Собственно, результаты практического тестирования Hyper Threading можно посмотреть по этому адресу .

    Кстати, в интернет проскакивала информация о том, что ALU в Pentium 4 16 разрядные. Сначала автор относился к подобной информации весьма скептически — дескать, чего завистники удумали :-). А потом публикация подобной информации в Micro Design Report заставила таки задуматься — а вдруг правда? И, хотя информация об этом к теме статьи прямого отношения не имеет - трудно удержаться :-). Насколько автору "хватило понимания", суть в том, что ALU действительно 16-разрядный. Подчеркиваю — только ALU. К разрядности самого процессора это отношения не имеет. Таким образом, за полтакта (это называется тик, tick ) ALU (удвоенной частоты, как Вы помните ) вычисляет только 16 разрядов. Вторые 16 вычисляются за следующие полтакта. Отсюда, кстати, легко понятна необходимость сделать ALU вдвое быстрее — это необходимо для своевременного "перемалывания" данных. Таким образом, полных 32 разряда вычисляются за полный такт. На самом деле, по-видимому, необходимы 2 такта из-за необходимости "склеивать" и "расклеивать" разряды — но этот вопрос необходимо уточнить. Собственно, раскопки (про которые можно написать отдельную поэму) дали следующее: каждое ALU поделено на 2 16-разрядные половинки. Первые полтакта первая половинка обрабатывает 16 разрядов двух чисел и формируют биты переносов для вторых половинок. Вторая половинка в это время заканчивает обработку предыдущих чисел. Второй тик — первая половинка ALU обрабатывает 16 разрядов от следующей пары чисел и формирует их переносы. Вторая половинка обрабатывает старшие 16 разрядов первой пары чисел и получает готовый 32-разрядный результат. Задержка получения 1 результата — 1 такт, но потом каждые полтакта вылезает по 1 32-разрядному результату. Достаточно остроумно и эффективно. Почему же была выбрана именно такая модель ALU? По видимому, подобной организацией Intel убивает несколько "зайцев":

    1. Ясно, что конвейер "шириной" 16 разрядов разгонять легче, чем шириной 32 разряда — просто по причине наличия перекрестных помех и К о

    2. По-видимому, Интел счел операции целочисленного вычисления достаточно часто встречающимися, чтобы ускорять именно ALU, а не, скажем, FPU. Вероятно, при вычислении результатов целочисленных операций используются либо таблицы, либо схемы "с накоплением переноса". Для сравнения, одна 32-битная таблица это 2E32 адресов, т.е. 4гигабайта. Две 16-разрядные таблицы это 2х64кб или 128 килобайт — почувствуйте разницу! Да и накопление переносов в двух 16-разрядных порциях происходит быстрее, чем в одной 32-разрядной.

    3. Экономит транзисторы и… тепло. Ведь ни для кого не секрет, что все эти архитектурные ухищрения греются. По видимому, это была достаточно большая (а, возможно, и главная ) проблема — чего стоит, к примеру, Thermal Monitor как технология! Ведь необходимости в подобной технологии как таковой не очень много — то есть, конечно, приятно, что она есть. Но давайте говорить честно — простой блокировки хватило бы для достаточной надежности. Раз такая сложная технология была предусмотрена — значит, всерьез рассматривался вариант, когда подобные изменения частоты на ходу были одним из штатных режимов работы. А, может, основным? Ведь не зря ходили слухи, что Pentium 4 задумывался с гораздо большим количеством исполнительных устройств. Тогда проблема тепла должна была стать просто основной. Вернее, по тем же слухам, тепловыделение должно было составить до 150 Вт. А тогда очень логично принять меры к тому, чтобы процессор работал "в полную силу" только в таких системах, где обеспечено нормальное охлаждение. Тем более, что большинство корпусов "китайского" происхождения продуманностью конструкции с точки зрения охлаждения отнюдь не блещут. Гм…. Далековато забрались :-)

    Но все это теоретизирования. Есть ли сегодня процессоры, в которых применяется эта технология? Есть. Это Xeon (Prestonia ) и XeonMP. Причем, интересно, что XeonМР от Xeon отличается поддержкой до 4 процессоров (чипсеты типа IBM Summit поддерживают до 16 процессоров, методика приблизительно такая же, как и в чипсете ProFusion ) и наличием кэша третьего уровня объемом 512 КБ и 1 МБ, интегрированного в ядро. Кстати, а почему интегрировали кэш именно третьего уровня? Почему не увеличен кэш первого уровня. Должна же быть какая-то разумная причина…. Почему не увеличили кэш второго уровня? Возможно, причина в том, что Advanced Transfer Cache нуждается в относительно небольших задержках. А увеличение объема кэша приводит к увеличению задержек. Посему кэш третьего уровня для ядра и кэша второго уровня вообще «представляется» как шина. Просто шина :-). Так что прогресс налицо — сделано все, чтобы данные подавались в ядро как можно быстрее (а, попутно, поменьше загружалась шина памяти ).

    Ну что же — получается, никаких особо узких мест и нет? Что же автор, так и не сможет "поворчать"? Один процессор - а ОС видит два. Хорошо! Два процессора — а ОС видит 4! Кррасота! Стоп! А какая это ОС у нас работает с 4-мя процессорами? Операционные системы от Микрософт, которые понимают больше двух процессоров, стоят совсем других денег. Например, 2000 Professional, XP Professional, NT4.0 понимают только два процессора. А, учитывая, что пока что данная технология предназначается на рынок рабочих станций (и серверов ) и есть только в соответствующих процессорах - получается просто чертовски обидно. На сегодня мы можем использовать процессора с такой технологией, только купив двухпроцессорную плату и поставив один процессор. Чем дальше, тем "страньше", как говаривала Алиса в стране чудес…. То есть, человек, жаждущий использовать данную технологию, просто вынужден покупать версии Server и Advanced Server нынешних операционных систем. Ох, и дороговат выходит "бесплатный" процессор…. Стоит добавить, пожалуй, что в настоящий момент Intel активно "общается" с Microsoft, пытаясь привязать политику лицензирования к физическому процессору. По крайней мере, согласно документу. новые операционные системы от Microsoft будут лицензироваться по физическим процессорам. По крайней мере, WindowsXP лицензируется именно по количеству физических процессоров.

    Естественно, всегда можно обратиться к операционным системам других производителей. Да только будем откровенными — это не очень хороший выход из текущей ситуации…. Так что можно понять колебания Интел, которая довольно долго думала — использовать эту технологию, или нет.

    Ну что же — не забываем достаточно важный вывод: применение Hyper Threading способно привести как к выигрышу, так и к проигрышу в производительности. Ну а поскольку проигрыш нами уже обсужден — попробуем понять, что же необходимо для выигрыша: а для выигрыша необходимо, чтобы об этой технологии знали:
    1. BIOS материнской платы
    2. Операционная система (. )
    3. Собственно, само приложение

    Вот на этом моменте позвольте остановиться поподробнее — дело в том, что за BIOS дело не станет. Операционную систему мы обсудили чуть ранее. А вот в те нити, которые, например, ожидают данных из памяти — придется вводить специальную команду pause. чтобы не замедлять работу процессора; ведь при отсутствии данных нить способна блокировать те или иные исполнительные устройства. А чтобы вставить эту команду, приложения придется перекомпилировать — это не есть хорошо, но, с легкой руки Intel, к этому в последнее время все стали привыкать :-). Таким образом, основной (по мнению автора ) недостаток технологии Hyper Threading — это необходимость очередной компиляции. Основное преимущество такого подхода - подобная перекомпиляция попутно (и, скорее всего, более заметно :-) подымет производительность в "честных" двухпроцессорных системах — а это можно только приветствовать. Кстати, уже есть экспериментальные данные. которые подтверждают, что в большинстве случаев программы, оптимизированные под SMP. выигрывают от Hyper Threading от 15% до 18%. Это весьма неплохо. Кстати, там же можно увидеть, в каких случаях Hyper Threading приводит к падению производительности.

    И напоследок давайте попробуем пофантазировать, что же может измениться (улучшиться ) в дальнейшем развитии этой идеи. Достаточно очевидно, что развитие данной технологии будет прямо связано с развитием ядра Pentium 4. Таким образом, представим себе потенциальные изменения в ядре. Что там у нас дальше по плану? 0.09 микронная технология, более известная как 90нм…. Автор склонен считать (на сегодняшний момент ), что развитие данного семейства процессоров пойдет сразу по нескольким направлениям:
    • Благодаря более "тонкому" техпроцессу частота процессора станет еще выше.
    • Будем надеяться, что кэш данных увеличат. Хотя бы до 32КБ.
    • Сделают "честное", 32 разрядное ALU. Это должно поднять производительность.
    • Увеличат скорость системной шины (впрочем, это уже в ближайших планах ).
    • Сделают двухканальную DDR память (опять же, ждать осталось относительно недолго ).
    • Возможно, введут аналог технологии х86-64, если данная технология (усилиями AMD ) приживется. При этом автор изо всех сил надеется, что этот аналог будет совместимым с х86-64. Хватит уже плодить несовместимых друг с другом расширений…. Опять же, небезынтересным для нас будет интервью Джерри Сандерса, в котором тот заявил, что AMD и Intel в прошлом году договорились о кросс-лицензировании на все, кроме системной шины Pentium4. Значит ли это, что Intel встроит х86-64 в следующее ядро Pentium4 (Prescott), а AMD встроит в свои процессора Hyper Threading? Вопрос интересный….
    • Возможно, будет увеличено количество исполнительных устройств. Правда, как и предыдущий, это достаточно спорный пункт, поскольку требует практически полного перепроектирования ядра — а это долгий и трудоемкий процесс.

    Интересно, будет ли развиваться идея Hyper Threading? Дело в том, что в количественном отношении ей развиваться особо некуда — понятно, что два физических процессора лучше трех логических. Да и позиционировать будет нелегко…. Интересно, что Hyper Threading может пригодиться и при интегрировании двух (или более ) процессоров на кристалл. Ну а под качественными изменениями автор имеет ввиду, что наличие такой технологии в обычных десктопах приведет к тому, что фактически большинство пользователей будут работать на [почти] двухпроцессорных машинах — что очень хорошо. Хорошо потому, что подобные машины работают не в пример "плавнее" и "отзывчивее" на действия пользователя даже под большой нагрузкой. Сие, с точки зрения автора, есть весьма хорошо.

    Вместо послесловия

    Автор должен признаться, что в течение работы над статьей его отношение к Hyper Threading неоднократно менялось. По мере того, как собиралась и обрабатывалась информация — отношение становилось то в целом положительным, то наоборот :-). На сегодняшний момент можно написать следующее:

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

    Автор хотел подчеркнуть бы свою признательность Максиму Леню (aka C.A.R.C.A.S.S.) и Илье Вайцману (aka Stranger_NN) за неоднократную и неоценимую помощь при написании статьи.
    Также хотелось бы сказать спасибо всем участникам форума, которые неоднократно высказывали ценные замечания.