1.3 Математичний співпроцесор х87
Математичний співпроцесор x87 - це спеціальний набір інструкцій для роботи з математичними обчисленнями, є підмножиною архітектури процесорів x86. Таку назву він отримав, тому що початкові окремі математичні сопроцессорние чіпи мали назви, що закінчуються на 87 . Як і інші розширення базового набору інструкцій процесора, ці інструкції не є строго необхідними для побудови робочої програми, але будучи апаратно реалізованими, загальні математичні завдання вони дозволяють виконувати набагато швидше. Наприклад, в наборі інструкції x87 присутні команди для розрахунку значень синуса або косинуса.
1.4 Математичні співпроцесори Intel сімейства x86
Для математичних сопроцессоров сімейства x86 з 8086,8088 по 386, модуль операцій з плаваючою комою був виділений в окрему мікросхему, звану математичним співпроцесором.
Математичний співпроцесор не є повноцінним процесором, так як не вміє робити багатьох необхідних для цього операцій (наприклад, не вміє працювати з програмою і обчислювати адреси пам'яті), будучи всього лише придатком центрального процесора. Одна зі схем взаємодії центрального процесора і співпроцесора, застосовувана, зокрема, в x86 сопроцессорами, реалізується наступним чином:
співпроцесор підключений до шин центрального процесора, а також має декілька спеціальних сигналів для синхронізації процесорів між собою;
частина командних кодів центрального процесора зарезервована для співпроцесора, він стежить за потоком команд, ігноруючи інші команди. Центральний процесор, навпаки, ігнорує команди співпроцесора, займаючись тільки обчисленням адреси в пам'яті, якщо команда припускає до неї звернення. Центральний процесор робить цикл фіктивного зчитування, дозволяючи сопроцессору вважати адресу з адресної шини. Якщо сопроцессору необхідно додаткове звернення до пам'яті (для читання або запису результатів), він виконує його через захоплення шини;
після отримання команди і необхідних даних співпроцесор починає її виконання. Поки співпроцесор виконує команду, центральний процесор виконує програму далі, паралельно з обчисленнями співпроцесора. Якщо наступна команда також є командою співпроцесора, процесор зупиняється і чекає завершення виконання співпроцесором попередньої команди.
Також існує спеціальна команда очікування (FWAIT), примусово зупиняє процесор до завершення обчислень (якщо для продовження програми необхідні їх результати). В даний час команда використовується лише для обробки виключень при роботі з плаваючою точкою, робота процесора і співпроцесора синхронізується прозоро для програміста.
Починаючи, з процесора Intel486DX модуль операцій з плаваючою комою інтегрований в центральний процесор і названий FPU (блок, що виробляє операції з плаваючою точкою (часто говорять коми) або математичний співпроцесор.) У лінійці Intel486SXмодуль FPUотключался (спочатку в цю лінійку потрапляли процесори з бракований FPU)
Для процесорів Intel486SX також випускався співпроцесор Intel487SXно, фактично, він був процесором Intel486DX і при його установці процесор Intel486SX відключався.
Незважаючи на інтеграцію, FPU в процесорах i486 являє собою незмінний співпр...