Intel 8087

Intel 8087
CPU

Intel 8087 matematisk coprocessor
Produktion 1980
Utvecklaren Intel
Tillverkare
CPU- frekvens 4-10  MHz
Produktionsteknik 3 µm (3 µm)  µm
Instruktionsuppsättningar x86 , x87
Antal kärnor ett
kontakt
Kärnor
Intel 823180287

Intel 8087  är den första matematiska samprocessorn för 8086 -serien av processorer för att implementera x87- instruktionsuppsättningsarkitekturen och släpptes 1980 av Intel [3] [4] .

8087-samprocessorn designades för att förbättra flyttalsprestanda genom att påskynda operationer som addition , subtraktion , division och kvadratrot . Han kunde också beräkna transcendentala funktioner , såsom exponentialfunktionen , logaritmer och trigonometriska funktioner . Prestandavinsten från att installera en samprocessor varierade från 20 % till 500 %, beroende på detaljerna i uppgifterna. Intel 8087 hade en prestanda på cirka 50 000 Flops [3] och förbrukade cirka 2,4 watt [4] . Fördelen med att ställa in 8087 visade sig endast när man utförde matematiska operationer. Datorer som till exempel användes för ordbehandling gynnades inte av extra kostnader (cirka 150 $ [5] ) och ökad strömförbrukning.

Med lanseringen av IBM av IBM PC , som hade ett uttag för att installera en samprocessor, ökade försäljningen av 8087:an avsevärt. Tillkomsten av samprocessorn ledde till skapandet av IEEE 754-1985-standarden för aritmetik med flyttal . Sen Intel-processorer, som börjar med 80486 , har en inbyggd aritmetisk samprocessor (med undantag för 486SX  - en samprocessor släpptes för dem 487SX , som inte kunde installeras).

Historik om skapandet och enheten

Tidigare producerade Intel chipsen 8231 "Aritmetic Processor" och 8232 "Floating Point Processor". De designades för användning med 8080-processorn eller motsvarande och använde en 8-bitars databuss. Huvudprocessorn interagerade med dem genom I/O-instruktioner eller genom DMA- styrenheten [6] .

De första stegen i utvecklingen av 8087 togs av Bill Pohlman ,  projektledaren som övervakade utvecklingen av 8086-mikroprocessorn hos Intel . Det gav stöd för en ännu inte utvecklad matematisk coprocessor från 8086.

1977 fick Polman grönt ljus för att utveckla matematisk coprocessor 8087. Bruce  Ravenel utsågs till arkitekt och John Palmer anställdes som assisterande arkitekt och projektmatematiker .  Tillsammans utvecklade de en innovativ arkitektur som inkluderade ett 80-bitars reellt tal med en 64-bitars mantissa och en 16-bitars exponent för mellanliggande beräkningar, en stackbaserad samprocessor med åtta 80-bitars register och en instruktionsuppsättning som gav beräkningen av ett stort antal matematiska funktioner. 80-bitarsformatet löste ett antal välkända problem med att organisera beräkningar och skapa programvara för numerisk bearbetning: inverkan av avrundningsfel reducerades avsevärt när man arbetade med 64-bitars verkliga operander, och noggrannheten i beräkningarna säkerställdes under 18-bitars. siffror BCD och 64-bitars heltalsoperander, tal. Palmer noterade att William Kahans publikationer om flyttalsberäkningar [7] hade ett stort inflytande på projektet .

Intels ledning i Santa Clara var ljummen om 8087-projektet på grund av dess höga krav. Till slut överfördes utvecklingen till företagets israeliska filial, och Rafi Nef utsågs till chef för tillverkningen av mikrokretsen .  Palmer, Revenel och Nef beviljades patent på samprocessorarkitekturen [8] . Robert Koehler och John Bayliss beviljades patent på en metod för att överföra instruktioner med ett visst bitmönster till en samprocessor [ 9] .   

8087-samprocessorn släpptes 1980 och innehöll 45 000 transistorer. Den tillverkades med en 3 mikron processteknik. Intel 8087 tillverkades i Malaysia [4] .

Mer än 60 nya instruktioner introducerades för samprocessorn , vars namn började med "F", för att skilja dem från heltalsinstruktionerna för Intel 8086. Till exempel analogerna till ADD / MUL / CMP-instruktionerna i 8087 såg ut som FADD / FMUL / FCOM. De binära kodningarna för alla nya instruktioner började med bitmönstret 11011. Detta mönster motsvarar talet 27 i decimal, vilket är samma som ASCII -koden för ESC-tecknet, så det kallades ibland Escape-koden . Instruktionskoden upptar 6 bitar i två byte som börjar med den angivna kombinationen:

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

Bitvärden:

x - instruktionskod m - adresseringsläge r - operandregister eller uppsättning register involverade i offsetberäkning [10]

Ansökningar måste vara speciellt skrivna för att använda flyttal-instruktioner. Under uppstarten var programmet tvungen att upptäcka närvaron av en samprocessor och använda den för dessa instruktioner; annars måste samprocessorinstruktionerna emuleras i programvaran [5] .

Register

x87-familjen av samprocessorer, istället för direkt adresserbara register som i x86-arkitekturen, använder en registerstack på åtta nivåer [ 11] , medan det är möjligt att komma åt vilket stackelement som helst genom index från st0 till st7, där st0 är toppen av stapeln. Positionen för toppen av stapeln anges av ST-fältet i statusregistret. Instruktioner, när de körs, poppar operander från toppen av stacken och skjuter resultaten till stacken. Instruktioner med två operander som FADD, FMUL, FCOM kan fungera både med de två översta elementen i stacken och direkt ta en av operanderna från en godtycklig stackposition.

IEEE-standard för flyttal

När Intel skapade 8087-samprocessorn hoppades Intel kunna standardisera flyttalsformatet för framtida utveckling. Historiskt sett är vikten av 8087 att den blev grunden för IEEE 754 flyttalsstandard . Eftersom IEEE 754-standarden var under utveckling fram till 1985, överensstämde inte 8087-samprocessorn helt med den, men full överensstämmelse med standarden uppnåddes redan i Intel 80387 -samprocessorn. 8087 gav två grundläggande flyttalsdatatyper ( 32-bitars enkelprecision och 64-bitars dubbelprecision ), samt ett utökat 80-bitarsformat för att förbättra noggrannheten i stora och komplexa beräkningar. Dessutom erbjöd 8087 ett 80-bitars/18-siffrigt BCD - format, såväl som 16, 32 och 64-bitars heltalstyper [11] .

Infinity control

8087 hanterar oändlighetsvärden via affin eller projektiv stängning (läge valt via statusregistret). I affint stängningsläge behandlas positiv och negativ oändlighet som olika värden. I det projektiva stängningsläget anses båda oändligheterna vara lika [12] . Dessa två oändliga driftsätt föreslogs i IEEE 754 -standarden . Det projektiva stängningsläget uteslöts dock från den slutliga versionen av standarden. 80287-samprocessorn behöll det projektiva stängningsläget som ett alternativ, medan 80387 och senare samprocessorer (inklusive 80187) endast stödde det affina stängningsläget.

Ansluta en samprocessor

8087-samprocessorn skiljer sig från senare Intel-samprocessorer genom att den ansluter direkt till adress- och databussarna. 8086- och 8088-processorerna, när de hittar instruktioner som börjar med sekvensen '11011', överför kontrollen till samprocessorn. Samprocessorn innehåller samma instruktionskö som processorn (inställning av kön för parametrarna för 8086- eller 8088-processorn görs genom att analysera BHE- signalen efter en hårdvaruåterställning). Om en instruktion kräver att data utbyts med minnet, beräknar 8088- eller 8086-processorerna sin adress och utför en dummy-läscykel, och ignorerar själva datan. Den faktiska avläsningen av data görs av samprocessorn. Om mer än ett ord (byte) behöver läsas, begär samprocessorn bussstyrning och läser resten av operanden, inkrementerande adress [13] .

Efter att ha skickat en instruktion till samprocessorn börjar huvudprocessorn omedelbart bearbeta nästa. Därför kan 8086- eller 8088-processorer arbeta parallellt med en 8087-samprocessor. Detta kan dock leda till två oönskade situationer:

För att synkronisera processorn och samprocessorn används FWAIT-instruktionen, som stoppar huvudprocessorns arbete tills en signal tas emot från samprocessorn att den har avslutat behandlingen. Assembly- språköversättaren infogar automatiskt denna instruktion före varje instruktion från 8087-samprocessorn [10] . I senare modeller av samprocessorer har behovet av att lägga till FWAIT-instruktionen innan varje flyttalsinstruktion försvunnit, men instruktionen behövs fortfarande för att synkronisera processorerna om de kommer åt samma data [15] .

