Что такое спекулятивное исполнение?
С новым недостатком Apple Security в новостях, самое время вернуть себе вопрос о том, что такое спекулятивное исполнение и как оно работает. Эта тема получила большую дискуссию несколько лет назад, когда Spectre и Meltdown часто находились в новостях, и каждые несколько месяцев появлялись новые атаки по боковым каналам.
Спекулятивное выполнение - это метод, используемый для повышения производительности всех современных микропроцессоров до той или иной степени, включая чипы, созданные или разработанные AMD, ARM, IBM и Intel. Современные ядра процессора, которые не используют спекулятивное выполнение, предназначены для ультра-низко-низко-энергосбережения или минимальных задач обработки. Различные недостатки безопасности, такие как Spectre, Meltdown, ForeShadow и MDS, все нацелены на спекулятивное выполнение несколько лет назад, как правило, на процессорах Intel.
Что такое спекулятивное исполнение?
Спекулятивное выполнение является одним из трех компонентов выполнения вне порядка, также известного как динамическое выполнение. Наряду с множественным прогнозом ветвей (используется для прогнозирования инструкций, наиболее вероятно, понадобится в ближайшем будущем) и анализ данных данных (используемый для соответствия инструкциям для оптимального выполнения, в отличие от выполнения их в приказе, в котором они пришли), спекулятивное выполнение доставило Драматическое улучшение производительности по сравнению с предыдущими процессорами Intel, когда впервые представилось в середине 1990-х годов. Поскольку эти методы работали так хорошо, они были быстро приняты AMD, которая использовала обработку вне порядка, начиная с K5.
Акцент ARM на мобильных процессорах с низким энергопотреблением изначально не допустил его на игровом поле OOOE, но компания приняла выполнение вне порядка, когда она построила кору A9 и продолжает расширять использование техники с более поздним, более мощной корой. -бреновые процессоры.
Вот как это работает. Современные процессоры - все это трубопроводится, что означает, что они способны выполнять несколько инструкций параллельно, как показано на диаграмме ниже.
Представьте, что зеленый блок представляет ветвь if-then-else. Предсказатель ветви вычисляет, какая ветвь с большей вероятностью будет взят, получает следующий набор инструкций, связанных с этой ветвью, и начинает спекулятивно выполнять их, прежде чем он узнает, какой из двух ветвей кода он будет использовать. На приведенной выше диаграмме эти спекулятивные инструкции представлены в виде фиолетовой коробки. Если предиктор филиала правильно угадал, то следующий набор инструкций, необходимый для процессора, выстроился в очередь и готов к работе, без трубопровода или задержки выполнения.
Без прогнозирования ветви и спекулятивного выполнения процессор не знает, какую филиал потребуется до тех пор, пока первая инструкция в трубопроводе (зеленая коробка) не завершит выполнение и перемещается на стадию 4. вместо перемещения прямо от одного набора инструкций к Затем процессор должен ждать прибытия соответствующих инструкций. Это наносит вред производительности системы, так как пришло время, когда процессор может выполнять полезную работу.
Причина, по которой это «спекулятивное» исполнение, заключается в том, что процессор может быть неправильным. Если это так, система загружает соответствующие данные и вместо этого выполняет эти инструкции. Но предикторы филиалов не очень часто; Уровень точности обычно выше 95 процентов.
Зачем использовать спекулятивное выполнение?
Десятилетия назад, до того, как было изобретено не выполнение, процессоры были тем, что мы сегодня называем «по порядку». Инструкции, выполненные в приказе, который они были получены, без попыток переупорядочить их или выполнить их более эффективно. Одна из основных проблем с выполнением порядка заключается в том, что трубопроводной стойло останавливает весь процессор, пока проблема не будет решена.
Другая проблема, которая привела к разработке спекулятивного выполнения, была разрыв между процессорами и основными скоростями памяти. На графике ниже показан зазор между ЦП и часами памяти. По мере роста разрыва, количество времени, которое ЦП потратил на ожидание основной памяти, чтобы доставить информацию, также росло. Такие функции, как L1, L2 и CACHES L3 и спекулятивное выполнение, были разработаны для того, чтобы ЦП был занят и минимизировал время, которое он потратил на холостом ходу.
Это сработало. Комбинация больших кэш-кэшей и исполнения вне порядка дала Intel Pentium Pro и Pentium II возможность растянуть свои ноги способами предыдущих чипсов не могли совпадать. Этот график из статьи Anandtech 1997 года ясно показывает преимущество.
Благодаря комбинации спекулятивного исполнения и больших кэшей Pentium II 166 решительно превосходит Pentium 250 MMX, несмотря на то, что последний имеет преимущество в тактовой скорости в 1,51 раза над первым.
В конечном счете, именно Pentium II дал преимущества исполнения вне порядка большинству потребителей. Pentium II был быстрым микропроцессором по сравнению с системами Pentium, которые были лучшими в течение короткого времени. AMD был абсолютно способным вариантом второго уровня, но до тех пор, пока оригинальный Athlon не был запущен, у Intel был замок на короне Absolute Performance.
Pentium Pro и более поздний Pentium II были намного быстрее, чем использовалась более ранняя архитектура Intel. Это не было гарантировано. Когда Intel разработала Pentium Pro, она потратила значительную сумму своего матрица и бюджета мощности, позволив вывести из выполнения порядка. Но ставка окупилась, большое время.
Intel была уязвима к большему количеству атак побочных каналов, которые вышли на рынок за последние три года, чем AMD или ARM, потому что он решил размышлять более агрессивно и нарастал, обнаруживая определенные типы данных в процессе. Несколько раундов патчей снизили эти уязвимости в предыдущих чипах, а новые процессоры разработаны с исправлением безопасности для некоторых из этих проблем в оборудовании. Следует также отметить, что риск такого рода атак побочных каналов остается теоретическим. За годы, прошедшие с тех пор, как они появились, не сообщалось об атаке с использованием этих методов.
Существуют различия между тем, как Intel, AMD и ARM реализуют спекулятивное выполнение, и эти различия являются частью того, почему Intel подвергается воздействию некоторых из этих атак так, как другие поставщики не являются. Но спекулятивное выполнение, как метод, просто слишком ценен, чтобы прекратить использование. Каждая высококачественная архитектура ЦП сегодня использует выполнение вне порядка. И спекулятивное выполнение, хотя и внедренное внедренным по сравнению с компанией к компании, используется каждым из них. Без спекулятивного выполнения выполнение вне порядка не будет функционировать.
Состояние уязвимостей по боковым каналам в 2021 году
С 2018 по 2020 год мы увидели ряд обсуждаемых уязвимостей побочных каналов, в том числе Spectre, Meltdown, ForeShadow, RIDL, MDS, Zombieload и другие. Исследователи безопасности стали немного модным выдать серьезный отчет, рыночное имя и случайные пиар-взрывы, которые поднимали призрак (без каламбура) разрушительных вопросов безопасности, которые на сегодняшний день не появились.
Исследования по боковым каналам продолжаются-в марте была обнаружена новая потенциальная уязвимость в процессорах Intel-но одна из причин работы боковых атак заключается в том, что физика позволяет нам рассчитывать на информацию, используя каналы, не предназначенные для ее передачи. (Атаки по боковым каналам-это атаки, которые фокусируются на слабых сторонах реализации для утечки данных, а не сосредоточены на конкретном алгоритме, чтобы взломать его).
Мы регулярно узнаем о космосе на космосе, наблюдая за ним в спектре энергии, которые люди не могут естественно воспринимать. Мы наблюдаем за нейтрино, используя детекторы, утонувшие глубоко в таких местах, как озеро Байкал, именно потому, что характеристики этих мест помогают нам различить слабый сигнал, который мы ищем от шума вселенной, которая занимается его бизнесом. Многое из того, что мы знаем о геологии, астрономии, сейсмологии и любой области, где прямое наблюдение данных является либо невозможным, либо непрактичным концептуально связано с идеей «протекающих» побочных каналов. Люди очень хороши в дразните данные, измеряя косвенно. Существуют постоянные усилия по проектированию чипов, которые затрудняют подвиги боковых каналов, но будет очень трудно их полностью заблокировать.
Это не предназначено для того, чтобы подразумевать, что эти проблемы безопасности не являются серьезными или что фирмы процессора должны подбросить руки и отказываться исправлять их, потому что вселенная неудобна, но на данный момент это гигантская игра в моле, и это может Нельзя быть возможным, чтобы обеспечить чип против всех таких атак. По мере того, как изобретены новые методы безопасности, могут также появиться новые методы придумывания, которые полагаются на другие боковые каналы. Некоторые исправления, такие как отключение гиперпоточника, могут улучшить безопасность, но в определенных приложениях существенные показатели производительности.
К счастью, пока все это обратно и поля теоретическое. Intel была наиболее повлияла на компанию по этим раскрытиям, но ни одно из побочных каналов, которые упали с тех пор, как Spectre и Meltdown не использовался в публичной атаке. AMD, аналогичным образом, не знает ни одной группы или организации, нацеленной на Zen 3, его недавнее раскрытие. Такие проблемы, как вымогатели, стали намного хуже за последние два года, без необходимости помощи от уязвимостей побочных каналов.
В конечном счете, мы ожидаем, что AMD, Intel и другие поставщики продолжат исправлять эти проблемы по мере их возникновения, с комбинацией аппаратного, программного обеспечения и обновлений прошивки. Концептуально, подобные атаки побочных каналов чрезвычайно сложны, если не невозможно, предотвратить. Конкретные проблемы могут быть смягчены или оборваны, но характер спекулятивного исполнения означает, что определенное количество данных будет протекать при определенных обстоятельствах. Возможно, невозможно предотвратить его, не отказавшись от гораздо большей производительности, чем большинство пользователей когда -либо хотели бы торговать.
Читать далее
Что такое спекулятивное исполнение?
Спекулятивное исполнение жизненно важно для высокой производительности на современных ПК. Мы обсуждаем, как это работает и почему это считается потенциальной угрозой безопасности.
Что такое спекулятивное исполнение?
Спекулятивное исполнение было в новостях в последнее время, как правило, при обсуждении ошибок Meltdown и Spectre. Мы объясняем эту тему.
Новые уязвимости в области спекулятивного исполнения
Новый вектор атаки против процессоров Intel был обнаружен, опять же, на спекулятивном исполнении.
Intel раскрывает новые спекулятивные уязвимости безопасности выполнения
Корпорация Intel раскрыла новый набор спекулятивных проблем безопасности выполнения, которые при определенных обстоятельствах могут привести к утечке данных из процессоров. Насколько серьезная проблема, которую они представляют в практическом плане, все еще обсуждается.