Какво е бариера на паметта?

Исторически процесорите са били перфектно последователни машини. Това е много логично и лесно за разбиране, но може да бъде проблем с производителността. През годините имаше много гениални корекции на дизайна на процесора, за да се извлече възможно най-голяма производителност от силиконовите пластини. Един от най-интересните обаче е изпълнението извън реда. В CPU с извънредно изпълнение инструкциите не е задължително да се изпълняват в реда, в който са издадени.

Задържане в ред

Основният проблем с производителността, с който се сблъсква процесорът в ред, се нарича спиране на конвейера. Това се случва, когато дадена инструкция зависи от някаква памет, но тази памет не е директно достъпна в регистър. В този случай процесорът трябва да намери тази стойност в паметта. Първо се проверява кеша на процесора, тъй като това е най-бързото ниво на паметта. Ако стойността не е там, системната RAM се проверява. През това време процесорът трябва да остане неактивен, тъй като инструкцията, зависеща от паметта, трябва да бъде изпълнена по ред преди следващите инструкции.

Въздействието върху производителността на спирането на тръбопровода може да не е толкова лошо, но може да бъде и относително сериозно. Например L1 кешът обикновено може да върне резултат от порядъка на 5 цикъла на процесора. Кешът L2 може да отнеме 20 цикъла, L3 около 200 цикъла, а системната RAM памет около 400 цикъла. Като се има предвид, че процесорът може да работи на около 5 GHz, което е 5 милиарда тактови цикъла в секунда, дори 400 цикъла не са толкова лоши (0,000008%). Но ако имате много инструкции, които трябва да препратят към данни по-надолу в нивата на кеша, кумулативният ефект може да причини забележимо забавяне.

Изпълнение извън реда и преименуване на регистър

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

Изпълнението извън реда изисква функция, наречена преименуване на регистър. Централният процесор има достъп до данни, съхранявани в регистри, в рамките на един цикъл. Регистрите се използват за съхраняване на данни, които се четат и записват. От съществено значение е обаче да се гарантира, че компютърът като цяло вижда всичко, което се случва в логическия ред, а не в извънредния, оптимизиран за цикъла на процесора ред. За да се позволи това, процесорите имат много повече логически регистри, отколкото изисква архитектурата на процесора.

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

Тези логически регистри са изцяло неадресирани. Централният процесор може наистина да адресира само логическите регистри, които в момента споделят името на архитектурните регистри. Това каза, че процесорът също е наясно с тях достатъчно, че ако други пренаредени инструкции разчитат на данните в регистъра на логическото съхранение, те могат да го използват, а не „остарели“ данни в регистъра на архитектурата в този конкретен емпиричен момент.

Бариери на паметта

Бариерата на паметта – наричана още membar, ограда на паметта или инструкция за ограда – е инструкция в компютърен код. Тя позволява на програмиста да наложи ограничение за подреждане на операции с памет, издадени преди и след бариерата на паметта. Бариерата на паметта инструктира планировчика на процесора да гарантира, че всички инструкции се обработват преди всяка инструкция след бариерата. Това се прави, за да се гарантира, че важните операции са завършени в правилния ред.

Като цяло на съвременните компютри това не би трябвало да е необходимо. Изпълнението извън реда и преименуването на регистъра са добре установени и зрели полета. Независимо от това, бариерата на паметта може да бъде полезна за по-стари, по-малко сложни процесори, които не работят или се използват при критични операции с памет.

Бариерите на паметта може да дойдат с известно увреждане на производителността. Това е така, защото те активно пречат на планировчика на процесора да оптимизира конкретни части от потока на инструкциите. Това увеличава шанса за блокиране на тръбопровода.

Заключение

Бариерата на паметта е инструкция, която осигурява ограничение за подреждане на операции с памет. Това е важно, тъй като процесорите за изпълнение извън реда могат да пренаредят конкретни инструкции. Докато преименуването на регистъра е добре установено като метод за осигуряване на целостта на паметта в тази среда, може да бъде полезно да го осигурите ръчно.

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


Как да клонирате твърд диск

Как да клонирате твърд диск

В съвременната цифрова ера, където данните са ценен актив, клонирането на твърд диск в 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. Този инструмент може да ви спести време и