Ця стаття не містить . (травень 2019) |
x87 — це спеціальний набір інструкцій для роботи з математичними обчисленнями, є підмножиною архітектури процесорів x86. Таку назву він отримав, тому що початкові окремі математичні співпроцесорні чипи мали назви, що закінчуються на 87. Як і інші розширення базового набору інструкцій процесора, ці інструкції не є строго необхідними для побудови робочої програми, але загальні математичні завдання вони дозволяють виконувати набагато швидше, коли реалізовані апаратно. Наприклад, у наборі інструкцій x87 присутні команди для розрахунку значень синуса або косинуса.
Опис
Всі процесори Intel і AMD, починаючи з 486DX, мають вбудований математичний співпроцесор, і окремого співпроцесора не потребують (за винятком Intel486SX). Тим не менш, термін x87 все ще використовується для виділення тієї частини інструкцій процесора, яка займається обчисленнями з рухомою комою; компілятори можуть використовувати ці інструкції для генерації коду, який працює швидше, ніж той, що використовує виклики до бібліотек для виконання операцій з рухомою комою.
Інструкції x87 сумісні зі стандартом IEEE 754. Однак, x87 виконують операції не в суворій відповідності з форматами IEEE 754, через використання більш широких регістрів. Тому послідовність арифметичних операцій може виконуватися дещо по-іншому на наборі x87 і на процесорі, який суворо дотримується формату IEEE 754.
x87 організовує свої регістри не як масив, як більшість інших архітектур, а як регістровий стек, що працює за принципом зворотного польського запису. Це означає, що в один момент часу для здійснення операцій доступні тільки два верхніх регістри, а доступ до інших регістрів вимагає маніпуляцій зі стеком. Хоча така організація виходить і зручною для програмістів, вона робить трудомістким побудову ефективного коду x87 для компіляторів.
Починаючи з Pentium III, обчислення за допомогою інструкцій SSE здійснюються з одинарною точністю, а в пізніших версіях — з подвійною точністю форматів IEEE 754. Після появи SSE2, використання x87 значною мірою применшується в 64-розрядних архітектурах x86-64 і пов'язаних з нею 64-бітних реалізаціях операційних систем, таких як Microsoft Windows, Mac OS X, Solaris, FreeBSD та Linux, хоча він як і раніше добре підтримується для повної сумісності зі старими програмами.
Співпроцесори сімейства x87
Для таких процесорів як 8086/88, 186/188, 286, 386, 486 були випущені співпроцесори для операцій з рухомою комою, як правило остання цифра у таких співпроцесорів була 7 (8087, 187, 287, 387, 487). Для установки співпроцесора на платі комп'ютера передбачалось окреме гніздо.
Співпроцесор не є повноцінним процесором, оскільки не вміє виконувати багатьох операцій (наприклад, не вміє працювати з програмою і обчислювати адреси пам'яті), він є всього лише додатком до центрального процесора.
Одна зі схем взаємодії центрального процесора і співпроцесора, використана зокрема в x86, реалізована наступним чином:
- Співпроцесор підключений до шин центрального процесора, а також має декілька спеціальних сигналів для синхронізації процесорів між собою.
- Частина командних кодів центрального процесора зарезервована для співпроцесора, він стежить за потоком команд, ігноруючи інші команди. Центральний процесор, навпаки, ігнорує команди співпроцесора, займаючись тільки обчисленням адреси в пам'яті, якщо команда припускає до неї звернення. Центральний процесор робить цикл фіктивного зчитування, дозволяючи співпроцесору зчитати адресу з адресної шини. Якщо співпроцесору необхідно додаткове звернення до пам'яті (для читання або запису результатів), він виконує його через захоплення шини.
- Після отримання команди і необхідних даних співпроцесор починає її виконання. Поки співпроцесор виконує команду, центральний процесор виконує програму далі, паралельно з обчисленнями співпроцесора. Якщо наступна команда також є командою співпроцесора, процесор зупиняється і чекає завершення виконання співпроцесором попередньої команди.
- Також існує спеціальна команда очікування (FWAIT), що примусово зупиняє центральний процесор до завершення обчислень у співпроцесорі (якщо для продовження програми необхідні їх результати). В даний час[] команда використовується лише для обробки виняткових ситуацій при роботі з рухомою комою, робота процесора і співпроцесора синхронізується прозоро для програміста.
Починаючи з процесора Intel486DX модуль операцій з рухомоюю комою був інтегрований в центральний процесор і названий FPU. У лінійці Intel486SX модуль FPU вимикався (спочатку у цю лінійку потрапляли процесори з бракованим FPU). Для процесорів Intel486SX також випускався «співпроцесор» Intel487SX, але, фактично, він був процесором Intel486DX і при його установці процесор Intel486SX вимикався.
Незважаючи на інтеграцію, FPU в процесорах i486 являє собою незмінний співпроцесор, виконаний на тому ж кристалі, більше того, схема FPU i486 повністю ідентична співпроцесору попереднього покоління 387DX аж до тактової частоти (у два рази меншою, ніж частота центрального процесора). Справжня інтеграція FPU c центральним процесором почалася тільки в процесорах Pentium моделі MMX.
Система команд співпроцесора
Система включає близько 80 команд. Їх класифікація:
- Команди передачі даних
- Дійсні дані
- Цілочисельні дані
- Десяткові дані
- Завантаження констант (0, 1, число Пі, log2 (10), log2 (e), lg (2), ln (2))
- Обмін
- Умовне пересилання (Pentium II / III)
- Команди порівняння даних
- Дійсні дані
- Цілочисельні дані
- Аналіз
- З нулем
- Умовне порівняння (Pentium II / III)
- Арифметичні команди
- Дійсні дані: додавання, віднімання, множення, ділення
- Цілочисельні дані: додавання, віднімання, множення, ділення
- Допоміжні арифметичні команди (квадратний корінь, модуль, зміна знака, виділення порядку і мантиси)
- Трансцендентні команди
- Тригонометрія: синус, косинус, тангенс, арктангенс
- Обчислення логарифмів і степенів
- Команди управління
- Ініціалізація співпроцесора
- Робота з середовищем
- Робота зі стеком
- Перемикання режимів
Див. також
Джерела
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno traven 2019 x87 ce specialnij nabir instrukcij dlya roboti z matematichnimi obchislennyami ye pidmnozhinoyu arhitekturi procesoriv x86 Taku nazvu vin otrimav tomu sho pochatkovi okremi matematichni spivprocesorni chipi mali nazvi sho zakinchuyutsya na 87 Yak i inshi rozshirennya bazovogo naboru instrukcij procesora ci instrukciyi ne ye strogo neobhidnimi dlya pobudovi robochoyi programi ale zagalni matematichni zavdannya voni dozvolyayut vikonuvati nabagato shvidshe koli realizovani aparatno Napriklad u nabori instrukcij x87 prisutni komandi dlya rozrahunku znachen sinusa abo kosinusa OpisVsi procesori Intel i AMD pochinayuchi z 486DX mayut vbudovanij matematichnij spivprocesor i okremogo spivprocesora ne potrebuyut za vinyatkom Intel486SX Tim ne mensh termin x87 vse she vikoristovuyetsya dlya vidilennya tiyeyi chastini instrukcij procesora yaka zajmayetsya obchislennyami z ruhomoyu komoyu kompilyatori mozhut vikoristovuvati ci instrukciyi dlya generaciyi kodu yakij pracyuye shvidshe nizh toj sho vikoristovuye vikliki do bibliotek dlya vikonannya operacij z ruhomoyu komoyu Instrukciyi x87 sumisni zi standartom IEEE 754 Odnak x87 vikonuyut operaciyi ne v suvorij vidpovidnosti z formatami IEEE 754 cherez vikoristannya bilsh shirokih registriv Tomu poslidovnist arifmetichnih operacij mozhe vikonuvatisya desho po inshomu na nabori x87 i na procesori yakij suvoro dotrimuyetsya formatu IEEE 754 x87 organizovuye svoyi registri ne yak masiv yak bilshist inshih arhitektur a yak registrovij stek sho pracyuye za principom zvorotnogo polskogo zapisu Ce oznachaye sho v odin moment chasu dlya zdijsnennya operacij dostupni tilki dva verhnih registri a dostup do inshih registriv vimagaye manipulyacij zi stekom Hocha taka organizaciya vihodit i zruchnoyu dlya programistiv vona robit trudomistkim pobudovu efektivnogo kodu x87 dlya kompilyatoriv Pochinayuchi z Pentium III obchislennya za dopomogoyu instrukcij SSE zdijsnyuyutsya z odinarnoyu tochnistyu a v piznishih versiyah z podvijnoyu tochnistyu formativ IEEE 754 Pislya poyavi SSE2 vikoristannya x87 znachnoyu miroyu primenshuyetsya v 64 rozryadnih arhitekturah x86 64 i pov yazanih z neyu 64 bitnih realizaciyah operacijnih sistem takih yak Microsoft Windows Mac OS X Solaris FreeBSD ta Linux hocha vin yak i ranishe dobre pidtrimuyetsya dlya povnoyi sumisnosti zi starimi programami Spivprocesori simejstva x87Dlya takih procesoriv yak 8086 88 186 188 286 386 486 buli vipusheni spivprocesori dlya operacij z ruhomoyu komoyu yak pravilo ostannya cifra u takih spivprocesoriv bula 7 8087 187 287 387 487 Dlya ustanovki spivprocesora na plati komp yutera peredbachalos okreme gnizdo Spivprocesor ne ye povnocinnim procesorom oskilki ne vmiye vikonuvati bagatoh operacij napriklad ne vmiye pracyuvati z programoyu i obchislyuvati adresi pam yati vin ye vsogo lishe dodatkom do centralnogo procesora Odna zi shem vzayemodiyi centralnogo procesora i spivprocesora vikoristana zokrema v x86 realizovana nastupnim chinom Spivprocesor pidklyuchenij do shin centralnogo procesora a takozh maye dekilka specialnih signaliv dlya sinhronizaciyi procesoriv mizh soboyu Chastina komandnih kodiv centralnogo procesora zarezervovana dlya spivprocesora vin stezhit za potokom komand ignoruyuchi inshi komandi Centralnij procesor navpaki ignoruye komandi spivprocesora zajmayuchis tilki obchislennyam adresi v pam yati yaksho komanda pripuskaye do neyi zvernennya Centralnij procesor robit cikl fiktivnogo zchituvannya dozvolyayuchi spivprocesoru zchitati adresu z adresnoyi shini Yaksho spivprocesoru neobhidno dodatkove zvernennya do pam yati dlya chitannya abo zapisu rezultativ vin vikonuye jogo cherez zahoplennya shini Pislya otrimannya komandi i neobhidnih danih spivprocesor pochinaye yiyi vikonannya Poki spivprocesor vikonuye komandu centralnij procesor vikonuye programu dali paralelno z obchislennyami spivprocesora Yaksho nastupna komanda takozh ye komandoyu spivprocesora procesor zupinyayetsya i chekaye zavershennya vikonannya spivprocesorom poperednoyi komandi Takozh isnuye specialna komanda ochikuvannya FWAIT sho primusovo zupinyaye centralnij procesor do zavershennya obchislen u spivprocesori yaksho dlya prodovzhennya programi neobhidni yih rezultati V danij chas koli komanda vikoristovuyetsya lishe dlya obrobki vinyatkovih situacij pri roboti z ruhomoyu komoyu robota procesora i spivprocesora sinhronizuyetsya prozoro dlya programista Pochinayuchi z procesora Intel486DX modul operacij z ruhomoyuyu komoyu buv integrovanij v centralnij procesor i nazvanij FPU U linijci Intel486SX modul FPU vimikavsya spochatku u cyu linijku potraplyali procesori z brakovanim FPU Dlya procesoriv Intel486SX takozh vipuskavsya spivprocesor Intel487SX ale faktichno vin buv procesorom Intel486DX i pri jogo ustanovci procesor Intel486SX vimikavsya Nezvazhayuchi na integraciyu FPU v procesorah i486 yavlyaye soboyu nezminnij spivprocesor vikonanij na tomu zh kristali bilshe togo shema FPU i486 povnistyu identichna spivprocesoru poperednogo pokolinnya 387DX azh do taktovoyi chastoti u dva razi menshoyu nizh chastota centralnogo procesora Spravzhnya integraciya FPU c centralnim procesorom pochalasya tilki v procesorah Pentium modeli MMX Sistema komand spivprocesora Sistema vklyuchaye blizko 80 komand Yih klasifikaciya Komandi peredachi danih Dijsni dani Cilochiselni dani Desyatkovi dani Zavantazhennya konstant 0 1 chislo Pi log2 10 log2 e lg 2 ln 2 Obmin Umovne peresilannya Pentium II III Komandi porivnyannya danih Dijsni dani Cilochiselni dani Analiz Z nulem Umovne porivnyannya Pentium II III Arifmetichni komandi Dijsni dani dodavannya vidnimannya mnozhennya dilennya Cilochiselni dani dodavannya vidnimannya mnozhennya dilennya Dopomizhni arifmetichni komandi kvadratnij korin modul zmina znaka vidilennya poryadku i mantisi Transcendentni komandi Trigonometriya sinus kosinus tangens arktangens Obchislennya logarifmiv i stepeniv Komandi upravlinnya Inicializaciya spivprocesora Robota z seredovishem Robota zi stekom Peremikannya rezhimivDiv takozhDzherelaCya stattya ye zagotovkoyu Vi mozhete dopomogti proyektu dorobivshi yiyi Ce povidomlennya varto zaminiti tochnishim