Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
ALU (Arithmetic Logic Unit)
2
ARITHMETIC-LOGIC UNIT (ALU)
Classico simbolo di un’ ALU: A e B sono gli operandi in ingresso. R è il risultato. OpCode è il codice operazione proveniente dall'unità di controllo. Flags sono i segnali di stato dell'unità.
3
ARITHMETIC-LOGIC UNIT (ALU)
In informatica l'unità aritmetica-logica identifica la parte del microprocessore che è deputata ai calcoli matematici ed alle operazioni logiche, è una componente fondamentale della CPU, attualmente l'ALU è tipicamente implementata come parte del microprocessore. Le moderne CPU sono dotate di ALU molto sofisticate e un singolo microprocessore può contenere anche più ALU. In alcuni processori è suddivisa in due parti: la parte logica (LU) e la parte aritmetica (AU), inoltre è possibile che nello stesso processore vi siano più AU (una per le operazioni a virgola fissa e una per le operazioni a virgola mobile). In genere gli ingegneri tendono a definire ALU le unità in grado di eseguire operazioni sui numeri interi mentre le unità che eseguono operazioni su numeri in virgola mobile, numeri complessi, etc ricevono nomi meno generici.
4
Le operazioni dell’unità
Operazioni aritmetiche: addizione, sottrazione, moltiplicazione, divisione. Per ridurre il numero dei circuiti la sottrazione viene effettuata dall'ALU, come complemento, uno dei due numeri (addizione). Operazioni logiche: si basano sulle regole dell'algebra di Boole e sugli operatori logici AND, OR, XOR, NAND, NOR. Operazioni di confronto: si basano sul controllo della differenza aritmetica tra due numeri (dati). L'ALU utilizza gli stessi circuiti delle operazioni aritmetiche (complemento uno della sottrazione) per calcolare la relazione di uguaglianza o meno tra due numeri. Le principali operazioni di confronto sono: maggiore, minore, uguale, diverso, maggiore-uguale, minore-uguale.
5
Vediamo come funziona L'unità di controllo (CU) richiede all'unità ALU di effettuare una particolare operazione logico-matematica sui dati. I dati (input) sono prelevati dai registri del processore. L'operazione e i dati sono elaborati in linguaggio binario. Una volta elaborata l'operazione, il risultato finale in output viene registrato nella locazione di memoria dell'unità aritmetico-logica, detta accumulatore, o nei registri di uscita del processore e restituito all'unità di controllo.
6
Vediamo un esempio Questo è un esempio molto semplice, per capire come può essere progettata una ALU, con i suoi circuiti interni. Infatti nella figura qui sopra è rappresentata un ALU con due operandi in input A e B, come output un risultato C che può essere, un OR o un AND tra i dati d’ingresso. L’operazione, ovvero l’OpCode da fare sui dati, viene selezionata dalla CU, che a sua volta l’ha letta e codificata dal programma prelevato in memoria.
7
OpCode (Codice Operazione)
Esempio di un ALU a 4-bit OpCode (Codice Operazione) S S S0 ALU Funzione Descrizione F = A + B Add 1 F = A - B Subtract F = A + 1 Increment F = A - 1 Decrement F = A Λ B AND F = A V B OR F = Ā NOT F = A B XOR A e B dati input a 4 bit F è il risultato a 4 bit S2 , S1 e S0 sono la combinazione di 3 bit che la CU da all’ALU come OpCode C, P, Z, S e O sono i flags (bandierine), sono degli indicatori che la CPU alza o abbassa a seconda del verificarsi di certe condizioni, ovvero sono influenzati dai risultati delle operazioni di calcolo aritmetico svolte dalla ALU. I flags fisicamente sono i bit del registro di stato.
8
Process Status Word (PSW) o registro di stato - I Flags
Nel registro di stato, del INTEL 8086, solo 9 dei 16 bit sono significativi e si dividono in: Flag di stato (bit 0, 2, 4, 6, 7, 11): sono influenzati dai risultati delle operazioni di calcolo aritmetico svolte dalla ALU; anche se esistono istruzioni che ne forzano il cambiamento di valore, vengono soprattutto consultati dalle istruzioni di salto condizionato; Flag di controllo (bit 8, 9, 10): permettono di impostare alcune modalità operative della CPU grazie ad apposite istruzioni che impostano il loro valore.
9
I Flags di stato Flag di carry (Cf) bit (0): in caso di operazioni su numeri senza segno, vale 1 se la somma precedente ha fornito un riporto (carry) o se la differenza precedente ha fornito un prestito (borrow); Flag di parità (Pf) bit (2): vale 1 se l'operazione precedente ha dato un risultato che ha un numero pari di bit con valore uno; Flag di carry ausiliario (Af) bit (4): opera come il flag Cf però relativamente a prestiti e riporti tra il bit 3 e il bit 4 dei valori coinvolti, cioè opera a livello di semibyte (o nibble); è un flag utile soprattutto quando si opera con valori espressi nel codice BCD (Binary Coded Decimal);
10
I Flags di stato Flag di zero (Zf) bit (6): vale 1 se l'ultima operazione ha dato risultato zero; Flag di segno (Sf) bit (7): vale 1 se il segno del risultato dell'ultima operazione è negativo; essendo i valori espressi in complemento a due, tale flag viene valorizzato semplicemente tramite la copia del bit più significativo del risultato, che vale appunto 1 per i numeri negativi; Flag di overflow (Of) bit (11): ha la stessa funzione del flag cf ma per numeri con segno; in pratica segnala se l'ultima operazione ha fornito un risultato che esce dall'intervallo dei valori interi rappresentabili nell'aritmetica del processore;
11
I Flags di controllo Flag di trap (Tf) bit (8): viene impostato a 1 per avere l'esecuzione del programma step by step; utile quando si fa il debug dei programmi; Flag di interrupt (If) bit (9): viene impostato a 1 (istruzione sti) per abilitare le risposte ai segnali di interruzione provenienti dalle periferiche; viene impostato a 0 (istruzione cli) mascherare le interruzioni; Flag di direzione (Df) bit (10): si imposta per stabilire la direzione secondo la quale operano le istruzioni che gestiscono i caratteri di una stringa (1 verso sinistra, o in ordine decrescente di memoria, 0 verso destra, o in ordine crescente di memoria).
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.