**Intel i860**, eller **Intel 80860** (kodenavn: *N10*), var en superskalær RISC-prosessor som ble lansert av Intel den 27. februar 1989. Den var verdens første RISC-prosessor med mer enn 1 million transistorer. Den ble først produsert med 1.0 ɥm CHMOS-IV, og fra 6. juni 1991 med 0.8 ɥm CHMOS-V. Intel i860 ble lansert i hastigheter på 20, 33 og 40 MHz. Den 6. juni 1991 kom det også en utgave på 50 MHz.

Intel i860 ble lansert som en 64-biter mikroprosessor, men var en hybrid mellom 32-biter og 64-biter. Den var også en hybrid mellom RISC og VLIW.

Intel i860 hadde en intern 64-biter grafikkenhet som utførte SIMD-instruksjoner. Denne oppbygningen påvirket SIMD-instruksjonene MMX som ble lansert i Intel Pentium MMX i 1998 og Streaming SIMD Extensions som ble lansert i Pentium III i 1999. 

Microsoft hadde i 1989 som intensjon å kjøre operativsystemet Windows NT på Intel i860. Denne planen ble imidlertid forkastet.

Intel i860 ble brukt som mikroprosessor i enkelte superdatamaskiner og arbeidsstasjoner; i noen arbeidsstasjon ble den også brukt som grafikkakselrator. Den ble imidlertid ingen kommersiell suksess. I oktober 1997 begynte Intel å fase ut både Intel i860 og Intel i960 til fordel for RISC-prosessoren StrongARM.

Karakteristika
--------------

### Intel 80860 XR

Den opprinnelige Intel i860 XR mikroprosessoren i en 33 MHz versjon.  Foto: Konstantin Lanzet (17. mai 2009)
Forstørrelse av halvlederbrikken til Intel i860 XR.  Foto: Pauli Rautakorpi (25. april 2014)
Intel i860 XP var andre generasjon; her i en 50 MHz utgave.  Foto: Dirk Oppelt (29. mars 2005)
Forstørrelse av halvlederbrikken til Intel i860 XP
Mikroprosessoren ble lansert 27. februar 1989 som en 64-biter mikroprosessor, men var i virkeligheten en hybrid mellom en 32-biter og 64-biter mikroprosessor. Dens dataarkitektur var endog en hybrid mellom RISC og VLIW. Den var verdens første RISC-prosessor med mer enn 1 million transistorer, og ble produsert med 1.0 ɥm CHMOS-IV.

Den var sammensatt av 9 komponenter, og hadde følgende karakteristika:

* Hastigheter på 20, 33 og 40 MHz.
* En 32-biter RISC-kjerne (ALU) med 32 stk generelle 32-biter registre
* En 64-biter flyttallsprosessor (FPU) med 16 stk generelle 64-biter registre
* En flyttallsadderer
* En flyttalls multiplikator
* En 64-biter heltalls SIMD grafikkprosessor (VLIW), som benyttet registrene til flyttallsprosessoren
* Integrert minnehåndterer (MMU)
* Integrert minnekontroller
* 4 Kb integrert hurtigminne for instruksjoner, med 64-biter buss (32 biter til heltallsenheten og 32 biter til flyttallsenheten)
* 8 Kb integrert hurtigminne for data, med 224-biter buss (32-biter til heltallsenheten, 128-biter til flyttallsenheten og 64-biter til minnekontrolleren)
* 32-biter adressebuss (opptil 4 Gb eksternt minne)
* 64-biter databuss

Intel i860 var Intels første RISC-prosessor. Den var også Intels første hyperskalære mikroprosessor. Den var treveis hyperskalær og kunne utføre en heltalls- og to flyttallsinstruksjoner samtidig. Alternativt kunne den utføre en heltalls- og to SIMD-instruksjoner samtidig. Ved 40 MHz hadde den derfor en teoretisk ytelse på 40 MIPS og 80 MFLOPS.

Samme år, den 12. september 1989, lanserte Intel mikroprosessoren Intel i960CA som også var en hyperskalær RISC-mikroprosessor. Den var toveis hyperskalær og kunne utføre en heltalls- og en flyttallsinstruksjon samtidig. Intel i960 ble stort sett brukt som mikrokontroller i RAID harddisker, såvel som for laserskrivere og blekkstråleskrivere, mens Intel i860 var konstruert for bruk i superdatamaskiner og arbeidsstasjoner.

