26
Simone Buso - Microcontrollori e DSP - Lezione 5 1 Lezione 5 Sommario Unità aritmetico logica (ALU) Realizzazione di un circuito sommatore Realizzazione di una ALU elementare Realizzazione di un registro a scorrimento (shifter) Prima realizzazione di un circuito moltiplicatore Algoritmo di Booth Simone Buso - Microcontrollori e DSP - Lezione 5 2 Lezione 5 Materiale di riferimento 1. D. A. Patterson, J. L. Hennessy, “Computer Organization and Design”, Morgan Kaufmann, cap. 4 pagg. 230 - 264. 2. A. Clements, "The principles of computer hardware", Oxford, 2000, cap. 4, pagg. 169 - 184. 3. W. Kleitz, "Digital and microprocessor fundamentals", Pearson Education, 2003, cap. 3 e 6.

Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

1

Simone Buso - Microcontrollori e DSP - Lezione 5 1

Lezione 5Sommario• Unità aritmetico logica (ALU)• Realizzazione di un circuito sommatore• Realizzazione di una ALU elementare• Realizzazione di un registro a

scorrimento (shifter)• Prima realizzazione di un circuito

moltiplicatore• Algoritmo di Booth

Simone Buso - Microcontrollori e DSP - Lezione 5 2

Lezione 5Materiale di riferimento

1. D. A. Patterson, J. L. Hennessy, “Computer Organization and Design”, Morgan Kaufmann, cap. 4 pagg. 230 - 264.

2. A. Clements, "The principles of computer hardware", Oxford, 2000, cap. 4, pagg. 169 -184.

3. W. Kleitz, "Digital and microprocessor fundamentals", Pearson Education, 2003, cap. 3 e 6.

Page 2: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

2

Simone Buso - Microcontrollori e DSP - Lezione 5 3

In ogni sistema a microprocessore si possono sempre individuare alcuni elementi costitutivi fondamentali, che sono:1. unità aritmetico logica (ALU)2. unità di controllo3. memoria 4. periferiche di input-output (I/O)

L’unità aritmetico logica (ALU) è un insieme di circuiti digitali che permettono al processore di eseguire le operazioni logiche e aritmetiche fondamentali.

Unità Aritmetico Logica (ALU)

Simone Buso - Microcontrollori e DSP - Lezione 5 4

Aritmetica dei microprocessoriLe operazioni aritmetiche e logiche di base, che vengono realizzate dall’ALU sono:1) esecuzione delle operazioni elementari

(somma e differenza);2) esecuzione delle operazioni logiche

fondamentali (AND, OR, …);3) funzioni di “scaling” dei dati attraverso

rotazioni e/o scorrimenti a destra e a sinistra.

In alcuni processori (DSP) l’ALU è in grado di compiere anche operazioni più complesse, come moltiplicazione e, talvolta, divisione.

Page 3: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

3

Simone Buso - Microcontrollori e DSP - Lezione 5 5

Unità aritmetico logica (ALU)Lo svolgimento delle funzioni tipiche della ALU richiede alcuni circuiti logici fondamentali che sono:1) reti combinatorie per le funzioni logiche;2) circuito sommatore/sottrattore;3) registri e registri a scorrimento (“shifter”); 4) multiplexer (selettori);5) circuito moltiplicatore.

In alcune organizzazioni il moltiplicatore, con i suoi registri di appoggio, diventa una unità a se stante e separata dall’ALU.

Simone Buso - Microcontrollori e DSP - Lezione 5 6

Unità aritmetico logica (ALU)Ad esempio, una struttura che realizza le funzioni logiche di base, per un singolo bit, può essere la seguente:

r = a AND b oppurer = a OR ba seconda del valore del selettore s.

selettore logico (multiplexer)

s

0

1

a

br

Page 4: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

4

Simone Buso - Microcontrollori e DSP - Lezione 5 7

Unità aritmetico logica (ALU)Il multiplexer è, a sua volta, un circuito logico combinatorio di base:

a

b

s

y

0000

1111001111010001111010100100

ybas

Dalla tabella si vede che Y=A se S=0, Y=B se S=1.

