Unitate aritmetică și logică

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Simbol clasic al unei ALU: A și B sunt operanzii de intrare, R este rezultatul, F sunt semnalele provenite de la unitatea de control și D sunt semnalele de stare ale unității

O unitate aritmetică și logică sau unitate aritmetică-logică (abrevierea utilizată în mod obișnuit: ALU , din engleza " a rithmetic and l ogic u nit" sau " a rithmetic- l ogic u nit"), în informatică , este un tip particular de procesor digital care se remarcă prin faptul că este responsabil pentru executarea operațiilor aritmetice sau logice .

ALU este o componentă fundamentală a procesorului , GPU și DSP și este prezentă atât în arhitectura von Neumann ( arhitectura hardware pe care se bazează majoritatea computerelor moderne), cât și în arhitectura Harvard mai puțin răspândită. În prezent, ALU este de obicei implementat ca parte a unui microprocesor monolitic. CPU-urile și GPU-urile moderne sunt echipate cu ALU-uri foarte sofisticate, iar un singur microprocesor poate conține chiar mai mult de un ALU.

Matematicianul John von Neumann a propus conceptul de ALU în 1945 , dezvoltând în același timp baza computerului EDVAC .

Cercetări timpurii

În 1946, von Neumann a lucrat cu colegii săi la dezvoltarea unui computer pentru Institutul de Studii Avansate Princeton (IAS). Mașina IAS a fost un sistem care a fost folosit ca exemplu de majoritatea computerelor ulterioare. În timpul dezvoltării von Neumann a subliniat arhitectura generică a mașinii, arhitectura a inclus conceptul de ALU.

Von Neumann a conceput conceptul de ALU pentru a permite computerului să efectueze operații aritmetice de bază, cum ar fi adunarea, scăderea, divizarea și multiplicarea. Von Neumann a considerat rezonabil să dezvolte o unitate specializată în acest scop. [1]

Sistem numeric

ALU trebuie să proceseze numerele utilizând același sistem numeric folosit de restul componentelor computerului. În computerele moderne, aceasta este practic întotdeauna notația complementară binară a două . Cu toate acestea, computerele timpurii foloseau o foarte mare varietate de sisteme de numerotare, cum ar fi notația zecimală , notația semnată și cele complementare .

În funcție de sistemul de reprezentare utilizat, schema ALU poate varia semnificativ.

Exemplu de diagramă de circuit

Un ALU simplu pe 2 biți capabil să efectueze operațiile AND, SAU, XOR și de adăugare logice.

Multe dintre operațiile efectuate de computer sunt efectuate de ALU. ALU preia datele din registrele procesorului , procesează datele din acumulator și stochează rezultatul în registrul de ieșire. Alte structuri transferă datele din registre în memoria principală. [2]

O unitate de control administrează ALU prin semnale de control care activează unitățile conținute în ALU.

Operațiuni de bază

Majoritatea ALU-urilor sunt capabile să:

  • Operații aritmetice pe numere întregi (adunare, scădere, dar adesea și multiplicare și împărțire, în unele cazuri efectuate prin utilizarea de scăderi multiple sau sume).
  • Operații logice ( ȘI , SAU , XOR ).
  • Operații de deplasare binare folosind registre de deplasare.

Operațiuni complexe

Un inginer electronic poate proiecta un ALU capabil să efectueze toate operațiile logice și matematice imaginabile, dar acest lucru ar pune probleme enorme, deoarece unitatea ar fi foarte scumpă și lentă. Așadar, inginerii trebuie să facă alegeri încercând să creeze unități puternice, dar în același timp nu prea complexe. De exemplu, pentru a efectua operațiunea rădăcină pătrată, inginerii se găsesc capabili să urmeze următoarele căi:

  1. Proiectați un ALU extrem de complex capabil să facă acest lucru într-o singură trecere (un singur ciclu de ceas).
  2. Proiectați un ALU foarte complex capabil să calculeze operațiunea într-o serie de pași. Dar, dacă organizați ALU cu o structură de conducte , puteți permite ALU să accepte date noi în timp ce datele anterioare sunt încă procesate prin mascarea diferitelor cicluri de ceas necesare pentru efectuarea operației.
  3. Proiectați o ALU complexă care să efectueze operațiunea în mai mulți pași, dar care nu utilizează o structură conductată. Acest lucru face operațiunea mai lentă, dar simplifică proiectarea în comparație cu soluția de conducte.
  4. Proiectați o ALU simplă care predă operațiunile rădăcinii pătrate unei unități specializate care funcționează în paralel cu ALU. Unitatea specializată (coprocesor) poate fi vândută separat și achiziționată numai de către utilizatori care au cu adevărat nevoie să efectueze de fapt o mulțime de operații de rădăcină pătrată.
  5. Nu furnizați operațiunea rădăcină pătrată și lăsați problema programatorului care va trebui să dezvolte propriile proceduri care, folosind operațiile furnizate de ALU, vor executa rădăcina pătrată.
  6. Emulați prezența coprocesorului, atunci când un program încearcă să efectueze operațiunea procesorul verifică prezența coprocesorului și dacă este prezent îl folosește, cu toate acestea, dacă nu este prezent, procesorul declanșează o întrerupere de eroare, sistemul de operare primește întrerupeți și efectuați operația prin intermediul unui algoritm software. Această soluție este extrem de lentă.

Opțiunile enumerate variază de la cea mai rapidă (și cea mai scumpă) la cea mai mică (și ieftină). Deci, chiar și ALU-urile simple sunt capabile să efectueze operațiuni complexe, dar necesită multe cicluri de ceas pentru a efectua operațiile, în timp ce ALU-urile complexe efectuează operații într-un singur ciclu de ceas.

Procesoarele de calculator implementează opțiunea 1 pentru operații simple, opțiunea 2 pentru majoritatea operațiilor și opțiunea 3 pentru operațiuni extrem de complexe și rare. Acest lucru este permis de prezența ALU-urilor foarte complexe, în schimb procesoare simple, de exemplu pentru aplicații încorporate , implementează adesea soluția 3 chiar și pentru operațiuni de complexitate medie, în timp ce acestea nu gestionează în mod nativ operațiuni complexe, lăsându-le în sarcina programatorului (opțiunea 5).

Intrare și ieșire

Intrările (intrările) ALU sunt datele de procesat (operanzii) și codul care activează unitatea de control care administrează ALU. Rezultatul este rezultatul operațiunilor.

ALU-urile sunt concepute pentru a genera și unele ieșiri care semnalează rezultate particulare obținute. Aceste ieșiri, numite steaguri, sunt de obicei colectate într-un registru de stare și sunt utilizate pentru a indica prezența restului, divizarea la zero, depășirea , rezultatul egal cu zero etc. [2] Aceste semnalizatoare sunt utilizate pentru a schimba fluxul de execuție a programului prin salturi condiționale. Deci, tipul de rezultat obținut poate fi folosit pentru a verifica condițiile: de exemplu, scăzând două numere, obțin rezultatul zero dacă sunt egale. Steagul zero este activat, iar o instrucțiune de salt următoare poate efectua saltul dacă steagul zero a fost activat sau poate continua fără salt dacă steagul zero nu este activat. If..then ... else, buclele și alte constructe de programare se bazează pe combinația mecanismului flag și salturi condiționale.

ALU și FPU

FPU este o unitate concepută pentru a efectua operații aritmetice pe numerele cu virgulă mobilă . Deoarece reprezentarea în virgulă mobilă este mult mai complexă decât reprezentarea complementului celor două utilizate de obicei de ALU. De fapt, FPU-urile tind să fie mult mai complexe decât ALU-urile, ele includ circuite foarte complexe și adesea chiar mai multe ALU-uri.

De obicei, inginerii tind să definească ALU-uri ca unități capabile să efectueze operațiuni pe numere întregi, în timp ce unități care efectuează operațiuni pe numere în virgulă mobilă, numere complexe etc. primesc nume mai puțin generice.

Notă

  1. ^ Stallings , pagina 19 .
  2. ^ a b Stallings , paginile 290, 291 .

Bibliografie

Elemente conexe

Alte proiecte

linkuri externe

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