Sunteți pe pagina 1din 4

7.2.

5 Uniti logico -aritmetice (ALU)


Circuitele prezentate anterior efectuau cte o singur funcie. Ele decodificau, multiplexau, sumau sau roteau. Este momentul s prezentm o modalitate prin care se poate proiecta un circuit a crui funcie s poat fi selectat dintr-o mulime predefinit de funcii utile. Un astfel de circuit necesar n conceperea unor maini care realizeaz prelucrri diverse asupra acelorai variabile aplicate intrrilor. Operaii le efectuate de astfel de circuite sunt de tip logic sau aritmetic, motiv pentru care ele se numesc uniti logico - aritmetice, ALU (Arithmetic and Logic Unit). Arhitectura unei uniti logico - aritmetice Prin acest paragraf vom rsunde la ntrebarea: care sunt funciile efectuate de o ALU? Nu are importan n aceast faz, de definire arhitectural, cum se realizeaz aceste funcii. Definiia arhitectural d seam de comportamentul circuitului, de felul cum acesta este vzut la bornele sale, Ia interfaa sa cu celelalte subsisteme cu care interacioneaz. Conexiunile sunt de mai multe tipuri: dou intrri, fiecare de cte n bii reprezentnd cei doi operanzi:

Fig. 7.31 Schema bloc a unei uniti logico-aritmetice. - operandul stng (left) codificat cu Ln-1... Lo - operandul drept (right) codificat cu Rn-1... R0

intrare pentru specificarea operaiei logico - aritmetice de efectuat ntre cei doi operanzi, codificat, n cazul exemplului nostru, cu trei bii, F2F1F0 (numrul de bii depinde de setul de funciuni al ALU) ieirea de n bii pe care se genereaz rezultatul, On-1... O0 o serie de bii cu semnificaie independent, numii indicatori sauflag-uri, ce caracterizeaz relaii ntre operanzi sau rezultatul operaiei efectuate; n exemplul pe care-1 dm vom lua n consideraie urmtoarele fiag-uri:

CARRY : este un bit ce reprezint depirea ce apare la operaiile aritmetice cu ntregi pozitivi EQUAL : indic identitatea celor doi operanzi, Ln-1 ... L0 i Rn-1 ... R0 ZERO : semnalizeaz faptul c rezultatul operaiei curente, On-1... O0 este o configuraie binar cu toi biii egali cu zero SGN : reprezint valoarea celui mai semnificativ bit, On-1, al rezultatului care, dac rezultatul este interpretat ca un numr cu semn, este valoarea semnului (0 pentru plus i 1 pentru minus) PAR : reprezint cel mai puin semnificativ bit al rezultatului, care, dac rezultatul este interpretat ca numr ntreg, reprezint paritatea numrului (0 pentru numr par i 1 pentru numr impar) OVF : reprezint depirea capacitii de reprezentare a numerelor ntregi (cu numerele negative reprezentate prin complementul fa de 2); este un fel de carry pentru ntregii cu semn. Setul de funcii al ALU va fi limitat, pentru exemplul pe care -1 folosim, la urmtoarele:

AND : OR : XOR : ADD : SUB : INC : LEFT : SHL :

Oi = LiRi, pentru i = 0,1,... (n -1) O i = L i + R i , pentru i = 0,1,... (n - 1) O i =L i R i , pentru i = 0,1,... (n - 1) adun modulo 2n cei doi operanzi reprezentnd dou numere ntregi scade modulo 2n cei doi operanzi reprezentnd dou numere ntregi incrementeaz modulo 2n operandul stng ieirea ia valoarea operandului stng reprezint deplasarea logic cu o poziie la dreapta a operandului stng (cel mai puin semnificativ
bit se pierde).

ALU uzuale realizeaz i alta funcii, cum ar fi decrementarea (DEC), rotirea (ROT), NOT, . a. Organizarea unei uniti logico aritmetice Organizarea, sau arhitectura intern a circuitului, pune n eviden structurile interne ce concur la realizarea comportamentului descris de arhitectur. Unei arhitecturi date i se pot asocia mai multe organizri interne. n funcie de performanele impuse, de restriciile tehnologice i, de ce nu, de opiuni subiective greu de argumentat riguros, pot fi concepute organizri distincte. Unul din criteriile care devine din ce n ce mai important este cel al dimensiunii descrierii ntr-un formalism oarecare. Cu alte cuvinte, complexitatea organizrii este un factor de alegere foarte important. Vom prefera organizrile simple pentru c sunt mai uor de controlat n toate etapele ce presupun realizarea i utilizarea unui circuit.

Fig. 7.32 Prima variant de orgenizare intern a unei ALU.

Fig. 7.33 A doua variant de organizare intern a ALU.

A doua variant presupune o structurare preponderent pe "vertical". Vom defini un ALU elementar, ALUE, ca fiind un ALU ce opereaz cu cuvinte de u n bit. Rezult organizarea din Figura 7.33. Dac prima variant era caracterizat prin conectarea serie - paralel a unor blocuri cu funcii diferite, cea de a doua variant este dominat de conectarea n paralel a unor blocuri identice. Vom prefera cea de a doua variant dnd curs impresiei c va rezulta o descriere mai puin complex a structurii ALU.
//Descrierea comportamentala (arhitecturala) a unei //uniti logico-aritmetice (vezi Capitolul 10) module ALU(out, ini, in2, func); input[3:0] func; input[31:0] ini, in2; output[31:0] out; reg carry reg[31:0] out; always @(inl or in2 case (func) 4'b0000: {carry 4'bOOOl: {carry 4'b0010: out = 4'bOOll: out = 4'b0100: out = 4'b0101: out = 4'bOllO: out = 4'bOlll: out = 4'blOOO: out = 4'bl001: out = 4'blOlO: begin or func) , out} = inl + in2; //add , out} = inl - in2; //sub inl & in2; //and inl 1 in2; //or inl " in2; //xor "inl; //not inl; //left in2; //right {16'bO, inl[15:0]}|{in2[15:0], 16'bO}; //cone inl 1; //shr {carry, out} = inl,+ in2; //cradd out = 32'bO + carry;

end
4'blOll: begin

out end
endcase endmodule

{carry, out} = inl - in2; //crsub = 32'bO + carry;

VeriBox 7.11

Structura intern a unei uniti logico-aritmetice

Structura intern de circuit poate avea asociate mai multe organizri. n funcie de modul n care abordm descrierea formal a circuitului se pot da organizri distincte aceleiai structuri interne. Am exemplificat n paragraful anterior prin dou organizri asociate aceleiai arhitecturi. Ambele organizri au asociate i o aceeai structur, cea prezentat n continuare. Circuitul ALUE poate fi gndit ca o "felie" (slice) de ALU. S-i definim structura, ca un prim pas ctre definirea structurii ALU. n Figura 7.34 este descris structura intern a ALUE{. Semnificaia codurilor de comand este dat n tabel din Figura 7.35. Pentru i = n - 1 intrarea Li+1 = 0, iar pentru i = 0 intrarea de transport este C0 = F1F0.. Rolul fiecrui circuit din componena ALUE este urmtorul: poarta AND realizeaz funcia logic LiRi i calculeaz pe Gi pentru a fi generat ctre circuitul de transport anticipat (prin MUX2, codul F1F0 = 00 selecteaz valoarea lui Ri), poarta OR realizeaz funcia logic Li + Ri i calculeaz pe Pi pentru a fi generat ctre circuitul de transport anticipat, poarta XOR conectat la intrarea 4 a MUX3 realizeaz funcia logic Li Ri i calculeaz suma modulo 2 dintre operanzii implicai n operaiile de tip aritmetic (adunare, scdere i increment), poarta XOR conectat la intrrile 5, 6 i 7 a MUX3 calculeaz suma modulo 2 cu bitul de transport recepionat de la circuitul de generate a transportului anticipat MUX2 selecteaz ca operand pe Ri pentru operaiile logice binare i pentru adunare, pe Ri pentru scdere i pe 0 pentru increment MUX3 are rolul de a selecta Ia ieirea Oi una din funciile calculate pe nivelul anterior. Codificarea funciilor a fost astfel fcut nct s permit aplicarea biilor de selecie direct la intrarea ambelor multiplexoare. S-a evitat astfel utilizarea unor circuite random de transcodare pe intrarrile de selecie ale MUX2. Ordinul de mrime al dimensiunii structurii ALU format din n ALUE, circuitul Test i TCA (de calcul al transportului anticipat) este dat de ultimul. De asemenea, viteza de execuie a operaiilor este dat tot de lungimea cii de propagare a transportului. Analiznd dimensiunea ALUE nu putem s nu remarcm ponderea mare pe care o are MUX3 i MUX2 n dimensiunea SALUE. Aceste circuite au numai rol de selecie, operaiile propriuzise sunt realizate de cele 4 pori i de inversor. Dac Smultiplexoare = 66 iar Spori = 21, atunci este evident c ponderea circuitelor care efectueaz operaiile este sub 25%. Selecia, ca form a comunicrii, are o pondere major ncepnd de la acest nivel de baz al sistemelor digitale.

S-ar putea să vă placă și