Мегаобучалка Главная | О нас | Обратная связь


Переименование регистров.



2018-07-06 564 Обсуждений (0)
Переименование регистров. 0.00 из 5.00 0 оценок




Сколько бы команд одновременно ни был способен выполнять процессор, т.е. сколько бы в нем ни было конвейеров, он никогда не будет загружен полностью. Это связано с тем, что некоторые операции просто нельзя выполнить до получения результатов предыдущих. Например, если мы хотим вычислить значение выражения (b/2 – d), то одновременно произвести операции деления и вычитания нам не удастся, так как результат операции деления (из которого производится вычитание) неизвестен заранее. Такая ситуация носит название истинной взаимозависимости данных и означает, что входные данные для операции вычитания определяются в результате другой операции, в нашем случае операции деления. Повысить производительность обработки при истинных взаимозависимостях данных путем одновременного исполнения двух операций невозможно.

 

Но очень часто в программах существуют ложные взаимозависимости. Они возникают в случае, когда следующие друг за другом команды заносят свои результаты в один и тот же регистр. Если команды выполняются в естественном порядке их записи в программе, то ничего страшного не происходит; но если они выполняются не по порядку, то нельзя гарантировать правильность модификации содержимого регистра.

 

Пусть необходимо выполнить три команды: первая команда имеет большую длительность исполнения (например, команда умножения), вторая команда сложения или сдвига – короткая, а третья команда опять длинная. В качестве исходных данных вторая команда должна использовать результат, получаемый от первой команды. Если команды выполняются на нескольких конвейерах неупорядоченно, то возможен случай, когда вторая команда (в нашем случае сложения) будет завершена до окончания первой, т.е. она использовала прежнее содержимое регистра, в который должен быть помещен результат выполнения первой команды.

 

Еще один тип ошибок вследствие ложных взаимозависимостей возникает в случае, когда вторая команда может испортить данные, используемые в качестве входных для первой. Этот тип ошибок также возможен при нарушении естественного порядка следования команд. Эти типы ошибок особенно часто встречаются в архитектурах с ограниченным числом РОНов.

 

Для устранения ошибок при ложных взаимозависимостях необходимо воспользоваться методом, позволяющим переименовывать регистры. Процессоры, реализующие принцип переименования регистров, обладают большим числом физических регистров, чем определяется архитектурой. Увеличить число «архитектурных» регистров невозможно, так как это привело бы к нарушению программной совместимости компьютеров. Если какой-либо команде требуется регистр, то процессор динамически ставит в соответствие (переименовывает) этому архитектурному регистру один из нескольких свободных физических регистров. Когда другая команда пытается обратиться к тому же архитектурному регистру, ему ставится в соответствие уже другой физический регистр.

 

Для динамической подстановки номера физического регистра вместо логического служит справочная таблица, которая обновляется после декодирования каждой команды. Результат заносится в свободный физический регистр, но адрес логического регистра запоминается для восстановления вычислительного процесса при прерываниях. Естественно, что переименование не может быть «вечным», оно действует только, пока команды продвигаются по конвейерам.

 

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

 

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

 

1. Конве́йер — это способ организации вычислений, используемый в современных процессорах и контроллерах с целью ускорения выполнения инструкций.

2. Регистр процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения РОН/регистр данных) или содержащая данные, необходимые для работы процессора



2018-07-06 564 Обсуждений (0)
Переименование регистров. 0.00 из 5.00 0 оценок









Обсуждение в статье: Переименование регистров.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (564)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)