Samme år, den 10. april 1989, lanserte også Intel CISC-prosessoren Intel 80486. Mens forgjengeren Intel 80386 hadde støtte for et eksternt hurtigminne, hadde Intel 80486 et integrert hurtigminne på 8 Kb. Dette var delt mellom instruksjoner og data.

Intel i860 gikk et steg videre og hadde to adskilte hurtigminner for henholdsvis instruksjoner og data.

### Intel 80860 XP

Den 6. juni 1991 ble andre generasjon lansert, under navnet Intel i860 XP (kodenavn: *N11*). Den var produsert med 0.8 ɥm CHMOS-V, og bestod av 2,55 millioner transistorer. Den første generasjon av mikroprosessoren ble samtidig retrospektivt omdøpt til Intel i860 XR.

Det nye i andre generasjon var:

* Hastigheter på 40 og 50 MHz
* Integrert avbruddshåndterer for flerprosessering
* Integrert kontroller for nivå-2 (eksternt) hurtigminne
* Økning av hurtigminne for instruksjoner til 16 Kb
* Økning av hurtigminne for data til 16 Kb

### Instruksjonssettet

Instruksjonssettet var identisk i de to generasjonene.

| Instruksjon | Mening | Merknader |
| --- | --- | --- |
| Adds | Add Signed Integers |  |
| Addu | Add Unsigned Integers |  |
| And | Logical And |  |
| Andh | Logical And High |  |
| Andnot | Logical And Not |  |
| Andnoth | Logical And Not High |  |
| Bc | Branch on CC |  |
| Bc.t | Branch on CC.Taken |  |
| Bla | Branch on LCC and ADD |  |
| Bnc | Branch on not CC |  |
| Bnc.t | Branch on not CC, Taken |  |
| Br | Branch Direct Unconditionally |  |
| Bri | Branch Indirect Unconditionally |  |
| Bte | Branch and Test Equal |  |
| Btne | Branch and Test Not Equal |  |
| Call | Subroutine Call |  |
| Calli | Indirect Subroutine Call |  |
| Fadd.p | Floating-Point Add |  |
| Faddp | Add With Pixel Merge |  |
| Faddz | Add With Z Merge |  |
| Famov.r | Floating-Point Adder Move |  |
| Fiadd.w | Long-Integer Add |  |
| Fisub.w | Long-Integer Subtract |  |
| Fix.v | Floating-Point to Integer Conversion |  |
| Fld.y | Floating-Point Load |  |
| Flush | Cache Flush |  |
| Fmlow.dd | Floating-Point Multiple Low |  |
| Fmmov.r | Floating-Point Register-Register Move |  |
| Fmul.p | Floating-Point Multiply |  |
| Fnop | Floating-Point No Operation |  |
| Form | Or With Merge Register |  |
| Frcp.p | Floating-Point Reciprocal |  |
| Frsqr.p | Floating-Point Reciprocal Square Root |  |
| Fst.y | Floating-Point Store |  |
| Fsub.p | Floating-Point Subtract |  |
| Ftrunc.v | Floating-Point to Integer Conversion |  |
| Fxfr | Transfer Floating-Point to Integer Register |  |
| Fzchkl | 32-Bit Z-Buffer Check |  |
| Fzchks | 16-Bit Z-Buffer Check |  |
| I2ap1.p | Pipelined F-P Add and Multiply |  |
| I2apt.p | Pipelined F-P Add and Multiply |  |
| I2as1.p | Pipelined F-P Subtract and Multiply |  |
| I2ast.p | Pipelined F-P Subtract and Multiply |  |
| I2p1.p | Pipelined F-P Add and Multiply |  |
| I2pt.p | Pipelined F-P Add and Multiply |  |
| I2s1.p | Pipelined F-P Subtract and Multiply |  |
| I2st.p | Pipelined F-P Subtract and Multiply |  |
| Ia1p2.p | Pipelined F-P Add and Multiply |  |
| Ia1s2.p | Pipelined F-P Subtract and Multiply |  |
| Iat1p2.p | Pipelined F-P Add and Multiply |  |
| Iat1s2.p | Pipelined F-P Subtract and Multiply |  |
| Intovr | Software Trap on Integer Overflow |  |
| Ixfr | Transfer Integer to Floating-Point Register |  |
| Ld.c | Load from Control Register |  |
| Ld.x | Load Integer |  |
| Lock | Begin Interlocked Bus Sequence |  |
| M12apm.p | Pipelined F-P Add and Multiply |  |
| M12asm.p | Pipelined F-P Subtract and Multiply |  |
| M12tpa.p | Pipelined F-P Add and Multiply |  |
| M12tpm.p | Pipelined F-P Add and Multiply |  |
| M12tsa.p | Pipelined F-P Subtract and Multiply |  |
| M12tsm.p | Pipelined F-P Subtract and Multiply |  |
| M12ttpa.p | Pipelined F-P Add and Multiply |  |
| M12ttsa.p | Pipelined F-P Subtract and Multiply |  |
| Mi2mp1.p | Pipelined F-P Multiply With Add |  |
| Mi2mpt.p | Pipelined F-P Multiply With Add |  |
| Mi2ms1.p | Pipelined F-P Multiply With Substract |  |
| Mi2mst.p | Pipelined F-P Multiply With Substract |  |
| Mi2p1.p | Pipelined F-P Multiply With Add |  |
| Mi2pt.p | Pipelined F-P Multiply With Add |  |
| Mi2s1.p | Pipelined F-P Multiply With Subtract |  |
| Mi2st.p | Pipelined F-P Multiply With Subtract |  |
| Mim1p2.p | Pipelined F-P Multiply With Add |  |

