Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Конвейерная обработка команд.

Читайте также:
  1. VI. Обработка и анализ
  2. VI. Обработка и анализ
  3. VI. Обработка и анализ 1 страница
  4. VI. Обработка и анализ 2 страница
  5. VI. Обработка и анализ 3 страница
  6. VI. Обработка и анализ 4 страница
  7. VI. Обработка и анализ 5 страница

 

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

Как правило, процессор выполняет программу, по очереди выбирая из памяти и активизируя ее команды. Представим себе для простоты, что процесс обработки команды в процессоре разбит на 4 этапа. Структура такого четырехступенчатого конвейера, и последовательность выполнения на нем четырех команд программы, приведена на рис.VIII.1.

Условные обозначения на рисунке:

В: → Выборка команды из памяти.

Д: →Декодирование команды и выборка (при необходимости) ее исходных операндов.

И: → Исполнение заданной в команде операции.

С: → Сохранение результата по целевому адресу.

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

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

 

Рис VIII.1 Схема структуры 4–х ступенчатого конвейера и пример

выполнения команды за 4 такта.

 

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

· Буфер Б1: команда К3, выбранная на такте 3 и обрабатываемая блоком декодирования команды.

· Буфер Б2: исходные операнды команды К2 и спецификация выполняемой операции. Эта информация сформирована схемами дешифратора на такте 3. Буфер Б2 включает также информацию, необходимую для этапа С2, на котором осуществляется запись результата исполнения команды К2. Хотя она и не нужна на этапе исполнения, на следующем такте она передается на этап сохранения (записи) для осуществления соответствующей операции.

· Буфер Б3: результаты, которые сформированы блоком выполнения

команды, и информация о месте назначения данных команды К1.

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

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

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

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

Рассмотрим, например, схему возникновения так называемого конфликта по данным. Этот пример иллюстрирован на рис. VIII.2. В этом случае конфликт образуется вследствие того, что обработка данных при исполнении команды (например, команды деления) требует интервала времени на данном этапе более одного тактового интервала.

Рис.VIII.2 Иллюстрация прохождения команд по 4-х ступенчатому

конвейеру, в случае этапа (ступени) исполнения команды И2,

занимающего более одного тактового интервала.

 

 

Как следует из рисунка, в данном конкретном случае, работа конвейера приостанавливается на два такта. Его нормальное функционирование возобновляется во время такта 7.

Интервалы простоя называют pipeline bubbles (конвейерные пузырьки). Образовавшись в результате задержки на одной ступени, пузырек спускается вниз, пока не достигнет последнего блока.

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

Команда К1 выбирается из кэш памяти в первом такте и обрабатывается обычным образом, проходя последовательно через все ступени конвейера без задержки. В соответствии с логикой работы конвейера, на втором такте производится выборка из кэш памяти команды К2. Но при этом произошел промах обращения к кэш L1, т.е. в кэш L1 требуемой команды не оказалось и необходимо произвести подкачку строки с этой командой из кэш L2, или из основной памяти. В связи с этим, работа блока выборки команд приостанавливается, в конкретном случае на три такта, пока требуемая команда не зафиксируется в буферной памяти на выходе этого блока. Следовательно, команда К2 появляется в буфере Б1 в конце пятого такта. С этого момента возобновляется нормальная работа конвейера.

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

 

 

Рис.VIII.3 Иллюстрация простоя конвейера, вызванного промахом

при обращении к кэш памяти на этапе (ступени) выборки

второй команды.

а) Этапы выполнения команды на последовательных тактах.

б) Действия, выполняемые на ступенях конвейера во время

последовательных тактов.

 

Из рисунка видно, что во время тактов 3…5 простаивает блок декодирования, во время тактов 4…6 – блок исполнения команды, а во время тактов 5…7 – блок записи (сохранения).

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

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

Рассмотрим случай приостановки конвейера при появлении команды безусловного перехода. Иллюстрация поведения 4-х ступенчатого конвейера в случае, когда адрес перехода вычисляется на ступени исполнения – И2, изображена на рис.VIII.4. После вычисления адреса перехода, необходимо осуществить удаление команд К 3 и К 4, а так же выбор команды К i на такте 5. Поэтому, в рассматриваемом случае, накладные расходы перехода составляют два такта.

Для сокращения времени простоя конвейера, у современных процессоров, в блоке выборки команд имеется специальная подсистема, предназначенная для быстрого выявления команд перехода и вычисления их целевых адресов. Эта подсистема позволяет, и выявлять команды переходов и вычислять адреса передачи управления на ступени декодирования - Д. Работа 4-х ступенчатого конвейера в случае, когда целевой адрес перехода определяется на ступени декодирования, иллюстрирована на рис.VIII.5.

Как следует из приведенной схемы рис.VIII.5, в этом случае, накладные расходы перехода составит один такт.

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

Рис.VIII.4. Иллюстрация работы 4-х ступенчатого конвейера при

выполнении команды безусловного перехода, в случае, когда

адрес перехода вычисляется на ступени исполнения.

Рис. VIII.5 Иллюстрация работы 4-х ступенчатого конвейера, при

выполнении команды безусловного перехода, в случае, когда

адрес перехода вычисляется на ступени декодирования.

 

А статистические исследования показывают, что команды переходов в типичных программах составляют около 20% общего количества команд.

Поэтому в современных процессорах, с блоком выборки в тесном контакте работает специальный блок предсказания ветвлений, который, используя специально разработанные алгоритмы, позволяет уже на этапе выборки команды условного перехода, с большой степенью вероятности (до 90 % и даже выше) предсказать адрес перехода.

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

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

Следует отметить, что «классическим» считается пятиступенчатый конвейер, в котором в отличие от рассмотренного, выделяется отдельно ступень выборки операндов. Однако в современных процессорах эти пять основных ступеней конвейера каждая включает несколько дополнительных ступеней, на которых выполняются более мелкие микрооперации, на которые можно разделить основные операции, реализуемые на основной ступени. Такая организация вычислений называется суперконвейерной. Так, например, у современных процессоров длина конвейера составляет 12 - 16 ступеней (а у процессоров с архитектурой NetBurst достигала 31 ступени!) Это даёт возможность осуществлять более быстрый переход со ступени на ступень и, следовательно, повысить тактовую частоту, что ведет к увеличению производительности процессора.

 


Дата добавления: 2015-07-08; просмотров: 757 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Шинные циклы процессора| Отгадай загадки

mybiblioteka.su - 2015-2024 год. (0.011 сек.)