Unitate de control (IT)

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

Unitatea de control este o componentă a procesoarelor care are sarcina de a coordona toate acțiunile necesare pentru executarea unei instrucțiuni și a unor seturi de instrucțiuni . Componenta care oferă microprocesorului posibilitatea de a executa instrucțiuni diferite. Acțiunile care coordonează diferitele sectoare ale procesorului ( ALU , registre , Write-Back ) se numesc micro-operațiuni sau microinstrucțiuni . Un set de microinstrucțiuni se numește micro-program .

Intrare și ieșire

Unitatea de control primește intrarea la fiecare ciclu de ceas :

  • același ceas care sincronizează executarea microinstrucțiunilor unice
  • instrucțiunea, care conține codul operațional , pe care determină microinstrucțiunile de executat
  • de pavilion semnale, care determină starea CPU și să dea indicații cu privire la starea anterioară a ALU
  • și semnale de la magistrala de control , cum ar fi întreruperile și confirmările de la dispozitive externe.

În ieșire generează semnale interne CPU pentru transferul de date și controlul alu-ului și semnale prin magistrala de control pentru memorie și I / O pentru restul sistemului.

Tehnici de implementare

Rețea combinatorie

Este posibil să implementați unitatea de control ca o rețea combinațională care generează ieșiri în funcție de intrări, întotdeauna posibilă pentru teorema lui Shannon . Limitele acestei metode sunt proiectarea și testarea dificile și lipsa de flexibilitate a sistemului. Dacă ar fi să adăugați o instrucțiune sau un anumit control, ar fi necesar să reproiectați totul.

Micro-limbaj

Privind mai atent, este posibil să observăm că sarcina unității de control este similară cu cea a unui microprocesor, adică să facă alegeri în funcție de intrări și să reacționeze în consecință (secvențierea micro-operațiunilor etc.). Prin urmare, este posibil să construim un limbaj de micro-programare . Practic, un semnal de control este o linie care variază între 0 și 1, în funcție de faptul dacă semnalul trebuie să fie oprit sau pornit. Fiecare microinstrucțiune trebuie, prin urmare, să asocieze valoarea 1 semnalelor de control cerute de micro-operațiuni a căror execuție este prevăzută în această microinstrucțiune. Pentru fiecare cod operațional furnizat, trebuie definită o secvență de micro-operațiuni, adică un micro-program. Microprogramele se numesc firmware , subliniind apartenența lor atât la hardware, cât și la software. Firmware-ul este stocat în memoria internă numită memorie de control . Evident, de asemenea, în acest caz este necesar să se facă alegeri care vizează eficiența și numărul de microprograme necesare. În microprocesoarele moderne există multe registre și verificări care trebuie efectuate, astfel încât singura soluție este de a implementa microinstrucțiuni compuse din mai mulți biți pentru a gestiona numărul mare de verificări care trebuie efectuate. Lungimea microinstrucțiunilor este alcătuită din trei factori: numărul maxim de microinstrucțiuni diferite care trebuie gestionate în același timp, modalitățile de codare și reprezentare a semnalelor de control și modalitățile cu care adresa următoarei este specificată microinstrucțiunea de executat. Aici se disting două modele:

  • micro-programare verticală în care fiecare microinstrucțiune specifică câteva micro-operațiuni de realizat. În acest caz, microinstrucțiunile au puțini biți, unde n semnale de control sunt reprezentate de log2 n biți, iar o decodificare ulterioară a instrucțiunii este deci necesară pentru a genera semnalele de control
  • sau o microprogramare orizontală în care puteți specifica mai multe semnale de control în paralel și aveți la fel de mulți biți cu cât există semnale de control care trebuie generate. În acest caz, este posibil să se realizeze un paralelism ridicat, iar codarea semnalelor este nulă sau limitată.

Cu toate acestea, se poate implementa o cale de mijloc, împărțind microinstrucțiunile în grupuri disjuncte, obținându-se astfel un paralelism rezonabil cu un număr nu enorm de biți.

CAR și CBR

CAR este registrul de adrese de control , iar CBR este registrul de tampon de control . O unitate de control microprogramată trebuie să efectueze două operații fundamentale în unitatea de timp de referință, care este ceasul. Luarea unei microinstrucțiuni prin determinarea adresei memoriei de control care urmează să fie accesată (și, prin urmare, secvențierea microinstrucțiunilor) și executarea microinstrucțiunii. Unitatea de control funcționează după cum urmează:

  • secvențierul emite o comandă de citire
  • Microinstrucțiunea conținută în locația memoriei de control specificată de Registrul de adresă de control (CAR) este transferată în registrul de tampon de control (CBR)
  • Pe baza conținutului său, registrul CBR generează, direct sau după decodare, semnalele de control și informațiile referitoare la adresa ulterioară
  • Secvențierul introduce noua adresă în registrul CAR pe baza informațiilor furnizate de registrul CBR și a steagurilor provenite de la ALU

Următoarea adresă depinde de conținutul CBR și de steagurile provenite de la ALU. În acest moment, unitatea de control fie ia următoarea instrucțiune prin creșterea registrului CAR cu unul, fie trece la o nouă microprogramă prin copierea conținutului CBR în CAR printr-o microprogramă de salt, sau din nou pentru a sări la o altă microprogramă printr-una reală și instruirea proprie a limbajului mașinii în faza IR.

Schema Wilkes

Din punct de vedere pur fizic, este posibilă implementarea unei unități de control microprogramate prin schema Wilkes , adică prin construirea unei rețele de conductori pentru a forma o matrice imensă, cu diode conectate la intersecții. La fiecare cursă de ceas se activează un rând al matricei, obținând semnale de ieșire către coloanele conectate cu diodele. Prima parte a coloanelor se referă la instrucțiunile de executare, a doua parte la următoarea instrucțiune de executat. Fiecare rând reprezintă, prin urmare, microinstrucțiunea care trebuie executată și întreaga matrice este memoria microinstrucțiunilor. Evident, această schemă este strict orizontală și necesită un număr mare de biți. Schemele mai complexe pot fi utilizate pentru următoarea generație de adrese care necesită module de secvențiere.

Să presupunem că unitatea de control trebuie să genereze semnale K, atât externe, cât și interne. Cu schema Wilkes avem 2k configurații posibile. Nu toate acestea sunt utilizate din diverse motive (două surse nu pot fi trimise la aceeași destinație în același ciclu, un registru nu poate fi sursă și destinație în același ciclu, într-un ciclu ALU poate primi un singur semnal, într-un ciclu magistrala de control externă poate primi doar un singur semnal) și, prin urmare, s-ar putea lua în considerare reducerea numărului de semnale de intrare la matrice. Dar acest lucru ar complica foarte mult programarea și decodarea la ieșire, astfel încât sunt utilizați mai mulți biți decât este strict necesar, dar unele configurații nu sunt codificate deoarece nu sunt utilizate. O tehnică de codificare a instrucțiunilor este aceea de a le împărți în câmpuri, fiecare câmp, care își activează semnalele de control, cu propria codificare. Câmpurile sunt independente și, prin urmare, câmpuri diferite pot declanșa acțiuni diferite simultan, în timp ce fiecare câmp poate declanșa o singură acțiune pe ciclu de ceas.

Conductă

Pictogramă lupă mgx2.svg Același subiect în detaliu: conductă de date .

Dacă există o conductă în interiorul microprocesorului, unitatea de control trebuie să fie capabilă să detecteze pericolele asupra datelor și comenzilor și să modifice instrucțiunile în curs. Toate controalele sunt salvate în registre de conducte și reduse la scară până la finalizarea instrucțiunii. Introducerea conductei a complicat considerabil structura internă a unității de control, pentru a preveni problemele legate de pericolele datelor și controalelor.

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT