Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Краткая теория. Цель работы. Изучение влияния различных конфликтов на эффективность конвейерной обработки.
Цель работы. Изучение влияния различных конфликтов на эффективность конвейерной обработки.
Одним из основных способов построения высокопроизводительных систем, как известно, является распараллеливание процессов, которое используется в конвейерной обработке. Типичную арифметическую команду, как предлагалось в лабораторной работе 1, можно разделить на следующие микрооперации: 1) выборка команд из памяти (по адресу в счётчике команд); 2) декодирование кода операции; 3) выборка операндов из регистров; 4) выполнение операции в АЛУ; 5) запоминание результата в регистре. Если система содержит 5 обрабатывающих устройств, каждое из которых обеспечивает выполнение одной из перечисленных микроопераций, то имеется возможность реализовать конвейерную обработку. Известно, что наиболее эффективным является режим работы конвейера, при котором · все микрокоманды имеют одинаковую длительность; · обрабатывающие устройства располагаются в порядке, соответствующем порядку следования микрокоманд. Если одно из указанных условий нарушается, то некоторые устройства будут простаивать, а эффективность снизится. Ситуации, которые препятствуют очередной команде из потока выполняться в предназначенном для нее такте называются конфликтами в конвейере. Очевидно, что конфликты снижают производительность конвейера. Существует три типа конфликтов: 1) Структурные, которые возникают из-за занятости отдельных ресурсов (когда аппаратные средства не могут поддерживать выполнение команд в режиме с совмещением); 2) Конфликты по данным, появляющиеся, если выполнение одной команды зависит от результата предыдущей; 3) Конфликты по управлению, которые возникают при наличии команд переходов и других команд, изменяющих значение счетчика команд. Все конфликты приводят к приостановке выполнения команды, в которой они возникли (pipeline stall), а также всех следующих за ней до конца конвейера. Эта ситуация называется " конвейерным пузырем" (pipeline bubble). Пузырь проходит по конвейеру, не выполняя никакой работы. Примером структурных конфликтов являются коллизии, возникающие при промахе в кэш-памяти и при необходимости выполнения записей в два или более регистров регистрового файла в течение одного машинного такта. Аналогичная ситуация возникает при разных длительностях тактов отдельных микроопераций. Конфликты по данным связаны с последовательным выполнением команд в программах. Например, во фрагменте: Add R1, R2 Sub R3, R1 And R4, R1 Or R5, R1 Xor R6, R1 все команды, следующие за Add, используют ее результат (который помещен в регистр R1) и должны ожидать завершения ее последней микрооперации. Конфликты по данным возможны везде, где имеет место зависимость между командами, и они расположены достаточно близко друг к другу. Причем эти ситуации могут возникать не только при работе с регистрами АЛУ, но и при обращении к одной и той же ячейке памяти. Конфликты по управлению могут быть самыми тяжелыми с точки зрения потерь производительности конвейера. При выполнении условного перехода вся цепочка команд, находящихся в начале конвейера, выполнялась напрасно. Работа конвейера приостанавливается до тех пор, пока в его начало не будет загружена команда с новым адресом (адресом перехода). Однако эффект от конфликта можно уменьшить, если учесть, что значение счетчика команд изменяется только в одном из двух случаев (когда переход происходит). В реальных системах реализованы различные меры борьбы с перечисленными конфликтами. Например, структурные конфликты могут быть ликвидированы за счет создания так называемых «полностью конвейерных устройств», в которых длительности тактов выполнения всех микроопераций одинаковы, используется раздельная память команд и данных и другие средства. Конфликты по данным устраняются с помощью оптимизирующих компиляторов или аппаратных средств микропроцессоров, которые изменяют порядок выполнения команд в программе так, чтобы команды, связанные по данным, располагались в ней на расстоянии, превышающем длину конвейера. Другим путем ликвидации этих конфликтов является расширение регистровой и кэш памяти, в частности, создание регистровых файлов, у которых запись данных производится в разные ячейки. Конфликты по управлению устраняются за счет дублирования ветвей, а также использования так называемого отсроченного или прогнозируемого перехода.
|