Arithmetic and Logic Unit e moltiplicatore

Documenti analoghi
I.4 Rappresentazione dell informazione - Numeri con segno

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Somma di numeri binari

Interi positivi e negativi

1.2f: Operazioni Binarie

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Lezione 3. I numeri relativi

Numeri interi (+/-) Alfabeto binario. Modulo e segno

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Aritmetica binaria e circuiti aritmetici

Rappresentazione. Notazione in complemento a 2. Complemento a due su 3 e 4 bit Complemento a due

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Codifica binaria. Rappresentazioni medianti basi diverse

Unità aritmetica e logica

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Aritmetica dei Calcolatori

Rappresentazione dell Informazione

Aritmetica dei Calcolatori - Operazioni

Soluzioni Esercizi su rappresentazione binaria dell informazione

Corso di Architettura degli Elaboratori

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Codifica. Rappresentazione di numeri in memoria

La rappresentazione dei numeri. La rappresentazione dei numeri. Aritmetica dei calcolatori. La rappresentazione dei numeri

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

Rappresentazione e Codifica dell Informazione

Esercitazione Informatica I (Parte 1) AA Nicola Paoletti

La Rappresentazione dell Informazione

Calcolo numerico e programmazione Rappresentazione dei numeri

Rappresentazione dei numeri interi in un calcolatore

Aritmetica dei Calcolatori

Interi unsigned in base 2. Esercitazioni su rappresentazione dei numeri e aritmetica. Conversione binario-decimale

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Sistemi di Numerazione

Appunti di informatica. Lezione 4 anno accademico Mario Verdicchio

Aritmetica dei Calcolatori

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Aritmetica dei Calcolatori

Rappresentazione dei Numeri

Aritmetica dei calcolatori. La rappresentazione dei numeri

La codifica. dell informazione

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Università degli Studi di Cassino

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

I.4 Rappresentazione dell informazione

Sistemi di Numerazione Binaria

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dell informazione

Rappresentazioni numeriche

Sistemi di Numerazione Binaria

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

Rappresentazione in complemento a 2: caratteristiche generali

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Firmware Division & Floating pointer adder

Riassunto Nell'esercitazione di oggi e' stata introdotta la codifica binaria naturale, intera e razionale in virgola fissa. Il materiale teorico

La codifica. dell informazione

Esempi - overow Considerando numeri binari di 4 bit, eettuare la somma (9) 10 =(1001) 2 (7) 10 =(0111) Il risultat

La codifica dei numeri

Fondamenti di Programmazione. Sistemi di rappresentazione

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Rappresentazione di numeri interi

Sistemi di Numerazione Binaria

Firmware Division & Floating gpointer adder

Sistema Numerico Decimale

Pag. 2. Somma binaria. Somma binaria. Somma binaria. Altre operazioni aritmetiche. La somma si può fare colonna per colonna

Architettura degli Elaboratori

Calcolo numerico e programmazione Rappresentazione dei numeri

APPUNTI DI INFORMATICA

Rapida Nota sulla Rappresentazione dei Caratteri

Sistemi di numerazione

La rappresentazione dei dati

Architetture aritmetiche

Rappresentazione delle frazioni proprie Aritmetica in binario Barbara Masucci

Floating pointer adder & Firmware Division. Sommario

0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL

Rappresentazione dei numeri in un calcolatore

La codifica digitale

Seconda lezione. Rivediamo un po di definizioni principali Proseguiremo con nuovi codici

Rappresentazione dei Dati

La codifica binaria. Informatica B. Daniele Loiacono

Reti combinatorie. Reti combinatorie (segue)

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori

senza stato una ed una sola

Rappresentazione numeri relativi e reali

Le operazioni. di somma. e sottrazione

Architettura degli Elaboratori

1-Rappresentazione dell informazione

La "macchina" da calcolo

Rappresentazione in virgola mobile Barbara Masucci

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale -

La codifica binaria. Sommario

Calcolatori: Rappresentazione dei Dati e Aritmetica binaria

Transcript:

