Intel MPX (англ. Memory Protection Extensions) — набір розширень архітектури x86, запропонований Intel. З відповідною підтримкою компілятора, [en] і операційної системи, MPX мав на меті підвищення захищеності програмного забезпечення комп'ютерів шляхом перевірки вказівників, які можуть потенційно приводити до переповнення буфера.
Розширення
Intel MPX додає до стандартної архітектури x86 кілька нових регістрів спеціально для перевірки меж ділянок пам'яті (англ. bound registers, «межові регістри»), і нові інструкції для роботи з цими регістрами. Додатково вводиться набір так званих «таблиць меж» (англ. bound tables), де зберігаються значення меж, що не вмістилися у межові регістри.
Нові межові регістри — 128-розрядні, названі від BND0
до BND3
. Кожен регістр містить пару 64-розрядних значень: нижню межу LB (англ. lower bound) і верхню межу UB (англ. upper bound) буфера пам'яті. Верхня межа зберігається у оберненому коді; конверсія здійснюється інструкціями BNDMK
(«створити межу», англ. create bounds) і BNDCU
(«перевірити верхню межу», англ. check upper bound). Два регістра конфігурації BNDCFGx
(BNDCFGU
у просторі користувача, і BNDCFGS
у режимі ядра), а також регістр статусу BNDSTATUS
, який надає адресу і код помилки у випадку порушення доступу.
Для збереження меж у пам'яті використовується дворівнева трансляція адрес. Верхній рівень складається з каталога меж (англ. Bounds Directory, BD), і створюється при старті програми. Кожен елемент каталога є або порожнім, або містить вказівник на таблицю меж (англ. Bounds Table, BT), що створюється динамічно, і яка містить множину меж і відповідних лінійних адрес вказівників. Інструкції «завантажити межі» (BNDLDX
, англ. bounds load) і «зберегти межі» (BNDSTX
, англ. store bounds) прозоро здійснюють трансляцію адрес і меж у відповідному елементі таблиці меж.
Вперше реалізація MPX з'явилася у мікроархітектурі Intel Skylake.
Мікроархітектура Intel Goldmont також підтримує MPX.
Джерела
- . Intel. Архів оригіналу за 6 травня 2019. Процитовано 4 листопада 2013.
- . Intel. 16 липня 2013. Архів оригіналу за 5 травня 2019. Процитовано 10 вересня 2013.
- . code.google.com. Архів оригіналу за 4 липня 2015. Процитовано 4 листопада 2013.
- . gcc.gnu.org. Архів оригіналу за 11 червня 2019. Процитовано 4 листопада 2013.
- . intel-mpx.github.io. Архів оригіналу за 24 червня 2018. Процитовано 6 лютого 2017.
- Intel Architecture Instruction Set Extensions Programming Reference. Intel. December 2013. Архів оригіналу (PDF) за 16 травня 2016. Процитовано 17 січня 2014.
- Oleksenko, Oleksii; Kuvaiskii, Dmitrii; Bhatotia, Pramod; Felber, Pascal; Fetzer, Christof (2017). Intel MPX Explained: An Empirical Study of Intel MPX and Software-based Bounds Checking Approaches. arXiv:1702.00719 [cs.CR].
- . Intel. 15 червня 2012. Архів оригіналу за 6 травня 2019. Процитовано 4 листопада 2013.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Intel MPX angl Memory Protection Extensions nabir rozshiren arhitekturi x86 zaproponovanij Intel Z vidpovidnoyu pidtrimkoyu kompilyatora en i operacijnoyi sistemi MPX mav na meti pidvishennya zahishenosti programnogo zabezpechennya komp yuteriv shlyahom perevirki vkazivnikiv yaki mozhut potencijno privoditi do perepovnennya bufera RozshirennyaIntel MPX dodaye do standartnoyi arhitekturi x86 kilka novih registriv specialno dlya perevirki mezh dilyanok pam yati angl bound registers mezhovi registri i novi instrukciyi dlya roboti z cimi registrami Dodatkovo vvoditsya nabir tak zvanih tablic mezh angl bound tables de zberigayutsya znachennya mezh sho ne vmistilisya u mezhovi registri Novi mezhovi registri 128 rozryadni nazvani vid BND0 do BND3 Kozhen registr mistit paru 64 rozryadnih znachen nizhnyu mezhu LB angl lower bound i verhnyu mezhu UB angl upper bound bufera pam yati Verhnya mezha zberigayetsya u obernenomu kodi konversiya zdijsnyuyetsya instrukciyami BNDMK stvoriti mezhu angl create bounds i BNDCU pereviriti verhnyu mezhu angl check upper bound Dva registra konfiguraciyi BNDCFGx BNDCFGU u prostori koristuvacha i BNDCFGS u rezhimi yadra a takozh registr statusu BNDSTATUS yakij nadaye adresu i kod pomilki u vipadku porushennya dostupu Dlya zberezhennya mezh u pam yati vikoristovuyetsya dvorivneva translyaciya adres Verhnij riven skladayetsya z kataloga mezh angl Bounds Directory BD i stvoryuyetsya pri starti programi Kozhen element kataloga ye abo porozhnim abo mistit vkazivnik na tablicyu mezh angl Bounds Table BT sho stvoryuyetsya dinamichno i yaka mistit mnozhinu mezh i vidpovidnih linijnih adres vkazivnikiv Instrukciyi zavantazhiti mezhi BNDLDX angl bounds load i zberegti mezhi BNDSTX angl store bounds prozoro zdijsnyuyut translyaciyu adres i mezh u vidpovidnomu elementi tablici mezh Vpershe realizaciya MPX z yavilasya u mikroarhitekturi Intel Skylake Mikroarhitektura Intel Goldmont takozh pidtrimuye MPX Dzherela Intel Arhiv originalu za 6 travnya 2019 Procitovano 4 listopada 2013 Intel 16 lipnya 2013 Arhiv originalu za 5 travnya 2019 Procitovano 10 veresnya 2013 code google com Arhiv originalu za 4 lipnya 2015 Procitovano 4 listopada 2013 gcc gnu org Arhiv originalu za 11 chervnya 2019 Procitovano 4 listopada 2013 intel mpx github io Arhiv originalu za 24 chervnya 2018 Procitovano 6 lyutogo 2017 Intel Architecture Instruction Set Extensions Programming Reference Intel December 2013 Arhiv originalu PDF za 16 travnya 2016 Procitovano 17 sichnya 2014 Oleksenko Oleksii Kuvaiskii Dmitrii Bhatotia Pramod Felber Pascal Fetzer Christof 2017 Intel MPX Explained An Empirical Study of Intel MPX and Software based Bounds Checking Approaches arXiv 1702 00719 cs CR Intel 15 chervnya 2012 Arhiv originalu za 6 travnya 2019 Procitovano 4 listopada 2013