Simone Buso - Microcontrollori e DSP - Lezione 5 8

Unità aritmetico logica (ALU)Combinando in parallelo molte unità elementari a singolo bit si possono estendere le funzioni viste all’intera parola del processore.In modo analogo si procede per le funzioni più complesse (e.g. sommatore). Una cella base per un sommatore sarà allora del tipo:

+Ai

Bi

C_ini

C_outi

Ri

C_outi = Ai·Bi +Ai·C_ini+Bi·C_ini

Ri = Ai·Bi·C_ini +Ai·Bi·C_ini +Ai·Bi·C_ini +Ai·Bi·C_ini

Page 5: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

5

Simone Buso - Microcontrollori e DSP - Lezione 5 9

Realizzazione di un sommatore

+Ai

Bi

C_ini

C_outi

Ri

C_outi = Ai·Bi +Ai·C_ini+Bi·C_ini

Ri = Ai·Bi·C_ini +Ai·Bi·C_ini +Ai·Bi·C_ini +Ai·Bi·C_ini

La realizzazione più semplice del sommatore si ricava dalle stesse equazioni booleane che lo definiscono.

Simone Buso - Microcontrollori e DSP - Lezione 5 10

Realizzazione di un sommatoreAi Bi C_ini

Ri

Rete logica per il circuito che calcola il risultato della somma dei due bit i-esimi.

Page 6: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

6

Simone Buso - Microcontrollori e DSP - Lezione 5 11

Realizzazione di un sommatore

Rete logica per il circuito che calcola il riporto della somma dei due bit i-esimi.

Ai

Bi

C_ini

C_outi

Simone Buso - Microcontrollori e DSP - Lezione 5 12

Costruzione di una ALU

+

Ai

Bi

C_ini

C_outi

Yi

s1

0

1

2

s2

0

1

Inv

Page 7: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

7

Simone Buso - Microcontrollori e DSP - Lezione 5 13

Costruzione di una ALUAbbiamo così realizzato una cella elementare di una ALU che è in grado di eseguire diverseoperazioni sulla coppia di bit in ingresso (Ai e Bi) ossia:

1) Ai AND Bi oppure Ai OR Bi oppure Ai AND Bi oppure Ai OR Bi;

2) Ai + Bi oppure Ai + Bi gestendo anche il riporto.

Tutto è deciso da alcuni segnali di controlloche selezionano l’uscita desiderata (s1, s2) e l’eventuale negazione di Bi (Inv).

Simone Buso - Microcontrollori e DSP - Lezione 5 14

Costruzione di una ALULa connessione in parallelo di celle elementari permette di operare le funzioni aritmetico logiche su tutti i bit delle parole A e B in modo quasisimultaneo.Il ritardo di questo circuito è legato solo alla propagazione del riporto da una cella alla successiva.

C_in0

C_in1

C_in15

A0

A1

A15

B0

B1

B15

C_out0

C_out1

C_out15

Y0

Y1

Y15

Invs1 s2

C_in

C_out

#0

#1

#15

Page 8: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

8

Simone Buso - Microcontrollori e DSP - Lezione 5 15

Costruzione di una ALUIl sommatore parallelo che abbiamo realizzato permette anche di eseguire la sottrazione!Infatti:

A-B = A + C2(B) = A + neg(B) +1

Quindi è sufficiente selezionare l’inversione di B e precaricare il riporto in ingresso con 1, anziché con 0 come per la somma, per ottenere la sottrazione desiderata.La rappresentazione in complemento a due permette quindi di unificare i circuiti di somma e sottrazione.

Simone Buso - Microcontrollori e DSP - Lezione 5 16

Costruzione di una ALUIl ritardo introdotto dalla propagazione del riporto nelle operazioni di somma può essere ridotto utilizzando opportuni circuiti ad alta velocità (tecniche di carry look-ahead).E’ importante che il ritardo sia minore possibile per consentire la massimizzazione della frequenza di clock del processore. Questa è limitata dalla durata dell’operazione più lentache il processore deve compiere in un solo ciclo.E’ quindi essenziale che operazioni molto comuni, come la somma, siano più veloci possibile.