Arithmetic and Logic Unit e moltiplicatore M. Favalli Engineering Department in Ferrara (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 1 / 34

Sommario 1 Arithmetic and Logic Unit - ALU 2 Moltiplicatore (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 2 / 34

Sommario 1 Arithmetic and Logic Unit - ALU 2 Moltiplicatore (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 3 / 34

Introduzione La ALU é un componente in grado di eseguire diversi tipi di operazione di tipo aritmetico e logico su due operandi di n bit Il tipo di operazioni viene determinato dalla configurazione dei bit di controllo Le prime CPU avevano la parte di elaborazione dati su una ALU (attualmente ne sono presenti piú di una) La ALU oltre a produrre un risultato di n bit produce anche diversi segnali di flag che rappresentano eccezioni o condizioni particolari sul risultato La sua struttura riflette un compromesso fra costo e prestazioni (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 4 / 34

Schema C S = S(X, Y, C) e F = F(X, Y, S) Si noti che le operazioni aritmetiche sono in modulo 2 n X Y n n ALU n S F (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 5 / 34

Utilizzo della ALU in una semplice CPU control unit (IF, ID) instruction memory X Y n n C ALU F n S registers (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 6 / 34

Struttura Sono stati proposti e realizzati diversi tipi di ALU Forse il tipo piú diffuso é quello di tipo bit - sliced in cui una ALU a n bit viene costruita a partire da n slice, ovvero n ALU a 1 bit ciascuna La ALU é essenzialmente costruita intorno a un n bit adder di tipo ripple-carry Vantaggi di modularitá e costo e svantaggi di prestazioni (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 7 / 34

1-bit ALU cin x i c 0 c 1 y i c 2 a b FA c3 c 4 0 1 MPX 2 s i cout (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 8 / 34

1-bit ALU - funzioni aritmetiche ALU a n bit In questo caso il carry-in é significativo c 4 c 3 c 2 c 1 c 0 a b s c out 00 000 0 0 c in 0 00 001 x i 0 x i c in x i c in 00 010 0 1 1 c in c in 00 011 x i 1 x i 1 c in x i + c in 00 100 0 y i y i c in y i c in 00 101 x i y i x i y i c in x i y i + x i c in + y i c in 00 110 0 y i y i c in y i c in 00 111 x i y i x i y i c in x i y i + x i c in + y i c in (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 9 / 34

1-bit ALU - funzioni logiche Si tratta di operazioni logiche bit a bit il cui risultato non dipende dal carry-in c 4 c 3 c 2 c 1 c 0 s 01 - - - x i y i 10 - - - x i + y i (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 10 / 34

ALU a n bit CIN x 0 y 0 x y c in s s 0 c out x1 y 1 x y c in s s 1 c out x n 1 y n 1 x y c in s s n 1 c out c 4,3,2,1,0 COUT (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 11 / 34

Rappresentazione dei numeri interi con segno Rappresentazione con segno e valore assoluto il bit piú significativo viene usato per codificare il segno (0 positivo, 1 negativo) segue la codifica del valore assoluto come numero naturale in base 2 si hanno due rappresentazioni per lo 0 (10..0 e 00..0) il vero problema é dato dal fatto che la rete che realizza la somma e la sottrazione per questo tipo di codifica non risulta conveniente (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 12 / 34

Rappresentazione dei numeri interi con segno Rappresentazione in complemento a 2 Dato un numero intero A 0 rappresentato con n bit, il suo complemento a 2 é dato da A c2 = 2 n A La rappresentazione di numeri interi in complemento a 2 su n bit codifica i numeri positivi da 0 a 2 n 1 1 nello stesso modo in cui si codificano i numeri naturali e quelli negativi da 2 n 1 a 1 utilizzando il complemento a 2 del loro valore assoluto Anche in questo caso, il bit di maggior peso é 0 se A 0 e 1 altrimenti (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 13 / 34

Esempio Supponiamo che sia n = 4 e quindi si possono rappresentare i numeri da -8 a 7 Il numero 6 si rappresenta come un numero naturale, ovvero come 0110 Il numero -4 si rappresenta con la codifica binaria del complemento a 2 del valore assoluto di -4, quindi come 2 4 4 = 12 la cui codifica binaria é 1100 Si noti che aggiungendo dei bit nella rappresentazione dei numeri, quelli positivi vanno estesi con degli 0 e quelli negativi con degli 1 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 14 / 34

Calcolo del complemento 2 tramite il complemento a 1 Si puó utilizzare un metodo piú rapido Si consideri un numero naturale binario A = a 3 a 2 a 1 a 0, il suo valore é dato da v(a) = a 3 2 3 + a 2 2 2 + a 1 2 1 + a 0 2 0 Si consideri ora il complemento a 1 di A, A c1 = a 3 a 2 a 1 a 0 il cui valore é dato da v(a) c1 = a 3 23 + a 2 22 + a 1 21 + a 0 20 Quanto vale A + A c1? (a 3 + a 3 )23 + (a 2 + a 2 )22 + (a 1 + a 1 )21 + (a 0 + a 0 )20 = 2 3 + 2 2 + 2 1 + 2 0 = 2 15 = 2 4 1 Quindi A + A c1 = 2 n 1, da cui A c1 = 2 n 1 A = A c2 1 e infine A c2 = A c1 + 1 Quindi per ottenere il complemento a 2 di un numero, si possono negare tutti i bit e sommare 1 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 15 / 34

Calcolo del complemento 2 tramite il complemento a 1 Lo stesso metodo si puó utilizzare per calcolare il valore assoluto di un numero negativo rappresentato in complemento a 2 In tale caso sia A il numero negativo, che sará codificato da A c2 = 2 n A Applichiamo il complemento a 2 ad A c2 : (A c2 ) c2 = 2 n (2 n A ) = A Quindi A = (A c2 ) c2 = (A c2 ) c1 + 1 Quindi per ottenere il valore assoluto, si possono negare tutti i bit della rappresentazione in complemento a 2 del numero negativo e sommare 1 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 16 / 34

Esempio Il numero -4 si puó calcolare determinando la codifica binaria di 4 (0100), complementando tutti i bit di 0100 e ottenendo quindi 1011 e infine sommando 1 ottenendo cosí 1100 Se n = 6 e si vuole conoscere il valore di 110100, si complementano i suoi bit ottenendo 001011 e si somma 1 ottenendo cosí 001100 che é il valore assoluto che convertito in decimale da 12 e quindi il numero di partenza é -12 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 17 / 34

Somma in complemento a 2 Si ricorda che se consideriamo un sommatore binario a n bit con gli ingressi rappresentati da due numeri naturali A e B, gli n bit di uscita forniscono (A + B) mod 2 n Supponiamo ora che X e Y rappresentino due numeri nella notazione in complemento a due, tali che X 0 e Y < 0 Mentre X codificato in binario sará presente a un ingresso dell adder, all altro ingresso sará presente la codifica binaria di 2 n Y All uscita dell adder risulterá quindi (X + 2 n Y ) mod 2 n Siccome (p + q) mod q = p, p 0, se (X Y ) 0, in uscita si ha X Y (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 18 / 34

Somma in complemento a 2 Se invece (X Y ) < 0, l uscita rimane (X + 2 n Y ) mod 2 n che possiamo scrivere come 2 n X Y = ( X Y ) c2 Questa la rappresentazione in complemento a 2 del risultato atteso Quindi la somma di interi con segno rappresentati in complemento a 2 puó essere eseguita con un adder, questo é il motivo del successo di tale rappresentazione Conclusioni valide se il risultato puó essere rappresentato con n bit (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 19 / 34

Esempi Sia X = 4 e Y = 1, quindi in ingresso a un 4-bit adder abbiamo 0100 e 1111 0100 + 1111 = 1 0011 Si ottiene correttamente 3, si noti che per il momento il carry-out dell adder non interessa. Vediamo ora il caso in cui Y = 8 che corrisponde a 1000 0100 + 1000 = 0 1100 Risultato che in complemento a 2 corrisponde a -4. (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 20 / 34

ALU a n bit: funzioni aritmetiche Fino a questo momento i simboli {X, Y, S} sono stati utilizzati nello schema della ALU per denotare parole di n bit Nel caso delle funzioni aritmetiche della ALU, le configurazioni binarie di tali parole codificano numeri interi rappresentati in complemento a 2 che verranno denotati come (X) 2, (Y ) 2, (S) 2, lo stesso vale per costanti rappresentate su n bit Nel caso di espressioni il pedice viene riportato solo all esterno delle parentesi: (X + Y + 9) 2 = (X) 2 + (Y ) 2 + (9) 2 Le notazioni (W ) c1 2 e (W )c2 2 sono utilizzate per denotare il complemento a 1 e il complemento a 2 di (W ) 2 : (W ) c1 2 = (2n W 1) 2 e (W ) c2 2 = (2n W ) 2 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 21 / 34

ALU a n bit: funzioni aritmetiche ALU a 1 bit c 4 c 3 c 2 c 1 c 0 S (CIN = 0) S (CIN = 1) 00 000 (0) 2 (1) 2 00 001 (X) 2 (X + 1) 2 00 010 ( 1) 2 (0) 2 00 011 (X 1) 2 (X) 2 00 100 (Y ) 2 (Y + 1) 2 00 101 (X + Y ) 2 (X + Y + 1) 2 00 110 (Y ) c1 2 (Y c1 + 1) 2 = (Y ) c2 2 = = ( Y ) 2 00 111 (X + Y c1 ) 2 (X + Y c1 + 1) 2 = = (X + Y c2 ) 2 = (X Y ) 2 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 22 / 34

ALU a n bit Funzioni logiche c 4 c 3 c 2 c 1 c 0 S 01 - - - XY 10 - - - X + Y Per la complementazione si puó utilizzare il complemento a 1 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 23 / 34

Bit di flag I bit di flag forniscono indicazioni sul risultato bit di zero: vale 1 se il risultato S = 0 2 bit di paritá: fornisce la paritá sul risultato bit di carry: CARRY OUT bit di overflow: vale 1 se il risultato non é contenuto in n bit bit di segno: vale 1 se il risultato é negativo (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 24 / 34

Overflow Si ha overflow se il segno del risultato é diverso da quello atteso sulla base del tipo di operazione e dei segni degli operandi: X > 0, Y > 0 e S < 0 con una somma aritmetica X < 0, Y < 0 e S > 0 con una somma aritmetica X > 0, Y < 0 e S < 0 con una sottrazione aritmetica X < 0, Y > 0 e S > 0 con una sottrazione aritmetica Sia OV il bit di overflow: OV = c 4 c 3 (c 2c 1 c 0(X n 1 Y n 1 S n 1 + X n 1 Y n 1 S n 1 ) + c 2 c 1 c 0 (X n 1 Y n 1S n 1 + X n 1 Y n 1 S n 1 )) (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 25 / 34

Esempi Operandi A e B in ingresso all adder contenuto nella ALU Somma 0 1 1 0 + 1 1 1 0 + 0 1 0 0 = 1 0 0 1 = 1 0 1 0 0 1 1 1 6+4=-6-2+(-7)=7 Sottrazione (il secondo operando viene complementato a 2) 0 1 1 0 + 1 1 1 0 + 0 1 0 0 = 1 0 0 1 = 1 0 1 0 0 1 1 1 6-(-4)=-6-2-7=-7 Si noti che per la sottrazione sono illustrati i valori agli ingressi della ALU a 1 bit (ovvero dell adder) (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 26 / 34

Bit di paritá Serve per proteggere i dati che vengono scritti nei registri o in memoria s 0 s 1 s 2 s 3 p s s n 4 n 3 s n 2 s n 1 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 27 / 34

Bit di segno e bit di zero Il bit di segno é banalmente il bit di maggior peso del risultato (che é significativo solo nel caso di operazioni aritmetiche) Il bit dizero assume il valore 1 solo quando tutti i bit del risultato hanno il valore 0. Puó essere ottenuto tramite un NOR a n ingressi (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 28 / 34

Moltiplicatore Sommario 1 Arithmetic and Logic Unit - ALU 2 Moltiplicatore (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 29 / 34

Moltiplicatore Moltiplicazione La ALU illustrata non conteneva le operazioni di moltiplicazione e divisione Vedremo come caso particolare la moltiplicazione e divisione per 2 (applicata ai numeri naturali) Nel caso generale vedremo il prodotto di numeri naturali (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 30 / 34

Moltiplicatore Moltiplicazione e divisione per 2 Moltiplicazione e divisione per 2 possono essere rispettivamente eseguite mediante uno shift a sinistra e uno a destra di una posizione Circuito (da mettere in uscita alla ALU) in grado di eseguire tali operazioni (W i = L R S i + L RS i+1 + LR S i 1 ) w n 1 w i w 0 L r i L r i L r i R x i+1 xi xi 1 R x R i+1 x i x i 1 x i+1 xi xi 1 0 s n 1 s n 2 s i+1 s i s i 1 s 1 s 0 0 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 31 / 34

Moltiplicatore Moltiplicazione fra numeri naturali L algoritmo é quello utilizzato in base 10 (somma di prodotti parziali): x 3 x 2 x 1 x 0 X y 3 y 2 y 1 y 0 Y = x 3 y 0 x 2 y 0 x 1 y 0 x 0 y 0 W 0 + x 3 y 1 x 2 y 1 x 1 y 1 x 0 y 1 - W 1 + x 3 y 2 x 2 y 2 x 1 y 2 x 0 y 2 - - W 2 + x 3 y 3 x 2 y 3 x 1 y 3 x 0 y 3 - - - W 3 = p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 32 / 34

Moltiplicatore Moltiplicazione fra numeri naturali Logica AND (prodotti parziali) Sommatori x x x x w 31 w 21 w 11 w 01 0 w w 21 0w 10 w 3 0 30 2 1 00 y 0 w30 w20 w10 w00 x x x x 2 1 3 0 x 3 x 2 x 1 x 0 y 3 y 2 y 1 y 0 4 bit adder c in c out s 3 s 2 s 1 s 0 0 y 1 w 32 w 22 w 12 w 02 w31 w21 w11 w01 x x x x 2 1 3 0 y 2 w 33 w 23 w 13 w 03 x 3 x 2 x 1 x 0 y 3 y 2 y 1 y 0 4 bit adder c out s 3 s 2 s 1 s 0 c in 0 w 32 w22 w12 w02 x x x x 2 1 3 0 y 3 x 3 x 2 x 1 x 0 y 3 y 2 y 1 y 0 4 bit adder c in c out s 3 s 2 s 1 s 0 0 w33 w23 w13 w03 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 33 / 34

Moltiplicatore Conclusioni Le unitá aritmetiche sono un componente critico del data-path delle ALU Gli esempi riportati corrispondono alle soluzioni piú semplici Nelle CPU reali si utilizzano diverse tecniche per migliorare le prestazioni di ALU e moltiplicatori che non si riescono a trattare in questo ambito (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 34 / 34