Ytelse
------

Tre stk i860 XP-50 mikroprosessorer på et hovedkort fra Intel's Paragon XP/S superdatamaskin.
**Intel i860** levde ikke opp til sin teoretiske ytelse. Mikroprosessoren var konstruert ut fra den filosofi at kompleksiteten legges i kompilatoren, ikke maskinvaren. Dette ble vanskeligere enn antatt. Selv om prosessoren teoretisk kunne yte 80 MFLOPs ved 40 MHz, hadde de fleste kompilatorer problemer med å generere kode som førte til en ytelse på 10 MFLOPs.

Liksom den første SPARC-prosessoren (1985), hadde Intel i860 og i860 XP en 4-trinns «pipe», der instruksjoner ble utført i 4 etapper:

* Hent en instruksjon fra minnet
* Dekod instruksjonenen
* Utfør instruksjonen
* Skriv resultatet i minnet

Mens én instruksjon hentes, ble en annen dekodet, en tredje utført, mens resultatet fra en fjerde ble returnert til minnet. Bearbeidelsen av 4 instruksjoner samtidig, gjorde det mulig for i860 å utføre en heltallsinstruksjon per klokkepuls. Ved desimaltallsberegninger kunne prosessoren utføre to instruksjoner per klokkepuls.

Slik kunne Intel i860 yte 40 MIPS og 80 MFLOPS ved 40 MHz.

Dette var imidlertid avhengig av at programmerere skrev god kode. Dårlig programmering kunne forsinkelse utførelsen. Assemblerkoden nedenfor, for i860, illustrerer dårlig programmering.

```
  ld.l  0(r17), r5  ; last inn et tall fra minnet i register 5      
  addu r5, r6, r7   ; adder innholdet i registrene 5 og 6 
                    ; og flytt resultatet til register 7
  or r8, r9, r10    ; legg resultatet av r8 OR r9 i register 10
```

| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| --- | --- | --- | --- | --- | --- | --- |
| HENT | DEKOD | UTFØR | SKRIV |  |  |  |
|  | HENT | DEKOD |  | UTFØR | SKRIV |  |
|  |  | HENT |  | DEKOD | UTFØR | SKRIV |

I kolonne 4 ovenfor forsinkes utførelsen av to instruksjoner.

```
  ld.l  0(r17), r5  ; last inn et tall fra minnet i register 5      
  or r8, r9, r10    ; legg resultatet av r8 OR r9 i register 10
  addu r5, r6, r7   ; adder innholdet i registrene 5 og 6 
                    ; og flytt resultatet til register 7
```

Koden ovenfor medfører ingen forsinkelse.

| 1 | 2 | 3 | 4 | 5 | 6 |
| --- | --- | --- | --- | --- | --- |
| HENT | DEKOD | UTFØR | LES I CACHE | SKRIV |  |
|  | HENT | DEKOD | UTFØR | SKRIV |  |
|  |  | HENT | DEKOD | UTFØR | SKRIV |

