• Non ci sono risultati.

Estensione in segnoEstensione a sceltaExtnmExt SignnmExtnmse 0: con zerose 1: in segno(con m>n)

N/A
N/A
Protected

Academic year: 2021

Condividi "Estensione in segnoEstensione a sceltaExtnmExt SignnmExtnmse 0: con zerose 1: in segno(con m>n)"

Copied!
8
0
0

Testo completo

(1)

Estensione di un numero:

aggiungere cifre a sinistra

A volte, vogliamo passare da una rappresentazione di un numero a n bit ad una rappresentazione a m bit, con m > n

Come si sa, aggiungere zeri a sinistra non modifica un numero:

|11011|2= 27

|00011011|2= ancora 27

Questa operazione si chiamaestensione (con zero)

Ma attenzione: per estendere un numero in CP2 senza cambiarlo occorre aggingere a sinistra: 0 se il MSB è 0, ma 1 se il MSB è 1:

|01101|2= +13

|00001101|2= ancora +13

|11001|2= -7

|11111001|2= ancora -7

Questa operazione si chiamaestensione in segno Quali circuiti implementano queste due operazioni?

Blocchi funzionali combinatori

Architettura degli elaboratori - 49 -

verificare!

Blocchi funzionali per estensione

Estensione con zero Estensione in segno Estensione a scelta

E xt

n m

E xt S ig n

n m

E xt

n m

se 0: con zero se 1: in segno

(con m>n)

(2)

Blocchi funzionali per estensione (qui, da 16 a 32 bit): implementazione

Estensione con zero

- 51 -

Estensione in segno

0

Estensione a scelta

0 : con zero 1: in segno i0

i15

o0

o31

i0

i15

o0

o31

i0

i15

o0

o31

Esempio

Come sommare un numero A a 16 bit con un numero B a 8 bit?

(senza sengo) Risposta:

E X T

8 16

16

S O M M A a 1 6 b it

16

A

B

A+B

(3)

Left Shift

(moltiplicazione per 2, 4, 8 …)

Left-shift (di n): spostare le cifre binarie n posti a sinistra

n le cifre più a sinistra scompaiono, e da destra compaiono nzeri Ricorda:

uno shift a sinistra in base 2 di 1 = raddoppio del numero uno shift a sinistra in base 2 di n cifre = moltiplicazione per 2n Notazione: <<

Esempio:

|00011011|2= 27

|00011011|2<< 1 = |00110110|2= 54 ( = 27x2)

|00011011|2<< 2 = |01101100|2= 108 ( = 27x4)

|00011011|2<< 3 = |11011000|2= 216 ( = 27x8) Vale anche in CP2!

|11111011|2= -5

|11111011|2<< 1 = |11110110|2= -10

|11111011|2<< 2 = |11101100|2= -20

Blocchi funzionali combinatori

Architettura degli elaboratori - 53 -

analogo in base 10:

1320 =132x 10 13200 =132x 100

verificare!

Left Shift

(con secondo parametro costante)

Blocchi funzionale per shift: (usano…. zero porte!) Esempi per 4 bit:

X0 X1 X2 X3

Z0 Z1 Z2 Z3 0

4 4

<< 1

X Z = 2X

X0 X1 X2 X3

Z0 Z1 Z2 Z3 0

4 4

<< 2

X Z = 4X

(4)

Left-Shift

domande e esercizi

Tempo di commutazione?

quali sono i tempi dei blocchi funzionali visti (“<<1”, “<<2”) ? Overflow?

considerato come una moltiplicazione per 2n left-shift può generare overflow!

come accorgersi se “<<1” fa overflow, per naturali (no segno) ? come accorgersi se “<<2” fa overflow, per naturali (no segno) ? come accorgersi se “<<1” fa overflow, per CP2 ?

come accorgersi se “<<2” fa overflow, per CP2 ? per ciascun caso, realizza un blocco funzionale che prevede un bit ulteriore di uscita “overflow”, che vale 1 sse l’operazione ha generato un overflow.

Left shift a 2 parametri?

realizza un blocco funzionale che prende in input A (n bit), e B (2 bit), e dà in output A<<B

Blocchi funzionali combinatori

Architettura degli elaboratori - 55 -

prossimo lucido

Left Shift

(con secondo parametro variabile)

n n

A A << B

B

k

<<

A

n

B

2

<<1

<<2

<<3

I0 I1

S

U

MUX

I2 I3 n n

n

n n

2 Realizzazione con K = 2

<<

(5)

Right Shift

(divisione per 2, 4, 8 …)

Right-shift (di n): spostare le cifre binarie n posti a destra

n le cifre più a destra scompaiono, e da sx compaiono nzeri Ricorda:

uno shift a dx in base 2 di 1 = dimezzamento del numero, per difetto uno shift a dx in base 2 di n cifre = divisione per 2n, per difetto Notazione: >>

Esempio: |00011011|2= 27

|00011011|2>> 1 = |00001101|2= 13 ( = 27 / 2)

|00011011|2>> 2 = |00000110|2= 6 ( = 27 / 4) Per il CP2: l’operazione equivalente è right shift in segno

da sx devono compaiono: zeri se MSB = 0, ma uni se MSB = 1 l’arrotondamento risultante è comunque per difetto

|11110011|2= -13

|11110011|2>> 1 = |11111001|2= -7

|11110011|2>> 2 = |11111100|2= -4

Blocchi funzionali combinatori

Architettura degli elaboratori - 57 -

verificare!

analogo in base 10:

132= 1327/ 10 13=1327/ 100

Circuito per moltiplicazione…

…con secondo termine a 1 bit 

A3

A2

C3 N

A

N

C = A×B B

MUL

N × 1

Realizzazione (banale!):

(qui, per N = 4)

B

C2

A1 C1

A0 C0

(è un circuito che annulla A quado B vale 0,

altrimenti lascia A inalterato) 1

(6)

Somme e prodotti :

quante cifre richiede il risultato?

Osservazioni:

sommandoun numero a n cifre con uno a n cifre, ottengo al massimo un numero a n+1 cifre.

(e la (n+1)-sima cifra è 1 oppure 0, in qualsiasi base) moltiplicandoun numero a n cifre con uno a m cifre, ottengo al massimo un numero a n+m cifre

Blocchi funzionali combinatori

Architettura degli elaboratori - 59 -

XXXX × YYYY = ZZZZZZZZ XXXX +

YYYY = 1ZZZZ al max

(è il possibile overflow!)

vale in in qualsiasi base!

Prodotto: algoritmo delle scuole elementari (ma in base 2)

11001 × 10110 = 0× 11001 + 1× 11001 + 1× 11001 + 0× 11001 + 1× 11001 = 1000100110 B

A B

A × B

1 1 1 1 1

(7)

Prodotto con left-shift, estensioni, somme.

Esempio.

Blocchi funzionali combinatori

Architettura degli elaboratori - 61 -

11001 × 10110 = 0× 0000011001 + 1× 0000110010 + 1× 0001100100 + 0× 0011001000 + 1× 0110010000 = 1000100110 B

A × (16+4+2) B A

B A A<<1 A<<2 A<<3 A<<4

= 16+8+4+2+1 A × 1 + A × 2 + A × 4 + A × 8 + A ×16 =

Un circuito per la moltiplicazione a 5 bit

B0 5

MUL 5x1

B1

A

B2

MUL 5x1

MUL B3 5x1

MUL 5x1 B4

MUL 5x1

A × B

10

B

MUL

5

5

5

5

5

5

10

10

10

10

10

<<1

<<2

<<3

<<4

SUM 10bit

SUM 10bit

SUM 10bit

SUM 10bit EXT

EXT

EXT

EXT EXT

(8)

Circuito per Moltiplicazione

(fra naturali senza segno) nella pratica

Moltiplicando 2 numeri a n bit, ottengo un numero a 2n bit (in generale) almeno, 2n cifre binarie bastano sempre: niente overflow ! Scomodo!

E’ poco pratico, per un’architettura, rappresentare il risultato di una operazione matematica con un numero di bit diverso dagli operandi Soluzione adottata (a volte):

considerare il risultato di una moltiplicazione come composto da due numeri da n bit ciascuno:

LOW: gli n bit meno significativi HIGH: gli n bit più significativi

Blocchi funzionali combinatori

Architettura degli elaboratori - 63 -

A

n

B

n

n n

H L

A×B = H << n + L MUL

2n

Circuiti per operazioni in virgola mobile (cenni)

Sono circuiti combinatori più complessi. Tipicamente:

sottocircuiti separati per calcolo di: segno, esponente, mantissa inoltre (per molte op): circuito finale per rinormalizzazione del risultato casi speciali per configurazioni speciali (es, attraverso MUX)

Cenni sulle operazioni più comuni:

Comparatore: possiamo ri-usare il comparatore dei CP2 (come mai?) (più gestione configurazioni speciali, compreso lo 0) Sommatore: exp: il maggiore dei 2 exp.

mantissa e segno: somma (con segno) delle 2 mantisse shiftate.

Rinormalizzazione necessaria alla fine

Moltiplicatore: exp: somma dei 2 exp (più costante).

mantissa: prodotto delle mantisse segno: XOR dei segni(come mai?)

Inverso (1/x): exp: -exp. segno: mantenuto. mantissa: inversione

Riferimenti

Documenti correlati

Se, viceversa, nell’intervallo )*$+ ,- delle ascisse la funzione è negativa, allora il grafico relativo passerà nel semipiano inferiore:.. In tutti i casi, cosa si

Le relatrici e relatori sloveni hanno portato i punti di vista delle diverse Amministrazioni del Paese, presentando e e ostacoli da superare anche in riferimento ad alcune

[r]

Al centro del progetto l’attenzione verso se stessi RESPONSABILITA’ è la parola chiave della campagna L’invito rivolto ai cittadini è fornire “un segno di responsabilità”

In tutte le altre situazioni è bene utilizzare prima il criterio dei minori incapsulati 2.2 e tenere il calcolo degli autovalori con il polinomio caratteristico come ultima

In conclusione, il metodo “1-0” pu` o dare scarse informazioni in alcune circostanze particolari e deve essere accompagnato possibilmente da un’analisi accurata del

La function nzero ha come dati di input: la funzione, la derivata prima, il punto iniziale della succession x 0 e una variabile strutturata con dei dati opzionali. I dati di

Ci sono tante grammatiche quanti sono i grammatici, e anche di più Erasmo da Rotterdam (Elogio della Follia, 39). A tutti grazie