21157

Технология Hyper-Threading

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-08-02

701.5 KB

2 чел.

Технология Hyper-Threading

Анонсированная в 2002 году компанией Intel технология Hyper-Threading — пример многопоточной обработки команд. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах. Фактически технология Hyper-Threading позволяет организовать два логических процессора в одном физическом. Таким образом, с точки зрения операционной системы и запущенного приложения в системе существует два процессора, что дает возможность распределять загрузку задач между ними точно так же, как при SMP-мультипроцессорной конфигурации.

Посредством реализованного в технологии Hyper-Threading принципа параллельности можно обрабатывать инструкции в параллельном (а не в последовательном) режиме, то есть для обработки все инструкции разделяются на два параллельных потока. Это позволяет одновременно обрабатывать два различных приложения или два различных потока одного приложения и тем самым увеличить IPC (instructions per clock) процессора, что сказывается на росте его производительности.

В конструктивном плане процессор с поддержкой технологии Hyper-Threading состоит из двух логических процессоров, каждый из которых имеет свои регистры и контроллер прерываний (Architecture State, AS), а значит, две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. После активации каждый из логических процессоров может самостоятельно и независимо от другого процессора выполнять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину. Использование двух логических процессоров позволяет усилить процесс параллелизма на уровне потока, реализованный в современных операционных системах и высокоэффективных приложениях. Команды от обоих исполняемых параллельно потоков одновременно посылаются ядру процессора для обработки. Используя технологию out-of-order (исполнение командных инструкций не в порядке их поступления), ядро процессора тоже способно параллельно обрабатывать оба потока за счет использования нескольких исполнительных модулей.

Идея технологии Hyper-Threading тесно связана с микроархитектурой NetBurst процессора Pentium 4 и является в каком-то смысле ее логическим продолжением. Микроархитектура Intel NetBurst позволяет получить максимальный выигрыш в производительности при выполнении одиночного потока инструкций, то есть при выполнении одной задачи. Однако даже в случае специальной оптимизации программы не все исполнительные модули процессора оказываются задействованными на протяжении каждого тактового цикла. В среднем при выполнении кода, типичного для набора команд IA-32, реально используется только 35% исполнительных ресурсов процессора, а 65% исполнительных ресурсов процессора простаивают, что означает неэффективное использование возможностей процессора. Было бы вполне логично организовать работу процессора таким образом, чтобы в каждом тактовом цикле максимально использовать его возможности. Именно эту идею и реализует технология Hyper-Threading, подключая незадействованные ресурсы процессора к выполнению параллельной задачи.

Поясним все вышесказанное на примере. Представьте себе гипотетический процессор, в котором имеются четыре исполнительных блока: два блока для работы с целыми числами (арифметико-логическое устройство, ALU), блок для работы с числами с плавающей точкой (FPU) и блок для записи и чтения данных из памяти (Store/ Load, S/L). Пусть, кроме того, каждая операция осуществляется за один такт процессора. Далее предположим, что выполняется программа, состоящая из трех инструкций: первые две — арифметические действия с целыми числами, а последняя — сохранение результата. В этом случае вся программа будет выполнена за два такта процессора: в первом такте задействуются два блока ALU процессора (красный квадрат на рис. 1), во втором — блок записи и чтения данных из памяти S/L.

Рис. 1. Реализация параллелизма на уровне

инструкций (Instruction Level Parallelism, IIP)

В современных приложениях в любой момент времени, как правило, выполняется не одна, а несколько задач или несколько потоков (threads) одной задачи, называемых также нитями. Давайте посмотрим, как будет вести себя наш гипотетический процессор при выполнении двух разных потоков задач (рис. 2). Черные квадраты соответствуют использованию исполнительных блоков процессора одного потока, а светлые квадраты — другого. Если бы оба потока исполнялись изолированно, то для выполнения первого и второго потоков потребовалось бы по пять тактов процессора. При одновременном исполнении обоих потоков процессор будет постоянно переключаться между обоими потоками, следовательно, за один такт процессора выполняются только инструкции какого-либо одного из потоков. Для исполнения обоих потоков потребуется в общей сложности десять процессорных тактов.

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

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

Рассмотрим еще один типичный пример работы нашего гипотетического процессора. Пусть имеется два потока команд, каждый из которых по отдельности выполняется за пять тактов процессора. Без использования технологии Hyper-Threading для выполнения обоих потоков потребовалось бы десять тактов процессора. А теперь выясним, что произойдет при использовании технологии Hyper-Threading (рис. 3). На первом такте процессора каждый из потоков задействует различные блоки процессора, поэтому выполнение инструкций легко совместить. Аналогичное положение вещей наличествует и на втором такте, а вот на третьем такте инструкции обоих потоков пытаются задействовать один и тот же исполнительный блок процессора, а именно блок S/L. В результате возникает конфликтная ситуация, и один из потоков должен ждать освобождения требуемого ресурса процессора. То же самое происходит и на пятом такте. В итоге оба потока выполняются не за пять тактов (как в идеале), а за семь.

Рис. 2. Выполнение двух потоков на процессоре без реализации

и с реализацией технологии Hyper-Threading

Рис. 3. Возникновение конфликтных ситуаций при использовании

технологии Hyper-Threading


 

А также другие работы, которые могут Вас заинтересовать

53228. ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ, ЩО МІСТЯТЬ МОДУЛЬ 128.5 KB
  Метою профільного навчання, як одного з напрямків модернізації математичної освіти є забезпечення поглибленого вивчання предмета й підготовка учнів до продовження освіти. Основним напрямком модернізації математичної шкільної освіти є відпрацьовування механізмів підсумкової атестації через введення зовнішнього незалежного тестування.
53230. Найпростіші перетворення графіків функцій 164.5 KB
  Побудувати графік функції: у= х324. Побудуйте графік функції у=х321. Користуючись графіком знайдіть: а Область значень функції; б усі значення х при яких функція набуває від’ємних значень; в проміжок на якому функція спадає.