Intel 8087

Intel 8087 były pierwszymi koprocesory matematyczne zaprojektowanych przez firmę Intel w 1980 roku na komputerach 16-bitowych (the 8231 jest starszy, ale przeznaczony dla 8-bitowy Intel 8080 procesor ).

Został zaprojektowany do użytku z mikroprocesorami Intel 8088 i 8086 . Celem 8087, pierwszego z rodziny x87 , było przyspieszenie obliczeń dla aplikacji wymagających przetwarzania liczb zmiennoprzecinkowych. Wydajność w czasie wykonywania wzrosła z 20% do 500% w zależności od aplikacji. 8087 może osiągnąć wydajność 50 000 FLOP / s, w zależności od żądanej operacji.

Ten koprocesor wprowadza około 60 nowych instrukcji dostępnych dla programisty, których mnemoniki zaczynają się od litery F, aby odróżnić je od instrukcji arytmetycznych na liczbach całkowitych dostępnych natywnie na 8086/88. Na przykład, dla dodawania i mnożenia, przeprowadzanych przez instrukcje 8086/88 ADD i MUL, które odnoszą się do liczb całkowitych, 8087 dodaje instrukcje FADD i FMUL, odnoszące się do liczb zmiennoprzecinkowych. W binarnym kodzie maszynowym wszystkie te instrukcje zaczynały się od sekwencji bitów 11011, co daje 27 dziesiętnie, kod ASCII klawisza ESCAPE: czasami mówimy o opkodach ucieczki .

Modele 8087 (a właściwie cała rodzina x87) nie zapewniają liniowego zestawu rejestrów, takich jak rejestry AX / BX / CX / DX procesorów 8086/88 i 80286 . Rejestry robocze x87 są zbudowane w jakiejś formie stosu (jednak nie jest to dokładnie taka sama, jak typowa struktura danych stosu) w zakresie od ST0 do ST7. Instrukcje zmiennoprzecinkowe koprocesorów x87 wypychają i przesuwają wartości na tym stosie.

Kiedy Intel zaprojektował 8087, chciał częściowo ustandaryzować jego specyfikacje. Dlatego Intel dołączył do grupy roboczej przyszłego standardu IEEE 754 w sprawie reprezentacji liczb zmiennoprzecinkowych. Dlatego 8087 jest historycznie bardzo ważny, ponieważ jego specyfikacje posłużyły za podstawę tego, co stało się standardem IEEE 754 w 1985 roku. Jednak 8087 został wydany w 1980 roku, w czasie, gdy standard IEEE 754 był tylko w wersji roboczej. Dlatego nie implementuje standardu IEEE 754 we wszystkich szczegółach. Pierwszą zmiennoprzecinkową jednostką obliczeniową IEEE 754 jest Intel 80387 .

Model 8087 zapewniał dwie reprezentacje liczb zmiennoprzecinkowych na 32 i 64 bitach , a także obszerną wewnętrzną obsługę danych 80-bitowych w celu zwiększenia dokładności dużych, dużych i złożonych obliczeń. Niezależnie od tego 8087 oferował 80-bitowy, 17-cyfrowy format dziesiętny zakodowany binarnie oraz 16, 32 i 64-bitowy format danych całkowitych.

8087 różnił się od kolejnych koprocesorów Intela tym, że był bezpośrednio podłączony do magistrali adresowej i danych. 8088/86 szukał instrukcji zaczynającej się od sekwencji „11011” i pozostawiającej kontrolę koprocesorowi. Koprocesor zwrócił sterowanie po zakończeniu sekwencji instrukcji koprocesora. Następujące koprocesory Intela nie łączyły się z magistralami w ten sam sposób, ale ich instrukcje były wydawane przez procesor główny.

8087, ogłoszone w 1980 roku , zostały zastąpione przez 80287 i 80387 . Kolejne generacje procesorów Intel x86, począwszy od 80486 , nie używają już oddzielnego koprocesora do obliczeń zmiennoprzecinkowych, ale umieszczają go bezpośrednio na swojej matrycy , z godnym uwagi wyjątkiem 80486SX, który był zmodyfikowanym 80486DX, w którym kalkulator zmiennoprzecinkowy, przetestowany jako wadliwy, został dezaktywowany. 80487 był w rzeczywistości kompletnym 80486DX z dodatkowym pinem. Kiedy został zainstalowany, wyłączył 80486SX. Procesory 80486DX, Pentium i kolejne zawierają funkcje obliczeń zmiennoprzecinkowych bezpośrednio w ich rdzeniu.