Внеочередное исполнение команд
Внеочередное исполнение позволяет процессору выполнять инструкции сразу же, как только их операнды готовы, а не строго в программном порядке, используя переименование регистров и буферизацию для выявления параллелизма, при этом сохраняя последовательность результатов.
Definition
Внеочередное исполнение — это микроархитектурный метод, при котором процессор динамически переупорядочивает выполнение инструкций для запуска независимых инструкций всякий раз, когда их операнды доступны, используя буферизацию и переименование для сохранения видимости последовательного, упорядоченного завершения.
Scope
Эта тема охватывает динамическое планирование: станции резервирования, переименование регистров для устранения ложных зависимостей, буфер переупорядочивания, обеспечивающий последовательную фиксацию результатов, и восстановление после спекулятивного выполнения. Она непосредственно основывается на алгоритме Томасуло. Исключаются предсказание направления ветвлений (предсказание ветвлений) и более широкое понятие степени параллелизма (параллелизм на уровне инструкций), с акцентом на сам механизм переупорядочивания.
Core questions
- Как процессор может выполнять инструкции вне программного порядка, но при этом выдавать корректные, упорядоченные результаты?
- Как переименование регистров устраняет зависимости «запись после чтения» и «запись после записи»?
- Каков вклад станций резервирования и буфера переупорядочивания?
- Как точно восстанавливаются исключения и ошибочные предсказания в ядре с внеочередным исполнением?
Key concepts
- динамическое планирование
- станции резервирования
- переименование регистров
- общая шина данных
- буфер переупорядочивания
- последовательная фиксация
- точные исключения
- восстановление спекулятивного выполнения
Key theories
- Алгоритм Томасуло
- Схема Томасуло использует станции резервирования и общую шину данных для переименования регистров и отправки инструкций в функциональные блоки по мере доступности их операндов, что позволяет выполнять инструкции вне очереди, соблюдая только истинные зависимости по данным.
- Точные исключения через последовательную фиксацию
- Буфер переупорядочивания хранит результаты внеочередных инструкций и фиксирует их в программном порядке, так что исключения и ошибочные предсказания могут быть обработаны точно, как если бы выполнение было строго последовательным.
Mechanisms
Декодированные инструкции переименовываются в физические регистры и помещаются в станции резервирования или очередь выдачи, где они ожидают операндов, передаваемых по шине результатов. Когда они готовы, они выполняются на доступных функциональных блоках в любом порядке. Буфер переупорядочивания отслеживает исходный программный порядок и фиксирует результаты последовательно, отбрасывая спекулятивные результаты при ошибочном предсказании или исключении, так что архитектурное состояние всегда является точным.
Clinical relevance
Внеочередное исполнение является основным механизмом высокопроизводительных центральных процессоров, скрывающим задержки памяти и выполнения за счет поиска независимой работы. Оно также имеет последствия для безопасности: поскольку спекулятивная, внеочередная работа может временно получать доступ к данным до того, как будет отменена, это позволило реализовать классы микроархитектурных атак по побочным каналам Spectre и Meltdown.
History
Томасуло представил динамическое планирование в IBM System/360 Model 91 в 1967 году. Комбинация с буфером переупорядочивания для точных исключений, разработанная в 1980-х годах, сделала внеочередное исполнение практичным для процессоров общего назначения, и оно стало стандартом в высокопроизводительных разработках с середины 1990-х годов.
Debates
- Производительность против сложности, энергопотребления и безопасности
- Внеочередное исполнение обеспечивает высокую производительность однопоточных задач, но за счет значительных затрат на аппаратную сложность и энергопотребление, а его спекуляции оказались уязвимыми; это подпитывает дебаты о том, насколько агрессивно следует спекулировать по сравнению с предпочтением более простых, эффективных или безопасных конструкций.
Key figures
- Robert Tomasulo
- Yale Patt
- James E. Smith
- John L. Hennessy
Related topics
Seminal works
- tomasulo1967
- hennessy2019
Frequently asked questions
- Если инструкции выполняются вне очереди, как программа остается корректной?
- Процессор переупорядочивает только выполнение, а не результаты. Переименование регистров гарантирует соблюдение истинных зависимостей по данным, а буфер переупорядочивания фиксирует результаты в исходном программном порядке, так что видимое архитектурное состояние в точности соответствует тому, что было бы получено при последовательном выполнении.
- Что такое переименование регистров?
- Переименование регистров сопоставляет архитектурные регистры, указанные в инструкциях, с большим пулом физических регистров. Это устраняет ложные (именные) зависимости, возникающие из-за повторного использования имен регистров, позволяя большему количеству независимых инструкций выполняться параллельно без конфликтов из-за хранения регистров.