Page 9: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

9

Simone Buso - Microcontrollori e DSP - Lezione 5 17

Carry look-aheadEssendo nota la funzione booleana che definisce il riporto in uscita da ciascuna cella del sommatore, è possibile calcolare il valore del riporto in ingresso a ciascuna cella a partire dai soli ingressi esterni (operandi e riporto iniziale).Il problema è però poi minimizzare la quantità di porte logiche necessaria a realizzare il precalcolo del riporto per tutte le celle.Questo si ottiene suddividendo il circuito sommatore in blocchi di 4 celle e usando un ragionamento di tipo iterativo.

Simone Buso - Microcontrollori e DSP - Lezione 5 18

Carry look-aheadIl riporto in entrata alla cella 1 sarà infatti:

C_in1 = C_out0 = A0·B0 +A0·C_in +B0·C_in

ovvero:C_in1 = A0·B0 +(A0+B0 )·C_in

In generale quindi:C_ini+1 = Ai·Bi +(Ai+Bi )·C_ini

ovvero:C_ini+1 = gi + pi·C_ini

dovegi = generazione pi = propagazione

Page 10: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

10

Simone Buso - Microcontrollori e DSP - Lezione 5 19

Carry look-aheadE’ quindi possibile scrivere i riporti come:

C_in1 = g0+p0·C_in

C_in2 = g1+p1·g0+p1·p0·C_in

C_in3 = g2+p2·g1+ p2·p1·g0+p2·p1·p0·C_in

C_in4 = g3+p3·g2+ p3·p2·g1+p3·p2·p1·g0+ p3·p2·p1·p0·C_in

e così via per tutte le celle successive.

Siccome gi =Ai·Bi e pi =Ai+Bi il calcolo dei vari C_ini richiede solo 3 livelli di logica in cascata.

Simone Buso - Microcontrollori e DSP - Lezione 5 20

Carry look-aheadEstendere le equazioni di generazione e propagazione fino a 16 (o magari 32) celle comporta ancora l’uso di un numero molto grande di porte logiche, ancorché distribuite solo su 3 livelli in cascata.Si preferisce allora estendere il ragionamentoconsiderando ciascun blocco di 4 celle come un supersommatore, cui corrisponde ancora una volta un riporto in ingresso e uno in uscita.Un ragionamento analogo porta a scrivere le espressioni dei riporti per i “supersommatori”.

Page 11: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

11

Simone Buso - Microcontrollori e DSP - Lezione 5 21

Carry look-aheadAd esempio,

C4_in = G3+P3·G2+ P3·P2·G1+P3·P2·P1·G0+ P3·P2·P1·P0·C_in

dove:

G0 = g3+p3·g2+ p3·p2·g1+p3·p2·p1·g0;P0 = p3·p2·p1·p0;G1 = g7+p7·g6+ p7·p6·g5+p7·p6·p5·g4;P1 = p7·p6·p5·p4;e gli altri si ricavano per estensione diretta.

Simone Buso - Microcontrollori e DSP - Lezione 5 22

Carry look-aheadLa generazione dei riporti per i 4 super-sommatori introduce altri due livelli di porte logiche.Il totale numero di livelli attraverso i quali devono passare i segnali di ingresso per generare i riporti sono quindi 3 + 2 = 5 (6τ).La generazione dei riporti in un sommatore a 16 bit senza carry look-ahead richiede invece 16x2 = 32 (33τ) livelli di logica.Assumendo che ciascun livello introduca lo stesso ritardo (τ) si vede che il sommatore con carry look-ahead sarà 5 volte più veloce!

Page 12: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

12

Simone Buso - Microcontrollori e DSP - Lezione 5 23

Rivelazione dell’overflowOgni volta che si sommano algebricamente due numeri con lo stesso segno è possibile che si verifichi overflow aritmetico.Questo non può invece verificarsi mai se i due addendi hanno segno diverso (perché?).L’espressione logica della condizione di overflow è quindi la seguente:

V = sn-1·an-1·bn-1+ sn-1·an-1·bn-1

che esprime il fatto che il bit di segno della somma (sn-1) risulta diverso da quello di ciascuno dei due addendi (an-1 e bn-1).

Simone Buso - Microcontrollori e DSP - Lezione 5 24

Rivelazione dell’overflowLa relazione booleana di overflow che usa i segni degli addendi è difficile da realizzare perché richiede la memorizzazione dei bit di segno. Di solito invece almeno uno dei due addendi viene sovrascritto dalla somma.Una condizione equivalente e più “economica” è la seguente:

V = C_inn-1·C_outn-1+ C_inn-1·C_outn-1che esprime il fatto che, in caso di overflow, il riporto in ingresso all’ultima cella del sommatore è diverso da quello in uscita.

Page 13: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

13

Simone Buso - Microcontrollori e DSP - Lezione 5 25

Rivelazione dell’overflowInfatti, considerando il caso di due addendi positivi, l’n-simo sommatore produrrà il seguente risultato:

sn-1 = an-1 + bn-1 + C_inn-1 = C_inn-1

C_outn-1 = 0

Quindi se non c’è overflow C_inn-1 sarà pari a 0, mentre sarà 1 se c’è. La relazione data rivela correttamente questa condizionetramite il termine C_inn-1·C_outn-1.L’altro termine interviene invece nel caso in cui i due operandi siano entrambi negativi.

Simone Buso - Microcontrollori e DSP - Lezione 5 26

Registro a scorrimentoIl registro a scorrimento (shifter) è impiegato nelle ALU per diverse funzioni:1) allineamento dei dati prima o dopo

operazioni aritmetiche (shift aritmetico);2) moltiplicazione/divisione per potenze di 2

(shift aritmetico);3) all’interno di una unità di moltiplicazione

per gestire la modalità intera o frazionaria (shift aritmetico);

4) per realizzare diverse funzioni logiche(shift logico).

Page 14: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

14

Simone Buso - Microcontrollori e DSP - Lezione 5 27

Registro a scorrimentoLa differenza fra shift logico e aritmetico è la gestione del bit di segno (negli shift a destra). Gli shift a sinistra sono uguali (vengono sempre introdotti 0 da destra).Nello shift logico la sequenza di bit che rappresenta la parola in ingresso viene fatta scorrere a destra introducendo 0 da sinistra.Nello shift aritmetico il bit di segno viene invece esteso. Ad esempio:

10010011 00100100 logico10010011 11100100 aritmetico

Simone Buso - Microcontrollori e DSP - Lezione 5 28

Registro a scorrimentoLa minima funzionalità, offerta da tutti i mC e DSP a livello di shifter, consiste nella possibilità di operare shift logici e aritmetici a sinistra o a destra di un solo bit per volta.Alcune unità offrono shifter programmabili(barrel shifter) con i quali è possibile operare scorrimenti multipli (di m bit) nelle due direzioni in modo automatico.Infine alcune unità infine rendono disponibile anche la funzione di shift circolare.

Page 15: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

15

Simone Buso - Microcontrollori e DSP - Lezione 5 29

Registro a scorrimentoLa realizzazione più tipica di registro a scorrimento prevede il caricamento dei dati in modo parallelo.Inoltre è presente un circuito che genera la sequenza di impulsi necessaria ad operare lo scorrimento richiesto (contatore).Il registro vero e proprio è realizzato da una concatenazione di flip-flop (di tipo D o J-K), con comando sensibile ai fronti (edge-triggered) o master-slave per evitare fenomeni di ripple lungo il registro.

Simone Buso - Microcontrollori e DSP - Lezione 5 30

MUXMUX

Registro a scorrimento

J

KClk

Q

Qn-1 Qn-2 Qn-3

Uscite

An-1 An-2 An-3

Clk1

Clk2

CTRL

Input

J

KClk

Q

Ingressi

…MUX

J

KClk

Q

Page 16: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

16

Simone Buso - Microcontrollori e DSP - Lezione 5 31

Registro a scorrimentoQuesta realizzazione permette:1) il caricamento dei dati in parallelo (CTRL =

1 + impulso su CLK2);2) il caricamento dei dati in serie (CTRL = 0 +

impulso su CLK1+ dato su Input );3) lo shift a destra di m posizioni (CTRL = 0,

+ m impulsi su CLK1+ 0 su Input (shiftlogico) oppure 1 (shift aritmetico di numero < 0));

4) lo shift a sinistra di m posizioni, collegando l’uscita di ogni cella con l’ingresso parallelo della precedente tramite un ulteriore MUX.

Simone Buso - Microcontrollori e DSP - Lezione 5 32

Generatore di impulsiLa realizzazione di un treno di m impulsi può essere ottenuta attraverso un contatore e un comparatore binari.Il comparatore binario è semplicemente un array di porte NXOR a due ingressi, che rivelano l’identità dei bit di ingresso.Il contatore binario è invece, a sua volta, una applicazione tipica dei flip-flop (e.g. J-K) e può essere di tipo sincrono (tutte le uscite commutano insieme) o asincrono (ripple).

Page 17: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

17

Simone Buso - Microcontrollori e DSP - Lezione 5 33

Generatore di impulsi

Comparatore binario: Y è 1 se e solo se tutti i bit di A sono uguali ai corrispondenti di B.

A B NXOR0 0 10 1 01 0 01 1 1

A0 A1 A2

B0 B1 B2

Y

Simone Buso - Microcontrollori e DSP - Lezione 5 34

Generatore di impulsi

J

KClk

Q

J

KClk

Q

J

KClk

Q

1

1

1

1

1

1Clk

Q0 Q1 Q2

Contatore binario asincrono. Le uscite commutano in sequenza (ripple) a cominciare dal fronte di discesa del clock esterno. I flip-flop sono configurati in modo toggle. L’uscita Q conta i periodi di clock (in modo binario).

Page 18: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

18

Simone Buso - Microcontrollori e DSP - Lezione 5 35

Generatore di impulsi

Schema elementare di un generatore di impulsi programmabile.

S

R Q

Registro CMP

Reset

ResetClk

Contatore

Clock

Treno di impulsi

Comparatorec0 c1 c2 c3 c4 c5 c6 c7

i0 i1 i2 i3 i4 i5 i6 i7

Start

Simone Buso - Microcontrollori e DSP - Lezione 5 36

MoltiplicazioneLa moltiplicazione viene realizzata a livello hardware in tutti i DSP e in molti microcontrollori (quelli più orientati al controllo real-time di processi veloci).Solo molto recentemente anche i processori per uso generico hanno cominciato ad offrire un circuito di moltiplicazione incorporato.Se non ci sono requisiti di massima velocità, la moltiplicazione può infatti essere sintetizzata in forma di macro programma, usando somme e scorrimenti (shift) ripetuti, in pratica imitando il calcolo manuale.

Page 19: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

19

Simone Buso - Microcontrollori e DSP - Lezione 5 37

Moltiplicazione senza segnoIn effetti, anche i circuiti moltiplicatori, nella loro forma più semplice, imitano il calcolo manuale.La moltiplicazione di 2 numeri naturali (unsigned) può essere eseguita come segue:

1101x 1011101

0000_1101__

1000001

1: bit 0 = 1 scrivo il moltiplicando2: bit 1 = 0 scrivo 0 + 1 shift sx 3: bit 2 = 1 come 1 + 2 shift sx4: sommo i prodotti parziali

Simone Buso - Microcontrollori e DSP - Lezione 5 38

Moltiplicazione senza segnoSono possibili molte migliorie all’algoritmo di moltiplicazione che permettono di risparmiare hardware e tempo:1) sommo tra loro i prodotti parziali a mano a

mano che si formano (non serve memorizzarli), in pratica sommando il moltiplicando al risultato corrente solo se il bit del moltiplicatore è 1;

2) invece di shiftare le somme parziali, shifto moltiplicando a sx (entra uno zero) e moltiplicatore a dx prima di calcolare il nuovo prodotto parziale.

Page 20: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

20

Simone Buso - Microcontrollori e DSP - Lezione 5 39

Moltiplicazione senza segnoLa successiva miglioria consiste nel ridurre il numero di bit del sommatore che esegue le addizioni dei prodotti parziali da 2n a n. Ciò è possibile perché, in ogni somma, metà dei 2n bit (quindi n bit) sono sempre nulli.Per ottenere questo risultato è sufficiente shiftare a destra il risultato corrente inveceche il moltiplicando a sinistra.La somma con il risultato corrente va poi fatta solo sulla metà più alta del registro che contiene il risultato.

Simone Buso - Microcontrollori e DSP - Lezione 5 40

Moltiplicazione senza segno

Schema a blocchi di un moltiplicatore elementare per numeri unsigned a n bit

moltiplicandon bit n bit moltiplicatore

controllo

prodotton bit n bit

+ somma

scrittura

shift a dx

shift a dx

n bit

Md Mt

Pshift

shift

Page 21: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

21

Simone Buso - Microcontrollori e DSP - Lezione 5 41

Moltiplicazione senza segnoPasso Azione Moltiplicatore Moltiplicando Prodotto

0 valori iniziali 0101 1101 0000 00001 1.a 1 ⇒ P=P+Md 0101 1101 1101 0000

1.b shift dx P 0101 1101 0110 10001.c shift dx Mt 0010 1101 0110 1000

2 2.a 0 ⇒ NOP 0010 1101 0110 10002.b shift dx P 0010 1101 0011 01002.c shift dx Mt 0001 1101 0011 0100

3 3.a 1 ⇒ P=P+Md 0001 1101 10000 01003.b shift dx P 0001 1101 1000 00103.c shift dx Mt 0000 1101 1000 0010

4 4.a 0 ⇒ NOP 0000 1101 1000 00104.b shift dx P 0000 1101 0100 00014.c shift dx Mt 0000 1101 0100 0001

(Mt) (Md) (P)

Simone Buso - Microcontrollori e DSP - Lezione 5 42

Moltiplicazione senza segnoUn ulteriore miglioria consiste nell’eliminare il registro che contiene il moltiplicatore (Mt)!Ciò è possibile perché il valore di Mt può essere convenientemente ospitato nella parte bassa di P.Il controllo si basa allora sul bit meno significativo (LSB) di P invece che su quello di Mt. Ogni volta che si effettua uno shift a destra di P si shifta automaticamente anche il moltiplicatore.L’algoritmo procede quindi in modo identico al caso precedente.

Page 22: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

22

Simone Buso - Microcontrollori e DSP - Lezione 5 43

Moltiplicazione senza segnoPasso Azione Moltiplicando Prodotto

0 valori iniziali 1101 0000 01011 1.a 1 ⇒ P=P+Md 1101 1101 0101

1.b shift dx P 1101 0110 10102 2.a 0 ⇒ NOP 1101 0110 1010

2.b shift dx P 1101 0011 01013 3.a 1 ⇒ P=P+Md 1101 1 0000 0101

3.b shift dx P 1101 1000 00104 4.a 0 ⇒ NOP 1101 1000 0010

4.b shift dx P 1101 0100 0001

(Md) (P) Mt

L’algoritmo ora richiede molte meno operazioni e risorse hardware.

Simone Buso - Microcontrollori e DSP - Lezione 5 44

Moltiplicazione con segnoLa moltiplicazione di numeri con segno richiede un’organizzazione apposita del moltiplicatore.La rappresentazione in complemento a due purtroppo non consente di estendere l’organizzazione del moltiplicatore unsigned a numeri con segno, come risulta anche dall’esempio precedente.Esiste un algoritmo di moltiplicazione, detto algoritmo di Booth, che permette di gestire correttamente la moltiplicazione di numeri con segno. Esso fornisce il risultato corretto per qualunque combinazione di segno degli operandi.

Page 23: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

23

Simone Buso - Microcontrollori e DSP - Lezione 5 45

Algoritmo di BoothL’algoritmo di Booth sfrutta la disponibilità di un sommatore in complemento a due (che consente di fare anche sottrazioni) per fattorizzare il moltiplicatore in modo che il prodotto richiesto sia equivalente a una serie di shift.Ad esempio: -5·12 = 5·(4-16) = 5·4 - 5·16 Il primo prodotto è uno shift a sinistra di 2 bit, il secondo uno shift a sinistra di 4 bit. L’unica operazione che resta da fare è la sottrazione dei due risultati parziali.

