Arhitectura unui procesor bazat pe registre generale

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

O arhitectură a unui procesor bazată pe registre generale , în informatică , reprezintă cea mai răspândită schemă logică de operare în realizarea hardware a procesoarelor de calculator .

În general, procesorul ( CPU ), conform arhitecturii clasice von Neumann , comunică cu alte dispozitive sau periferice, cum ar fi memoriile nevolatile și dispozitivele de intrare-ieșire ( I / O ) prin magistralele de conexiune, de obicei în modul paralel . În special, procesorul, care este un dispozitiv programabil din exterior de către utilizator, funcționează solicitând mai întâi instrucțiunile programului de executat (în limbajul mașinii ) și datele pe care să funcționeze direct din memoria non-volatilă din pentru a efectua apoi operațiunile de prelucrare necesare. asupra datelor în sine; din punctul său de vedere, prin urmare, vede doar adrese sau locații de memorie. Diagrama de principiu a arhitecturii unui procesor bazată pe registre generale este prezentată în Figura 1.

Componente și funcționare

În figura din lateral puteți vedea o serie de componente:

Figura 1. Un exemplu de arhitectură generală bazată pe registre.

Registrele sunt organe de memorie adecvate pentru stocarea unei serii de biți, care pot fi date, adrese de memorie sau instrucțiuni de program preluate din memoria procesorului și exprimate în limbajul mașinii . Valorile tipice ale numărului de biți pe care le pot stoca sunt 8, 16, 32 sau 64, iar numărul lor definește arhitectura specială a procesorului. Utilizarea registrelor este justificată de faptul că, întrucât memoria nevolatilă este în general lentă, utilizarea locațiilor de memorie suplimentare (registrele) pe care să plasați temporar datele este în general foarte utilă pentru funcționarea eficientă a procesorului în sine . Diferitele componente descrise în figură sunt descrise în detaliu mai jos, adică ce fac principalele dispozitive procesor și ce anume înregistrează magazinul.

Unitatea de control. este organul sau unitatea care gestionează, controlează sau prezidează executarea tuturor operațiunilor de procesare pentru programul particular care urmează să fie executat sau comandă toate celelalte părți ale procesorului conducând componentele în sine (ALU etc.), împărțind le introduc comenzi și acționează ca supraveghetor; reprezintă partea logică secvențială a mașinii de stare generală care, la rândul său, reprezintă logica electronică generală a procesorului însuși. De exemplu, este responsabil pentru interpretarea instrucțiunii găsite de fiecare dată în registrul IR; este responsabil pentru permiterea citirii și scrierii a două registre între care trebuie să aibă loc un schimb de informații. Unitatea de control cuprinde o subunitate numită secvențiator care nu este altceva decât o mașină de stare care scanează pașii sau stările unei instrucțiuni, începând cu o fază de preluare în care este recuperată și încărcată o parte a instrucțiunii sau a codului de operare, care trebuie efectuată. și continuarea cu secvența de operații care trebuie efectuate odată ce decodificatorul de instrucțiuni a fost decodificat. Odată ce execuția operației este terminată, starea secvențierului revine la faza de preluare pentru execuția următoarei instrucțiuni conform ciclului procesorului obișnuit. Toate fazele ciclului procesorului au loc prin trimiterea unui set de impulsuri de control către diferitele componente, într-o succesiune de timp precisă. Mai exact, la fiecare cursă de ceas , liniile de comandă își asumă o anumită stare; succesiunea diferitelor stări contribuie la executarea completă a unei instrucțiuni. Din acest motiv se poate spune că o singură instrucțiune în limbajul mașinii este executată prin compoziția adecvată a mai multor micro-operații .

ALU. Unitatea logico-aritmetică este organismul responsabil de efectuarea operațiilor aritmetice și a comparațiilor logice. Acesta preia operanzii de obicei din registrele generale, precum și rezultatele calculelor din registrele generale. În cele mai simple și mai generale arhitecturi, este compus din blocuri care efectuează toate operațiile (Sum, Xor, And, Shift, Test) pe intrările de date primite cu un selector de ieșire care decide ce operațiune doriți să selectați pe ieșire, chiar dacă toate acestea implică inevitabil o anumită putere irosită în comparație cu implementări mai eficiente. Este cuplat la un acumulator care este un fel de registru în care datele sunt stocate înainte de a fi procesate chiar de ALU. În urma unui calcul, ALU are, de asemenea, sarcina de a seta unele dintre steagurile SR ( Status Register ) pentru a ține evidența anumitor evenimente (de exemplu, transportarea unei sume). Este o parte a logicii combinatorii a mașinii de stare care, la rândul său, reprezintă logica generală de funcționare a procesorului.

Memoria. De obicei conține un număr foarte mare de registre, poziții sau celule în care datele și instrucțiunile unui program (subsetul setului complet de instrucțiuni de limbaj al mașinii procesorului) sunt stocate printr-un spațiu de adrese . Timpul necesar pentru a accesa un registru de memorie este, în general, mult mai mare decât cel necesar pentru a accesa unul dintre registrele procesorului. Din acest motiv, în măsura posibilului, încercăm să folosim registrele interne pentru a efectua operațiunile, limitând accesele în memorie la strictul necesar. Deși memoria conține un număr foarte mare de registre, în fiecare moment, numai unul dintre acestea este activat pentru a participa la operațiile de citire sau scriere: cel a cărui adresă este conținută în registrul MAR. Pentru a compensa încetineala memoriei RAM , memoria cache a fost, de asemenea, inventată istoric.

Autobuzul intern. Este un canal principal de comunicație partajat de componentele menționate mai sus și prin care acestea pot comunica prin schimbul de informații precum comenzi de intrare și ieșire etc. În acest context, dialogul constă în schimbul de date binare între registre în mod paralel . Aceasta înseamnă că un anumit număr de biți sunt transferați simultan pe magistrală de la un registru de trimitere la un registru de recepție. În timpul unei operațiuni de transfer, cele două registre implicate în comunicare sunt într-o stare de citire (receptor) și scriere (expeditor), astfel încât să poată dobândi datele prezente pe magistrală și, respectiv, să le poată scrie. Toate celelalte registre se află într-o stare de „odihnă” în care nu pot nici să citească datele care circulă pe autobuz, nici să influențeze starea autobuzului cu datele pe care le conțin. Numărul de biți transferați simultan indică paralelismul magistralei și este egal cu numărul de biți conținut într-un singur registru. De asemenea, caracterizează paralelismul intern al procesorului.

Autobuzul de adrese și registrul MAR. În timpul unui acces la memorie, atât în ​​faza de citire, cât și în faza de scriere, registrul MAR ( Memory Address Register ) conține adresa locației de memorie care este accesată. Această adresă, transferată către unitatea de memorie prin magistrala de adresă, permite comunicarea doar una dintre toate pozițiile de memorie (celule) disponibile (de obicei în număr foarte mare). Aceste funcții de adresare sunt în general gestionate de o unitate de procesor numită Address Logic .

Data Bus și registrul MDR . Data Bus este o magistrală care conectează memoria cu Registrul de date de memorie (MDR). Servește pentru a transfera date în ambele direcții, întotdeauna în mod paralel. Toate datele și instrucțiunile care trebuie procesate din memoria din procesor trec, de asemenea, prin registrul MDR și numai ulterior din acesta ajung la registrele corespunzătoare pentru procesarea efectivă. În mod similar, toate rezultatele (ieșirile) unei prelucrări care trebuie stocate în memorie trec mai întâi prin registrul MDR și ajung doar ulterior la poziția exactă de memorie (celula) din acesta.

Registrul PC ( Program Counter ). Valoarea stocată în registrul PC reprezintă, prin definiție, adresa locației de memorie care conține următoarea instrucțiune de executat. De obicei, este interogat la începutul fiecărei faze de preluare și imediat după ce este actualizat la „următoarea” locație de memorie, pregătindu-l astfel pentru preluarea următoarei instrucțiuni. Cu toate acestea, se poate întâmpla ca instrucțiunea preluată să intre în categoria instrucțiunilor de salt: în acest caz, se efectuează o actualizare suplimentară a computerului în timpul fazei de executare a instrucțiunii. Din aceasta rezultă că scopul unei instrucțiuni de salt (condiționat) este exclusiv de a modifica (posibil) valoarea computerului. Registrul PC-ului este denumit adesea IP (Instruction Pointer).

Registrul IR. ( Registrul de instrucțiuni ). Acest registru are sarcina de a primi din memorie (prin MDR), în timpul unei faze de preluare, instrucțiunea de executat, cea indicată de PC. Odată ajuns în acest registru, instrucțiunea trebuie interpretată de unitatea de control pentru a trece la faza posibilă de pregătire a operanzilor și la faza de execuție.

Registrul SR. ( Registrul de stare ). Este un registru care stochează o serie de biți care indică starea curentă a procesorului. Poate indica, de exemplu, dacă rezultatul ultimei operații aritmetice efectuate de ALU a dat un rezultat nul sau dacă a generat un report.

Registrele generale. Registrele generale nu au un rol precis ca celelalte și de aici și numele lor. Acestea sunt folosite pentru a conține datele în tranzit pentru o prelucrare: adaosurile unui adaos pe care ALU urmează să le efectueze, rezultatul unui calcul pe care ALU l-a efectuat, o adresă de memorie în care există date care vor trebui să fie să fie accesat mai târziu etc. Un număr mare din aceste registre oferă o mai mare flexibilitate în programare, dar complică structura procesorului din punct de vedere arhitectural.

Un exemplu: executarea instrucțiunii MOVE

Figura 2. Ciclul procesorului.


Cu referire la ciclul procesorului , prezentat în Figura 2, analizăm modul în care are loc schimbul de informații, în cadrul arhitecturii expuse, într-un caz real. Să presupunem că, în timpul procesării sale, procesorul se află într-un anumit moment trebuind să execute, de exemplu, o instrucțiune care are scopul de a muta conținutul curent al registrului general R1 în poziția de memorie având adresa D. Reprezentăm simbolic această operațiune cu următoarea comandă:

 mov R1, D

Pentru a fi executat, o astfel de instrucțiune trebuie să facă parte din bagajul de asamblare al procesorului în cauză și, ca atare, să poată fi reprezentată în mod corespunzător în limbajul mașinii . Imaginați-vă, prin urmare, că instrucțiunea este reprezentată în memorie așa cum este raportat în Fig. 3.

Figura 3. Starea memoriei.

Începe de la a n-a poziție de memorie, dar, deoarece nu poate fi complet conținut într-o singură poziție, ocupă și următoarea poziție. În special, poziția a n-a conține un șir de biți care vor fi interpretați de unitatea de control după cum urmează:

 "instrucțiune de mutare a cărei sursă este registrul R1
    și a cărui destinație este locația de memorie
    a cărei adresă este conținută imediat dedesubt ".

Pașii necesari pentru a efectua această operațiune sunt:

  1. PC → MAR
  2. Inc (PC)
  3. Memorie citită
  4. MDR → IR
  5. PC → MAR
  6. Inc (PC)
  7. Memorie citită
  8. MDR → MAR
  9. R1 → MDR
  10. Memorie Scrie

Să analizăm în detaliu semnificația acestuia. Deoarece suntem la începutul fazei de preluare, trebuie să preluăm instrucțiunea din memorie: aceasta, prin definiție, este conținută la adresa indicată de registrul PC. Pasul 1 copiază conținutul computerului în MAR pentru a pregăti memoria pentru accesul la locația corectă. Pasul 2, într-un mod complet general, mărește calculatorul astfel încât să indice următoarea poziție de memorie, aceasta fiind poziția care trebuie citită în cele ce urmează cu cea mai mare probabilitate. Pasul 3 instruiește memoria să scrie pe magistrala de date și, în același timp, MDR să citească din magistrala de date. În urma acestei operații, MDR va conține prima parte a instrucțiunii de executat. Pentru a fi interpretat, acesta trebuie în orice caz transferat la IR. Acest lucru se face la pasul 4. Odată ce instrucțiunea a fost interpretată, unitatea de control „înțelege” că instrucțiunea a fost preluată doar parțial și că trebuie preluat un alt fragment. Aici se încheie faza de preluare și începe faza de pregătire a operandului. La pasul 5, din nou PC-ul este copiat în MAR pentru a permite un nou acces la memorie; imediat după, în pasul 6, este din nou incrementat, astfel încât să fie indicată următoarea instrucțiune, cea care va fi preluată și executată în timpul ciclului următor. La pasul 7 memoria este citită și adresa D este copiată pe MDR. Aici se încheie și faza de pregătire a operanzilor și începe faza de execuție efectivă a instrucțiunii. Deoarece scrierea trebuie să aibă loc chiar la adresa conținută acum în MDR, aceasta este copiată în pasul 8 în MAR. În pasul 9, conținutul registrului R1 este copiat în MDR și, în final, de acolo, în pasul 10, acesta este copiat în memorie în poziția corectă printr-o operație de scriere. Aceasta încheie și faza de execuție. În acest moment, computerul indică următoarea instrucțiune de executat și poate începe o nouă fază de preluare.

Bibliografie

John F. Wakerly. Arhitectura și programarea microcomputerelor: familia 68000 . 784 de pagini, mai 1989, Wiley. ISBN 9780471853190

Elemente conexe