ScholarGate
Ассистент

Внеочередное исполнение команд

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

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

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

Methods for this concept

Related concepts