Intel 8087

Intel 8087
CPU

Intel 8087 matematisk coprocessor
Produktion 1980
Udvikler Intel
Producenter
CPU frekvens 4-10  MHz
Produktionsteknologi 3 µm (3 µm)  µm
Instruktionssæt x86 , x87
Antal kerner en
stik
Kerner
Intel 823180287

Intel 8087  er den første matematiske coprocessor til 8086 -serien af ​​processorer til at implementere x87 - instruktionssæt-arkitekturen og blev udgivet i 1980 af Intel [3] [4] .

8087-coprocessoren er designet til at forbedre ydeevnen med flydende komma ved at fremskynde operationer såsom addition , subtraktion , division og kvadratrod . Han kunne også beregne transcendentale funktioner , såsom eksponentialfunktionen , logaritmer og trigonometriske funktioner . Ydelsesgevinsten ved at installere en coprocessor varierede fra 20 % til 500 %, afhængigt af opgavernes detaljer. Intel 8087 havde en ydeevne på omkring 50.000 Flops [3] og forbrugte cirka 2,4 watt [4] . Fordelen ved at indstille 8087 blev kun manifesteret ved udførelse af matematiske operationer. Computere, der f.eks. blev brugt til tekstbehandling , nød ikke godt af ekstra omkostninger (ca. $ 150 [5] ) og øget strømforbrug.

Med IBM's udgivelse af IBM PC'en , som havde en sokkel til installation af en coprocessor, steg salget af 8087'eren markant. Fremkomsten af ​​coprocessor førte til skabelsen af ​​IEEE 754-1985 standarden for flydende komma aritmetik . Sene Intel-processorer, startende med 80486 , har en indbygget aritmetisk coprocessor (med undtagelse af 486SX  - en coprocessor blev frigivet til dem 487SX , som ikke kunne installeres).

Historie om oprettelse og enhed

Tidligere producerede Intel 8231 "Aritmetic Processor" og 8232 "Floating Point Processor" chips. De blev designet til brug med 8080-processoren eller tilsvarende og brugte en 8-bit databus. Hovedprocessoren interagerede med dem gennem I/O-instruktioner eller gennem DMA -controlleren [6] .

De første skridt i udviklingen af ​​8087 blev taget af Bill Pohlman , projektlederen  , der overvågede udviklingen af ​​8086 mikroprocessoren hos Intel. Det gav support til en endnu ikke-udviklet matematisk coprocessor fra 8086.

I 1977 fik Polman grønt lys til at udvikle matematisk coprocessor 8087. Bruce Ravenel  blev udnævnt til arkitekt, og John Palmer blev ansat som assisterende arkitekt og projektmatematiker .  Sammen udviklede de en innovativ arkitektur, der inkluderede et 80-bit reelt tal med en 64-bit mantisse og en 16-bit eksponent til mellemliggende beregninger, en stakbaseret coprocessor med otte 80-bit registre og et instruktionssæt, der leverede beregningen af en lang række matematiske funktioner. 80-bit formatet løste en række velkendte problemer med at organisere beregninger og skabe software til numerisk behandling: Afrundingsfejls indflydelse blev væsentligt reduceret, når man arbejdede med 64-bit reelle operander, og nøjagtigheden af ​​beregningerne blev sikret i 18-bit. ciffer BCD og 64-bit heltal operander tal. Palmer bemærkede, at William Kahans publikationer om flydende kommaberegninger [7] havde stor indflydelse på projektet .

Intels ledelse i Santa Clara var lunken omkring 8087-projektet på grund af dets høje krav. I sidste ende blev udviklingen overført til den israelske afdeling af virksomheden, og Rafi Nef blev udnævnt til lederen ansvarlig for fremstillingen af ​​mikrokredsløbet .  Palmer, Revenel og Nef fik patent på coprocessor-arkitekturen [8] . Robert Koehler og John Bayliss fik patent på en metode til at overføre instruktioner med et bestemt bitmønster til en coprocessor [ 9] .   

8087-coprocessoren blev udgivet i 1980 og indeholdt 45.000 transistorer. Den blev fremstillet ved hjælp af en 3 mikron procesteknologi. Intel 8087 blev fremstillet i Malaysia [4] .

Mere end 60 nye instruktioner blev introduceret til coprocessoren , hvis navn begyndte med "F", for at skelne dem fra heltalsinstruktionerne fra Intel 8086. For eksempel analogerne til ADD / MUL / CMP instruktionerne i 8087 lignede FADD / FMUL / FCOM. De binære kodninger for alle nye instruktioner begyndte med bitmønsteret 11011. Dette mønster svarer til tallet 27 i decimal, hvilket er det samme som ASCII -koden for ESC-tegnet, så det blev nogle gange kaldt Escape-koden . Instruktionskoden optager 6 bits i to bytes begyndende med den angivne kombination:

┌─────────────────────────────┐ │ 1101 1xxx │ mmxx xrrr │ └────────────┴─────────────┘

Bitværdier:

x - instruktionskode m - adresseringstilstand r - operandregister eller sæt af registre involveret i offsetberegning [10]

Ansøgninger skulle være specielt skrevet for at bruge floating point instruktioner. Under opstart skulle programmet registrere tilstedeværelsen af ​​en coprocessor og bruge den til disse instruktioner; ellers skulle coprocessorinstruktionerne emuleres i software [5] .

Registre

x87-familien af ​​coprocessorer, i stedet for direkte adresserbare registre som i x86-arkitekturen, bruger en registerstak på otte niveauer [11] , mens det er muligt at få adgang til ethvert stakelement efter indeks fra st0 til st7, hvor st0 er toppen af stakken. Placeringen af ​​toppen af ​​stakken er angivet af ST-feltet i statusregistret. Instruktioner, når de udføres, popper operander fra toppen af ​​stakken og skubber resultaterne ind på stakken. Instruktioner med to operander som FADD, FMUL, FCOM kan både fungere med de to øverste elementer i stakken og direkte tage en af ​​operanderne fra en vilkårlig stakposition.

IEEE Standard for Floating Point Numbers

Da Intel skabte 8087-coprocessoren, håbede Intel at standardisere flydende komma-formatet til fremtidige udviklinger. Historisk set er vigtigheden af ​​8087, at den blev grundlaget for IEEE 754 floating point-standarden . Da IEEE 754-standarden var under udvikling indtil 1985, overholdt 8087-coprocessoren ikke fuldt ud den, men fuld overensstemmelse med standarden var allerede opnået i Intel 80387- coprocessoren. 8087 leverede to grundlæggende flydende kommadatatyper ( 32-bit enkelt præcision og 64-bit dobbelt præcision ), samt et udvidet 80-bit format for at forbedre nøjagtigheden af ​​store og komplekse beregninger. Derudover tilbød 8087 et 80-bit/18-cifret BCD - format samt 16, 32 og 64-bit heltalstyper [11] .

Infinity kontrol

8087 håndterer uendelige værdier via affin eller projektiv lukning (tilstand valgt via statusregister). I affin lukningstilstand behandles positiv og negativ uendelighed som forskellige værdier. I den projektive lukningstilstand anses begge uendeligheder for at være lige store [12] . Disse to uendelige driftsformer blev foreslået i IEEE 754 -udkastet til standard . Den projektive lukningstilstand blev dog udelukket fra den endelige version af standarden. 80287-coprocessoren beholdt den projektive lukningstilstand som en mulighed, mens 80387 og senere coprocessorer (inklusive 80187) kun understøttede den affine lukketilstand.

Tilslutning af en coprocessor

8087-coprocessoren adskiller sig fra senere Intel-coprocessorer ved, at den forbinder direkte til adresse- og databusserne. Når 8086- og 8088-processorerne finder instruktioner, der starter med sekvensen '11011', overfører de kontrol til coprocessoren. Coprocessoren indeholder den samme instruktionskø som processoren (indstilling af køen for parametrene for 8086- eller 8088-processoren udføres ved at analysere BHE -signalet efter en hardwarenulstilling). Hvis en instruktion kræver, at data udveksles med hukommelsen, beregner 8088- eller 8086-processorerne deres adresse og udfører en dummy-læsecyklus, idet de ignorerer selve dataene. Selve aflæsningen af ​​dataene foretages af coprocessoren. Hvis mere end ét ord (byte) skal læses, anmoder coprocessoren busstyring og læser resten af ​​operanden, inkrementerende adresse [13] .

Efter at have sendt en instruktion til coprocessoren, begynder hovedprocessoren straks at behandle den næste. Derfor kan 8086- eller 8088-processorer arbejde parallelt med en 8087-coprocessor. Dette kan dog føre til to uønskede situationer:

For at synkronisere processoren og coprocessoren bruges FWAIT-instruktionen, som stopper hovedprocessorens arbejde, indtil der modtages et signal fra coprocessoren om, at den har afsluttet behandlingen. Assembly sprogoversætteren indsætter automatisk denne instruktion før hver instruktion fra 8087-coprocessoren [10] . I senere modeller af coprocessorer er behovet for at tilføje FWAIT-instruktionen før hver floating-point-instruktion forsvundet, men instruktionen er stadig nødvendig for at synkronisere processorerne, hvis de får adgang til de samme data [15] .

Der er risiko for programfejl, hvis instruktionen ikke kan afkodes af coprocessoren. Senere modeller af Intel-coprocessorer brugte ikke denne busforbindelse, og instruktionerne blev videregivet til coprocessoren af ​​hovedprocessoren. Mens dette resulterede i en forsinkelse i udførelsen af ​​instruktioner, undgik det samtidig risikoen for programfejl, da hovedprocessoren ville ignorere en instruktion, som coprocessoren ikke accepterede.

Versioner og analoger

Intel 8087-coprocessorerne blev produceret i keramiske pakker af CerDIP- og PDIP-typerne og blev designet til at fungere i følgende temperaturområder:

Alle varianter af 8087 kom i 40-bens DIP - pakker og kørte på 5 volt og forbrugte omkring 2,4 watt. I modsætning til senere Intel-coprocessorer skulle 8087 køre med samme clockhastighed som hovedprocessoren [5] . Suffikser i betegnelsen af ​​mikrokredsløb bestemte den maksimale clockfrekvens:

Klokkefrekvenser 8087 [4] [11]
Chipbetegnelse Frekvens
Intel 8087 5 MHz
Intel 8087-1 10 MHz
Intel 8087-2 8 MHz
Intel 8087-3 4 MHz
Intel 8087-6 6 MHz

Coprocessoren blev produceret under licens af AMD under betegnelsen AMD 8087 [1] og Cyrix under betegnelsen Cyrix 8087 [2] . I USSR blev en analog af 8087 produceret under betegnelsen K1810VM87 [16] .

Andre generationer af coprocessorer

Som med 8088- og 8086-processorerne er 8087-coprocessoren blevet afløst af nyere generationer af Intel-coprocessorer. Disse omfatter 80287 , 80387 og 80187 . Fra og med 80486 krævede Intel-processorer ikke længere en separat flydende komma-coprocessor. Næsten alle af dem havde en coprocessor indbygget i processorkernen. Den eneste undtagelse var 80486SX, som var en modifikation af 80486DX med coprocessoren deaktiveret. 80487 - coprocessoren var faktisk en fuldgyldig i486DX - processor , der havde en ekstra pin. Når den var installeret, deaktiverede den 80486SX.

Noter

  1. 1 2 Shvets, Gennadiy AMD 8087 flydende komma-enhed (utilgængeligt link) . CPU World (8. oktober 2011). Hentet 1. december 2011. Arkiveret fra originalen 25. januar 2013. 
  2. 1 2 Shvets, Gennadiy Cyrix 8087 floating-point unit (utilgængeligt link) . CPU World (8. oktober 2011). Hentet 1. december 2011. Arkiveret fra originalen 25. januar 2013. 
  3. 1 2 8087 (utilgængeligt link) . Coprocessor Dot Info (2007). Hentet 1. december 2011. Arkiveret fra originalen 7. juni 2008. 
  4. 1 2 3 4 Intel FPU (utilgængeligt link) . cpu-collection.de (2011). Hentet 1. december 2011. Arkiveret fra originalen 25. januar 2013. 
  5. 1 2 3 Scott Mueller. Opgradering og reparation af pc'er, anden udgave . - Que Books, 1992. - S.  395 -403. - ISBN 0-88022-856-3 .
  6. Intel Component Data Catalog 1980 , Intel katalognr. C-864/280/150K/CP, side 8-21, 8-28
  7. Sanchez, Canton, 2007 , s. 96.
  8. US patent nr. 4484259
  9. US patent nr. 4270167
  10. 1 2 Karen A. Lemone. Assembly Language and Systems Programming for IBM PC og Compatibles . - Little, Brown og Comp., 1985. - S.  300 . - ISBN 0-316-52069-1 .
  11. 1 2 3 Shvets, Gennadiy Intel 8087-familien (ikke tilgængeligt link) . CPU World (8. oktober 2011). Hentet 1. december 2011. Arkiveret fra originalen 1. september 2013. 
  12. Sanchez, Canton, 2007 , s. 110.
  13. Mikhail Guk. Intel-processorer: fra 8086 til Pentium II. - Sankt Petersborg. : Peter, 1997. - S. 24. - 224 s. — ISBN 5-88782-398-4 .
  14. M. Krishna Kumar. Mikroprocessorer og mikrocontrollere/Coprocessor Forelæsningsnotater (link ikke tilgængeligt) . Hentet 21. august 2016. Arkiveret fra originalen 28. maj 2016. 
  15. Mors S.P., Albert D.D. Mikroprocessorarkitektur 80286 = 80286-arkitekturen. - M . : Radio og kommunikation, 1990. - S.  160 . — 304 s. — ISBN 5-256-00466-2 .
  16. Nefedov A.V. Integrerede kredsløb og deres udenlandske analoger: en håndbog .. - M . : IP RadioSoft, 2001. - T. 11. - S. 500. - 512 s. — ISBN 5-93037-049-4 .

Litteratur

Links