Що таке спекулятивне виконання?

Що таке спекулятивне виконання?

Завдяки дефектовому захисту від AMD-центрального потенціалу в новинах, це гарний час, щоб переглянути питання про те, що таке спекулятивне виконання та як це працює. Ця тема отримала велике обговорення кілька років тому, коли привид і розплавлення часто були в новинах, а нові атаки бічних каналів з'являлися кожні кілька місяців.

Спекулятивне виконання - це техніка, яка використовується для підвищення продуктивності всіх сучасних мікропроцесорів до одного ступеня або іншого, включаючи чіпси, побудовані або розроблені AMD, ARM, IBM та Intel. Сучасні сердечники процесора, які не використовують спекулятивне виконання, є призначені для ультра низької енергетики або мінімальних завдань обробки. Різні недоліки безпеки, такі як Spectre, Meltdown, Foreshadow, і MDS, все цілеспрямоване спекулятивне виконання кілька років тому, як правило, на Intel CPUS.

Що таке спекулятивне виконання?

Спекулятивне виконання - це одна з трьох компонентів виконання поза замовлення, також відома як динамічне виконання. Поряд з прогнозуванням декількох гілок (використовується для прогнозування інструкцій, швидше за все, необхідно в найближчому майбутньому), а аналіз даних (використовується для вирівнювання інструкцій для оптимального виконання, на відміну від виконання їх у порядку, в якому вони вийшли), спекулятивне виконання Покращення драматичних продуктивності над попередніми процесорами Intel, коли вперше вводиться в середині 1990-х років. Оскільки ці методи працювали так добре, вони швидко прийняли AMD, який використовував обробку поза замовленням, починаючи з K5.

Фокус руки на мобільних процесорах з низьким рівнем енергетичного мобільного процесора, спочатку зберігав його з польового поля, але компанія прийняла виконання за замовленням, коли вона побудувала кориді Cortex A9 і продовжував розширювати його використання техніки з більш потужною кори - Брандинський процесор.

Ось як це працює. Сучасний CPU є всіма контейнерами, що означає, що вони здатні виконувати кілька інструкцій паралельно, як показано на схемі нижче.

Що таке спекулятивне виконання?

Уявіть собі, що зелений блок являє собою гілку, а потім-інша. Представник розраховує, яка гілка, швидше за все, буде прийнята, отримує наступний набір інструкцій, пов'язаних з цією галуззю, і починає спекулятивно виконувати їх, перш ніж він знає, який з двох кодів гілок він буде використовувати. На діаграмі вище, ці спекулятивні інструкції представлені як фіолетовий ящик. Якщо гілка предиктора здогадалася правильно, то наступний набір інструкцій, необхідних процесором, вишикувалися та готові до поїздки без трубопроводу або затримки виконання.

Без прогнозування галузевого та спекулятивного виконання, процесор не знає, яка філія буде тривати до першої інструкції в трубопроводі (зелена коробка) завершує виконання та переміщується до стадії 4. Замість того, щоб рухатися прямо з одного набору інструкцій до Далі, процесор повинен чекати відповідних інструкцій, щоб прибути. Це болить продуктивність системи, оскільки час, коли КПУ може виконувати корисну роботу.

Причина це "спекулятивне" виконання полягає в тому, що ЦП може бути неправильним. Якщо це, система завантажує відповідні дані та виконує ці інструкції. Але прендиєрки галузі не дуже часто; Торгові показники, як правило, перевищують 95 відсотків.

Навіщо використовувати спекулятивне виконання?

Десятиліть тому, до винайденого виконання поза замовлення, CPU був те, що ми сьогодні називаємо "в порядку" конструкції. Інструкції, виконані у порядку їх отримання, без спроби передати їх або виконувати їх більш ефективно. Однією з основних проблем з виконанням порядку в тому, що трубопровід зупиняє весь процесор, доки не буде вирішено проблему.

Інша проблема, яка загнала розробку спекулятивного виконання, була розрив між процесором та основною швидкістю пам'яті. Наведений нижче графік показує розрив між CPU та годинниками пам'яті. Оскільки розрив виріс, кількість часу КПУ витрачав очікування на головній пам'яті, щоб поставити інформацію, виросла. Особливості, такі як L1, L2, та Caches та спекулятивне виконання, були розроблені, щоб зберегти CPU зайнятий і звести до мінімуму часу, який він витратив на холостому ходу.

Що таке спекулятивне виконання?

Це спрацювало. Комбінація великих кеш-пам'яток і позарегульованого виконання дало можливості Pentium Pentium Pentium Pentium та Pentium II розтягнути свої ноги таким чином, щоб попередні чіпи не могли збігатися. Цей граф з статті 1997 ANANDTECH показує перевагу чітко.

Що таке спекулятивне виконання?

Завдяки поєднанню спекулятивного виконання та великих кеш-пам'яток, Pentium II 166 рішуче перевершує Pentium 250 MMX, незважаючи на те, що останній має 1,51x-годинну швидкість перевагу над першим.

Врешті-решт, це був Pentium II, який виступив переваги за рахунок виконання більшості споживачів. Pentium II був швидким мікропроцесором відносно систем Pentium, який був найпопулярнішим лише найближчим часом. AMD був абсолютно здатним другого рівня, але поки почався оригінальний атлон, Intel мав замок на абсолютній коронці.

Pentium Pro і пізніше Pentium II були набагато швидше, ніж раніше, ніж раніше. Це не було гарантовано. Коли Intel спроектував Pentium Pro, він витратив значну кількість її гину та енергетичного бюджету, що забезпечує виконання замовлення. Але ставка виплачується, великий час.

Intel була вразливою до більшої частини атаки бічних каналів, які вийшли на ринок за останні три роки, ніж AMD або ARM, оскільки воно вирішив більш агресивно розраховувати та викриваючи певні типи даних у процесі. Кілька раундів патчів зменшили ці уразливості в попередніх чіпах, а нова процедура розробляються з виправленнями безпеки для деяких з цих проблем у апаратному забезпеченні. Слід також зазначити, що ризик цих видів атаки бічних каналів залишається теоретичним. У роки після того, як вони з'явилися, не було повідомлено про атаку за допомогою цих методів.

Існують відмінності між тим, як Intel, AMD та ARM реалізують спекулятивне виконання, і ці відмінності є частиною, чому Intel піддається деяким з цих нападів таким чином, щоб інші постачальники не є. Але спекулятивне виконання, як техніка, просто занадто цінна, щоб зупинити використання. Кожен єдиний високотехнологічний архітектура процесора сьогодні використовує виконання поза замовленнями. І спекулятивне виконання, впроваджені по-різному від компанії до компанії, використовується кожним з них. Без спекулятивного виконання, виконання поза замовленням не буде функціонувати.

Стан уразливості бічного каналу в 2021 році

З 2018 - 2020 рр. Ми розглянули ряд уразливостей бічного каналу, включаючи Spectre, Meltdown, Foreshadow, Ridl, MDS, Zombieload та інші. Це стало трохи модним для дослідників безпеки, щоб видати серйозну доповідь, дружелюбне ім'я, а також випадкові заняття для волосся, які підняли привид (без каменю) руйнівних питань безпеки, що на сьогоднішній день не з'явилися.

Дослідження бічних каналів - нова потенційна вразливість була виявлена ​​в Intel CPUS у березні, - але частина причин бічних каналів працюють робота, оскільки фізика дозволяє нам snoop на інформацію, використовуючи канали, не призначені для його передачі. (Атаки бокових каналів - це атаки, які зосереджуються на слабких сторонах реалізації, щоб витікати дані, а не зосереджуючись на певному алгоритмі, щоб його тріснути).

Ми регулярно вивчаємо речі про космічний простір, спостерігаючи це у спектрах енергії, що люди не можуть природно сприймати. Ми спостерігаємо за нейтрино, використовуючи детектори, що потонули глибоко в таких місцях, як озеро Байкал, точніше, тому що характеристики цих місць допомагають нам розрізняти слабкий сигнал, який ми шукаємо від шуму Всесвіту, що йде на свій бізнес. Багато чого ми знаємо про геологію, астрономію, сейсмологію та будь-яку область, де безпосереднє спостереження за даними є неможливим, або непрактичним концептуально відноситься до ідеї "витоку" бічних каналів. Люди дуже хороші при драженні даних, вимірюючи побічно. Існують постійні зусилля для проектування чіпів, які роблять бічний канал, більш складним, але це буде дуже важко заблокувати їх повністю.

Це не має на увазі, що ці проблеми безпеки не є серйозними, або те, що фірми процесора повинні викинути свої руки та відмовитися від того, щоб виправити їх, оскільки всесвіт незручна, але це є гігантська гра whack-a-mole, і це може Не можна забезпечити чіп проти всіх таких атак. Як винайдено нові методи безпеки, можуть з'являтися нові методи snooping, які покладаються на інші сторонні канали. Деякі фіксації, такі як відключення гіпер-різьблення, можуть покращити безпеку, але йти з істотними вражаючими хітами у певних програмах.

На щастя, на сьогоднішній день все це тестування є теоретичним. Intel - це компанія, яка найбільше постраждала за цими розкриттями, але жоден з розкриття інформації про бічний канал, який не випав, оскільки привид і розкладання були використані в громадській атаці. AMD, аналогічно, усвідомлює жодну групу чи організацію, орієнтуючись на ZEN 3 його недавнє розкриття інформації. Проблеми, такі як Ransomware, стали набагато гіршими за останні два роки, без необхідності допомоги у вразливості бічного каналу.

У довгостроковій перспективі ми очікуємо, що AMD, Intel та інші постачальники продовжують виправити ці питання, оскільки вони виникають, з поєднанням апаратного, програмного забезпечення та оновлень прошивки. Концептуально, атаки бокового каналу, як це надзвичайно складно, якщо не неможливо, щоб запобігти. Конкретні питання можуть бути пом'якшені або працювали, але характер спекулятивного виконання означає, що певна кількість даних збирається витікати за певними обставинами. Можливо, це неможливо запобігти цьому, не відмовляючись від більшої продуктивності, ніж більшість користувачів коли-небудь хочуть торгувати.

Читати далі

Що таке спекулятивне виконання?
Що таке спекулятивне виконання?

Спекулятивне виконання було в новинах пізнього, як правило, при обговоренні помилок Meltdown і Spectre. Ми пояснюємо цю тему.

Нова спекулятивна критична помилка при виконанні програмного забезпечення гвардії Intel
Нова спекулятивна критична помилка при виконанні програмного забезпечення гвардії Intel

Новий вектор атаки проти процесорів Intel був виявлений - знову заснований на спекулятивному виконанні.

Нова патча Google знижує ефективність виконання Spectre для "шуму"
Нова патча Google знижує ефективність виконання Spectre для "шуму"

Коли Spark Variant 2 виправлено в цьому році, деякі сервери, особливо ті, що мають старші процесори Intel, побачили зниження продуктивності. Google працює з MS, щоб переконатись, що ми повернемо цю продуктивність.

Що таке спекулятивне виконання?
Що таке спекулятивне виконання?

Спекулятивне виконання було в новинах останніх, як правило, при обговоренні недоліків Meltdown і Spectre. Ми пояснюємо тему.