I see you, I hear you, I Hacked you!


Capitolo 2 - Paragrafo 5: L'ALU

« Older   Newer »
 
  Share  
.
  1. Prototype K
     
    .

    User deleted



    Salve a tutti ragazzi e bentornati qui su sul mio blog nella sezione Informatica->Hardware! . Ogni continuiamo il nostro percorso approfondendo ulteriormente quel blocco funzionale interno alla CPU che gioca un ruolo fondamentale durante il processo di elaborazione di un'istruzione: sto parlando dell'ALU. Principalemte questo paragrafo a mio parere molto corto e semplice da capire, non servirà ad altro che dare un'ulteriore definizione di quelle che sono le funzioni svolte dall'ALU. Detto questo, cominciamo subito!

    * L'ALU (Arithmetic Logic Unit) *
    Come abbiamo già affermato, l'ALU è la parte della CPU dedicata alle operazioni aritmetiche e logiche: poiché tutte le istruzioni e i dati sui quali opera sono codificate in forma numerica (binaria), in realtà tutte le elaborazioni devono passare attraverso l'ALU, in quanto qualsiasi operazione può essere ricondotta a un'operazione aritmetico-logica. Per esempio, se vogliamo confrontare due caratteri alfabetici tra loro, siccome vengono codificati secondo la tabella ASCII in ordine progressivo (A=41h, B=42h, C=43h,...,a=61h, b=62h, c=63h,...), l'ALU effettua una semplice operazione di sottrazione tra i due valori: il settaggio del Flag di Carry indicherà se il primo carattere è maggiore o minore del secondo.

    Qualunque operazione logica può essere realizzata disponendo di un insieme di operatori logici, quali per esempio AND, OR, XOR, NOT. Lo stesso concetto può essere esteso anche all'aritmetica individuando come insieme minimo la coppia "somma + negazione".
    CITAZIONE
    Non dobbiamo confondere la negazione in complemento a 2 con l'operatore logico NOT chiamato complemento a 1. La negazione svolge nell'aritmetica binaria le funzioni di cambio di segno in assenza di un simbolo dedicato al segno.

    Ogni altra operazione aritmetica deriva da questa coppia di operatori. La sottrazione si ottiene in sostanza con la negazione del sottraendo addizionato al minuendo, quindi possiamo dire che a-b equivale ad a+(-b); il prodotto (o moltiplicazione) è invece un ciclo di addizioni del moltiplicando eseguite per un numero di volte pari al moltiplicatore, la divisione è una ripetizione di sottrazioni del divisore e così via.

    Possiamo immaginare l'ALU come costituita solo dalla combinazione di operatori AND, NOT, addizionatori e negatori. In questa immagine potete osservare lo schema logico di un addizionatore di tipo "Half adder", ovvero un sommatore a singolo bit.

    www.bing.com/images/search?q=...cfd8a703d564o0



    Il comportamento dell'unità aritmetico-logica può essere chiamato "binario ad accumulo". Indica che i dati sui quali opera sono espressi in codice binario e il risultato delle operazioni eseguite viene sempre accumulato in uno dei due operandi, come avremo modo di imparare scrivendo alcune righe di codice assembly. Supponiamo per esempio di voler sommare il contenuto di due ipotetici registri generali R1 e R2. Se R1 contiene 5 e R2 contiene 10 effettuando la somma R1 + R2(5 +10), il registro posto a sinistra nell'addizione conterrà il risultato che andrà a sostituire il precedente valore in esso contenuto. Possiamo così sintetizzare il concetto enunciato:

    ADD R1,R2

    equivalente a:

    R1 = R1 + R2

    In tal modo il registro R1 si comporta da accumulatore; operando in questo modo l'ALU risparmia trasferimenti di dati tra registri ottenendo prestazioni superiori.

    Il simbolo che generalmente si usa per indicare l'ALU è il seguente:

    www.bing.com/images/search?q=...e8e05bfccd98o0



    Premetto che esistono tanti tipi di ALU. Ogni ALU viene progettata dagli ingegneri in base a set di operazioni logiche che dovranno svolgere al momento del loro utilizzo. Oggi la classificazione è alquanto semplice, infatti consideriamo principalmente due tipi di ALU: quelle per le "operazioni semplici" e quelle per le "operazioni complesse". Un'ulteriore classificazione sta anche in base al tipo di dato in ingresso(input). Proprio per questo motivo spesse volte l'ALU si affianca alla FPU (Floating-Point Unit).

    La FPU è un blocco funzionale che viene utilizzato l'esecuzione di operazioni aritmetiche su numeri in virgola mobile. Considerato che la rappresentazione in virgola mobile è molto più complessa della rappresentazione a complemento a 2 utilizzata tipicamente dalle ALU. Difatti le FPU tendono ad essere molto più complesse delle ALU, includono circuiti molto complessi e spesso anche più ALU.

    Possiamo dunque sintetizzare il tutto dicendo che l'ALU è quel blocco funzionale interno alla CPU che esegue le trasformazioni sui dati poiché, indipendentemente dal loro significato sono codificati attraverso numeri binari, e qualsiasi trasformazione da fare sui dati si riduce sempre a un'operazione aritmetica o logica.

    Spero di non avervi annoiato :D
    A breve uscirà il paragrafo 6!
    Alla prossima!



    - K .


     
    Top
    .
0 replies since 15/7/2016, 11:19   9 views
  Share  
.