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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Переименование регистров (англ. Register Renaming) — метод ослабления взаимозависимостей команд, применяемый в процессорах, осуществляющих их внеочередное исполнение.

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

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

Переименование регистров представляет собой преобразование программных ссылок на архитектурные регистры в ссылки на физические регистры и позволяет ослабить влияние ложных взаимозависимостей за счёт использования большого количества физических регистров вместо ограниченного количества архитектурных (так, например, x86-совместимые процессоры архитектуры Intel P6 содержат 40 физических регистров). При этом процессор отслеживает, состояние каких физических регистров соответствуют состоянию архитектурных, а выдача результатов осуществляется в порядке, который предусмотрен программой.