x86-arkitektur
x86-arkitekturen er en instruksjonssettarkitektur som ble introdusert i 8086-prosessoren fra Intel i 1978. Den har siden blitt benyttet i en mengde andre mikroprosessorer, og denne arkitekturen brukes fortsatt i de fleste PC-er. Navnet kommer av at hovedprosessoren i hver av de første prosessorgenerasjonene hadde navn som sluttet på 86. Arkitekturen har vært i stadig utvikling siden starten, noe som leder til mange undervarianter. IA-32/x86-32 er en videreutvikling av x86-arkitekturen, og x86-64 en videreutvikling av x86-32. Begge er bortimot fullt ut bakoverkompatible med den opprinnelige x86-arkitekturen.
Suksessen til denne arkitekturen kom egentlig ikke av dens oppbygning. Arkitekturen presterte ikke noe bedre enn andre typer, og Intel hadde planer om å lansere en nyere prosessor med ny arkitektur tidlig på 80-tallet. IBMs suksess med PC-en, som brukte en 8088-prosessor, gjorde det mest lønnsomt å fortsette med x86-arkitekturen. De kansellerte fremtidsplanene, og fortsatte med å videreutvikle arkitekturen. Dette har ført til både positive og negative sider om den. Den største ulempen er kanskje at arkitekturen har mye gammel tankegang helt tilbake fra 70-tallet, men fordelen er at programmer for x86-prosessorer kan kjøres på utrolig mange PC-er fra 80-tallet og frem til i dag.
x86-prosessorer produseres av Intel og AMD. Også NEC, Harris, Cyrix (senere VIA), IBM m.fl. har produsert X86-prosessorer.
Arkitekturen
[rediger | rediger kilde]x86 er en CISC-arkitektur, noe som gjenspeiles i at instuksjonssettet inneholder mange og til dels kompliserte instruksjoner. Den opprinnelige x86-arkitekturen hadde en standard ordlengde på 16 biter, men dette ble økt til 32 biter i IA-32 og 64 biter i x86-64. Lenge hadde arkitekturen relativt få prosessorregistre, men dette endret seg med tiden, spesielt med introduksjonen av x86-64-arkitekturen.
Som de fleste datamaskinarkitekturer benytter x86-arkitekturen toerkomplement for å representere negative heltall. Dette gjør at man for addisjon og subtraksjon kan bruke de samme instruksjonene for å regne på tallverdier som kan være negative og tallverdier som kun er positive, siden logikken er den samme.
En underarkitektur av x86-arkitekturen er x87. De første x86-prosessorene støttet bare heltallsoperasjoner, så hvis man hadde behov for å regne med flyttall måtte man enten gjøre det i programvaren eller koble til en x87-prosessor. Navnet gjenspeiler som for x86 det faktum at disse prosessorene hadde navn som sluttet på 87. Med Intel 80486 prosessoren begynte man å inkludere FPUen i x86-prosessorene. Etter at SSE ble introdusert har man faset ut x87-instruksjonene som hovedmåten å utføre flyttallsoperasjoner på, men de forblir tilgjengelig av hensyn til bakoverkompatibiliteten. x86/x87 følger hovedsakelig IEEE 754-standarden. Flyttall kan representeres i enkel presisjon (32 bit), dobbel presesjon (64 bit) eller i det interne 80-bit formatet (kun x87-operasjoner).
Støtte for SIMD ble introdusert av Intel med MMX i 1997 og har siden blitt utvidet av AMDs 3DNow! og Intels SSE.
Intels prosessorer
[rediger | rediger kilde]Forgjengere til x86-serien (4-bit og 8-bit)
[rediger | rediger kilde]Navn | Lansert | Register- bredde |
Data- buss |
Adresse- buss |
Maksimal RAM |
Merknad |
---|---|---|---|---|---|---|
4004 | 1971 | 4 | 4 | 10 | 1 Kb | Første mikroprosessor på en brikke |
4040 | 1974 | 4 | 4 | 13 | 8 Kb | |
8008 | 1972 | 8 | 8 | 14 | 16 Kb | Første 8-bit mikroprosessor |
8080 | 1974 | 8 | 8 | 16 | 64 Kb | Første mikroprosessor til generelt bruk på en brikke |
8085 | 1977 | 8 | 8 | 16 | 64 Kb | |
Annen produsent | ||||||
Zilog Z80 | 1976 | 8 | 8 | 16 | 64 Kb | Forbedret utgave av 8080 / 8085 |
x86-serien (16-bit)
[rediger | rediger kilde]Navn | Lansert | Register- bredde |
Data- buss |
Adresse- buss |
Maksimal RAM |
Merknad |
---|---|---|---|---|---|---|
8086 | 1978 | 16 | 16 | 20 | 1 Mb | Første 16-bit mikroprosessor på en brikke |
8088 | 1979 | 16 | 8 | 20 | 1 Mb | Mikroprosessoren brukt i IBM PC |
80186 | 1982 | 16 | 16 | 20 | 1 Mb | 8086 med input/output støtte på en brikke |
80188 | 1982 | 16 | 8 | 20 | 1 Mb | 8088 med input/output støtte på en brikke |
80286 | 1982 | 16 | 16 | 24 | 16 Mb | Første mikroprosessor med integrert MMU |
Andre produsenter | ||||||
AMD 8086 | 1979 | 16 | 16 | 20 | 1 Mb | |
Harris 8086 | 16 | 16 | 20 | 1 Mb | ||
OKI 8086 | 16 | 16 | 20 | 1 Mb | ||
MHS 8086 | 16 | 16 | 20 | 1 Mb | ||
NEC 8086 | 16 | 16 | 20 | 1 Mb | ||
Siemens 8086 | 16 | 16 | 20 | 1 Mb | ||
Mitsubishi 8086 | 16 | 16 | 20 | 1 Mb | ||
Fujitsu 8086 | 16 | 16 | 20 | 1 Mb | ||
USSR 8086 | 16 | 16 | 20 | 1 Mb | Klone av 8086 produsert i Sovjetunionen | |
AMD 8088 | 1979 | 16 | 16 | 20 | 1 Mb |
x86-serien (32-bit)
[rediger | rediger kilde]Navn | Lansert | Register- bredde |
Data- buss |
Adresse- buss |
Maksimal RAM |
Merknad |
---|---|---|---|---|---|---|
80386 | 1985 | 32 | 32 | 32 | 4 Gb | Første 32-bit x86-prosessor |
80386 SX | 1988 | 32 | 16 | 32 | 4 Gb | 80386 med 16-bit databuss |
80486 | 1989 | 32 | 32 | 32 | 4 Gb | Integrert flyttallsenhet + 8 Kb nivå 1 Cache for data og instruksjoner |
80486 SX | 1991 | 32 | 32 | 32 | 4 Gb | 80486 uten flyttallsenhet |
80486 DX2 | 1992 | 32 | 32 | 32 | 4 Gb | 80486 med klokkedobling |
80486 DX4 | 1992 | 32 | 32 | 32 | 4 Gb | 80486 med 3 x klokkefrekvens |
Pentium | 1993 | 32 | 32 | 32 | 4 Gb | Hyperskalær prosessor: 2 heltallsenheter og 1 flyttallsenhet + 8 Kb nivå-1 Cache for data og 8 Kb Nivå-1 Cache for instruksjoner |
Pentium MMX | 1995 | 32 | 32 | 32 | 4 Gb | Ekstra multimediaenhet (MMX) + 16 Kb nivå-1 Cache for data og 16 Kb Nivå-1 Cache for instruksjoner |
Pentium Pro | 1995 | 32 | 32 | 36 | 36 Gb | Hyperskaler prosessor (3 instruksjoner samtidig), RISC- kjerne, register renaming, 40 nye generelle registre, out-of-order execution, spekulativ utførelse, ikke-blokkerende Nivå-2 Cache-RAM |
Pentium II | 1997 | 32 | 32 | 36 | 36 Gb | Pentium Pro med innebygd MMX |
Pentium III | 1997 | 32 | 32 | 36 | 36 Gb | Pentium II med forbedret MMX + innebygd støtte for AMDs SSE |
Pentium 4 | 2000 | 32 | 32 | 36 | 36 Gb | Ytterligere forbedret MMX og SSE + SSE2 og SSE3 |