Et annet problem med i860 var mangelen på en hurtig håndering av kontekst-skifte. Mikroprosessoren hadde flere parallelle *pipes* (for heltallsenheten og desimaltalls-enhetene), og et avbrudd kunne medføre at samtlige måtte lastes opp på nytt. Slike avbrudd kunne forsinke utførelsen av instruksjoner med mellom 62 og 2000 klokkepulser.

Bruksområder
------------

I begynnelsen ble **i860** brukt av et lite antall svært store datamaskiner, deriblant iPSC/860 ved Los Alamos National Laboratory. Etterhvert som kompilatorene ble forbedret, og kunne generere mer optimal kode for mikroprosessoren, var **i860** utkonkurrert ytelsesmessig av andre RISC-prosessorer.

I enkelte arbeidsstasjoner ble i860 brukt som grafikk-akselrator. Et eksempel var *NeXTdimension*, som kjørte en nedskalert versjon av det distribuerte operativsystemet Mach. Et annet eksempel var *SGI Onyx Reality Engine 2*.

Microsoft hadde i 1989 som intensjon å basere operativsystemet Windows NT på i860-baserte datamaskiner. «N10-operativsystemet», «N-Ten», «NT» og «Dazzle», var interne navn på et operativsystem for i860. Planen ble senere forkastet, og forkortelsen «NT» ble omdøpt fra å bety *N-Ten* til å bety *New Technology*.

I slutten av 1990-årene ble både i860 og i960 erstattet av XScale.

Referanser
----------

1. 1 2 3 4  Margulius 1990, side xv
2. ↑  Margulius 1990, side 3
3. ↑  Margulius 1990, side xvii
4. ↑  Margulius 1990, side 8-9
5. ↑  LATimes 1991, 6. juni 1991, side 4
6. 1 2  Perlmutter 1991, side 3
7. 1 2 3 4  Perlmutter 1991, side 5
8. ↑  Perlmutter 1991, side 7
9. ↑  Custer 1992

Litteratur
----------

* Custer, Helen; Cutler, David N. (1992). *Inside Windows NT*. Microsoft Press, 1. januar 1992. ISBN 1-55615-481-X. ISBN 978-1-55615-481-2. CS1-vedlikehold: Flere navn: forfatterliste (link)
* Los Angeles Times (1991). *Chip Has Record Number of Transistors, Intel Says*. Associated Press, New York City, 6. juni 1991. ISSN 0458-3035. Arkivert fra originalen 15. april 2019. Besøkt 15. april 2019.
* Margulius, Neal (1990). *i860 Microprocessor™ Architecture*. Osborne McGraw-Hill, California, 1. juli 1990. ISBN 0-07-881645-9. ISBN 978-0-07-881645-1.
* Perlmutter, David; Kagan, Michael (1991). *The i860 XP - Second Generation of the i860* (PDF). Intel Israel, august 1991. Arkivert fra originalen (PDF) 20. august 2018. Besøkt 14. april 2019. CS1-vedlikehold: Flere navn: forfatterliste (link)

Eksterne lenker
---------------

* i860 utvidelseskort, geekdot.com, besøkt 18. april 2019
* Intel 80860 (i860) CPU family, cpu-world.com, besøkt 15. april 2019
* i860 bilder og beskrivelse, cpu-collection.de, besøkt 15. april 2019

| * v
* d
* r
Mikroprosessorer fra Intel |
| --- |
| Forløpere til x86 | 4004 **·** 4040 **·** 8008 **·** 8080 **·** 8085 |
| x86-arkitektur | 8086 (8087) **·** 8088 **·** 80186 **·** 80188 **·** 80286 (80287) **·** 80386 (80387) **·** 80486 **·** Pentium **·** Pentium Pro **·** Pentium II **·** Celeron **·** Pentium III **·** Pentium 4 **·** Pentium M **·** Pentium D **·** Pentium Extreme Edition **·** Xeon **·** Core **·** Atom |
| Andre arkitekturer | iAPX 432 **·** i860 **·** i960 **·** XScale **·** Itanium |

|  |  |
| --- | --- |
| Oppslagsverk/autoritetsdata | GND **·** LCCN
 |