Какво е контекстен превключвател?

В ранните дни на компютрите процесорите бяха чисто последователни машини. Това помогна дизайнът да бъде прост. Това обаче също ограничи производителността. Много процеси ще трябва да поискат данни от системната RAM памет или твърдия диск. Въпреки че системната RAM е бърза, тя все още не е толкова бърза, колкото процесора, оставяйки я да седи неактивен, чакайки данни, докато отговорът се върне от RAM. Ситуацията е още по-лоша за данните, поискани от твърдия диск, устройство за съхранение, много по-бавно от RAM. Тук процесорът може да не работи за значителни периоди, чакайки отговор. За съжаление при последователните процесори този проблем е просто неизбежен.

За щастие, съвременните процесори вече не са последователни. Те предлагат много разширени функции, като изпълнение извън реда и множество нишки. Изпълнението извън реда позволява на процесора да анализира предстоящите инструкции и да ги пренареди, за да увеличи максимално ефективността. Многопоточността позволява на процесора да има множество различни нишки или процеси.

Освен наличието на множество ядра, процесорът не може да работи с повече от едно наведнъж. Може обаче да изглежда така, като превключва редовно между тях, за да гарантира, че всеки от тях получава значително количество постоянно процесорно време. Процесът на превключване между нишки се нарича контекстно превключване.

Как работи превключването на контекст?

Превключването на контекста се състои от две части, изключване на предишната нишка и превключване на новата. За да промени старата нишка, процесорът трябва да запази текущото си състояние в блок за управление на процеса или превключваща рамка. Това включва стойностите на всички съответни регистри на процесора и винаги се състои от стойността на програмния брояч. След като нишката бъде съхранена, манипулатор може да бъде добавен към готова опашка, за да може тя да бъде възстановена, когато е необходимо.

Превключването в следващата нишка е същият процес в обратна посока. Нишката се избира или от опашката за готовност, в зависимост от теглото. Алтернативно, може да бъде избрано чрез прекъсване, което показва, че събитие, което нишката е чакала, вече е готово или завършено. След това данните за нишката се копират в правилните регистри и нишката се възстановява. В този момент новата нишка е готова да продължи работа от мястото, където е спряла.

Въздействие върху производителността

Процесът на четене и запис на данни при включване или изключване на нишка отнема известно време, макар и не много, тъй като използваната памет обикновено е високоскоростна. Има обаче допълнителни разходи за изпълнение. При превключване на нишки, данните в кеша и буферите на процесора от предишната нишка може да не са подходящи за новата нишка. Това може да доведе до значително увеличение на 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. Този инструмент може да ви спести време и