Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура вычислительных систем(шпоры и лекции).doc
Скачиваний:
276
Добавлен:
10.05.2014
Размер:
534.02 Кб
Скачать

10. Преодоление зависимостей по данным.

Решение проблемы зависимости по данным возможно за счет оптимального использования регистрового файла процессора, за­ключающегося в переименовании регистров и переупорядочивания командного потока (перемешивания команд). Один из таких спосо­бов рассмотрим на примере метода, получившего название "табло регистров", реализованного в ЭВМ Motorola 880.

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

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

11. Преодоление зависимостей по управлению.

Во многих современных ЭВМ проблема зависимости по управ­лению решается за счет использования алгоритмов предсказания наиболее вероятного перехода или механизмов динамического прогнозирования ветвления. Этот подход был усовершенствован в так называемом динамическом исполнении кодов программы, реа­лизованном в процессорах фирмы Intel, начиная с модели Pentium Pro, и ряде других.

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

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

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