Введение

Единая станция резервирования, также известная как единый планировщик, является децентрализованной функцией микроархитектуры процессора, обеспечивающей переименование регистров и используемой алгоритмом Томасуло для динамического планирования инструкций. Станции резервирования позволяют процессору извлекать и повторно использовать значение данных сразу после его вычисления, не дожидаясь сохранения в регистр и последующего чтения. При выдаче инструкции они могут указать станцию резервирования, из которой требуется считать входные данные. Если несколько инструкций должны записать данные в один и тот же регистр, все они могут выполняться, при этом фактически записывается только последняя (логически) инструкция. Перед началом выполнения проверяется доступность операндов (RAW-зависимость) и свободен ли исполнительный блок (структурный конфликт). Инструкции хранятся вместе с доступными параметрами и выполняются, когда они готовы. Результаты идентифицируются исполнительным блоком, который будет выполнять соответствующую инструкцию. Переименование регистров автоматически решает конфликты Write-After-Read (WAR) и Write-After-Write (WAW). Поскольку это полностью ассоциативная структура, она требует значительных затрат на компараторы (необходимо сравнивать все результаты, возвращаемые из исполнительных блоков, со всеми сохраненными адресами). В алгоритме Томасуло инструкции последовательно выдаются на станции резервирования, которые буферизуют как саму инструкцию, так и её операнды. Если операнд недоступен, станция резервирования отслеживает общую шину данных в ожидании его появления. Когда операнд становится доступным, станция резервирования буферизует его, и выполнение инструкции может начаться. Функциональные устройства (например, сумматор или умножитель) имеют собственные соответствующие станции резервирования. Выход функционального устройства подключается к общей шине данных, где станции резервирования прослушивают необходимые операнды.