Спекулятивное выполнение

редактировать
Техника оптимизации

Спекулятивное выполнение - это метод оптимизации, где компьютерная система выполняет некоторую задачу, которая может не понадобиться. Работа выполняется до того, как станет известно, действительно ли она необходима, чтобы предотвратить задержку, которая может возникнуть при выполнении работы после того, как станет известно, что она необходима. Если выясняется, что работа в конце концов не нужна, большинство изменений, внесенных в работу, отменяются, а результаты игнорируются.

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

Спекулятивная многопоточность - это особый случай спекулятивного исполнения.

Содержание

  • 1 Обзор
  • 2 Варианты
    • 2.1 Активное выполнение
    • 2.2 Прогнозируемое выполнение
  • 3 Понятия, связанные с данным
    • 3.1 Ленивое выполнение
  • 4 Уязвимости системы безопасности
  • 5 См. Также
  • 6 Ссылки

Обзор

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

Варианты

Спекулятивное вычисление было связано с более ранней концепцией.

Нетерпеливое выполнение

Активное выполнение - это форма спекулятивного выполнения, при которой выполняются обе стороны условной ветви; однако результаты фиксируются, только если предикат истинен. При неограниченных ресурсах активное выполнение (также известное как выполнение оракула) теоретически обеспечит ту же производительность, что и идеальное предсказание переходов . При ограниченных ресурсах активное выполнение следует применять осторожно, поскольку количество необходимых ресурсов растет экспоненциально с каждым уровнем выполняемой ветви.

Выполнение с прогнозированием

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

Понятия, связанные с данным

Ленивое выполнение

Ленивое выполнение является противоположностью стремительного выполнения и не предполагает предположений. Включение спекулятивного исполнения в реализации ленивого языка Haskell - это текущая тема исследований. Стремительный Haskell, вариант языка, основан на идее спекулятивного исполнения. В докторской диссертации 2003 г. GHC поддерживает своего рода спекулятивное исполнение с механизмом прерывания, позволяющим отказаться от неудачного выбора, называемого оптимистическим исполнением. Это было сочтено слишком сложным.

Уязвимости в системе безопасности

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

К ним относятся:

См. также

Ссылки

Последняя правка сделана 2021-06-09 02:14:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте