- Arhitecturi de procesor
- Arhitectura setului de instrucțiuni RISC și CISC
- Calculul complexului de instrucțiuni (CISC)
- Calcul redus de seturi de instrucțiuni (RISC)
Sistemul încorporat este inima și nucleul majorității produselor electronice disponibile pe piață. Este implementarea ingineriei în care hardware-ul îndeplinește software-ul. Suntem înconjurați de o lume a sistemelor încorporate, cu mini-computere în încuietori biometrice, avioane, mașini, stimulatoare cardiace etc. Aceste resurse, sisteme mici, inteligente și puternice ne ajută în sarcinile noastre zilnice.
Ne-am gândit vreodată cum funcționează corpul nostru, sistemele nervoase, creierul și capacitatea de a face mai multe sarcini. Dacă combinați toate aceste funcții, veți obține o imagine aproximativă a unui sistem biologic încorporat. Creierul nostru ascunde detaliile complexe ale funcționării sale care au loc în interiorul său, dar ne permit totuși să-l controlăm la potențial maxim. Aceeași complexitate este valabilă și pentru procesorul sau controlerul utilizat în sistemele încorporate. Ele ascund detalii complexe și ne oferă o interfață la nivel înalt pentru a lucra. Pentru nivelul de abstractizare, se poate raporta modul în care codul pentru adăugarea a două numere într-un limbaj de programare de nivel înalt determină registrele din jetoane să manipuleze biții și să dea o ieșire înapoi utilizatorului.
Arhitecturi de procesor
Unitatea centrală de procesare, referitoare atât la microprocesor cât și la microcontroler, efectuează sarcini specifice cu ajutorul unei Unități de control (CU) și a unei unități logice aritmetice (ALU). Pe măsură ce instrucțiunile sunt livrate din memorie RAM, CPU acționează cu ajutorul celor două unități de ajutor, creând variabile și atribuindu-le valori și memorie. Este foarte important să știți cum procesorul efectuează toată această acțiune cu ajutorul arhitecturii sale. Dacă doriți să aflați mai multe despre modul în care funcționează un microcontroler, puteți citi acest articol de bază al microcontrolerului.
Fiecare procesor are o memorie asociată pentru a stoca programul și datele. Programul și datele funcționează cu CPU pentru a obține ieșirea. Programul furnizează instrucțiunile în timp ce datele oferă informațiile care trebuie prelucrate. Pentru a accesa programul și datele CPU utilizează autobuze, aceste autobuze sunt fire, mai exact acestea sunt urmele firelor așa cum ați văzut pe plăcile de circuite imprimate. De-a lungul acestor ani, microcontrolerele și microprocesoarele au evoluat prin adaptarea diferitelor arhitecturi, pe baza cerințelor de aplicație sau de proiectare, selecția microcontrolerului este influențată de tipul de arhitectură utilizat în acesta. Să aruncăm o privire asupra arhitecturilor populare.
Arhitectura Von-Neumann / Princeton
Modul prin care CPU primește acces la program și date, spune despre arhitectura CPU. Anterior, un singur autobuz a fost folosit pentru a obține acces la program și date. Acest tip de arhitectură este cunoscut sub numele de Arhitectura Von Neumann sau mai simplu arhitectura Princeton. O singură magistrală pentru obținerea codului și a datelor înseamnă că vin în calea celuilalt și încetinesc viteza de procesare a procesorului, deoarece fiecare a trebuit să aștepte ca celălalt să termine preluarea. Această limitare este, de asemenea, cunoscută sub numele de starea de blocaj Von-Neumann.
Arhitectura Harvard
Pentru a accelera procesul a fost propusă Harvard Architecture. În această arhitectură sunt prezente magistrale de date separate pentru date și program. Deci înseamnă că această arhitectură a propus utilizarea a patru autobuze
- Un set de magistrale de date care transportă datele în și din CPU.
- Un set de magistrale de adrese pentru accesarea datelor.
- Un set de magistrale de date pentru transportarea codului în CPU.
- O magistrală de adrese pentru accesarea codului.
Utilizarea magistralei de adrese separate și a magistralei de date a însemnat un timp de execuție redus pentru procesor, dar acest lucru costă complexitatea proiectării arhitecturii. Arhitectura Von Neumann poate suna puțin leneșă, dar are avantajul designului său simplu.
Arhitectura Harvard este mult mai ușor de implementat atunci când procesorul și unitățile de memorie împart același spațiu sau RAM și ROM sunt încorporate (on-chip) cu unitatea de procesare, cum ar fi în microcontroler unde distanțele sunt în microni și milimetri. Cu toate acestea, aceeași arhitectură este greu de implementat în cazul în care memoria care deține codul este externă unității de procesare, cum ar fi cea din computerele IBM x86. Un set de urme de fire separate atât pentru date cât și pentru adresele de pe placa de bază ar face placa complexă și costisitoare. Să o înțelegem cu un exemplu de procesor.
Un procesor cu magistrală de date pe 64 de biți și magistrală de adrese pe 32 de biți ar avea nevoie de aproximativ 100 de autobuze (96 pentru magistrala de date și adresă și puține altele pentru semnalele de control) pentru implementarea arhitecturii Von-Neumann. Aceeași structură, dacă ar fi implementată cu arhitectura Harvard, ar costa urme de fir dublu aproximativ 200, cu un număr mare de pini care ies din procesor. Din același motiv, nu vedem arhitectura pură Harvard implementată pentru PC-uri și stații de lucru. În schimb, se folosește o arhitectură Harvard modificată în care ierarhia de memorie cu memoria cache a CPU este utilizată pentru separarea programului și a datelor. Ierarhia memoriei separă stocarea pe baza ierarhiei timpului de răspuns al proceselor.
Arhitectura setului de instrucțiuni
Deoarece programul (codul) este încărcat în memoria sistemului (RAM), acesta este preluat de CPU (referindu-se atât la microprocesor, cât și la microcontroler) pentru a acționa asupra datelor, este mult similar, deoarece oferim instrucțiuni atunci când dresăm câinele pentru anumite acțiuni și comenzi. Pe măsură ce acele instrucțiuni se acționează asupra anumitor tranzistoare trece de la un nivel logic la altul pentru a face acest lucru. Deci, practic, cu ajutorul instrucțiunilor, programatorul uman comunică cu procesorul. Fiecare procesor are propriul set de instrucțiuni, o colecție de instrucțiuni bazate pe arhitectura și capacitățile sale.
CPU înțelege aceste instrucțiuni în combinația dintre 0 și 1 sunt cunoscute și ca opcode. Pentru un programator uman, este foarte dificil să ne amintim combinația de 0 și 1 pentru fiecare instrucțiune asociată cu CPU. Pentru a menține ușor munca unui programator uman, ni se oferă interfețe la nivel înalt cu aceste instrucțiuni, iar compilatorul le convertește sub formă de 0 și 1 pentru procesarea sa. De asemenea, în setul de instrucțiuni al fiecărui CPU, acesta are un număr limitat de instrucțiuni pe care le poate înțelege.
Performanța procesorului
Este posibil să fi auzit termenul de rată de ceas al procesorului legat de performanța procesorului. CPU-urile au, în general, o rată de ceas în MHz (Mega-Hertz) sau GHz (Giga-Hertz), cum ar fi rata de ceas de 25 GHz. Numărul asociat cu rata de ceas indică de câte ori ceasul din interiorul procesorului bifează în cicluri pe secundă. Practicitatea ratei de ceas poate fi înțeleasă prin faptul că instrucțiunile sunt efectuate pe baza ciclurilor de ceas ale procesorului, care este proporțională cu numărul de programe pe care CPU le poate rula simultan.
Performanța procesorului depinde de numărul de instrucțiuni care sunt scrise în program, mai multe instrucțiuni, mai mult timpul necesar de CPU pentru a le efectua. Depinde, de asemenea, de numărul de cicluri de ceas în care este executată fiecare instrucțiune, anumite instrucțiuni necesită mai multe cicluri de ceas pentru a fi executate decât altele, astfel încât acestea să rămână cu performanța procesorului. Instrucțiunile dintr-un program și ciclurile necesare pentru a efectua fiecare instrucțiune sunt invers proporționale între ele. Schimbarea uneia o va afecta pe cealaltă. Acesta este punctul în care industria CPU este divizată.
Arhitectura setului de instrucțiuni RISC și CISC
După cum sa menționat mai sus, Executarea unui program și performanța procesorului depind de numărul de instrucțiuni dintr-un program în care instrucțiunile sunt propuse acelui procesor ca parte a setului de instrucțiuni, iar al doilea factor este numărul de cicluri de ceas din pe care se execută fiecare instrucțiune. Pe baza acestor doi factori există în prezent două seturi de instrucțiuni disponibile. Cea mai timpurie dintre ele este Complex Instruction Set Computing (CISC), în timp ce cealaltă este Reduced Instruction Set Computing (RISC). Să discutăm fiecare dintre aceste arhitecturi în detaliu pentru a înțelege diferența dintre Arhitectura RIC și CISC.
Calculul complexului de instrucțiuni (CISC)
CISC înseamnă Complex Instruction Set Computing. Principalul motiv al CISC este de a reduce numărul de instrucțiuni pe care le execută un program, acest lucru se realizează prin combinarea multor instrucțiuni simple, cum ar fi modul adresă, încărcare etc. și formarea unei singure instrucțiuni complexe. Instrucțiunea CISC include o serie de instrucțiuni simple precum și a unor instrucțiuni speciale, care să ia mai mult de un ciclu de ceas pentru a executa. Instrucțiunile CISC pot funcționa direct pe memorie fără intervenția registrelor, ceea ce înseamnă că elimină necesitatea unor instrucțiuni de bază, cum ar fi încărcarea valorilor și cerința de memorie (RAM). Instrucțiunile CISC pun accentul mai mult pe hardware decât pe software, ceea ce înseamnă că, în loc să pună sarcina pe compilatoare,CISC folosește tranzistoare ca hardware pentru a decoda și implementa instrucțiuni. Cu toate acestea, deoarece instrucțiunile sunt complexe și constituie pași multipli, acestea sunt executate în mai multe cicluri de ceas.
O analogie simplă pentru a relaționa este atunci când vi se spune să deschideți cartea și să citiți a 2 -a pagină a capitolului 3. În această serie de activități, faceți mai mulți pași, cum ar fi găsirea cărții din geantă decât trecerea paginii la capitolul 3 și apoi accesați a doua pagină a capitolului și apoi începeți să citiți. Seria unui pas, dacă este combinată într-o singură instrucțiune de citire a paginii 44 (care este al 2 - lea număr de pagină a celui de - al treilea capitol), obținem o instrucțiune CISC.
Calcul redus de seturi de instrucțiuni (RISC)
Primul cip integrat a fost proiectat de Jack Kilby în 1958, care era un oscilator și în 1970 a apărut primul microprocesor comercial de la Intel. Deși la începutul procesorilor nu a existat CISC. Dar odată cu solicitările grele de calcul, arhitectura CISC devenea tot mai complexă și mai greu de manevrat. O reproiectare totală a arhitecturii CISC cunoscută sub numele de RISC a ieșit de la IBM de către John Coke. Astfel, pentru a face diferența între cele două arhitecturi, au fost introduși termenii RISC și CISC.
RISC înseamnă calculul setului de instrucțiuni redus. Principalul motiv al RISC a fost introducerea uniformității în dimensiunea și executarea instrucțiunilor. Acest lucru a fost făcut prin introducerea unui set de instrucțiuni simplu care ar putea fi executat ca o instrucțiune pe ciclu, acest lucru se face prin spargerea instrucțiunilor complexe, cum ar fi încărcarea și stocarea în instrucțiuni diferite, unde fiecare instrucțiune durează aproximativ un ciclu de ceas pentru a fi executat. Arhitectura RISC include instrucțiuni simple de aceeași dimensiune, care ar putea fi executate într - un singur ciclu de ceas. Mașinile bazate pe RISC au nevoie de mai mult RAM decât CISC pentru a păstra valorile pe măsură ce încarcă fiecare instrucțiune în registre. Executarea instrucțiunilor unice pe ciclu oferă mașinilor bazate pe RISC avantajul de conducte(pipelining-ul este procesul în care următoarea instrucțiune este încărcată înainte ca prima instrucțiune să fie executată, aceasta crește eficiența de execuție). Arhitectura RISC subliniază