Intel 80286 | |
---|---|
CPU | |
| |
Productie | 1 februarie 1982 până la începutul anilor 1990 |
Dezvoltator | Intel |
Producătorii | |
frecvența procesorului | 4-25 MHz |
Tehnologia de producție | 1,5 µm |
Seturi de instrucțiuni | x86-16 (cu MMU ) |
Conectori | |
Nuclei | |
Intel 80188Intel 80386 |
Intel 80286 (cunoscut și ca i80286, i286, slang deuce ) este un microprocesor compatibil x86 pe 16 biți din a doua generație de la Intel, lansat la 1 februarie 1982. Este o versiune îmbunătățită a procesorului Intel 8086 și are performanțe de 3-6 ori mai mari. Procesorul a fost folosit în principal pe computerele IBM compatibile cu PC-uri .
Procesorul Intel 80286 a fost dezvoltat în paralel cu procesoarele Intel 80186 / 80188 , cu toate acestea, îi lipseau unele module care erau disponibile în procesorul Intel 80186. Procesorul Intel 80286 a fost produs exact în același pachet ca și Intel 80186 - LCC , deoarece precum şi în cazurile de tip PGA cu 68 de concluzii. Numărul de registre a fost crescut în noul procesor , au fost adăugate noi instrucțiuni , a fost adăugat un nou mod de procesor - modul protejat . Procesorul avea o coadă de 6 octeți (ca Intel 8086). Adresele și magistralele de date nu sunt multiplexate în el (adică adresele și datele sunt transmise pe diferiți pini). Autobuzul de adrese a fost mărit la 24 de biți, astfel încât cantitatea de RAM poate fi de 16 MB. Pentru operații mai rapide în virgulă mobilă, este necesar coprocesorul matematic Intel 80287 .
Pe lângă cele 14 registre ale procesorului Intel 8086, s-au adăugat 11 registre noi pentru a implementa modul protejat și alte funcții: registru de cuvinte de stare a mașinii, 16 biți (MSW); registru de sarcini, 16 biți (TR); registre de tabel de descriptori , unul pe 64 de biți și două pe 40 de biți ( GDTR , IDTR, LDTR ) și registre de extensie a registrului cu 6 segmente, 48 de biți.
Procesorul avea același set de instrucțiuni ca și procesorul Intel 80186, la care s-au adăugat 16 instrucțiuni noi (LGDT, LIDT, LLDT, LMSW, LTR, SGDT, SIDT, SLDT, SMSW, STR, ARPL, CLTS, LAR, LSL, VERR , VERW) necesare pentru a lucra cu instrumente de gestionare a memoriei. Comanda PUSH ar putea salva acum constante pe stivă . Instrucțiunile din Intel 80286 sunt executate în medie de 4,5 cicluri.
Bus-ul de adrese pe 24 de biți permite adresarea a 16 MB de memorie fizică, dar în modul real este disponibil doar 1 MB (640 KB memorie obișnuită și 384 KB memorie extinsă), pornind de la adrese reduse. Din punct de vedere software, memoria este organizată sub formă de segmente, la fel ca în 8086, dar controlul segmentării are diferențe semnificative pentru modurile reale și protejate.
În modul real, adresarea memoriei declară compatibilitatea deplină cu procesorul 8086, care, cu magistrala de adrese de 20 de biți, acoperă un spațiu de memorie fizică de 1 MB. De fapt, spre bucuria dezvoltatorilor de software pentru PC, 80286 are un bug care este „legalizat” în generațiile viitoare de procesoare. Când se calculează o adresă fizică, poate apărea o depășire, care cu o magistrală de adrese de 20 de biți este pur și simplu ignorată. Dacă, de exemplu, Seg=FFFFh și EA=FFFFh, adresa fizică calculată prin formula PA=16 x Seg + EA=10FFEF este interpretată de procesorul 8086 ca 0FFEF - adresa aparținând primului megaoctet. Cu toate acestea, ieșirea A20 a procesorului 80286 în acest caz va fi setată la unu, care corespunde adresei celulei din al doilea megaoctet de memorie fizică. Pentru a asigura compatibilitatea completă a software-ului cu 8086, în circuitul PC-ului a fost introdusă o poartă specială Gate A20, care resetează forțat bitul A20 al magistralei de adrese a sistemului. Fără a realiza beneficiul potențial al acestei erori, controlul porții a fost legalizat printr-un bit controlat de software al controlerului de tastatură 8042. Când memoria RAM a devenit mai ieftină și „apetitul” de software a crescut, unele programe rezidente sau chiar o parte a sistemului de operare și au apărut metode mai rapide pentru a accelera controlul supapelor (Gate A20 Fast Control).
Spre deosebire de 8086, procesorul 80286 are controale de trecere a frontierei segmentelor care funcționează și în modul real. Când încercați să adresați un cuvânt cu un offset de FFFFh (octetul său mare depășește limita segmentului) sau executați o instrucțiune ai cărei octeți nu se încadrează în acest segment, procesorul generează o întrerupere - o excepție de tip 13 (0Dh) - Excepție de depășire a segmentului. O încercare de a executa o instrucțiune ESCAPE cu un operand de memorie care nu se încadrează în segment aruncă o excepție de tip 9 - Întreruperea de depășire a segmentului de extensie a procesorului.
În modul protejat, toate modurile de adresare permise pentru 8086 și modul real 80286 funcționează. Diferențele se referă la definirea segmentelor:
Procesorul Intel 80286 a implementat două moduri de operare - modul protejat și modul real . În modul real, procesorul era pe deplin compatibil cu procesoarele x86 lansate înainte, adică procesorul putea executa programe destinate Intel 8086/8088/8018x fără reasamblare sau reasamblare cu modificări minime. Doar 20 de linii de magistrală de adrese au luat parte la formarea adresei, astfel încât cantitatea maximă de memorie adresabilă în acest mod a rămas aceeași - 1 MB. În modul protejat, procesorul putea adresa până la 1 GB de memorie virtuală (în timp ce cantitatea de memorie reală nu era mai mare de 16 MB) prin schimbarea mecanismului de adresare a memoriei. Trecerea de la modul real la modul securizat se face în software și este relativ simplă, cu toate acestea, pentru a comuta înapoi, este necesară o resetare hardware a procesorului, care la mașinile compatibile cu PC-ul IBM se realiza de obicei folosind controlerul tastaturii. Registrul Machine Status Word (MSW) este utilizat pentru a ține evidența modului de funcționare curent al procesorului. Programele în modul real nu pot rula în modul protejat fără modificări, la fel ca programele BIOS ale mașinii .
Esența modului protejat este următoarea. Programatorul și programele pe care le dezvoltă folosesc un spațiu de adrese logic (spațiu de adrese virtuale), care poate avea o dimensiune de 1024 MB (pentru Intel 80286). Adresa logică este convertită automat într-o adresă fizică de către unitatea de gestionare a memoriei ( MMU ). În modul protejat, doar partea din program care este necesară în acest moment poate fi stocată în memorie, iar restul ar putea fi stocată în memorie externă (de exemplu, pe un hard disk). Dacă este accesată o parte a programului care nu se află în prezent în memorie, sistemul de operare poate întrerupe programul, încărca secțiunea necesară de cod din memoria externă și poate relua execuția programului. Prin urmare, programele care sunt mai mari decât cantitatea de memorie disponibilă devin valide. Cu alte cuvinte, utilizatorului i se pare că lucrează cu mai multă memorie decât este în realitate. Cu toate acestea, implementarea sistemului de memorie virtuală era încă departe de a fi perfectă. Modul protejat necesită un sistem de operare multitasking, cum ar fi Microsoft Windows 2.0 , IBM OS/2 sau UNIX .
Adresa fizică este formată după cum urmează. Registrele de segment stochează un selector care conține indexul descriptorului în tabelul de descriptor (13 biți), un bit care determină ce tabel de descriptor va fi accesat (local sau global) și doi biți ai nivelului de privilegii solicitat. În continuare, sunt accesate tabelul corespunzător de descriptori și descriptorul corespunzător, care conțineau adresa inițială, pe 24 de biți, a segmentului, dimensiunea segmentului și drepturile de acces. După aceea, adresa fizică necesară a fost calculată prin adăugarea adresei segmentului la offset-ul stocat în registrul pointerului de 16 biți.
Cu toate acestea, modul protejat din procesorul Intel 80286 a avut unele dezavantaje. Era incompatibil cu programele scrise pentru MS-DOS real mode. Pentru a trece de la modul protejat la modul real, era necesară o resetare hardware a procesorului.
Pentru a proteja împotriva executării comenzilor privilegiate care pot schimba drastic starea întregului sistem, pentru a proteja accesul la date și pentru a proteja segmentele de cod, în procesorul Intel 80286 a fost introdusă protecția cu privilegii [1] . Au fost alocate 4 niveluri de privilegii, așa-numitele inele de protecție (Ring) - de la nivelul cel mai privilegiat 0 (Ring 0), destinat nucleului de sistem, până la nivelul cel mai puțin privilegiat 3 (Ring 3), destinat programelor de aplicație.
În ciuda faptului că a fost anunțat în 1982, modul protejat 80286 în computerele personale a avut o utilizare limitată de mult timp. Motivul principal pentru aceasta a fost incompatibilitatea cu modul protejat al programelor scrise pentru procesorul 8086. Una dintre probleme s-a datorat faptului că adresarea în memorie a segmentului folosită de 8086 a făcut posibilă formarea aceleiași adrese cu multe segmente + combinații offset și programele au fost implicate în formarea unei astfel de combinații. , nu sistemul de operare. De exemplu, dacă un program pentru un 8086 avea nevoie de un bloc de memorie, ar lua segmentul și offset-ul primului octet liber de memorie, ar împărți offset-ul la 16 și l-ar adăuga la valoarea segmentului, formând astfel un nou, segment nefolosit. Cu toate acestea, în 80286 valoarea segmentului este utilizată ca index în tabelul descriptor. Dacă segmentul este ales în mod arbitrar, este posibil ca descriptorul corespunzător din tabel să nu apară sau descriptorul va avea parametri nepotriviți. Doar sistemul de operare poate modifica tabelul de descriptori datorită prezenței protecției.
O altă problemă a fost separarea segmentelor de cod și date. În modul protejat, un program nu poate modifica segmente de cod sau executa cod plasat într-un segment de date, deși 8086 de programe au folosit astfel de trucuri.
O altă problemă a fost ca dezvoltatorii IBM PC BIOS ignorând recomandările Intel și folosesc numere de întrerupere rezervate. De exemplu, coprocesorul aritmetic 80287 generează întrerupere 10 16 când apare o eroare . Cu toate acestea, pe computerul IBM, întreruperea 10 16 este utilizată pentru a controla afișajul.
Toate aceste probleme au necesitat modificări semnificative ale programelor existente. Dezvoltatorii de sisteme de operare s-au confruntat cu alegerea de a construi un sistem relativ simplu care să funcționeze doar în modul protejat, dar incompatibil cu majoritatea programelor scrise anterior, sau de a crea un sistem care să conțină componente pentru lucru atât în modul real, cât și în cel protejat și să comute între ele după cum este necesar. ( ceea ce este posibil doar printr-o resetare a procesorului și reduce semnificativ performanța), asigurând astfel compatibilitatea cu programele scrise anterior [2] .
În ianuarie 1985, Digital Research a anunțat Concurrent DOS 286 , un sistem de operare creat împreună cu Intel . Produsul urma să utilizeze doar modul protejat 80286, oferind utilizatorilor toate beneficiile acestui mod în furnizarea de execuție a programului multi-utilizator, multitasking, în timp ce suporta emularea 8086 [3] . Caracteristicile declarate au fost funcționale pe prototipul procesorului în trepte B-1 utilizat la începutul dezvoltării , dar în mai Digital Research a descoperit probleme cu emularea pe procesorul serial în trepte C-1, care nu permitea Concurrent DOS 286 să ruleze programe pentru 8086. în modul protejat. Lansarea Concurrent DOS 286 a fost amânată, iar Intel a început să dezvolte o nouă versiune a cipului [3] . În august, după testarea amănunțită a mostrelor de stepping 80286 E-1, Digital Research a confirmat că Intel a remediat toate erorile documentate, dar a declarat că au rămas probleme de performanță nedocumentate la versiunea de pre-lansare a DOS 286 Concurrent. Intel a declarat că Digital Programele de abordare ale emulării alese de cercetare pentru 8086 în modul protejat diferă de specificațiile inițiale. Cu toate acestea, Intel a făcut modificări minore de microcod la procesoarele E-2, care au permis Digital Research să emuleze mult mai rapid [4] . În 1986, IBM a ales Concurrent DOS 286 (denumindu-l IBM 4680 OS) ca sistem de operare pentru computerul IBM 4680 folosit în sistemul de vânzare cu amănuntul ca terminal POS [5] . Aceleași limitări au afectat versiunea 1.0 a FlexOS 286 , succesorul Concurrent DOS 286, dezvoltat de Digital Research în 1986 și introdus în ianuarie 1987 (acest sistem a fost folosit ulterior de IBM ca bază pentru IBM 4690 OS ).
Din cauza acestor probleme, Bill Gates a numit 80286 „cipul mort cerebral” [6] , deoarece era evident că noul sistem de operare Microsoft Windows nu va putea rula simultan mai multe aplicații MS-DOS pe 80286. a provocat o divizare între Microsoft și IBM, deoarece IBM a insistat că OS/2 , inițial o dezvoltare comună între IBM și Microsoft, acceptă modul protejat 80286.
Suportul modului protejat a fost implementat și în sistemele de operare Coherent , Xenix , NetWare 286 , iRMX , OS/2 , Windows 3.0 .
În 1984, IBM și-a prezentat PC-ul bazat pe procesorul Intel 80286 cu o frecvență de 6 MHz - IBM PC AT, care a trezit un mare interes pentru arhitectura x86 în general și pentru PC-ul IBM în special. În 1987, IBM lansează noi modele de PC - IBM PS / 2-50 și IBM PS / 2-60. Până la lansarea PC-ului IBM PS / 2, IBM nu mai era un monopolist pe piața computerelor personale, multe companii produceau modele similare, adesea mai ieftine.
Deoarece Intel a vândut licențe pentru producția de microprocesoare 80286, multe companii au produs de fapt clone ale acestui microprocesor - AMD , Siemens AG și HARRIS . Folosind inginerie inversă , au fost create clonele lui 80286:
Au existat și procesoare dezvoltate independent de Intel, cum ar fi Zilog , Motorola și altele.
procesoare Intel | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|