Simone Buso - Microcontrollori e DSP - Lezione 5 46

Algoritmo di BoothBooth ha osservato che la fattorizzazione in somme e differenze di potenze di 2 del moltiplicatore si può automatizzaresemplicemente, valutando la sequenza dei bit del moltiplicatore stesso. Nella maggior parte dei casi, questo approccio consente la riduzione del numero di operazioni di somma necessarie al calcolo del prodotto.Questo dipende però dalla disposizione dei bit e non accade per esempio quando il moltiplicatore presenti alternanze di 0 e 1 (tipo 1010101).

Page 24: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

24

Simone Buso - Microcontrollori e DSP - Lezione 5 47

Algoritmo di BoothL’algoritmo di Booth estende l’algoritmo visto in precedenza per i numeri unsigned. Esso considera i bit del moltiplicatore due alla volta e, in base alla composizione della coppia, decide il da farsi:1) se il bit corrente è 1 e il precedente è 0,

il moltiplicando viene sottratto al prodotto parziale;

2) se il bit corrente è 0 e il precedente è 1, il moltiplicando viene sommato al prodotto parziale;

3) se i due bit sono uguali, non si fa nulla.

Simone Buso - Microcontrollori e DSP - Lezione 5 48

Algoritmo di BoothSono richieste alcune avvertenze aggiuntive: 1) al termine di ogni passo, il prodotto deve

essere comunque shiftato a destra;2) lo shift del prodotto deve essere di tipo

aritmetico, con estensione del segno;3) nell’eseguire la somma tra moltiplicatore e

prodotto si devono tralasciare i riportieventualmente generati dai due MSB;

4) inizialmente, il bit precedente quello meno significativo del moltiplicatore va considerato uguale a 0.

Page 25: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

25

Simone Buso - Microcontrollori e DSP - Lezione 5 49

Algoritmo di BoothPasso Azione Moltiplicatore Moltiplicando Prodotto

0 valori iniziali 0101 1101 0000 00001 1.a 1 ⇒ P=P-Md 01010 1101 0011 0000

1.b shift dx P 0001 10002 2.a 0 ⇒ P=P+Md 0101 1101 1110 1000

2.b shift dx P 1111 01003 3.a 1 ⇒ P=P-Md 0101 1101 0010 0100

3.b shift dx P 0001 00104 4.a 0 ⇒ P=P+Md 0101 1101 1110 0010

4.b shift dx P 1111 0001

(Mt) (Md) (P)

Esempio: moltiplicazione di 1012 (510) e 11012(-310). Il risultato è quello atteso: –1510.

Simone Buso - Microcontrollori e DSP - Lezione 5 50

Algoritmo di BoothE’ facile verificare che la realizzazione circuitale dell’algoritmo di Booth non è di molto più complessa di quella vista in precedenza per la moltiplicazione unsigned.E’ sufficiente modificare la circuiteria logica di controllo.Il circuito modificato diventa allora capace di moltiplicare correttamente due operandi a nbit rappresentati in complemento a 2, per ogni combinazione di segno.Il risultato è un numero a 2n bit, sempre rappresentato in complemento a 2.

Page 26: Lezione 5 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare... · 2004. 6. 17. · 5+p 7·p 6·p 5·g 4; P 1 = p 7·p 6·p 5·p 4; e gli altri si ricavano per estensione diretta. Simone

26

Simone Buso - Microcontrollori e DSP - Lezione 5 51

MoltiplicazioneTutte le realizzazioni della moltiplicazione viste finora richiedono numerose iterazioni e comportano l’esecuzione ripetuta di somme, sottrazioni e shift (anche l’algoritmo di Booth).Specialmente per le applicazioni di signalprocessing, è invece essenziale poter eseguire la moltiplicazione molto velocemente.E’ quindi necessario disporre di un circuito combinatorio capace di eseguire la moltiplicazione in modo veloce, senza ricorrere a procedimenti iterativi.