Circuit procesor cu descriere. Cum functioneaza procesorul? Să ne dăm seama împreună. Modalități de îmbunătățire a performanței nucleului procesorului

Procesoarele moderne au forma unui dreptunghi mic, care este prezentat sub forma unei plăci de siliciu. Placa în sine este protejată de o carcasă specială din plastic sau ceramică. Toate circuitele principale sunt protejate, datorită acestora se realizează funcționarea completă a procesorului. Dacă totul este extrem de simplu în aparență, atunci cum rămâne cu circuitul în sine și cum este proiectat procesorul? Să ne uităm la asta mai detaliat.

CPU este format dintr-un număr mic de elemente diferite. Fiecare dintre ele își realizează propria acțiune, datele și controlul sunt transferate. Utilizatorii obișnuiți sunt obișnuiți să distingă procesoarele după viteza de ceas, cantitatea de memorie cache și nuclee. Dar acest lucru nu este tot ceea ce asigură o funcționare fiabilă și rapidă. Merită să acordați o atenție deosebită fiecărei componente.

Arhitectură

Designul intern al CPU-urilor diferă adesea unul de celălalt; fiecare familie are propriul său set de proprietăți și funcții - aceasta se numește arhitectura sa. Un exemplu de design al procesorului poate fi văzut în imaginea de mai jos.

Dar mulți oameni sunt obișnuiți să înțeleagă arhitectura procesorului într-un mod ușor diferit. Dacă îl considerăm din punct de vedere al programării, atunci este definit de capacitatea sa de a executa un anumit set de coduri. Dacă cumpărați un procesor modern, atunci cel mai probabil este arhitectura x86.

Miezuri

Partea principală a procesorului se numește nucleu, conține toate blocurile necesare și efectuează, de asemenea, sarcini logice și aritmetice. Dacă vă uitați la figura de mai jos, puteți vedea cum arată fiecare bloc funcțional al nucleului:

  1. Modul de preluare a instrucțiunilor. Aici, instrucțiunile sunt recunoscute după adresa, care este indicată în contorul de programe. Numărul de citire simultană a comenzilor depinde direct de numărul de unități de decriptare instalate, ceea ce ajută la încărcarea fiecărui ciclu de lucru cu cel mai mare număr de instrucțiuni.
  2. Predictor de tranziție este responsabil pentru funcționarea optimă a unității de preluare a instrucțiunilor. Determină secvența instrucțiunilor care urmează să fie executate, încărcând pipeline-ul kernel-ului.
  3. Modul de decodare. Această parte a nucleului este responsabilă pentru definirea anumitor procese pentru a efectua sarcini. Sarcina de decodare în sine este foarte dificilă din cauza dimensiunii variabile a instrucțiunii. În cele mai noi procesoare există mai multe astfel de blocuri într-un singur nucleu.
  4. Module de eșantionare a datelor. Ei preiau informații din RAM sau din memoria cache. Ei efectuează exact eșantionarea datelor care este necesară în acest moment pentru a executa instrucțiunea.
  5. Bloc de control. Numele în sine spune multe despre importanța acestei componente. În nucleu, este cel mai important element, deoarece distribuie energia între toate blocurile, ajutând la efectuarea fiecărei acțiuni la timp.
  6. Modul pentru salvarea rezultatelor. Proiectat pentru înregistrare după finalizarea procesării instrucțiunilor în RAM. Adresa de stocare este specificată în sarcina de rulare.
  7. Element de lucru cu întreruperi. CPU-ul este capabil să facă multitasking datorită funcției de întrerupere, care îi permite să oprească progresul unui program prin trecerea la o altă instrucțiune.
  8. Registrele. Rezultatele temporare ale instrucțiunilor sunt stocate aici; această componentă poate fi numită o mică RAM rapidă. Adesea, dimensiunea sa nu depășește câteva sute de octeți.
  9. Contor de comenzi. Acesta stochează adresa instrucțiunii care va fi utilizată la următorul ciclu al procesorului.

Autobuz de sistem

Busul de sistem CPU conectează dispozitivele incluse în PC. Numai el este conectat direct la acesta; elementele rămase sunt conectate prin diferite controlere. Autobuzul în sine conține multe linii de semnal prin care sunt transmise informații. Fiecare linie are propriul protocol, care asigură comunicarea prin controlere cu alte componente ale computerului conectate. Autobuzul are propria frecvență; în consecință, cu cât este mai mare, cu atât mai rapid are loc schimbul de informații între elementele de conectare ale sistemului.

Memorie cache

Performanța unui procesor depinde de capacitatea sa de a prelua instrucțiuni și date din memorie cât mai repede posibil. Datorita memoriei cache, timpul de executie al operatiilor este redus datorita faptului ca actioneaza ca un buffer temporar, asigurand transferul instant al datelor de la CPU la RAM sau invers.

Principala caracteristică a memoriei cache este diferența de niveluri. Dacă este mare, înseamnă că memoria este mai lentă și mai voluminoasă. Cea mai rapidă și mai mică memorie este primul nivel. Principiul de funcționare al acestui element este foarte simplu - CPU citește datele din RAM și le introduce într-un cache de orice nivel, ștergând în același timp informațiile care au fost accesate cu mult timp în urmă. Dacă procesorul are nevoie din nou de aceste informații, le va primi mai repede datorită bufferului temporar.

priză (conector)

Datorita faptului ca procesorul are propriul conector (mama sau slot), il poti inlocui cu usurinta daca se strica sau iti upgradezi calculatorul. Fără soclu, procesorul ar fi pur și simplu lipit pe placa de bază, ceea ce face reparațiile ulterioare sau înlocuirea mai dificilă. Merită să acordați atenție - fiecare slot este destinat exclusiv instalării anumitor procesoare.

Adesea, utilizatorii cumpără din neatenție un procesor și o placă de bază incompatibile, ceea ce provoacă probleme suplimentare.

Structura CPU

Pentru a clarifica unui neprofesionist cum funcționează procesorul central al unui computer, să luăm în considerare din ce blocuri constă:

Unitate de control procesor;

Registre de comandă și date;

Dispozitive aritmetico-logice (efectuează operații aritmetice și logice);

Bloc de operații cu numere reale, adică cu numere în virgulă mobilă sau, mai simplu, cu fracții (FPU);

Memoria tampon (cache) de primul nivel (separat pentru comenzi și date);

Memoria tampon (cache) de al doilea nivel pentru stocarea rezultatelor intermediare ale calculelor;

Majoritatea procesoarelor moderne au și un cache de nivel al treilea;

Interfață magistrală de sistem.

Principiul de funcționare a procesorului

Algoritmul de operare al procesorului central al unui computer poate fi reprezentat ca o secvență a următoarelor acțiuni.

Unitatea de control al procesorului preia din memoria RAM în care este încărcat programul, anumite valori (date) și comenzi care trebuie executate (instrucțiuni). Aceste date sunt încărcate în memoria cache a procesorului.

Din memoria tampon a procesorului (cache), instrucțiunile și datele primite sunt scrise în registre. Instrucțiunile sunt plasate în registrele de comandă și valorile în registrele de date.

Unitatea logică aritmetică citește instrucțiuni și date din registrele corespunzătoare ale procesorului și execută aceste instrucțiuni pe numerele primite.

Rezultatele sunt din nou scrise în registre și, dacă calculele sunt finalizate, în memoria tampon a procesorului. Procesorul are foarte puține registre, așa că este forțat să stocheze rezultate intermediare în memoria cache de diferite niveluri.

Datele și comenzile noi necesare pentru calcule sunt încărcate în memoria cache de nivel superior (de la al treilea la al doilea, de la al doilea la primul), iar datele neutilizate, dimpotrivă, sunt încărcate în memoria cache de nivel inferior.

Dacă ciclul de calcul este încheiat, rezultatul este scris în memoria RAM a computerului pentru a elibera spațiu în memoria tampon a procesorului pentru noi calcule. Același lucru se întâmplă atunci când memoria cache este plină de date: datele neutilizate sunt mutate într-un cache de nivel inferior sau în RAM.

Secvența acestor operații formează firul de operare al procesorului. Procesorul devine foarte fierbinte în timpul funcționării. Pentru a preveni acest lucru, trebuie să curățați rapid laptopul acasă.

Pentru a accelera funcționarea procesorului central și a crește performanța de calcul, se dezvoltă constant noi soluții arhitecturale pentru a crește eficiența procesorului. Printre acestea se numără execuția pipeline a operațiunilor, urmărirea, adică o încercare de a anticipa acțiuni ulterioare ale programului, procesarea paralelă a comenzilor (instrucțiuni), multithreading și multi-core.

Un procesor cu mai multe nuclee are mai multe nuclee de calcul, adică mai multe unități aritmetice-logice, unități și registre în virgulă mobilă, precum și un cache de prim nivel, fiecare combinat într-un nucleu propriu. Miezurile au o memorie tampon comună de nivel al doilea și al treilea. Apariția memoriei cache de nivel al treilea a fost cauzată tocmai de multi-core și, în consecință, de necesitatea unei cantități mai mari de memorie tampon rapidă pentru a stoca rezultatele intermediare de calcul.

Principalii indicatori care influențează viteza de procesare a datelor a unui procesor sunt numărul de nuclee de calcul, lungimea conductei, frecvența de ceas și dimensiunea memoriei cache. Pentru a crește performanța unui computer, este adesea necesară schimbarea procesorului, iar aceasta presupune înlocuirea plăcii de bază și a memoriei RAM. Specialiștii noștri din centrul nostru de service vă vor ajuta să faceți upgrade, configurați și reparați computerul acasă, în Moscova, dacă sunteți intimidat de procesul de asamblare și modernizare a computerului dumneavoastră.

Procesorul computerului este componenta principală a computerului, „creierul”, ca să spunem așa. Efectuează toate operațiile logice și aritmetice specificate de program. În plus, controlează toate dispozitivele computerizate.

Ce este un procesor modern?

Astăzi, procesoarele sunt fabricate ca microprocesoare. Din punct de vedere vizual, un microprocesor este o placă subțire de siliciu cristalin sub formă de dreptunghi. Suprafața plăcii este de câțiva milimetri pătrați și conține circuite care asigură funcționalitatea procesorului PC-ului. De regulă, înregistrarea este protejată de o carcasă plată din ceramică sau plastic, la care este conectată prin fire de aur cu vârfuri metalice. Acest design vă permite să conectați procesorul la placa de bază a computerului.

  • magistrale de adrese și magistrale de date;
  • unitate aritmetică-logică;
  • registre;
  • cache (memorie mică rapidă 8-512 KB);
  • contoare de programe;
  • coprocesor matematic.

Ce este arhitectura procesorului?

Arhitectura procesorului este capacitatea unui procesor de a executa un set de coduri de mașină. Acest lucru este din punctul de vedere al programatorilor. Dar dezvoltatorii de componente de computer aderă la o interpretare diferită a conceptului de „arhitectură a procesorului”. În opinia lor, arhitectura procesorului este o reflectare a principiilor de bază ale organizării interne a anumitor tipuri de procesoare. Să presupunem că arhitectura Intel Pentium este desemnată P5, Pentium II și Pentium III sunt P6, iar recent popularul Pentium 4 este NetBurst. Când Intel a închis P5 pentru producătorii concurenți, AMD și-a dezvoltat arhitectura K7 pentru Athlon și Athlon XP și K8 pentru Athlon 64.

Chiar și procesoarele cu aceeași arhitectură pot diferi semnificativ unele de altele. Aceste diferențe se datorează varietății de nuclee de procesor, care au un anumit set de caracteristici. Cele mai frecvente diferențe sunt frecvențele magistralei de sistem diferite, precum și dimensiunea cache-ului de al doilea nivel și caracteristicile tehnologice prin care sunt fabricate procesoarele. De foarte multe ori, schimbarea nucleului la procesoarele din aceeași familie necesită și înlocuirea soclului procesorului. Și acest lucru implică probleme cu compatibilitatea plăcii de bază. Dar producătorii îmbunătățesc în mod constant nucleele și fac modificări constante, dar nu semnificative ale nucleului. Astfel de inovații sunt numite revizuiri ale nucleului și, de regulă, sunt indicate prin combinații alfanumerice.

Busul de sistem sau magistrala procesorului (FSB - Front Side Bus) este un set de linii de semnal care sunt combinate în funcție de scop (adrese, date etc.). Fiecare linie are un protocol specific de transfer de informații și caracteristici electrice. Adică, magistrala de sistem este legătura de conectare care conectează procesorul însuși și toate celelalte dispozitive PC (hard disk, placă video, memorie și multe altele). Doar CPU-ul este conectat la magistrala de sistem în sine; toate celelalte dispozitive sunt conectate prin controlere situate în podul de nord al setului logic de sistem (chipset) al plăcii de bază. Deși la unele procesoare controlerul de memorie este conectat direct la procesor, ceea ce oferă o interfață de memorie mai eficientă CPU-ului.

Cache-ul sau memoria rapidă este o componentă obligatorie a tuturor procesoarelor moderne. Cache-ul este un buffer între procesor și controlerul de memorie a sistemului destul de lent. Bufferul stochează blocuri de date în curs de procesare, iar procesorul nu are nevoie să acceseze constant memoria de sistem lentă. Desigur, acest lucru crește semnificativ performanța generală a procesorului în sine.

În procesoarele folosite astăzi, memoria cache este împărțită în mai multe niveluri. Cel mai rapid este primul nivel L1, care funcționează cu nucleul procesorului. De obicei, este împărțit în două părți - memoria cache de date și memoria cache de instrucțiuni. L2, al doilea nivel cache, interacționează cu L1. Este mult mai mare ca dimensiune și nu este împărțit într-un cache de instrucțiuni și un cache de date. Unele procesoare au L3 - al treilea nivel, este chiar mai mare decât al doilea nivel, dar cu un ordin de mărime mai lent, deoarece magistrala dintre al doilea și al treilea nivel este mai îngustă decât între primul și al doilea. Cu toate acestea, viteza celui de-al treilea nivel este încă mult mai mare decât viteza memoriei de sistem.

Există două tipuri de cache: exclusiv și neexclusiv.

Un tip exclusiv de cache este acela în care informațiile de la toate nivelurile sunt strict separate de cele originale.

Un cache neexclusiv este un cache în care informațiile sunt repetate la toate nivelurile cache. Este greu de spus ce tip de cache este mai bun, atât primul cât și al doilea au propriile avantaje și dezavantaje. Un tip exclusiv de cache este utilizat în procesoarele AMD, mai degrabă decât un tip exclusiv utilizat de Intel.

Conectorul procesorului poate fi cu fante sau mamă. În orice caz, scopul său este de a instala un procesor central. Utilizarea conectorului facilitează înlocuirea procesorului în timpul upgrade-urilor și îndepărtarea acestuia în timpul reparațiilor PC-ului. Conectorii pot fi destinati instalării unei plăci CPU și procesorului în sine. Conectorii se disting prin scopul lor pentru anumite tipuri de procesoare sau plăci CPU.

Producători populari de procesoare PC.

Primul loc este ocupat de procesorul Intel Core i5. O opțiune excelentă pentru o mașină de joc puternică.

Pe locul al doilea se află Intel Celeron E3200, în ciuda prețului său destul de decent. Cea mai bună opțiune pentru o mașină de birou.

Locul trei este din nou ocupat de Intel - de data aceasta un Core 2 Quad cu 4 nuclee.

Locul al patrulea - procesor AMD Athlon II X2 215 2.7 GHz 1Mb Socket-AM3 OEM. O alegere bună pentru casă și birou, pentru cei care doresc să economisească bani și nu au nevoie de o mașină super puternică. În plus, acest model de procesor are mult spațiu pentru overclockare.

Locul cinci - AMD Phenom II X4 945. Preț bun, performanțe excelente, cache mare și 4 nuclee la bord.

Dacă sunteți dispus să plătiți aproximativ 1000 USD pentru un procesor, puteți achiziționa un Intel Core 2 Extreme. Dar un astfel de procesor este puțin probabil să fie potrivit pentru masele de consumatori. Prin urmare, să ne uităm la opțiuni mai accesibile.

Dacă sunteți un simplu utilizator de computer care lucrează cu texte, vizionează filme, ascultă muzică și navighează pe internet, fie Celeron E1200, fie mai tânărul Athlon 64 X2 este destul de potrivit pentru tine. Acesta din urmă are anumite avantaje față de primul și vă va rezista mulți ani.

Dacă folosiți computerul pentru divertisment și jucați ocazional jocuri, atunci trebuie să vă uitați la procesoarele Core 2 Duo. Aceasta este cea mai bună opțiune de procesor pentru nevoile dvs.

Dacă ești genul de utilizator care folosește toate capacitățile computerului, lucrând cu audio, internet, video, programe mari și jocuri grele, Core 2 Duo E8200 este cel mai potrivit pentru tine. Acest procesor are performanțe ridicate, disipare scăzută a căldurii, capacități suficiente de overclocking și este accesibil.

Și, în sfârșit, ești un jucător hardcore și ai nevoie de PC-ul tău să fie o putere în jocuri? Ai nevoie doar de un procesor dual-core sau quad-core, nu mai puțin.

Inima unui computer personal este CPU. Este un dispozitiv electronic digital care poate funcționa conform unui program dat.

Să luăm în considerare dispozitivul unui computer. Mai întâi, să descifrăm separat adjectivele „electronic” și „digital”.

Adjectivul „electronic” înseamnă că procesorul computerului funcționează cu energie electrică și toate semnalele care sunt procesate de acest dispozitiv sunt electrice.Cu toate acestea, în electronica radio, dispozitivele electronice sunt împărțite în 2 clase mari: analog și digital. Adjectivul „digital” înseamnă că procesorul computerului aparține mai degrabă clasei de dispozitive digitale decât analogice.

Dispozitivele analogice amintite predominau printre echipamentele electronice acum 20-30 de ani. Și au apărut atunci când inginerii radio au învățat să înregistreze și să transmită sunet și imagini sub formă de semnale analogice. Acestea erau radiouri, televizoare, casetofone etc.

Dispozitivele analogice au făcut loc palmei abia la sfârșitul secolului trecut, când dezvoltarea dispozitivelor digitale a dus la capacitatea de a înregistra și transmite orice informație, inclusiv sunetele și imaginile deja menționate, folosind coduri digitale.

Semnalele digitale, spre deosebire de cele analogice, sunt ușor susceptibile la interferențe și sunt transmise la distanțe fără distorsiuni; sunt mai bine înregistrate, stocate și nu se „deteriorează” în timp.

Procesorul computerului este unul dintre cele mai complexe dispozitive dintre dispozitivele electronice digitale. Acesta este un fel de apoteoză a dezvoltării tehnologiei digitale.

În exterior, este o placă de siliciu montată într-o carcasă care are multe terminale electrice pentru conectarea la sursa de alimentare și la alte dispozitive computerizate.

Deoarece procesorul este realizat pe wafer-uri de siliciu, în jargonul informatic se numește uneori „rock”, deoarece siliciul este un material foarte durabil.

Pe această placă, prin depunerea foarte precisă a unei substanțe (acuratețea se măsoară în angstromi) în vid și menținând o curățenie ideală de producție, este reprodus un circuit electric foarte complex și extrem de miniatural, format din zeci și sute de mii de elemente minuscule (în principal tranzistoare) conectate între ele într-un mod special.

Producția de astfel de dispozitive este atât de high-tech încât numai țările cu cele mai dezvoltate economii au reușit să o stăpânească. Este interesant că în producția de procesoare nu măsoară defectele, așa cum este obișnuit în aproape toate industriile și producția, ci măsoară așa-numitul procent de produse utilizabile, deoarece foarte puține semifabricate de procesor devin în cele din urmă dispozitive funcționale.

Plachetele de siliciu de înaltă calitate sunt plasate într-un pachet cu cabluri și echipate cu dispozitive de răcire (radiator și ventilator), deoarece sute de mii de tranzistoare miniaturale emit o cantitate suficientă de căldură în timpul funcționării lor.

Dacă te uiți la structura logică internă a unui procesor de computer, este o colecție de dispozitive interconectate:

– o unitate aritmetic-logică (ALU), în care, de fapt, informația este convertită,

– dispozitiv de control (CU), care este conceput pentru a controla un dispozitiv aritmetic-logic;

– și registre de memorie (celule) în care sunt stocate datele de intrare, datele intermediare și datele rezultate.

Comenzile menite să controleze funcționarea procesorului sunt transferate din RAM pe dispozitivul de control. Acest dispozitiv controlează funcționarea unității logice aritmetice în funcție de comenzile primite.

La rândul său, ALU, în conformitate cu comenzile primite de la unitatea de control, efectuează

  • introducerea de informații din registre,
  • prelucrarea informaţiei şi
  • înregistrarea informațiilor prelucrate în registre.

Registrele procesorului pot face schimb de informații cu celulele RAM (de asemenea, pe baza instrucțiunilor ALU). Prin urmare, în cele din urmă procesorul computerului

  • procesează datele primite din RAM,
  • iar datele prelucrate sunt de asemenea plasate în RAM.

Următoarea descriere scurtă a funcționării unui procesor de computer ilustrează faptul că prelucrarea datelor de către un procesor este o secvență de pași foarte „mici”:

  • citirea datelor din RAM în registrele procesorului,
  • prelucrarea acestor date și
  • scrierea înapoi a datelor din registrele procesorului în celulele RAM.

Dar compensarea pentru aceasta este cea mai mare viteză a calculelor, sute de mii și milioane de astfel de operațiuni „mici” în fiecare secundă. Și, în consecință, este asigurată procesarea informațiilor de mare viteză, ceea ce face din computer un asistent indispensabil pentru muncă, studiu, recreere și divertisment.

Pentru a înțelege cum funcționează un microprocesor, să ne punem întrebarea - cum ar trebui să funcționeze? Există o teorie (în mare parte creată după fapt: după ce primele computere erau deja construite și funcționau) care indică exact cum să construim algoritmi și ce ar trebui să facă procesorul în conformitate cu aceasta. Desigur, nu vom aprofunda acest lucru; vom afirma pur și simplu că orice algoritm este o secvență de anumite acțiuni scrise sub forma unui set de comenzi executate secvenţial (instrucţiuni, operatori). Mai mult, printre astfel de comenzi pot exista comenzi de tranziție, care în unele cazuri încalcă secvența originală de execuție a operatorilor strict unul după altul. Printre altele, ar trebui să existe și comenzi pentru introducerea și ieșirea datelor (programul trebuie să comunice cumva cu lumea exterioară?), precum și comenzi pentru efectuarea de operații aritmetice și logice.

Instrucțiunile trebuie să fie stocate undeva, astfel încât un dispozitiv de memorie de program trebuie să fie o parte integrantă a întregului sistem. Undeva trebuie să stocați datele, atât datele inițiale, cât și rezultatele programului, deci trebuie să existe un dispozitiv de memorie de date. Deoarece comenzile și datele, în cele din urmă, sunt încă numere, memoria poate fi partajată, trebuie doar să putem distinge unde exact avem comenzi și unde avem date. Acesta este unul dintre principiile von Neumann, deși în microcontrolere, despre care vom vorbi mai târziu, ele folosesc în mod tradițional nu von Neumann, ci așa-numita arhitectură Harvard, când datele și memoria programului sunt separate (această separare, totuși, poate, în anumite limite să fie încălcate). Un procesor construit conform lui von Neumann este mai universal; de exemplu, vă permite să extindeți memoria fără probleme, să o construiți ierarhic și să o redistribuiți mai eficient direct în timpul funcționării. De exemplu, Windows presupune întotdeauna că computerul are o cantitate practic nelimitată de memorie (măsurată în terabytes), iar dacă într-adevăr nu este suficientă, este implicat un fișier de schimb de pe hard disk. În același timp, microcontrolerele nu necesită în mod special o astfel de flexibilitate - pe baza lor, de regulă, sunt construite noduri care îndeplinesc o anumită sarcină și funcționează conform unui anumit program, deci nu costă nimic pentru a furniza configurația necesară a sistemului în avans.

MP și MK

Apropo, de ce vorbim mereu despre microprocesoare (MP) sau microcontrolere (MC)? Un microcontroler diferă de un microprocesor prin faptul că este conceput pentru a controla alte dispozitive și, prin urmare, are încorporat un sistem avansat de intrare-ieșire, dar, de regulă, un ALU relativ mai slab. Microcontrolerele sunt foarte potrivite pentru termenul, care în vremea sovietică avea, totuși, un înțeles ușor diferit - „micro-computer”; cuvântul englezesc „computer-on-chip”, un computer cu un singur cip, este și mai precis. De fapt, pentru a construi cel mai simplu dispozitiv de calcul care ar putea face ceva util, un microprocesor convențional, de la i4004 la Pentium și Core Duo, trebuie suplimentat cu memorie, ROM cu un BIOS scris, dispozitive de intrare-ieșire, un controler de întrerupere, un generator de ceas cu cronometre etc. - tot ceea ce a început acum să fie combinat în așa-numitul. „chipsets”. Un MP „gol” este capabil de un singur lucru: să pornească corect; nici măcar nu are un program de pornire de nicăieri.

În același timp, pentru un microprocesor, un microprocesor este doar un miez, nici măcar cea mai mare parte a cristalului. Pentru a construi un sistem complet pe un MK standard, nu este nevoie de nimic, cu excepția unei surse de alimentare și a dispozitivelor de execuție periferice care ar permite unei persoane să determine dacă sistemul funcționează. Un MK obișnuit poate, fără componente suplimentare, să comunice cu alte MK-uri, memorie externă, microcircuite speciale (cum ar fi un ceas în timp real sau o memorie flash), să controleze panouri matrice mici (și uneori mari) și senzori de cantități fizice pot fi conectați direct la el (inclusiv inclusiv cele pur analogice, ADC-urile sunt adesea incluse în microcontrolere), butoane, tastaturi, LED-uri și indicatoare, pe scurt - totul a fost făcut în microcontrolere, astfel încât să trebuiască să lipiți cât mai puțin posibil și să vă gândiți la selecție de elemente. Trebuie să plătiți pentru asta cu o performanță redusă (care, totuși, nu este atât de importantă în sarcinile tipice pentru MK) și unele limitări ale anumitor funcții - în comparație cu sistemele universale, dar de sute de ori mai scumpe și complexe pe cele „reale”. » MP. Poate nu mă credeți, dar procesoarele pentru calculatoare personale (PC-uri), despre care auzim atât de mult, ocupă doar 5-6% din numărul total de procesoare produse - restul sunt microcontrolere pentru diverse scopuri.

În conformitate cu cele spuse, ciclul principal de funcționare al procesorului ar trebui să fie următorul: preluarea următoarei comenzi (din memorie), dacă este necesar, preluarea datelor sursă pentru aceasta, executarea comenzii, plasarea rezultatelor în memorie (din nou , daca este necesar). Toate lucrările din acest ciclu trebuie să apară automat la comenzile unui dispozitiv de control care conține un generator de ceas - un ceas de sistem prin care totul este sincronizat. În plus, undeva trebuie să se întâmple toate acestea - stocarea datelor, codul de comandă, efectuarea de acțiuni etc., astfel încât procesorul trebuie să conțină un anumit set de registre de lucru (în esență o memorie ultra-rapidă de dimensiuni mici), conectate într-un anumit fel între el însuși, precum și cu dispozitivul de control și ALU, care trebuie inevitabil să fie prezente.

Contorul de programe joacă un rol decisiv în funcționarea procesorului. Este setat automat la zero la începutul operațiunii, ceea ce corespunde primei comenzi, și este automat incrementat (adică mărit cu unu) cu fiecare comandă executată. Dacă pe parcurs se încalcă ordinea comenzilor, de exemplu, se întâlnește o comandă de salt (ramură), atunci adresa comenzii corespunzătoare este încărcată în contor - numărul acesteia de la începutul programului. Dacă aceasta nu este doar o ramură, ci execuția unui subprogram, care presupune revenirea ulterioară la secvența principală de comenzi (la următoarea comandă după apelarea subrutinei), atunci înainte de a trece la executarea subrutinei, valoarea curentă a contorul de programe este stocat într-o zonă de memorie special alocată în acest scop - stiva. La o comandă de încheiere a subrutinei, adresa stocată este scoasă din stivă și execuția programului principal continuă. Din fericire, nu trebuie să ne ocupăm noi înșine de contorul programului, deoarece toate instrucțiunile pentru aceasta sunt conținute în comenzi, iar procesorul face totul automat.

Orez. 18.2. Schema bloc a unui microcontroler simplu

În Fig. 18.2. Aici am inclus în programul de sistem memoria, care se află întotdeauna separat în procesoarele PC-ului (cu excepția unei cantități relativ mici de memorie cache de mare viteză) - chiar tu știi câte programe există în computerele personale. În majoritatea microcontrolerelor moderne, memoria de numai citire (ROM) pentru programe este inclusă în cip și este de obicei între V-2 și 8-32 kB. Deși există modele cu 256 kiloocteți de memorie încorporată, 2-8 kiloocteți sunt suficienti pentru marea majoritate a aplicațiilor. Memoria cu acces aleatoriu (RAM) încorporată pentru stocarea datelor într-un volum sau altul este, de asemenea, disponibilă în toate microcontrolerele moderne; dimensiunea tipică a unei astfel de RAM este de la 128-256 de octeți la 1-4 kbytes. Majoritatea controlerelor universale au, de asemenea, o anumită cantitate de memorie nevolatilă încorporată pentru stocarea constantelor - de obicei aceeași cantitate ca RAM de date. Dar vom reveni în memorie în acest capitol, dar deocamdată vom continua despre procesoare.

Detalii

la primele modele de microprocesoare (inclusiv procesoare Intel pentru PC-uri - de la 8086 la 80386), procesorul executa comenzi strict secvențial: încărcați comanda, determinați că are nevoie de operanzi, încărcați acești operanzi (la adresa registrelor care ar trebui să-i conțină). ; aceste adrese sunt de obicei stocate imediat după codul de comandă în sine sau sunt definite în prealabil), apoi efectuează acțiunile necesare, stochează rezultatele... Arhitectura microcontrolerelor super populare 8051, care sunt încă produse până în prezent de diverse companii (Atnnel, Philips), a ajuns în epoca noastră, care a executat o comandă la fel de mult ca în 12 cicluri (în unele analogi moderne, totuși, acest număr este mai mic). Pentru a accelera munca, au început să împartă ciclurile de ceas în părți (de exemplu, declanșarea pe marginile de conducere și de cădere), dar adevărata descoperire a venit odată cu introducerea transportorului. Încă din zilele lui Henry Ford, se știe că performanța unei conducte depinde doar de timpul de execuție al celei mai lungi operațiuni - dacă împărțiți comenzile în etape și le executați simultan de diferite noduri hardware, puteți obține o accelerare semnificativă (deși nu în toate cazurile). În microcontrolerele Atmel AVR discutate mai jos, conducta este în două etape: când următoarea comandă este încărcată și decodificată, cea anterioară este deja executată și scrie rezultatele. În AVR, acest lucru a făcut posibilă executarea majorității comenzilor într-un singur ciclu de ceas (cu excepția comenzilor de ramificare a programului).

Dispozitivul principal din MP, care conectează toate nodurile într-un singur sistem, este magistrala de date internă. Toate dispozitivele schimbă semnale prin intermediul acestuia. De exemplu, dacă MP-ul trebuie să acceseze o memorie externă suplimentară, atunci când comanda corespunzătoare este executată, adresa necesară este setată pe magistrala de date și se primește o solicitare de la dispozitivul de control prin aceasta pentru a accesa I/O-ul necesar. porturi. Dacă porturile sunt gata, adresa este trimisă la ieșirile portului (adică la pinii controlerului corespunzători), apoi, când este gata, portul de primire pune pe magistrală datele primite din memoria externă, care este încărcată în registrul dorit. , după care magistrala de date este liberă. Pentru a vă asigura că toate dispozitivele nu interferează între ele, toate acestea sunt strict sincronizate și fiecare dispozitiv are, în primul rând, propria sa adresă și, în al doilea rând, poate fi în trei stări - funcționează ca intrare, ca ieșire sau să fie într-un stat terț, fără a interfera cu munca altora.

Capacitatea de cifre a unui MP este de obicei înțeleasă ca capacitatea de cifre a numerelor cu care funcționează ALU; în consecință, registrele de lucru au și ele aceeași capacitate de cifre. De exemplu, toate procesoarele PC de la 1386 până la cele mai recente încarnări ale lui Pentkim au fost pe 32 de biți, unele modele recente de la Intel și AMD au devenit pe 64 de biți. Majoritatea microcontrolerelor de uz general sunt pe 8 biți, dar există și pe 16 și 32 de biți. În acest caz, magistrala de date internă poate avea mai mulți biți - de exemplu, pentru a transmite simultan atât adrese, cât și date.

Distribuția pieței MK în primii ani ai mileniului a fost următoarea: puțin mai puțin de jumătate din produsele produse au fost cristale de 8 biți, iar a doua jumătate a fost împărțită între cipuri de 16 și 32 de biți, cu ponderea de acesta din urmă crește constant în detrimentul cipurilor pe 16 biți. Se produc chiar și pe 4 biți, descendenți ai primilor 14004, care ocupă nu mai mult de 10% din piață, dar, curios, această cotă scade foarte lent.

Note în margini

De obicei, frecvența de ceas a MK-urilor universale este scăzută (deși pentru un inginer în anii 1980, când PC-urile operau* la frecvențe nu mai mari de 6 MHz, ar fi părut uriașă) - aproximativ 8-16 MHz, uneori până la 20 MHz sau un pic mai mult. Și acest lucru se potrivește tuturor - adevărul este că MK-urile obișnuite nu sunt destinate dezvoltării de circuite de mare viteză. Dacă este necesară performanță, atunci este utilizată o altă clasă de circuite integrate - FPGA-uri, „circuite integrate logice programabile”. Cel mai simplu FPGA este un set de elemente logice care nu sunt interconectate în niciun fel (cea mai complexă dintre ele poate include unele unități complete, cum ar fi flip-flops și generatoare), care sunt conectate în circuitul dorit în timpul programării unui astfel de cip. . Logica combinațională funcționează mult mai rapid decât controlerele tactate și, în prezent, doar FPGA-urile sunt folosite pentru a construi diverse circuite logice; utilizarea elementelor discrete („pulbere”) la scară de masă a fost abandonată de mult timp. Un alt avantaj al FPGA-urilor este că consumul de energie statică pentru unele serii se ridică la câțiva microwați, spre deosebire de MK-urile, care consumă destul de mult la pornire (dacă nu sunt în modul de economisire a energiei). Împreună cu microcontrolere mai versatile și mult mai ușor de utilizat, dar mai puțin rapide și mai puțin rentabile, FPGA-urile formează baza majorității produselor electronice produse în masă pe care le vedeți pe rafturi. În această carte, desigur, nu vom lua în considerare FPGA-urile - în practica amatorilor, în principal din cauza costului ridicat al instrumentelor corespunzătoare și a pragului ridicat pentru stăpânirea lor, nu sunt utilizate și nu este recomandabil să le folosiți pentru a proiecta copii individuale ale dispozitivelor chiar și pentru aplicații profesionale.

Dacă detaliile funcționării interne a MP nu ne preocupă foarte mult (am „inventat” deja nodul central - ALU în capitolul 15, iar acest lucru este suficient pentru a înțelege ce se întâmplă exact în interiorul nucleului procesorului), atunci schimbul cu mediul extern ne intereseaza in toate detaliile . În acest scop, sunt folosite porturile de intrare/ieșire (portul I/0, de la intrare/ieșire). Există o oarecare ambiguitate în acest termen, deoarece cei care au programat pentru PC-uri în asamblare își amintesc că în PC-uri, porturile de intrare/ieșire (IOP) erau registre pentru controlul tuturor dispozitivelor, cu excepția nucleului procesorului însuși. În microcontrolere, același lucru se numește „registruri de intrare/ieșire” (IO) - acestea sunt registre pentru accesarea componentelor controlerului încorporate externe nucleului de calcul. Și acestea sunt toate nodurile care sunt controlate direct de utilizator - de la temporizatoare și porturi seriale la registrul steagurilor și gestionarea întreruperilor. În afară de RAM, la care accesul este asigurat de comenzi speciale, orice altceva din controler este controlat prin RVV și nu trebuie confundate cu porturile I/O.

PVV-urile din MK sunt folosite pentru schimbul cu „mediul” (sunt, desigur, controlate și de registrele interne I/O). În diagrama fig. 18.2 prezintă 3 PVV - A, B şi C; în MK-uri reale pot fi mai mult sau mai puțin. Și mai important este numărul de pini ai acestor porturi, care coincide cel mai adesea cu dimensiunea biților procesorului (dar nu întotdeauna, așa cum a fost cazul 8086, care avea o structură internă de 16 biți, dar arăta în exterior pe 8 biți) . Dacă forțăm porturile de 8 biți să „comunice”, de exemplu, cu memoria externă, atunci două dintre ele pot fi setate la o adresă de 16 biți, iar cel rămas poate primi date. Dar dacă există două porturi sau doar unul? (De exemplu, în microcontrolerul ATxxxx2313 există în mod oficial două porturi, dar unul este trunchiat, deci numărul total de linii este de 15). Pentru ca acest lucru să fie posibil chiar și într-o astfel de situație, toate porturile externe din MP sunt întotdeauna bidirecționale. Să spunem, dacă există două porturi, atunci puteți mai întâi să setați adresa și apoi să comutați porturile pentru a introduce și primi date. Desigur, pentru aceasta, porturile trebuie să permită funcționarea pe o magistrală comună - adică fie să aibă o a treia stare, fie o ieșire cu un colector comun pentru combinarea într-un „SAU montat”.

Opțiunile pentru ambele cazuri de organizare a liniei de ieșire a portului sunt prezentate în Fig. 18.3, care prezintă diagrame simplificate ale liniilor de ieșire ale familiei de microcontrolere 8048 - predecesorul odată folosit pe scară largă al popularului MCU 80S1 (de exemplu, 8048 a fost ales ca controler cu tastatură în PC-ul IBM). În MCU-urile moderne, construcția porturilor este ceva mai complicată (în special, în locul unui rezistor există un tranzistor cu efect de câmp), dar pentru înțelegerea principiilor de funcționare acest lucru nu este esențial.

Conform primei opțiuni (Fig. 18.3, a), porturile 1 și 2 sunt construite în 8048 MK. Când scrierea se face pe port, nivelul logic vine de la ieșirea directă a latch-ului de pe D-flip-ul static. flop la intrarea circuitului „ȘI” și de la invers - la poarta tranzistorului VT2. Dacă acest nivel este egal cu zero logic, atunci tranzistorul VT1 este blocat și VT2 este deschis, iar ieșirea este, de asemenea, zero logic. Dacă nivelul este egal cu cel logic, atunci pe durata impulsului „Scrie”, tranzistorul VT1 se deschide, iar tranzistorul VT2 se închide (au aceeași polaritate). Dacă există o capacitate la ieșire (și este întotdeauna prezentă sub forma capacității distribuite a conductorilor și a capacității intrărilor altor componente), atunci un curent de încărcare suficient de mare al acestei capacități trece prin VT1 deschis, permițând formarea. a unui front de tranziție bun de la O la 1. De îndată ce pulsul „Scrie” se termină, ambele tranzistoare sunt oprite, iar cea logică la ieșire este menținută de rezistența R1. Rezistența de ieșire a tranzistorului deschis VT1 este de aproximativ 5 kOhm, iar rezistența este de 50 kOhm. Orice alt dispozitiv conectat la această magistrală, atunci când funcționează ca ieșire, poate fie să suporte unul logic, conectând rezistorul său similar în paralel cu R1, fie să ocupe linia cu zeroul său logic - acesta, după cum puteți vedea, este „ cablare SAU”. Când se lucrează ca intrare, starea liniei este pur și simplu citită în timpul impulsului „Scriere” din bufferul de intrare (elementul „B” în Fig. 18.3, a).

A doua opțiune (Fig. 18.3, b), conform căreia este proiectat portul O, este o etapă de ieșire CMOS convențională cu o a treia stare, adică un astfel de port poate funcționa ca ieșire, doar că ocupă complet linia, în timp ce restul dispozitivelor conectate la linie trebuie să asculte cu umilință monopolistul, percepând semnale. Acest lucru de obicei nu creează dificultăți speciale și este chiar de preferat din proiectarea circuitelor datorită simetriei semnalelor de ieșire și rezistenței ridicate a semnalelor de intrare. Singura dificultate apare atunci când se asociază un astfel de port cu o linie care funcționează conform primei opțiuni, deoarece cu una logică la ieșire, pot apărea conflicte electrice dacă cineva încearcă să scoată un zero logic în linie (curentul de la sursă va curge prin două tranzistoare deschise).

Orez. 18.3. Diagrame simplificate ale porturilor de intrare/ieșire MK 8048: a - porturile 1 și 2; b - portul O

Pentru a asigura funcționarea unui port cu trei stabile în conformitate cu circuitul „cablare SAU”, este utilizat un truc complicat: întreaga linie este „trasă” la tensiunea de alimentare folosind un rezistor extern (multe microcontrolere au un comutabil încorporat rezistor, instalat în mod similar cu R1 în circuitul din Fig. 18.3, a), și starea normală a tuturor celor trei porturi stabile participante este operarea de intrare în starea a treia. În acest mod, va exista întotdeauna unul logic pe linie. Linia este comutată la ieșire numai atunci când este necesar să ieșiți un zero logic. În acest caz, chiar dacă mai multe porturi sunt active în același timp, conflictele nu vor apărea.