Det finns risk för programfel om instruktionen inte kan avkodas av samprocessorn. Senare modeller av Intel-samprocessorer använde inte denna bussanslutning, och instruktioner skickades till samprocessorn av huvudprocessorn. Även om detta resulterade i en fördröjning i utförandet av instruktioner, undvek det samtidigt risken för ett programfel, eftersom huvudprocessorn skulle ignorera en instruktion som samprocessorn inte accepterade.

Versioner och analoger

Intel 8087-samprocessorerna tillverkades i keramiska förpackningar av CerDIP- och PDIP-typerna och designades för att fungera i följande temperaturområden:

Alla varianter av 8087 kom i 40-stifts DIP - paket och körde på 5 volt och förbrukade cirka 2,4 watt. Till skillnad från senare Intel-samprocessorer måste 8087 köras med samma klockhastighet som huvudprocessorn [5] . Suffix i beteckningen av mikrokretsar bestämde den maximala klockfrekvensen:

Klockfrekvenser 8087 [4] [11]
Chipbeteckning 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

Samprocessorn producerades under licens av AMD under beteckningen AMD 8087 [1] och Cyrix under beteckningen Cyrix 8087 [2] . I Sovjetunionen producerades en analog av 8087 under beteckningen K1810VM87 [16] .

Andra generationer av samprocessorer

Liksom med 8088- och 8086-processorerna har 8087-samprocessorn ersatts av nyare generationer av Intel-samprocessorer. Dessa inkluderar 80287 , 80387 och 80187 . Från och med 80486 krävde inte längre Intel-processorer en separat flyttals-samprocessor. Nästan alla av dem hade en samprocessor inbyggd i processorkärnan. Det enda undantaget var 80486SX, som var en modifiering av 80486DX med samprocessorn inaktiverad. 80487 - samprocessorn var faktiskt en fullfjädrad i486DX - processor som hade ett extra stift. När den installerades inaktiverade den 80486SX.

Anteckningar

  1. 1 2 Shvets, Gennadiy AMD 8087 flyttalsenhet (ej tillgänglig länk) . CPU World (8 oktober 2011). Hämtad 1 december 2011. Arkiverad från originalet 25 januari 2013. 
  2. 1 2 Shvets, Gennadiy Cyrix 8087 flyttalsenhet (ej tillgänglig länk) . CPU World (8 oktober 2011). Hämtad 1 december 2011. Arkiverad från originalet 25 januari 2013. 
  3. 1 2 8087 (inte tillgänglig länk) . Coprocessor Dot Info (2007). Hämtad 1 december 2011. Arkiverad från originalet 7 juni 2008. 
  4. 1 2 3 4 Intel FPU (inte tillgänglig länk) . cpu-collection.de (2011). Hämtad 1 december 2011. Arkiverad från originalet 25 januari 2013. 
  5. 1 2 3 Scott Mueller. Uppgradering och reparation av datorer, andra upplagan . - Que Books, 1992. - S.  395 -403. - ISBN 0-88022-856-3 .
  6. Intel Component Data Catalog 1980 , Intel katalognr. C-864/280/150K/CP, sidorna 8-21, 8-28
  7. Sanchez, Canton, 2007 , sid. 96.
  8. US-patent nr 4484259
  9. US Patent #4270167
  10. 1 2 Karen A. Lemone. Assembly Language and Systems Programmering för IBM PC och kompatibla enheter . - Little, Brown och Comp., 1985. - S.  300 . - ISBN 0-316-52069-1 .
  11. 1 2 3 Shvets, Gennadiy Intel 8087-familjen (inte tillgänglig länk) . CPU World (8 oktober 2011). Hämtad 1 december 2011. Arkiverad från originalet 1 september 2013. 
  12. Sanchez, Canton, 2007 , sid. 110.
  13. Mikhail Guk. Intel-processorer: från 8086 till Pentium II. - St Petersburg. : Peter, 1997. - S. 24. - 224 sid. — ISBN 5-88782-398-4 .
  14. M. Krishna Kumar. Mikroprocessorer och mikrokontroller/Coprocessor Föreläsningsanteckningar (länk ej tillgänglig) . Hämtad 21 augusti 2016. Arkiverad från originalet 28 maj 2016. 
  15. Mors S.P., Albert D.D. Mikroprocessorarkitektur 80286 = 80286-arkitekturen. - M . : Radio och kommunikation, 1990. - S.  160 . — 304 sid. — ISBN 5-256-00466-2 .
  16. Nefedov A.V. Integrerade kretsar och deras främmande analoger: en handbok .. - M . : IP RadioSoft, 2001. - T. 11. - S. 500. - 512 sid. — ISBN 5-93037-049-4 .

Litteratur

Länkar