Jump to content

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

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

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

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

Обзор [ править ]

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

Варианты [ править ]

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

Стремительное исполнение [ править ]

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

Прогнозируемое исполнение [ править ]

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

Ранахед [ править ]

Runahead — это метод, который позволяет компьютерному процессору спекулятивно предварительно обрабатывать инструкции во время циклов промахов кэша . Предварительно обработанные инструкции используются для создания потоков инструкций и данных предварительной выборки путем выполнения инструкций, приводящих к промахам в кэше (обычно называемым загрузками с большой задержкой ) до того, как они обычно происходят, что эффективно скрывает задержку памяти . В режиме опережения процессор использует ресурсы простоя выполнения для расчета адресов потоков команд и данных, используя доступную информацию, независимую от промаха в кэше. Как только процессор устранит первоначальный промах в кэше, все результаты упреждения отбрасываются, и процессор возобновляет выполнение в обычном режиме. Основной вариант использования этой техники — смягчение последствий стены памяти . Этот метод также можно использовать для других целей, таких как предварительное вычисление результатов ветвления для достижения высокоточного предсказания ветвления . [8]

Связанные понятия [ править ]

Ленивое исполнение [ править ]

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

Уязвимости безопасности [ править ]

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

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Лэмпсон, Батлер (2006). «Ленивое и спекулятивное исполнение в компьютерных системах» . В Момензаде, Мариам; Шварцман, Александр А. (ред.). Принципы распределенных систем . 10-я Международная конференция по принципам распределенных систем. Конспекты лекций по информатике. Том. 4305. Бордо, Франция: Шпрингер. стр. 1–2. дои : 10.1007/11945529_1 . ISBN  978-3-540-49991-6 .
  2. Перейти обратно: Перейти обратно: а б Рагхаван, Прабхакар; Шахнай, Хадас; Янив, Мира (1998). «Динамические схемы спекулятивного выполнения кода» . Материалы шестого международного симпозиума по моделированию, анализу и моделированию компьютерных и телекоммуникационных систем . IEEE. стр. 309–314. дои : 10.1109/MASCOT.1998.693711 . Проверено 18 января 2011 г.
  3. ^ Кунг, HT ; Джон Т. Робинсон (июнь 1981 г.). «Об оптимистических методах управления параллелизмом» (PDF) . АКМ Транс. Система баз данных . Том. 6. Архивировано (PDF) из оригинала 31 августа 2019 г.
  4. ^ Бернд Криг-Брюкнер (1992). ESOP '92: 4-й Европейский симпозиум по программированию, Ренн, Франция, 26-28 февраля 1992 г.: материалы . Спрингер. стр. 56–57. ISBN  978-3-540-55253-6 . Проверено 18 января 2011 г.
  5. ^ Рэнди Б. Осборн (21 марта 1990 г.). «Спекулятивные вычисления в Multilisp» . Параллельный Лисп: языки и системы ( PS ). Конспекты лекций по информатике. Том. 441. Исследовательская лаборатория Digital Equipment Corporation . стр. 103–137. дои : 10.1007/BFb0024152 . ISBN  3-540-52782-6 . Архивировано из оригинала 07 февраля 2017 г. Проверено 26 января 2018 г.
  6. ^ Юрий Шильц; Борут Робич; Тео Унгерер (1999). Архитектура процессора: от потока данных к суперскаляру и далее . Спрингер. стр. 148-150 . ISBN  978-3-540-64798-0 . Проверено 21 января 2011 г.
  7. ^ Марк Д., Хилл; Норман П., Жуппи ; Гуриндар С., Сохи (2000). Чтения по компьютерной архитектуре . Морган Кауфман. ISBN  9781558605398 . Проверено 5 января 2018 г.
  8. ^ Пруэтт, Стивен; Патт, Йельский университет (октябрь 2021 г.). «Branch Runahead: альтернатива прогнозированию ветвей для невозможного предсказать ветвления» . MICRO-54: 54-й ежегодный международный симпозиум IEEE/ACM по микроархитектуре . МИКРО '21. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 804–815. дои : 10.1145/3466752.3480053 . ISBN  978-1-4503-8557-2 . S2CID   239011545 .
  9. ^ Джонс, Саймон Пейтон; Энналс, Роберт (1 августа 2003 г.). «Оптимистическая оценка: стратегия быстрой оценки для нестрогих программ» . Проверено 15 мая 2019 г. - через www.microsoft.com. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  10. ^ «[Haskell] Оптимистическая оценка?» . 31 августа 2006 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c4fccdf2f987fb44dce3676dfa2ab7ca__1714598820
URL1:https://arc.ask3.ru/arc/aa/c4/ca/c4fccdf2f987fb44dce3676dfa2ab7ca.html
Заголовок, (Title) документа по адресу, URL1:
Speculative execution - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)