Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
195
Добавлен:
01.06.2015
Размер:
496.13 Кб
Скачать

Суперконвейерные структуры

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

  • разбиением каждой ступени конвейера на более мелкие при одновременном повышении тактовой частоты;

  • включением в процессор нескольких конвейеров, работающих параллельно.

Первый подход получил название суперконвейеризация. Разные авторы по-разному разграничивают конвейерные и суперконвейрные структуры. Одни относят структуру к суперконвейерным, если количество ступеней конвейера больше 6, другие–если больше 10.

К сожалению, выигрыш, достигаемый за счет суперконвейеризации, на практике может оказаться умозрительным. В длинном конвейере возрастает вероятность конфликтов. Дороже встает ошибка предсказания перехода. При прерываниях программ конвейеры ведут себя кок последовательные структуры, весь конвейер очищается, а затем заполняется. Частые прерывания и переключения программ существенно снижают производительность суперконвейерных структур. Интересно отметить, что у процессора Intel® Itanium® конвейер 10-ти ступенчатый, а у Intel® Itanium®2–8-ми ступенчатый ..\Слайды\Itan.ppt.

Суперскалярные процессоры

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

Суперскалярными1 называются процессоры, которые одновременно выполняют более чем одну скалярную команду. (Цилькер) Это достигается за счет включения в состав процессора нескольких самостоятельных функциональных блоков, каждый из которых отвечает за свой класс операций и может присутствовать в процессоре в нескольких экземплярах. Суперскалярность предполагает параллельную работу максимального числа исполнительных блоков, что возможно лишь при одновременном выполнении нескольких скалярных команд. Это достигается тем, что процессор «просматривает» приближающиеся к исполнению команды и выбирает из них те последовательности, которые могут быть выполнены параллельно. Суперскалярность хорошо сочетается с конвейерной обработкой, при этом желательно, чтобы в суперскалярном процессоре было несколько конвейеров, например два или три. Суперскалярность и суперконвейерность не противоречат друг другу и в большинстве современных процессоров реализовано и то, и другое. Следует обратить внимание, что в отличие от структуры с одним конвейером, в структурах с несколькими конвейерами в каждом цикле необходимо производить выборку более чем одной команды, а это очень напоминает структуры VLIW. Суперскалярные процессоры реализуют параллелизм на уровне команд.

Гиперпотоковая технология

Гиперпотоковая технология (Hyper-Threading Technology, HTT) была создана корпорацией Intel в целях повышения производительности и эффективности серверных систем. Данная технология является чем-то средним между многопоточной обработкой, реализованной в мультипроцессорных системах, и параллелизмом на уровне инструкций, реализованном в однопроцессорных системах. Вообще говоря, HTT стала одной из форм синхронной многопотоковой технологии, где множество потоков, создаваемых программными приложениями, могут выполняться одновременно на одном процессоре. Посредством реализованного в технологии Hyper-Threading принципа параллельности можно обрабатывать инструкции в параллельном (а не в последовательном) режиме, то есть для обработки все инструкции разделяются на два параллельных потока. Это позволяет одновременно обрабатывать два различных приложения или два различных потока одного приложения и тем самым увеличить производительность процессора. В конструктивном плане процессор с поддержкой технологии Hyper-Threading состоит из двух логических процессоров, каждый из которых имеет свои регистры и контроллер прерываний. Это значит, что две параллельно исполняемые задачи работают со своими собственными независимыми регистрами и прерываниями, но при этом используют одни и те же ресурсы процессора для выполнения своих задач. После активации каждый из логических процессоров может самостоятельно и независимо от другого процессора выполнять свою задачу, обрабатывать прерывания либо блокироваться. Таким образом, от реальной двухпроцессорной конфигурации новая технология отличается только тем, что оба логических процессора используют одни и те же исполняющие ресурсы, одну и ту же разделяемую между двумя потоками кэш-память и одну и ту же системную шину. Идея технологии Hyper-Threading тесно связана с микроархитектурой NetBurst процессора Pentium 4 и является в каком-то смысле её логическим.

Рассмотрим гипотетический процессор, в котором имеется четыре исполнительных блока: два арифметико-логических устройства для работы с целыми числами (ALU), блок для работы с числами с плавающей точкой (FPU) и блок для записи и чтения данных из памяти (Store/Load, S/L). Пусть, кроме того, каждая операция осуществляется за один такт процессора. Далее предположим, что выполняется программа, состоящая из трёх инструкций: первые две - арифметические действия с целыми числами, а последняя -сохранение результата. В этом случае вся программа будет выполнена за два такта процессора: в первом такте задействуются два блока ALU процессора (красные квадраты на рис. 16), во втором – блок записи и чтения данных из памяти S/L. В современных приложениях в любой момент времени, как правило, выполняется не одна, а несколько задач или несколько потоков (threads) одной задачи. На рис.17 показано как будет вести себя гипотетический процессор при выполнении двух разных потоков задач. Красные квадраты соответствуют использованию исполнительных блоков процессора одним потоком, а синие квадраты – другим. Если бы оба потока исполнялись изолированно, то для выполнения первого и второго потока потребовалось бы по пять тактов процессора (см. рис.17). При одновременном исполнении обоих потоков процессор будет постоянно переключаться между обоими потоками, следовательно, за один такт процессора выполняются только инструкции какого-либо одного из потоков. Для исполнения обоих потоков так же потребуется десять процессорных тактов (рис.18).

Из рисунка видно, что на каждом такте используются не все исполнительные блоки и существует возможность совместить исполнение команд разных потоков на каждом такте, естественно, если потоки не используют одни и те же блоки, что и показано на рис.17

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

Соседние файлы в папке Процессоры