• Non ci sono risultati.

Unità Aritmetica Logica

N/A
N/A
Protected

Academic year: 2021

Condividi "Unità Aritmetica Logica"

Copied!
10
0
0

Testo completo

(1)

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Architettura degli elaboratori

ALU

Unità Aritmetica Logica

Marco Tarini

Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it

Architettura degli elaboratori - ALU (Unità Aritmetica Logica)

Unità Aritmetico-Logica (ALU)

È un circuito combinatorio multifunzione

È capace di svolgere diverse funzioni, a comando!

Un comando (opportunamente codificato) seleziona quale delle diverse funzioni deve essere prodotta in uscita

Le funzioni sono di tipo logico e matematico (donde il nome)

Input:

almeno due (su alcune ALU, tre) operandi, di n bit ciascuno un codice comando, che identifica quale operazione applicare (di k bit, se ho al più 2kcomandi diversi fra cui scegliere)

(a volte): un bit extra, usato come riporto di ingresso (nelle somme) Output

il risultato dell’operazione richiesta (ancora di n bit) alcuni bit di esito (esempio: «c’è stato overflow)?

Non tutti gli ingressi e le uscite sono rilevanti per tutte le operazioni

(2)

Unità Aritmetico-Logica (ALU)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 3 -

codice dei comandi

operandi

A

B n

n

n Add Sub

ALU Carryin

risultato

esiti (riporti, ecc.) operandi

implementazione di una ALU:

schema astratto

F

1

Uscita = Fi(A,B)

B A

F

2

F

n

codice comando

n n

n

. . .

Esiti MUX

Determina quale funzione Fiviene propagata in uscita

Le funzioni sono tutte calcolate in parallelo

(3)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 5 -

Le funzioni di una semplice ALU

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4

0000

(codice per comando «Add»)

ALU Cin

0010

0001

0011 0

0 X X

X

X X

AB AB AB Rip Prest A0

(4)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 7 -

A

B 4

4

4 ALU

Cin

1 X X

X

X X

AB AB AB Rip Prest A0

1000

0111

0000

1 0000

(codice per comando «Add»)

Riporto:

overflow della somma

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4 ALU

Cin

X X

X

X X

AB AB AB Rip Prest A0

0001

(codice per comando «Sub»)

0011

0001

0010

0

0

(5)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 9 -

A

B 4

4

4 ALU

Cin

X X

X

X X

AB AB AB Rip Prest A0

0101

0111

1010

1

0 0001

(codice per comando «Sub»)

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4 ALU

Cin

X X

X

X X

AB AB AB Rip Prest A0

0101

1100

0100

X X

Bit-wise:

l’i-esimo bit del risultato è dato da

A[ i ] AND B[ i ]

1100 (codice per comando «AND»)

(6)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 11 -

A

B 4

4

4 ALU

Cin

X X

X

X X

AB AB AB Rip Prest A0

0101

1100

1101

X X

Bit-wise:

l’i-esimo bit del risultato è dato da

A[ i ] OR B[ i ]

1101

(codice per «OR»)

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4 ALU

Cin

X 0

1

X 0

AB AB AB Rip Prest A0

1100

1101

XXXX

X X

NB: questa op. effettua il confronto fra numeri

naturali (no segno).

Una diversa op.

«confornto fra numeri in CP2»

avrebbe restituito A>B (per gli tessi input)

1001 (codice per «Compare»)

(7)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 13 -

A

B 4

4

4 ALU

Cin

X X

AB AB AB Rip Prest A0

1001

X X

XXXX

1001

X X X

0010

(codice per comando «Pass A»)

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4 ALU

Cin

AB AB AB Rip Prest A0

0100 (codice per comando “Zero”)

0000 XXXX

X

XXXX

X

X X X X X

(8)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 15 -

A

B 4

4

4 ALU

Cin

X X

AB AB AB Rip Prest A0

0000

XXXX

X X

XXXX

X X 1

1001

(codice per comando «Null»)

Esempio di calcolo (ALU a 4 bit)

A

B 4

4

4 ALU

Cin

X 0

AB AB AB Rip Prest A0

0101

X X

XXXX

X X

1010

X

= 2A

0110

(codice per «Shift Left A»)

Riporto:

overflow della moltiplicazione

(9)

Esempio di calcolo (ALU a 4 bit)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 17 -

A

B 4

4

4 ALU

Cin

1 X

AB AB AB Rip Prest A0

0101

X X

XXXX

X X

0010

X

= A/2

0111

(codice per «Shift Right A»)

«Riporto»:

resto della divisione

ALU. note:

Le ALU reali operano su operandi di un numero molgo maggiore di bit (come 8, 16, 32, 64)

Tipicamente, i due operatori hanno lo stesso numero di bit del risultato Le ALU possono essere in grado di eseguire op. anche complesse

Come radici quadrate, elevamento a potenza, funzioni trigonom. … Operaz. diverse possono interpretare gli operandi in modo diverso

es: i due comandi distinti SUM e SUM-FLOAT possono effettuare:

somma fra numeri interi, somma fra numeri in virgola mobile spesso, le op in virgola mobile sono le più importanti ed ottimizzate esistono anche ALU specializzate per operazioni in virgola mobile in cui tutti i comandi assumono operatori in virgola mobile

Le ALU hanno due, oppure tre parametri in ingresso il terzo è utilizzato solo da alcune operazioni Sono stampate su un circuito integrato (naturalmente) come parte della CPU

(10)

ALU : scelte progettuali base

Scelte difficili nel progettare una ALU: quante operazioni supportare?

quanto complesse?

ALU che supporta molte operazioni diverse:

circuito ALU grande e complesso

ALU più costosa e difficile da realizzare, e anche più lenta  ALU che supporta operazioni complesse:

anche le istruzioni semplici vanno lente, tanto quanto quella più complessa (i circuiti sono in parallelo!). 

ALU che supporta un numero minore di operazioni più semplici:

Ciascuna operazione è più veloce 

Ma lo stesso risultato necessiterà di più operazioni per essere computato!

Es: invece di compare(A,B)  subtract( A , B), poi check del segno Es: invece di mul(A,B),  sequenza di shift di A e somme (caso ipotetico) Es: invece di subtract(A,B),  flip del segno di B (una op), poi add(A,B) Es: invece di Pass_A,  B prende Zero (una op), poi add(A,B)

Università dell'Insubria Architettura degli elaboratori - ALU (Unità Aritmetica Logica) - 24 -

Riferimenti

Documenti correlati

Capitolo 3 : Aritmetica in virgola mobile 3.1 Le operazioni base dell’aritmetica in virgola mobile

È stata quindi studiata l’aritmetica in virgola mobile, in particolare si sono studiati gli algoritmi per le operazioni base e lo standard IEEE.. Dopo aver fatto lo studio delle

[r]

[r]

o poiché il resto è sempre minore del divisore, e quindi esiste soltanto un numero finito di resti possibili, prima o poi dovrà per forza ripresentarsi un resto identico ad uno

PER ADDIZIONE ALGEBRICA ( O SOMMA ALGEBRICA) SI INTENDE L’OPERAZIONE CHE PRENDE IN CONSIDERAZIONE SIA LA SOMMA CHE LA DIFFERENZA. NB: OGNI NUMERO INTERO PUO’ ESSERE

La dimostrazione precedente fornisce anche un algoritmo per il calcolo di una soluzione x (se essa esiste cioè se db): basta moltiplicare t (ottenuto dividendo b per d) per

[r]