Intel 80386 | |
---|---|
CPU | |
| |
Produktion | 17. oktober 1985 til september 2007 [ 1] [2] |
Udvikler | Intel |
Producenter | |
CPU frekvens | 12-40 MHz |
Produktionsteknologi | 1,5-1,0 µm |
Instruktionssæt | x86 |
Stik | |
Kerner | |
Intel 80286Intel 80486 |
Intel 80386 (også kendt som i386 eller blot 386 ) er en 32-bit , tredje generation af x86 mikroprocessor fra Intel , udgivet den 17. oktober 1985. Denne processor var den første 32-bit processor til pc'en . Anvendes hovedsageligt i stationære og bærbare pc'er. Bruges i øjeblikket hovedsageligt i controllere.
i386-processoren er fuldt ud kompatibel med sine forgængere, 8086-80286 - processorerne . Det udfører programmer beregnet til dem uden behov for kodeændring og rekompilering (eller med minimale ændringer) og gør det mere effektivt:
Samtidig er i386 en større revision af 80286-processoren . Ifølge nogle skøn, hverken før eller efter i386, er arkitekturen af x86-processorer aldrig blevet ændret så radikalt. Processorerne i denne arkitektur var de første til at introducere de grundlæggende mekanismer til at understøtte moderne 32-bit operativsystemer til pc-kompatible platforme.
Vigtigste ændringer:
Hele x86-arkitekturen blev udvidet til 32 bit - alle registre (bortset fra segment en) blev 32-bit, efter at have modtaget præfikset "E" i navnet (EAX, EBX, EIP, EFLAGS osv.), mens den fulde sæt kommandoer til arbejde med dem. Inklusive:
Beskyttet tilstandsadressering er også blevet 32-bit (med mulighed for at oprette 16-bit segmenter for kompatibilitet med 80286). Det gjorde det for første gang siden fremkomsten af 8086 muligt at glemme segmentering , eller rettere sagt, segmentstørrelsesgrænsen på 64 kilobytes (16-bit adressegrænse), som for længst er holdt op med at passe programmører.
Før fremkomsten af i386 brugte programmer og operativsystemer adskillige forvirrende hukommelsesorganisationsmodeller (lille - lille, lille - lille, stor - stor, enorm - enorm), adskilt i organisationen af kode, stak og datasegmenter i hukommelsen. 32-bit-adressen gjorde det muligt at bruge én simpel flad model i stedet for dem ( engelsk flat ) - en 32-bit version af en lillebitte model, hvor alle opgavesegmenter er i samme adresserum. Den flade model giver størrelsen af et sådant "generelt" segment til næsten 4 gigabyte, hvilket på det tidspunkt var nok til enhver tænkelig opgave.
Den flade model har også ulemper:
Den flade model er kommet i brug så bredt, at moderne programmører ofte ikke er klar over, at programmer får adgang til hukommelsen gennem segmenter.
i386 introducerede en ny hukommelsesstyringsmekanisme - det adresserum, som processoren får adgang til for data og kode, hvori segmenterne er placeret (kaldet det lineære adresserum), svarer muligvis ikke til ægte fysisk hukommelse. Fysisk hukommelse (herunder buffere på eksterne enheder, for eksempel videobuffer ) kan kortlægges i lineært adresserum på en vilkårlig måde - hver side (4 kilobytes i størrelse) lineær plads kan omdirigeres til enhver side i fysisk hukommelse gennem siden bibliotek placeret i RAM (katalogadressesider bestemmes af værdien af det nye kontrolregister "CR3").
Ligesom segmenter kan sider i et lineært adresserum erklæres ikke til stede (henvisning til sådanne sider påberåber sig operativsystemets sidefejlbehandler ). Ikke-tilstedeværende sider bruges primært til at organisere virtuel hukommelse - sideovertrædelseshåndteringen bytter hukommelsessider med eksterne lagerenheder. Ikke-tilstedeværende sider bruges også i den flade hukommelsesmodel (hvor segmentstørrelsen typisk er mellem 2 og 4 gigabyte, selvom computeren ikke har så meget fysisk hukommelse) til at markere segmentsider, som operativsystemet ikke har allokeret hukommelse til. I dette tilfælde afslutter et sideskift normalt opgaven eller begynder at fejlsøge den.
Gennem personsøgning kan i386 adressere op til 4 GB fysisk hukommelse og op til 64 GB virtuel hukommelse.
Multitasking- understøttelse på x86-processorer angiver hardwareunderstøttelse for "gennemsigtig" skift fra et almindeligt program ( opgave ) til et andet. Ved omskiftning gemmer processoren sin tilstand (inklusive adressen på den næste instruktion, segmentvælgere ) i tilstandssegmentet (TSS; hukommelsessegment, med en vælger fra TR-registret) for en opgave, hvorefter den gendanner en andens tilstand. opgave fra dets tilstandssegment (den nye opgavetilstandssegmentvælger indlæses fra beskrivelsen af dets kodesegment).
Skift mellem opgaver udføres normalt:
I i386 er sikkerheds- og multitasking-mekanismerne blevet kraftigt udvidet og forbedret. Afhængigt af arten af overtrædelserne kan de ignoreres stille (for eksempel kan nogle bits af EFLAGS-registret ikke ændres ved at indlæse flag fra stakken), en undtagelseshandler (af operativsystemet) kan kaldes. Alvorlige fejl på niveauet af operativsystemet (eller i rigtig tilstand) kan bringe processoren i en nødstoptilstand (for eksempel i tilfælde af en overtrædelse i håndtereren af en dobbelt overtrædelse), hvorfra du kun kan afslutte med en hardwarenulstilling ( engelsk nulstilling ) af processoren.
For eksempel understøtter i386 begrænsning af adgang til I/O-porte og deaktiver interrupt-flaget via:
Et forsøg på at udføre en uløst I/O-kommando resulterer i en undtagelse, hvis handler (ejet af operativsystemet) kan afslutte opgaven ved en fejltagelse, ignorere den (genoptage udførelse ved næste kommando) eller emulere I/O.
Derudover understøtter i386 multitasking fuldt ud alle nye funktioner - for 32-bit opgaver indeholder statussegmentet alle 32-bit og nødvendige nye registre (for eksempel CR3-registeret med adressen på sidebiblioteket for denne opgave).
Med i386-processoren anerkendte Intel behovet for bedre real mode-understøttelse, fordi softwaren på tidspunktet for dens introduktion ikke var fuldt forberedt til at køre i beskyttet tilstand. Derfor er det for eksempel i i386 muligt at skifte fra beskyttet tilstand tilbage til reel tilstand (under udviklingen af 80286 blev det anset, at dette ikke ville være påkrævet, derfor udføres tilbagevenden til reel tilstand på computere med en 80286-processor ud af kredsløb - gennem en processornulstilling).
Som en udvidet understøttelse af ægte tilstand tillader i386 en eller flere opgaver at køre i virtuel tilstand , en tilstand, der emulerer ægte adressetilstand.
Det er vigtigt at forstå, at "virtuel tilstand", på trods af navnets lighed, ikke er "processorens tredje tilstand" (det vil sige ægte, beskyttet og virtuel), men kun funktionsmåden for en opgave i en multitasking-miljø i beskyttet tilstand.
Virtuel tilstand er beregnet til samtidig afvikling af programmer i virkelig tilstand (f.eks. DOS-programmer) under et operativsystem med beskyttet multitasking-tilstand.
Udførelse i virtuel tilstand er næsten identisk med virkelig tilstand, med nogle få undtagelser på grund af det faktum, at den virtuelle opgave udføres i beskyttet tilstand:
For eksempel, fra version 4.01 - 5.0, når du bruger EMM386 memory manager (og dens analoger fra andre udviklere) , fungerer MS-DOS- operativsystemet som en opgave i virtuel tilstand. EMM386 er i dette tilfælde som et operativsystem i beskyttet tilstand (passer de fleste fælder til MS-DOS-kernen i en virtuel opgave).
Virtuel 8086-tilstand understøttes også i efterfølgende 32-bit x86-processorer op til x86-64 -kompatibilitetstilstand .
Som i tidligere processorer (startende med 8086) udføres debugging i i386 ved at kalde en debug interrupt, hvis handler overfører kontrol til debugger-programmet. I tidligere processorer kunne debugging udløses af to hændelser:
i i386 kan debugging også starte:
Stepping eller tracing (kalder et debug-interrupt efter at have udført hver kommando med TF-flaget sat) i i386 forbliver det samme som i tidligere processorer, og fungerer i alle nye tilstande (32-bit adressering og virtuel opgavetilstand).
BreakpointsBreakpoint ( engelsk breakpoint ) - afbryde afviklingen af programmet, når en bestemt adresse nås.
I de tidlige x86-processorer, for at organisere et breakpoint, var det nødvendigt at erstatte den første byte af kommandoen med kommandoen til at kalde fejlfindingsafbrydelsen (int 3), hvilket kalder interruptet returnerede kontrol til debuggeren, som returnerede den oprindelige værdi af første byte af kommandoen. Derudover kunne brudpunkter af denne art ikke indstilles i ROM. i386 understøtter sådanne brudpunkter for kompatibilitet.
i386-brudpunkter er defineret af en adresse i fejlretningsregistrene. Debug-handleren kaldes, hvis adressen på den næste instruktion matcher adressen i registret. Da sådanne brudpunkter ikke kræver skrivning til hukommelsen, kan de bruges til at fejlsøge programmer i ROM. i386 giver dig mulighed for at indstille op til fire breakpoints på samme tid.
i386-brudpunkter kan også indstilles til at få adgang til (læse eller skrive) en variabel på en given hukommelsesadresse. Processoren kalder debug-handleren, når instruktionen får adgang til hukommelsen på den givne adresse.
OpgaveskiftefældenEn fejlretningsafbrydelse kan udløses, når du skifter til en opgave (en speciel bit er angivet i opgavestatussegmentet til dette).
Data- og adresselinjerne i 80386-processoren, som i 80286-processoren, er ikke multipleksede: Der er 32 datalinjer og 32 uafhængige adresselinjer.
Mikroprocessoren har 8 32-bit generelle registre (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP). Den nederste, 16-bit, halvdelen af hvert af disse registre svarer til AX, BX, CX, DX, SI, DI, BP, SP-registrene i tidligere x86-familieprocessorer. Som før er det muligt at adressere de lave og høje 8-bit halvdele, den lave 16-bit halvdel af 32-bit dataregistrene (AL og AH, BL og BH, CL og CH, DL og DH). Instruktionsmarkørregistret og flagregistret blev også 32-bit (henholdsvis EIP og EFLAGS), med en ny gruppe af flag tilføjet til flagregistret. Til 4 16-bit segmentregistre (ES, CS, SS, DS) blev der tilføjet 2 yderligere 16-bit registre (FS og GS), nu er der 6 segmentregistre. Flere nye registergrupper er tilføjet (hvert register er på 32 bit): 3 kontrolregistre (CR0 (MSW), CR2, CR3), 8 fejlretningsregistre (DR0, DR1, DR2, DR3, DR6, DR7), 2 testregistre ( TR6, TR7).
i386-instruktionssættet er blevet udvidet hovedsageligt ved at tilføje 32-bit varianter af eksisterende instruktioner (dannet af 32-bit præfikser), inklusive dem, hvis 32-bit varianter har forskellige mnemonics (pushad/popad, pushfd/popfd, cwd*/ cdq, movsd/cmpsd/scasd/lodsd/insd/outsd, iretd), samt mov-kommandoer til nye registre. Andre nye instruktioner:
Den gennemsnitlige instruktionslængde er 3,2 bytes.
Ligesom i tilfældet med 80286-80287-pakken gik dataudvekslingen af 80386-processoren med dens coprocessor gennem porte med adresser 0F0H-0FFH, og i princippet var det med en lille tilføjelse til kredsløbet muligt at tilslutte 80287 coprocessor til 80386DX processor [3] [4] , dette blev tilbudt som et billigt alternativ til at bruge 80387 coprocessor.
Specielt til Intel 80386 mikroprocessorerne blev 387SX og 387DX matematiske coprocessorer udviklet, samlet under det fælles navn Intel 80387. Disse coprocessorer er kompatible med henholdsvis 386SX og 386DX processorerne; for eksempel kan 387DX-coprocessoren tilsluttes en 32-bit processorbus. Ellers ligner begge modeller 80287 matematiske coprocessor, som også kan bruges med 80386 processor.
Siden 1985 er der blevet frigivet mange modifikationer af i386-processoren, der adskiller sig i ydeevne, strømforbrug, stik, etuier og andre egenskaber.
Den første processor i 386-familien blev frigivet den 13. oktober 1985 og havde en clockhastighed på 16 MHz . Efter udgivelsen af 386SX-processorerne modtog processorerne i denne serie indekset ''DX'' - ''D''dobbelt-ord e''X''ternal, som indikerede dens 32-bit eksterne bus. Processoren var placeret som en produktiv løsning til desktop-systemer. Processoren blev produceret ved hjælp af CHMOS IV-teknologi og forbrugte 400 mA, hvilket er meget mindre end Intel 8086. Den 16. februar 1987 blev en model med en frekvens på 20 MHz annonceret ; 4. april 1988 ved 25 MHz og 10. april 1989 ved 33 MHz . Processoren blev produceret i PQFP -132-pakker (sådanne processorer havde bogstavet "NG" i begyndelsen af navnet, f.eks. NG80386DX25) eller i keramisk PGA-132 (sådanne processorer havde bogstavet "A" i begyndelsen af navn, for eksempel A80386DX25)
Tidlige 386DX-processorer havde en fejl, der nogle gange gav forkerte resultater, når de arbejdede med 32-bit tal i programmer som OS/2 2.x, UNIX/386 eller Windows i avanceret tilstand. Fejlen fik systemet til at fryse. På grund af nogle problemer, herunder manglen på 32-bit operativsystemer, blev fejlen først rettet i april 1987 . Allerede frigivne processorer blev testet, hvilket resulterede i, at processorer, der ikke havde en fejl, blev markeret med et dobbelt "sigma"-symbol og/eller et enkelt "IV"-symbol og med en fejl - KUN 16 BIT S/W.
Den første model af denne familie blev introduceret den 16. juni 1988 og havde en frekvens på 16 MHz , senere blev hurtigere modeller introduceret: 20 MHz ( 25. januar 1989 ), 25 MHz og 33 MHz (begge processorer blev introduceret den 26. oktober, 1992 ). Processorerne var placeret som løsninger til desktop- og bærbare computere på begynderniveau. SX-familien adskilte sig fra DX-familien ved, at dens eksterne databusbredde var 16 bit, og den eksterne adressebusbredde var 24 bit, hvilket resulterede i, at processoren kun kunne adressere 16 MB fysisk hukommelse, hvilket gjorde computersystemer bygget på sin basis hardware kompatibel med tidligere Intel 80286 processorer.Samtidig kunne 386SX processoren køre alle programmer skrevet til 386DX, og det gjorde den populær til at lave "Turbo boards", såsom Cumulus 386SX, Intel InBoard eller Orchid Lille Turbo.
Som en del af SX-serien blev der frigivet processorer mærket 80386SXTA, 80386SXSA, 80386SXLP, som var indlejrede processorer (SXSA-serien), laveffektprocessorer (Low Power), og som også blev brugt til andre formål.
Den første model af denne familie blev introduceret den 15. oktober 1990 og havde en frekvens på 20 MHz , senere blev en 25 MHz model introduceret ( 30. september 1991 ). Processorerne blev placeret som de første energieffektive mikroprocessorer, der er specielt designet til bærbare pc'er. SL-familien adskilte sig fra SX-familien ved, at den også havde en RAM-controller, en ekstern cache-hukommelsescontroller med en kapacitet på 16 til 64 KB og en bus-controller på chippen.
Det er en modifikation af 386SX-processoren. Processoren var beregnet til indlejrede applikationer med høj integration og lavt strømforbrug. Nøglefunktionerne ved denne processor er lavt strømforbrug, lav forsyningsspænding, on-chip interrupt controller , chip select chip, tællere og timere, JTAG test logik . Denne serie af processorer havde flere modifikationer: EXSA, EXTA, EXTB, EXTC. Den maksimale strøm, der trækkes af processorerne, er 320 mA for EXTC-seriens processorer og 140 mA for EXTB-seriens processorer.
Brugt ombord på forskellige kredsende satellitter og mikrosatellitter og i NASAs FlightLinux- projekt .
Intel i386DX, 25 MHz
Intel i386EXTC, 25 MHz
Intel i386CXSA, 25 MHz
Intel i386 pakket af IBM
Processorer til opgradering (Cyrix og Texas Instruments)
På basis af 80386 mikroprocessorer skabte IBM personlige computere IBM AT 386 (PC-familie) og IBM PS / 2-80 (PS / 2-familie). Den første brugte PC-DOS og den anden brugte OS/2 .
Karakteristisk, parameter | 386DX | 386SX | 386SL | 386EX |
---|---|---|---|---|
Dato for annonceringen af den første model | 13. oktober 1985 | 16. juni 1988 | 15. oktober 1990 | august 1994 |
Urfrekvenser ( MHz ) | 16, 20, 25, 33, 40 | 12 (SXSA-serien), 16, 20, 25, 33, 40 (SXSA- og SXTA-serien) | 20, 25 | 16, 20, 25, 33 (andre modeller kan have eksisteret) |
Bredde på den eksterne databus | 32 bit | 16 bit | 16 bit | 16 bit |
Bitbredde på den eksterne adressebus | 32 bit | 24 bit | 24 bit | 26 bit |
Mængden af fysisk adresserbar hukommelse | 4 GB [5] | 16 MB | 16 MB | 64 MB (til EXTB, EXTC-serien) |
Forsyningsspænding, volt | 5 | 5 | 5 | 2,7~3,6V (EXTB-serien) 4,5~5,5V (EXTC-serien) |
Antal transistorer | 275.000 | 275.000 | 855.000 | 275.000 |
Procesteknologi (nm) | 1500 og 1000 (33 MHz model) | 1500 og 1000 | 1000 | 800 |
Krystal område | 42 mm² (til 33 MHz model) | Ingen data | Ingen data | Ingen data |
Maksimalt strømforbrug | 0,39 A (33 MHz model) | 0,38 A (33 MHz model) | Ingen data | Ingen data |
Maksimalt strømforbrug, W | 1,95 (33 MHz model) | 1,9 (33MHz model) | Ingen data | Ingen data |
Stik | Sokkeltype "Socket" eller loddet til brættet | Processoren blev loddet til kortet | Processoren blev loddet til kortet | Processoren blev loddet til kortet |
Ramme | 132-bens keramisk PGA eller 132-bens PQFP | 100-pin PQFP | 196-pin PQFP | 132-benet PQFP , 144-benet TQFP |
Instruktionssæt | x86 (150 instruktioner, mods tæller ikke med) | x86 (150 instruktioner, mods tæller ikke med) | x86 | x86 |
Intel processorer | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|