Справочник - Материнские платы и процессоры



             

Технология Hyper-Threading – первый шаг к многоядерности - часть 3


Реализация параллелизма на уровне инструкций (Instruction Level Parallelism, ILP)

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

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

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

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

Рассмотрим ещё один типичный пример работы нашего гипотетического процессора.


Содержание  Назад  Вперед