Intel 80386

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 11 december 2021; kontroller kräver 4 redigeringar .
Intel 80386
CPU

Intel 80386 mikroprocessor
Produktion 17 oktober 1985 till september 2007 [1] [2]
Utvecklaren Intel
Tillverkare
CPU- frekvens 12-40  MHz
Produktionsteknik 1,5–1,0  µm
Instruktionsuppsättningar x86
kontakt
Kärnor
Intel 80286Intel 80486

Intel 80386 (även känd som i386 eller helt enkelt 386 ) är en 32-bitars tredje generationens x86 - mikroprocessor från Intel , släppt den 17 oktober 1985. Denna processor var den första 32-bitarsprocessorn för PC :n . Används främst i stationära och bärbara datorer. Används för närvarande främst i kontroller.

Beskrivning

i386-processorn är helt kompatibel med sina föregångare, 8086-80286 - processorerna . Den kör program som är avsedda för dem utan behov av kodändring och omkompilering (eller med minimala ändringar) och gör det mer effektivt:

Samtidigt är i386 en stor revidering av 80286-processorn . Enligt vissa uppskattningar, varken före eller efter i386, har arkitekturen för x86-processorer aldrig ändrats så radikalt. Processorerna i denna arkitektur var de första som introducerade de grundläggande mekanismerna för att stödja moderna 32-bitars operativsystem för PC-kompatibla plattformar.

Huvudändringar:

32 bitar

Hela x86-arkitekturen utökades till 32 bitar - alla register (förutom segment ettor) blev 32-bitars, efter att ha fått prefixet "E" i namnet (EAX, EBX, EIP, EFLAGS, etc.), samtidigt som den fullständiga uppsättning kommandon för att arbeta med dem. Inklusive:

Adressering i skyddat läge har också blivit 32-bitars (med möjligheten att skapa 16-bitars segment för kompatibilitet med 80286). Det gjorde det möjligt för första gången sedan tillkomsten av 8086 att glömma segmentering , eller snarare, segmentstorleksgränsen på 64 kilobyte (16-bitars adressgräns), som länge har upphört att passa programmerare.

Före tillkomsten av i386 använde program och operativsystem flera förbryllande minnesorganisationsmodeller (liten - liten, liten - liten, stor - stor, enorm - enorm), som skilde sig åt i organisationen av kod, stack och datasegment i minnet. 32-bitars adressen gjorde det möjligt att använda en enkel platt modell istället för dem ( engelska  flat ) - en 32-bitars version av en liten modell där alla uppgiftssegment finns i samma adressutrymme. Den platta modellen ger storleken på ett sådant "allmänt" segment till nästan 4 gigabyte, vilket på den tiden räckte för alla tänkbara uppgifter.

Den platta modellen har också nackdelar:

Den platta modellen har kommit till så stor användning att moderna programmerare ofta inte är medvetna om att program kommer åt minnet genom segment.

Paginering

i386 introducerade en ny minneshanteringsmekanism - adressutrymmet som processorn kommer åt för data och kod där segmenten finns (kallat linjärt adressutrymme) kanske inte motsvarar det verkliga fysiska minnet. Fysiskt minne (inklusive buffertar för externa enheter, till exempel videobuffert ) kan mappas till linjärt adressutrymme på ett godtyckligt sätt - varje sida (4 kilobyte i storlek) linjärt utrymme kan omdirigeras till vilken sida som helst i fysiskt minne genom sidan katalog belägen i RAM (katalogadresssidor bestäms av värdet på det nya styrregistret "CR3").

Liksom segment kan sidor i ett linjärt adressutrymme förklaras som inte närvarande (att hänvisa till sådana sidor anropar operativsystemets sidfelshanterare ). Icke-presenterade sidor används främst för att organisera virtuellt minne - sidöverträdelsehanteraren byter minnessidor med externa lagringsenheter. Även icke-presenterade sidor används i plattminnesmodellen (där segmentstorleken vanligtvis är mellan 2 och 4 gigabyte, även om datorn inte har så mycket fysiskt minne) för att markera segmentsidor som operativsystemet inte har allokerat minne till. I det här fallet avslutar en sidbrytning vanligtvis uppgiften eller börjar felsöka den.

Genom personsökning kan i386 adressera upp till 4 GB fysiskt minne och upp till 64 GB virtuellt minne.

Förbättrat stöd för multitasking och säkerhet

Multitasking- stöd på x86-processorer anger hårdvarustöd för "transparent" byte från ett vanligt program ( uppgift ) till ett annat. Vid omkoppling sparar processorn sitt tillstånd (inklusive adressen för nästa instruktion, segmentväljare ) i tillståndssegmentet (TSS; minnessegment, med en väljare från TR-registret) för en uppgift, varefter den återställer tillståndet för en annan uppgift från dess tillståndssegment (den nya uppgiftstillståndssegmentväljaren laddas från beskrivningen av dess kodsegment).

Växling mellan uppgifter görs vanligtvis:

I i386 har säkerhets- och multitasking-mekanismerna utökats och förbättrats avsevärt. Beroende på arten av överträdelserna kan de ignoreras tyst (till exempel kan vissa bitar av EFLAGS-registret inte ändras genom att ladda flaggor från stacken), en undantagshanterare (i operativsystemet) kan anropas. Allvarliga fel på nivån av operativsystemet (eller i verkligt läge) kan föra processorn till ett nödstoppläge (till exempel i händelse av en kränkning i hanteraren av en dubbel överträdelse), från vilken du bara kan avsluta med en hårdvaruåterställning ( engelska  återställning ) av processorn.

Till exempel stöder i386 begränsning av åtkomst till I/O-portar och inaktivera avbrottsflagga via:

Ett försök att köra ett olöst I/O-kommando resulterar i ett undantag vars hanterare (som ägs av operativsystemet) kan avsluta uppgiften av misstag, ignorera den (återuppta körningen vid nästa kommando) eller emulera I/O.

Dessutom stöder i386 multitasking fullt ut alla nya funktioner - för 32-bitars uppgifter innehåller statussegmentet alla 32-bitars och nödvändiga nya register (till exempel CR3-registret med adressen till sidkatalogen för denna uppgift).

Virtuellt läge

Med i386-processorn insåg Intel behovet av bättre stöd för riktigt läge eftersom programvaran vid tidpunkten för introduktionen inte var helt förberedd för att köras i skyddat läge. Därför är det till exempel i i386 möjligt att byta från skyddat läge tillbaka till verkligt läge (under utvecklingen av 80286 ansågs det inte krävas, därför utförs återgång till verkligt läge på datorer med en 80286-processor ut via kretsar - genom en processoråterställning).

Som ett utökat stöd för verkligt läge tillåter i386 att en eller flera uppgifter körs i virtuellt läge  , ett läge som emulerar verkligt adressläge.

Det är viktigt att förstå att "virtuellt läge", trots likheten med namnet, inte är det "tredje läget för processorn" (det vill säga verkligt, skyddat och virtuellt), utan bara arbetssättet för en uppgift i en multitasking-miljö i skyddat läge.

Virtuellt läge är avsett för samtidig exekvering av program i verkligt läge (t.ex. DOS-program) under ett operativsystem med skyddat multitasking-läge.

Utförande i virtuellt läge är nästan identiskt med verkligt läge, med några få undantag på grund av att den virtuella uppgiften körs i skyddat läge:

Till exempel, från version 4.01 - 5.0, när du använder EMM386-minneshanteraren (och dess analoger från andra utvecklare) , fungerar MS-DOS- operativsystemet som en uppgift i virtuellt läge. EMM386 är i det här fallet som ett operativsystem i skyddat läge (som skickar de flesta fällor till MS-DOS-kärnan i en virtuell uppgift).

Virtuellt 8086-läge stöds också i efterföljande 32-bitars x86-processorer upp till x86-64 -kompatibilitetsläge .

Hårdvarufelsökning

Liksom i tidigare processorer (som börjar med 8086) utförs felsökning i i386 genom att anropa ett felsökningsavbrott, vars hanterare överför kontrollen till felsökningsprogrammet. I tidigare processorer kunde felsökning utlösas av två händelser:

i i386 kan felsökning också starta:

Steg för steg

Stepping eller spårning (anropar ett felsökningsavbrott efter att ha utfört varje kommando med TF-flaggan satt) i i386 förblir densamma som i tidigare processorer, och fungerar i alla nya lägen (32-bitars adressering och virtuellt uppgiftsläge).

Brytpunkter

Breakpoint ( engelska  breakpoint ) - avbryter exekveringen av programmet när en viss adress nås.

I tidiga x86-processorer, för att organisera en brytpunkt, var det nödvändigt att ersätta den första byten av kommandot med kommandot att anropa debug-avbrottet (int 3), vilket anropade avbrottet som returnerade kontrollen till debuggern, som returnerade det ursprungliga värdet av första byte av kommandot. Dessutom kunde brytpunkter av detta slag inte ställas in i ROM. i386 stöder sådana brytpunkter för kompatibilitet.

i386-brytpunkter definieras av en adress i felsökningsregistren. Felsökningshanteraren anropas om adressen till nästa instruktion matchar adressen i registret. Eftersom sådana brytpunkter inte kräver skrivning till minnet kan de användas för att felsöka program i ROM. i386 låter dig ställa in upp till fyra brytpunkter samtidigt.

i386-brytpunkter kan också ställas in för att komma åt (läsa eller skriva) en variabel vid en given minnesadress. Processorn anropar felsökningshanteraren när instruktionen kommer åt minnet på den givna adressen.

Uppgiftsväxlingsfällan

Ett felsökningsavbrott kan utlösas när du byter till en uppgift (en speciell bit tillhandahålls i uppgiftsstatussegmentet för detta).

Andra ändringar

Data- och adresslinjerna i 80386-processorn, liksom i 80286-processorn, är inte multiplexerade: det finns 32 datalinjer och 32 oberoende adresslinjer.

Register

Mikroprocessorn har 8 32-bitars register för allmänna ändamål (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP). Den lägre, 16-bitars, hälften av vart och ett av dessa register motsvarar AX, BX, CX, DX, SI, DI, BP, SP-registren i tidigare x86-familjens processorer. Som tidigare är det möjligt att adressera de låga och höga 8-bitarshalvorna, den låga 16-bitarshalvan av 32-bitarsdataregistren (AL och AH, BL och BH, CL och CH, DL och DH). Instruktionspekarregistret och flaggregistret blev också 32-bitars (EIP respektive EFLAGS), med en ny grupp flaggor lagt till flaggregistret. Till 4 16-bitars segmentregister (ES, CS, SS, DS) lades ytterligare 2 16-bitarsregister (FS och GS) till, nu finns det 6 segmentregister. Flera nya registergrupper har lagts till (varje register är 32 bitar): 3 kontrollregister (CR0 (MSW), CR2, CR3), 8 felsökningsregister (DR0, DR1, DR2, DR3, DR6, DR7), 2 testregister ( TR6, TR7).

Instruktionsuppsättning

i386-instruktionsuppsättningen har utökats huvudsakligen genom att lägga till 32-bitars varianter av befintliga instruktioner (bildade av 32-bitars prefix), inklusive de vars 32-bitars varianter har olika mnemonics (pushad/popad, pushfd/popfd, cwd*/ cdq, movsd/cmpsd/scasd/lodsd/insd/outsd, iretd), samt mov-kommandon för nya register. Andra nya instruktioner:

  • ställa in en byte efter villkor (set*)
  • hoppinstruktioner (jmp, j*) med relativ 16-bitars offset
  • fullständiga adressladdningsinstruktioner för nya segmentregister (lfs, lgs)
  • logiska kommandon (och, eller, xor) när du arbetar med 16-bitars omedelbar data har förmågan att använda signerade bytetillägg, vilket gör att sådana kommandon kan reduceras per byte när data placeras i en byte (denna funktion beskrevs först i 80386 proprietära dokumentation, men kan ha funnits i tidigare processorer)

Den genomsnittliga instruktionslängden är 3,2 byte.

Math coprocessor

Precis som i fallet med 80286-80287-paketet gick datautbytet för 80386-processorn med dess samprocessor genom portar med adresserna 0F0H-0FFH, och i princip, med ett litet tillägg till kretsen, var det möjligt att ansluta 80287-samprocessorn till 80386DX-processorn [3] [4] , detta erbjöds som ett billigt alternativ till att använda 80387-samprocessorn.

Speciellt för Intel 80386-mikroprocessorerna utvecklades matematiska samprocessorer 387SX och 387DX, förenade under det enda namnet Intel 80387. Dessa samprocessorer är kompatibla med 386SX- respektive 386DX-processorerna; till exempel kan 387DX-samprocessorn anslutas till en 32-bitars processorbuss. Annars liknar båda modellerna 80287 matematiska coprocessor, som också kan användas med 80386-processorn.

Modeller

Sedan 1985 har många modifieringar av i386-processorn släppts, som skiljer sig åt i prestanda, strömförbrukning, kontakter, fodral och andra egenskaper.

386DX

Den första processorn i 386-familjen släpptes den 13 oktober 1985 och hade en klockhastighet på 16 MHz . Efter lanseringen av 386SX-processorerna fick processorerna i denna serie indexet ''DX'' - ''D''ouble-word e''X''ternal, vilket indikerade dess 32-bitars externa buss. Processorn var positionerad som en produktiv lösning för stationära system. Processorn tillverkades med CHMOS IV-teknik och förbrukade 400 mA, vilket är mycket mindre än Intel 8086. Den 16 februari 1987 tillkännagavs en modell med en frekvens på 20 MHz ; 4 april 1988 vid 25 MHz och 10 april 1989 vid 33 MHz . Processorn tillverkades i PQFP -132-paket (sådana processorer hade bokstaven "NG" i början av namnet, till exempel NG80386DX25) eller i keramisk PGA-132 (sådana processorer hade bokstaven "A" i början av namn, till exempel A80386DX25)

Tidiga 386DX-processorer hade en bugg som ibland gav felaktiga resultat när man arbetade med 32-bitars nummer i program som OS/2 2.x, UNIX/386 eller Windows i avancerat läge. Felet fick systemet att frysa. På grund av vissa problem, inklusive bristen på 32-bitars operativsystem, åtgärdades felet först i april 1987 . Redan släppta processorer testades, som ett resultat av vilka processorer som inte hade ett fel markerades med en dubbel "sigma"-symbol och / eller en enda "IV"-symbol och med ett fel - ENDAST 16 BIT S / W.

386SX

Den första modellen av denna familj introducerades den 16 juni 1988 och hade en frekvens på 16 MHz , senare introducerades snabbare modeller: 20 MHz ( 25 januari 1989 ), 25 MHz och 33 MHz (båda processorerna introducerades den 26 oktober, 1992 ). Processorerna var positionerade som lösningar för stationära och bärbara datorer på ingångsnivå. SX-familjen skilde sig från DX-familjen genom att dess externa databussbredd var 16 bitar och den externa adressbussbredden var 24 bitar, vilket resulterade i att processorn endast kunde adressera 16 MB fysiskt minne, vilket gjorde att datorsystem byggdes på grundval av hårdvara som är kompatibel med tidigare Intel 80286-processorer. Samtidigt kunde 386SX-processorn köra alla program som skrivits för 386DX, och detta gjorde den populär för att göra "Turbo-kort", som Cumulus 386SX, Intel InBoard eller Orchid Liten turbo.

Som en del av SX-serien släpptes processorer märkta 80386SXTA, 80386SXSA, 80386SXLP, som var inbyggda processorer (SXSA-serien), lågeffektprocessorer (Low Power), och som även användes för andra ändamål.

386SL

Den första modellen av denna familj introducerades den 15 oktober 1990 och hade en frekvens på 20 MHz , senare introducerades en 25 MHz- modell ( 30 september 1991 ). Processorerna placerades som de första energieffektiva mikroprocessorerna speciellt designade för bärbara datorer. SL-familjen skilde sig från SX-familjen genom att den även hade en RAM-kontroller, en extern cache-minneskontroller med en kapacitet på 16 till 64 KB och en busskontroller på chipet.

386EX

Det är en modifiering av 386SX-processorn. Processorn var avsedd för inbyggda applikationer med hög integration och låg strömförbrukning. De viktigaste funktionerna i denna processor är låg strömförbrukning, låg matningsspänning, on-chip avbrottskontroller , chip select chip, räknare och timers, JTAG test logik . Denna serie av processorer hade flera modifieringar: EXSA, EXTA, EXTB, EXTC. Den maximala strömmen som dras av processorerna är 320 mA för EXTC-seriens processorer och 140 mA för EXTB-seriens processorer.

Används ombord på olika kretsande satelliter och mikrosatelliter och i NASAs FlightLinux- projekt .

Datorer baserade på Intel 80386-processorn

På basis av 80386 mikroprocessorer skapade IBM persondatorer IBM AT 386 (PC-familjen) och IBM PS / 2-80 (PS / 2-familjen). Den första använde PC-DOS och den andra använde OS/2 .

Utvecklingsteam

  • John Crawford, chefsarkitekt
  • Jim Slager, chefsingenjör
  • Patrick Gelsinger
  • Khaled El Ayat
  • Riaz Haq
  • Gene Hill
  • Jan William L. Prak
  • David Vannier
  • Joseph "Chip" Krauskopf
  • Ken Shoemaker
  • Paul Ries
  • Saurabha Radhika

Specifikationer för olika modeller

Data relevant för alla modeller

Karakteristisk, parameter 386DX 386SX 386SL 386EX
Datum för tillkännagivandet av den första modellen 13 oktober 1985 16 juni 1988 15 oktober 1990 augusti 1994
Klockfrekvenser ( MHz ) 16, 20, 25, 33, 40 12 (SXSA-serien), 16, 20, 25, 33, 40 (SXSA- och SXTA-serien) 20, 25 16, 20, 25, 33 (andra modeller kan ha funnits)
Bredd på den externa databussen 32 bitar 16 bitar 16 bitar 16 bitar
Bitbredd på den externa adressbussen 32 bitar 24 bitar 24 bitar 26 bitar
Mängden fysiskt adresserbart minne 4 GB [5] 16 MB 16 MB 64 MB (för EXTB, EXTC-serien)
Matningsspänning, 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
Processteknik (nm) 1500 och 1000 (33 MHz-modell) 1500 och 1000 1000 800
Kristallområde 42 mm² (för 33 MHz-modell) Inga data Inga data Inga data
Maximal strömförbrukning 0,39 A (33 MHz-modell) 0,38 A (33 MHz-modell) Inga data Inga data
Maximal strömförbrukning, W 1,95 (33 MHz-modell) 1,9 (33MHz-modell) Inga data Inga data
kontakt Sockel typ "Socket" eller lödd till kortet Processorn löddes fast på kortet Processorn löddes fast på kortet Processorn löddes fast på kortet
Ram 132-stifts keramisk PGA eller 132-stifts PQFP 100-stift PQFP 196-stift PQFP 132-stifts PQFP , 144-stifts TQFP
Instruktionsuppsättning x86 (150 instruktioner, mods räknas inte) x86 (150 instruktioner, mods räknas inte) x86 x86

Anteckningar

  1. Intel växlar in gamla marker  (eng.)  (nedlänk) . Hämtad 10 april 2010. Arkiverad från originalet 22 augusti 2011.
  2. Meddelande om produktändring #106013-00 . Hämtad 24 augusti 2011. Arkiverad från originalet 11 januari 2012.
  3. 80287 kort beskrivning på cadcenter Arkiverad 26 april 2008.
  4. BootPrompt-HOWTO på Linux Arkiverad 12 april 2010 på Wayback Machine : "Kernelstartalternativ 'no387': Vissa i387-samprocessorer har buggar som visar sig i 32-bitars skyddat läge. Till exempel orsakar vissa tidiga ULSI-387-chips hårda hängningar med flyttal, uppenbarligen på grund av en bugg i FRSAV/FRRESTOR-instruktionerna. Bootalternativet `no387' säger åt Linux att ignorera svordomar. samprocessor, även om en sådan är närvarande. Naturligtvis måste du då ha en kärna som stöder matematikemulering. Detta kan också vara användbart om du faktiskt har en av de gamla 386-maskinerna med 80287 FPU:er, eftersom Linux inte kan använda 80287."; original på engelska Arkiverad 30 augusti 2009 på Wayback Machine
  5. 1 2 P3 (386) Tredje generationens processorer | Mikroprocessortyper och specifikationer | InformIT . Hämtad 12 november 2017. Arkiverad från originalet 23 oktober 2017.

Litteratur

  • Intel 80386 programmerares referensmanual
  • Intel 80387 programmerares referensmanual (1987)
  • Bramm P., Bramm D. Mikroprocessor 80386 och dess programmering. — M .: Mir, 1990. — 448 sid. — ISBN 5-03-001441-1 .
  • Pappas K., Marie W. Mikroprocessor 80386. - M . : Radio och kommunikation, 1993. - 320 sid. — ISBN 5-256-00826-9 .

Länkar