Intel 8087 | |
---|---|
CPU | |
| |
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).
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] .
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.
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] .
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.
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.
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:
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] .
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.
Intel processorer | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|