Intel 80386 | |
---|---|
CPU | |
| |
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.
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:
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.
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.
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).
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 .
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:
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).
BrytpunkterBreakpoint ( 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ällanEtt felsökningsavbrott kan utlösas när du byter till en uppgift (en speciell bit tillhandahålls i uppgiftsstatussegmentet för detta).
Data- och adresslinjerna i 80386-processorn, liksom i 80286-processorn, är inte multiplexerade: det finns 32 datalinjer och 32 oberoende adresslinjer.
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).
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:
Den genomsnittliga instruktionslängden är 3,2 byte.
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.
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.
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.
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.
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.
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 .
Intel i386DX, 25 MHz
Intel i386EXTC, 25 MHz
Intel i386CXSA, 25 MHz
Intel i386 paketerat av IBM
Processorer för uppgradering (Cyrix och Texas Instruments)
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 .
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 |
Intel-processorer | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|