|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
На производительность процессораКонфликты - это ситуации в конвейерной обработке, которые препятствуют выполнению очередной команды в предназначенном для нее такте. Конфликты делятся на три группы:
I. Структурные конфликты возникают в том случае, когда аппаратные средства процессора не могут поддерживать все возможные комбинации команд в режиме одновременного выполнения с совмещением. Причины структурных конфликтов: 1. Неполностью конвейерная структура процессора, при которой некоторые ступени отдельных команд выполняются более одного такта. Пусть этап выполнения EX команды i+1 занимает 3 такта. Тогда диаграмма работы конвейера будет иметь вид, представленный в табл. 3.
В этом случае в работе конвейера возникают т.н. " пузыри " в обработке команд i+2 и следующих за ней начиная с такта 6, которые снижают производительность МП. Если какой-то блок конвейера вносит задержку, то тормозится работа всего конвейера. Образуемый при этом "пузырь" должен пройти от места своего возникновения до самого конца конвейера. Т.о., скорость конвейера определяется скоростью самой медленной ступени. Этой ситуации можно было бы избежать двумя способами: ● увеличением времени такта до такой величины, которая позволила бы все этапы любой команды выполнять за один такт. Однако при этом существенно снижается эффект конвейерной обработки, т.к. все этапы всех команд будут выполняться дольше, в то время как обычно нескольких тактов требует выполнение лишь отдельных этапов очень небольшого количества команд; ● использованием аппаратных решений, которые позволили бы значительно снизить затраты времени на выполнение действия. Но это приведет к усложнению схемы процессора и сокращению на кристалле места для реализации на этой БИС других, функционально более важных узлов. Обычно разработчики процессоров ищут компромисс между увеличением длительности такта и усложнением того или иного устройства процессора. 2. Недостаточное дублирование некоторых ресурсов. Одним из типичных примеров таких конфликтов служит конфликт из-за доступа к запоминающим устройствам. Борьба с конфликтами такого рода проводится путем увеличения количества однотипных функциональных устройств, которые могут одновременно выполнять одни и те же или схожие функции. В ЗУ в современных МП с этой целью разделяют кэш-память для хранения команд и кэш-память данных, а также используют многопортовую схему доступа к регистровой памяти. Например, в МП Itanium к блоку РОН допускается одновременное обращение на выполнение 8 операций чтения и 6 - записи. В МП Pentium 4 для обработки целочисленных данных предусмотрено 4 АЛУ. При этом появляется возможность параллельной обработки информации в нескольких конвейерах. МП, имеющие в своем составе более одного конвейера, называются суперскалярными. Недостатком суперскалярных МП является необходимость синхронного продвижения команд в каждом из конвейеров. В табл. 4 показана последовательность выполнения команд в МП, имеющем 2 конвейера, при условии, что команде К1 требуется 3 такта на этапе EX.
При этом команды будут завершаться в порядке, отличающемся от того, который предусмотрен программой: К2-К4-К1-К6-... Т.о., для обеспечения правильной работы суперскалярного МП при возникновении затора в одном из конвейеров должны приостанавливать свою работу и другие. В противном случае может нарушиться исходный порядок завершения команд программы. Но такие приостановки существенно снижают быстродействие МП. ● Разрешение ситуации состоит в том, чтобы дать возможность выполняться командам в одном конвейере вне зависимости от ситуации в других, а аппаратные средства МП должны гарантировать, что результаты выполненных команд будут записаны в приемник в том порядке, в котором команды записаны в программе. Это обеспечивается путем использования принципа неупорядоченного выполнения команд. Суть его заключается в следующем. ♥ Блок выборки и декодирования выбирает команды из памяти и заносит их в буфер команд. По мере готовности операндов и исполнительного блока соответствующего типа команды извлекаются из буфера для обработки. Порядок их исполнения может отличаться от предписанного программой. ♥ Результаты этапа выполнения команды сохраняются в специальном буфере восстановления последовательности команд. ♥ Запись результата очередной команды из этого буфера в приемник результата проводится лишь после того, как выполнены все предшествующие команды и записаны их результаты. Преимущества такого подхода очевидны: команды максимально используют возможности всех конвейеров, присутствующих в микроархитектуре МП, что обеспечивает его максимальную производительность. II. Конфликты по управлению возникают при конвейеризации команд переходов и других команд, изменяющих значение счетчика команд. Суть конфликтов этой группы наиболее проиллюстрируем на примере команд условного перехода. Пусть в программе в табл. 1 команда i+1 является коман-дой условного перехода, формирующей адрес следующей команды в зависи-мости от результата выполнения команды i. ☺Команда i завершит свое выполнение в такте 5. ☺В то же время команда условного перехода уже в такте 3 должна прочитать необходимые ей признаки, чтобы правильно сформировать адрес следующей команды.
● Простейший способ разрешения этой ситуации – использование метода выжидания.
Он заключается в замораживании операций в конвейере путем блокировки выполнения любой команды, следующей за командой условного перехода, до тех пор, пока не станет известным направление перехода. Привлекательность такого решения заключается в его простоте. Главный недостаток - резкое уменьшение преимуществ конвейерной обработки. В инженерных задачах примерно каждая шестая команда является командой условного перехода, поэтому приостановки конвейера при выполнении команд переходов до определения истинного направления перехода существенно скажутся на производительности процессора.
● Можно несколько улучшить эту ситуацию, используя схему " задержанных переходов ". При этом на стадии компиляции компилятор таким образом структурирует получаемый объектный код, чтобы сделать команды, следующие за командой перехода, действительными и полезными (рис. 1). Рис. 1. Организация задержанного перехода Слот задержки заполняется независимой командой, находя-щейся перед командой условного перехода. Эта команда выполняется за то время, пока микропроцессор формирует истинное условие, по которому должно быть определено направление выполнения программы. Одной из основных трудностей в этом подходе является определение точного времени выполнения команды, вносимой в слот задержки. Аппаратура должна гарантировать реальное выполнение этих команд перед выполнением собственно перехода. ● Более эффективными для снижения потерь от конфликтов по управлению являются методы предсказания переходов. Они максимально ускоряют определение адреса команды, выполняемой после команды перехода. Методы предсказания переходов делятся на статические и динамические. ♥ При использовании статических методов до выполнения программы для каждой команды условного перехода указывается направление наиболее вероятного ветвления. Это указание делается программой-компилятором по заложенным в ней алгоритмам. Суть данного метода заключается в том, что при выполнении команды условного перехода специальный блок микропроцессора определяет наиболее вероятное направление перехода, не дожидаясь формирования признаков, на основании анализа которых этот переход реализуется. Процессор начинает выбирать из памяти и выполнять команды по предсказанной ветви программы (т.н. исполнение по предположению, или " спекулятивное " исполнение). Однако так как направление перехода может быть предсказано неверно, получаемые результаты с целью обеспечения возможности их аннулирования не записываются в память или регистры (то есть для них не выполняется этап WB), а накапливаются в специальном буфере результатов. ▪ Если после формирования анализируемых признаков оказалось, что направление перехода выбрано верно, все полученные результаты переписываются из буфера по месту назначения и выполнение программы продолжается в обычном порядке. ▪ Если направление перехода предсказано неверно, все инструкции, выбранные после перехода, помечаются, согласно интеловской терминологии, как поддельные (bogus instructions). -При этом буфер результатов и конвейер, содержащий команды, которые следуют за командой условного перехода и находятся на разных этапах обработки, - очищаются. -Аннулируются результаты всех уже выполненных этапов этих команд. Конвейер начинает загружаться с первой команды другой ветви программы. ►Следует отметить, что конфликты по управлению не исчерпываются только проблемами, связанными с командами условных переходов. Они возникают при выполнении всех команд, меняющих значение счетчика команд. Это хорошо видно из табл. 1.
♥ Методы динамического предсказания реализуются при выполнении программы в микропроцессоре. Они осуществляют предсказание направления переходов на основании результатов предыдущих выполнений данной команды. При использовании этих методов для команд условных переходов анализируется предыстория переходов - результаты нескольких предыдущих команд ветвления по данному адресу. В этом случае возможно определение чаще всего реализуемого направления ветвления, а также выявление чередующихся переходов. - Для команд безусловных переходов однажды вычисленный целевой адрес сохраняется в специальной памяти BTB (Branch Target Buffer), откуда он извлекается сразу же при декодировании данной команды. - Аналогичный подход используется для команд вызова - возврата из процедуры (анализ связок CALL - RETURN). Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |