Що таке перемикач контексту?

На початку розвитку обчислювальної техніки процесори були суто послідовними машинами. Це допомогло зберегти дизайн простим. Однак це також обмежувало продуктивність. Багатьом процесам потрібно запитувати дані з системної оперативної пам’яті або жорсткого диска. Хоча системна оперативна пам’ять є швидкою, вона все ще не така швидка, як ЦП, залишаючи її бездіяльною, чекаючи даних, доки відповідь не повернеться з оперативної пам’яті. Ситуація ще гірша з даними, які запитуються з жорсткого диска, запам’ятовуючого пристрою, який набагато повільніший за оперативну пам’ять. Тут ЦП може простоювати протягом значних періодів, очікуючи відповіді. На жаль, з послідовними процесорами цієї проблеми просто не уникнути.

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

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

Як працює перемикач контексту?

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

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

Вплив на продуктивність

Процес читання та запису даних під час вмикання або виведення потоку займає деякий час, хоча й небагато, оскільки використовується пам’ять, як правило, високошвидкісна. Однак існують додаткові витрати на продуктивність. Під час перемикання потоків дані в кеш-пам’яті процесора та буфери попереднього потоку можуть не мати відношення до нового потоку. Це може призвести до значного збільшення TLB ( Translation Lookaside Buffer ) і промахів кешу.

Цей ефект незначний, якщо два потоки були породжені одним процесом, оскільки вони, ймовірно, спільно використовуватимуть значні елементи пам’яті. TLB необхідно повністю скинути під час перемикання між потоками з різних методів. Це призводить до 100% відсотка промахів TLB, у той час як відсоток попадань кешу ЦП також значно знижується.

Хоча центральні процесори пропонують апаратну підтримку перемикання контексту, операційні системи зазвичай не використовують це. Апаратному перемиканню контексту бракує усвідомлення актуальності даних. Тому потрібно зберігати та відновлювати всі регістри, збільшуючи час і необхідний простір для зберігання.

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

Висновок

Перемикання контексту — це процес, за допомогою якого сучасний ЦП перемикає, який потік він виконує. Процес передбачає збереження відповідних даних поточного потоку та відновлення відповідних даних нового потоку. Перемикання контексту пов’язане з витратами на продуктивність, пов’язаними з часом, необхідним для виконання перемикання, і підвищеною частотою промахів кешу та TLB, оскільки вони не зберігаються. Перемикання контексту відбувається або для забезпечення того, щоб усі потоки мали достатньо часу процесора, або через переривання, яке вказує, що подія, на яку чекав рядок, завершена.


Як клонувати жорсткий диск

Як клонувати жорсткий диск

У сучасну цифрову епоху, коли дані є цінним активом, клонування жорсткого диска в Windows може бути вирішальним процесом для багатьох. Цей вичерпний посібник

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Ви стикаєтеся з повідомленням про помилку під час завантаження комп’ютера, у якому йдеться про те, що драйвер WUDFRd не вдалося завантажити на ваш комп’ютер?

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Ви відчуваєте код помилки NVIDIA GeForce 0x0003 на робочому столі? Якщо так, прочитайте блог, щоб дізнатися, як швидко та легко виправити цю помилку.

Що таке SMPS?

Що таке SMPS?

Перш ніж вибрати SMPS для свого комп’ютера, дізнайтеся, що таке SMPS і значення різних показників ефективності.

Чому мій Chromebook не вмикається

Чому мій Chromebook не вмикається

Отримайте відповіді на запитання «Чому мій Chromebook не вмикається?» У цьому корисному посібнику для користувачів Chromebook.

Як повідомити Google про фішинг

Як повідомити Google про фішинг

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

Roomba зупиняється, залипає та розвертається – виправлення

Roomba зупиняється, залипає та розвертається – виправлення

Вирішіть проблему, коли ваш робот-пилосос Roomba зупиняється, залипає та продовжує обертатися.

Як змінити налаштування графіки на Steam Deck

Як змінити налаштування графіки на Steam Deck

Steam Deck пропонує надійний і універсальний ігровий досвід прямо у вас під рукою. Однак, щоб оптимізувати вашу гру та забезпечити найкраще

Що таке безпека на основі ізоляції?

Що таке безпека на основі ізоляції?

Я збирався заглибитися в тему, яка стає все більш важливою у світі кібербезпеки: безпека на основі ізоляції. Такий підхід до

Як використовувати Auto Clicker для Chromebook

Як використовувати Auto Clicker для Chromebook

Сьогодні я збирався заглибитися в інструмент, який може автоматизувати повторювані завдання на вашому Chromebook: Auto Clicker. Цей інструмент може заощадити ваш час і