Що таке спекулятивне виконання?
З новою недоліком безпеки Apple у новинах, настав час переглянути питання про те, що таке спекулятивне виконання та як це працює. Ця тема отримала велику кількість обговорень кілька років тому, коли Spectre та Meltdown часто були в новинах, і нові напади бічних каналів вискакували кожні кілька місяців.
Спекулятивне виконання - це методика, яка використовується для підвищення продуктивності всіх сучасних мікропроцесорів до тієї чи іншої ступеня, включаючи мікросхеми, побудовані або розроблені AMD, ARM, IBM та Intel. Сучасні ядра процесора, які не використовують спекулятивне виконання, призначені для ультра-низьких силових середовищ або мінімальних завдань для обробки. Різні недоліки безпеки, такі як Spectre, Meltdown, Foreshadow та MDS, всі цілеспрямовані спекулятивні виконання кілька років тому, як правило, на процесорах Intel.
Що таке спекулятивне виконання?
Спекулятивне виконання є однією з трьох компонентів виконання поза замовленням, також відомого як динамічне виконання. Поряд з декількома прогнозуваннями (використовується для прогнозування інструкцій, які, швидше за все, будуть потрібні найближчим часом) та аналіз потоку даних (використовується для узгодження інструкцій для оптимального виконання, на відміну від виконання їх у порядку, в якому вони прийшли), спекулятивне виконання доставило a Драматичне підвищення ефективності порівняно з попередніми процесорами Intel, коли вперше запроваджено в середині 1990-х. Оскільки ці методи працювали так добре, вони швидко прийняли AMD, який використовував обробку поза замовленням, починаючи з K5.
Фокус ARM на мобільних процесорах з малою потужністю спочатку не виходило з умов Oooe, але компанія прийняла виконання поза замовленням, коли вона побудувала кору A9 і продовжує розширювати його використання з пізнішою, більш потужною корою -Бранді процесори.
Ось як це працює. Сучасні процесори - всі трубопроводи, а це означає, що вони здатні виконувати декілька інструкцій паралельно, як показано на діаграмі нижче.
Уявіть, що зелений блок являє собою гілку, що знаходиться в тому. Прогноз гілки підраховує, яка гілка, швидше за все, буде прийнята, отримує наступний набір інструкцій, пов'язаних з цією гілкою, і починає спекулятивно виконувати їх, перш ніж він дізнається, яка з двох гілки коду ним буде використовувати. На діаграмі вище ці спекулятивні інструкції представлені як фіолетова коробка. Якщо прогноз гілки правильно здогадався, то наступний набір інструкцій, необхідні процесори, вишикуються і готові до роботи, без затримки трубопроводу або затримки виконання.
Без прогнозування та спекулятивного виконання процесор не знає, яка гілка знадобиться до тих пір Далі, процесор повинен чекати, коли надійдуть відповідні інструкції. Це шкодить продуктивності системи, оскільки настав час процесор може виконувати корисну роботу.
Причина, що вона "спекулятивна" виконання полягає в тому, що процесор може бути помилковим. Якщо це так, система завантажує відповідні дані та виконує ці інструкції замість цього. Але гілки прогнози не дуже часто; Коефіцієнт точності, як правило, перевищує 95 відсотків.
Навіщо використовувати спекулятивне виконання?
Десятиліття тому, до того, як було винайдено виконання поза замовленням, процесори були те, що ми сьогодні називаємо «по порядку». Інструкції, виконані в порядку, який вони отримали, не намагаючись їх переробити або виконати їх більш ефективно. Однією з головних проблем із виконанням у порядку є те, що стійла трубопроводу зупиняє весь процесор, поки проблема не буде вирішена.
Іншою проблемою, яка спричинила розробку спекулятивного виконання, був розрив між процесором та основними швидкостями пам'яті. На графіку нижче показаний зазор між процесором та годинниками пам'яті. У міру зростання розриву кількість часу, який процесор витрачав на очікування основної пам’яті, і зростала інформація. Такі функції, як кеш L1, L2 та L3 та спекулятивне виконання, були розроблені для того, щоб процесор зайнятий та мінімізувати час, який він провів на холостому ходу.
Це спрацювало. Поєднання великих кеш-позашляховиків та виконання поза замовленням дало можливість Pentium Pro та Pentium II, щоб розтягнути ноги таким чином, щоб попередні чіпси не могли відповідати. Цей графік із статті AnandTech 1997 року чітко показує перевагу.
Завдяки поєднанню спекулятивного виконання та великих кешів, Pentium II 166 рішуче перевершує Pentium 250 MMX, незважаючи на те, що останній має перевагу швидкості годин у 1,51x.
Зрештою, саме Pentium II надав переваги виконання поза замовленням більшості споживачів. Pentium II був швидким мікропроцесором відносно систем Pentium, які були найвищими лише за короткий час. AMD був абсолютно здібним варіантом другого рівня, але поки оригінальний Athlon запустився, Intel мав замок на короні абсолютного виконання.
Pentium Pro та пізніший Pentium II були набагато швидшими, ніж раніше використовувані попередні архітектури. Це не було гарантовано. Коли Intel спроектував Pentium Pro, вона витрачала значну кількість його штампу та бюджету на електроенергію, що дозволяє виконати замовлення. Але ставка окупилася, великий час.
Intel була вразлива до більшої кількості нападів бічних каналів, які прийшли на ринок протягом останніх трьох років, ніж AMD або ARM, оскільки вона вирішила спекулювати більш агресивно і завершити викриття певних типів даних у процесі. Кілька раундів патчів зменшили ці вразливості в попередніх мікросхемах, а новіші процесори розроблені з виправленням безпеки для деяких із цих проблем у обладнанні. Слід також зазначити, що ризик таких видів нападів бічних каналів залишається теоретичним. У роки, коли вони з'явилися, не було зареєстровано нападу, використовуючи ці методи.
Існують відмінності між тим, як Intel, AMD та ARM впроваджують спекулятивне виконання, і ці відмінності є частиною того, чому Intel піддається деяким із цих атак таким чином, щоб інші продавці не є. Але спекулятивне виконання, як техніка, просто занадто цінне, щоб припинити використання. Кожна архітектура високого класу процесора сьогодні використовує виконання поза замовленням. І спекулятивне виконання, при цьому реалізується по -різному від компанії до компанії, використовується кожним із них. Без спекулятивного виконання виконання поза замовленням не функціонує.
Стан вразливості бічних каналів у 2021 році
З 2018 по 2020 рік ми побачили, як обговорювалося ряд вразливостей бічних каналів, включаючи Spectre, Meltdown, Foreshadow, Ridl, MDS, Zombieload та інші. Для дослідників безпеки стало дещо модним видати серйозний звіт, зручну на ринку назву та випадкові вибухи PR, які підняли привид (не призначений) руйнівних проблем безпеки, які, на сьогоднішній день, не з'явилися.
Дослідження бічних каналів триває-у березні було виявлено нову потенційну вразливість у процесах Intel-але частина причини роботи з атаками бічних каналів полягає в тому, що фізика дозволяє нам пригнічувати інформацію, використовуючи канали, які не призначені для її передачі. (Атаки бічних каналів-це атаки, які зосереджуються на слабких місцях впровадження, щоб просочитись, а не зосереджуватися на конкретному алгоритмі, щоб зламати його).
Ми регулярно вивчаємо речі про космос, спостерігаючи за ним у спектрах енергії, які люди, природно, не можуть сприймати. Ми спостерігаємо за нейтрино, використовуючи детектори глибоко в таких місцях, як озеро Байкал, саме тому, що характеристики цих місць допомагають нам розпізнати слабкий сигнал, який ми шукаємо від шуму Всесвіту, що займається його бізнесом. Дуже багато того, що ми знаємо про геологію, астрономію, сейсмологію та будь -яке поле, де пряме спостереження за даними є неможливим, або непрактичним концептуально стосується ідеї "протікаючих" бічних каналів. Люди дуже добре дражнять дані, вимірюючи опосередковано. Постійні зусилля щодо розробки мікросхем, які ускладнюють експлуатацію бічних каналів, але це буде дуже важко повністю заблокувати.
Це не має на увазі, що ці проблеми з безпекою не є серйозними або що фірми процесора повинні кинути руки і відмовитись виправити їх, оскільки Всесвіт незручний, але це гігантська гра Whack-a-Mole на даний момент, і це може поки Неможливо забезпечити чіп проти всіх таких атак. По мірі винайдення нових методів безпеки можуть з’явитися нові методи, які покладаються на інші бічні канали. Деякі виправлення, як-от відключення гіпер-поток, можуть покращити безпеку, але мають значні хіти ефективності в певних додатках.
На щастя, поки що все це назад і вперед є теоретичним. Intel-це компанія найбільше вплинула на ці розкриття інформації, але жодне з розголошення бічних каналів, які не впали з моменту, коли Spectre і Meltdown не використовувались у громадській атаці. AMD, аналогічно, усвідомлює жодну групу чи організацію, орієнтовану на Zen 3, недавнє розкриття. Такі проблеми, як викуп, стали набагато гіршими за останні два роки, не потребуючи допомоги з боку вразливості бічних каналів.
Зрештою, ми очікуємо, що AMD, Intel та інші постачальники продовжуватимуть виправляти ці проблеми, коли вони виникають, з поєднанням апаратних, програмних програм та оновлень програмного забезпечення. Концептуально, такі напади бічних каналів, як вони, надзвичайно важкі, якщо не неможливі, щоб запобігти. Конкретні проблеми можна пом'якшити або працювати навколо, але характер спекулятивного виконання означає, що певна кількість даних просочується за конкретних обставин. Можливо, неможливо запобігти, не відмовляючись від набагато більшої продуктивності, ніж більшість користувачів хотіли б торгувати.
Читати далі
Що таке спекулятивне виконання?
Спекулятивне виконання є життєво важливим для високої продуктивності в сучасних ПК. Ми обговорюємо, як це працює і чому це вважається потенційною загрозою безпеки.
Що таке спекулятивне виконання?
Спекулятивне виконання було в новинах пізнього, як правило, при обговоренні помилок Meltdown і Spectre. Ми пояснюємо цю тему.
Нова спекулятивна критична помилка при виконанні програмного забезпечення гвардії Intel
Новий вектор атаки проти процесорів Intel був виявлений - знову заснований на спекулятивному виконанні.
Що таке спекулятивне виконання?
Спекулятивне виконання було в новинах останніх, як правило, при обговоренні недоліків Meltdown і Spectre. Ми пояснюємо тему.