Estratto del documento

Architettura degli elaboratori

Cambiago Silvia

Anno Accademico 2021-2022

Prof. Claudio Ferretti

Sistemi numerici

I calcolatori lavorano mediante il sistema binario, perché funzionano per mezzo della corrente elettrica, il cui passaggio, avvenuto o meno, ben si presta ad essere rappresentato con due cifre, 0 e 1. Per attribuire un significato alla sequenza di cifre che si va a formare sono stati definiti appositi standard di codifica, ossia regole di rappresentazione di dati binari che coprono le necessità dell'informazione.

In generale, una rappresentazione è un modo per descrivere un'entità. Nei sistemi numerici è necessario effettuare una distinzione tra entità numero (valore) e rappresentazione (es. "due", 2, 1010, 22).

La rappresentabilità dei valori è legata al numero di cifre disponibili, essendo esso limitato. Quando risulta impossibile rappresentare il risultato di un'operazione utilizzando il numero di cifre a disposizione si ha overflow.

Sistemi posizionali

Nei sistemi di numerazione posizionali, come quello decimale, ogni cifra assume valore diverso a seconda della posizione che occupa. In questo tipo di sistema un dato valore numerico N è caratterizzato dalla seguente rappresentazione:

  • d è la singola cifra (digit);
  • r è la base (o radice) del sistema;
  • n è il numero di cifre della parte intera;
  • m è il numero di cifre della parte frazionaria.

Operazioni aritmetiche in base arbitraria

  • Somma: poiché la scrittura in base arbitraria è posizionale, per calcolare la somma è possibile utilizzare il consueto metodo di calcolo. L'unica differenza da tenere a mente è che il riporto viene utilizzato non appena si ottiene una cifra maggiore o uguale alla base utilizzata;
  • Differenza: analogamente alla somma, per calcolare la differenza è possibile utilizzare il metodo standard. Occorre sempre ricordarsi in quale base si sta operando;

Convertire da una base all'altra

Se si vuole conoscere la scrittura di un numero in una base nota, si esegue ripetutamente la divisione tra il numero ed il valore della base, annotando il resto di ogni operazione. Arrivati alla fine, si compone la scrittura nella base desiderata riportando i resti dall'ultimo al primo. Qualora invece si voglia ottenere la scrittura decimale di un numero di cui si conosce la rappresentazione in una data base, si scrive tale numero in forma polinomiale e si svolgono i calcoli.

Modulo e segno

Modulo e segno è un metodo di rappresentazione atto a fornire la conversione in binario di valori negativi, che prevede, l'utilizzo del bit più a sinistra (MSB) per indicare il segno:

  • 0 se positivo;
  • 1 se negativo.

Dati n bit totali, si possono rappresentare i numeri interi nell'intervallo [-(2n-1 - 1), +(2n-1 - 1)].

La rappresentazione MS presenta due problematiche principali:

  • Esistono due diverse rappresentazioni dello 0;
  • Un bit viene speso unicamente per indicare il segno, comportando lo spreco di un bit che non viene impiegato nella rappresentazione dell'informazione.

Per eseguire una somma in MS, se i bit di segno sono uguali, il bit di segno del valore risultante sarà il bit di segno dei due addendi ed il risultato sarà la somma bit a bit (a meno di overflow). Se i bit di segno sono diversi il bit di segno risultante sarà quello del fattore con valore assoluto maggiore ed il risultato la differenza bit a bit.

Complemento a 1

Il metodo del complemento a 1 è un altro tipo di rappresentare i numeri interi positivi e negativi, alternativo a MS. Come suggerisce il nome, è basato sull'operazione del complemento, ossia l'assegnamento ad ogni bit del corrispondente valore opposto.

Il metodo CA1 funziona come di seguito:

  • Se il numero da codificare è positivo lo si converte in binario applicando la procedura consueta;
  • Se il numero è negativo si converte prima in binario il suo modulo, poi si esegue l'operazione di complemento al valore ottenuto.

Dato che anche questo metodo presenta la questione della doppia rappresentazione dello 0, è stato introdotto il metodo del complemento a 2.

Complemento a 2

Questo metodo funziona come di seguito:

  • Se il numero da rappresentare è positivo, la sua codifica rimane invariata;
  • Se si tratta di un valore negativo, prima si applica ad esso il metodo CA1, poi si aggiunge 1 al numero ottenuto (ovviamente, nel caso si debba procedere a ritroso, ovvero individuare il valore originale partendo dal CA2, prima si toglie 1 e poi si applica il complemento).

Il CA2 risolve quindi il problema della doppia rappresentazione dello 0. Viene mantenuta la convenzione del MSB, che risulta essere 0 per i valori positivi e 1 per quelli negativi, in modo tale che l'hardware che si occupi della codifica debba verificare solo un bit per determinare il segno. Dati n bit, si possono rappresentare i numeri interi nell'intervallo [-(2n-1), +(2n-1 - 1)].

Per eseguire la somma di due valori in CA2, si sommano gli addendi bit a bit compreso il MSB, si scarta un eventuale riporto oltre il bit di segno e, in caso in cui i fattori abbiano segno concorde, si deve verificare la presenza o meno di overflow, controllando che il bit di segno del risultato sia concorde con quello degli addendi.

Qualora si voglia convertire un valore binario in n bit in un numero a m bit, con m > n, si applica un processo detto estensione del segno: si prende il MSB dal numero in n bit e si replica fino a raggiungere la dimensione di m bit.

Shift

Lo shift è un'operazione che consiste nella traslazione a destra o a sinistra di tutti i bit della word. Il caso della Fig. 1 a lato è quello di un Arithmetic Right Shift. È equivalente ad una divisione del numero per la base. L'ultimo bit verso destra viene scartato, mentre il segno, indicato dall'MSB, viene replicato.

La Fig. 2 mostra invece un Arithmetic Left Shift. Equivale a moltiplicare il numero per la base. Le cifre vuote vengono sostituite da 0 e, qualora il MSB del numero che ha subito shift sia diverso da quello originale, si ha overflow, in quanto il bit del segno deve essere preservato.

Eccesso 2n-1

Per eseguire la codifica in eccesso 2n-1 di un numero si aggiunge ad esso 2n-1 e si converte in binario il valore ottenuto su n bit. Il codice eccesso 2 usa una convenzione opposta per il bit di segno: 0 per i negativi e 1 per i positivi. In eccesso 128 i numeri nell'intervallo [-128, 127] si mappano su [0, 255]. In pratica, l'eccesso 2 è quasi identico al CA2, con il bit del segno complementato.

Rappresentazione in virgola fissa

Un metodo per rappresentare numeri reali in binario è quello in virgola fissa. Dati n bit, viene mantenuto un bit s per il segno, un numero i di bit per la parte intera ed i restanti d bit per la parte decimale. In un sistema di rappresentazione in virgola fissa il numero di bit designati alla rappresentazione della parte frazionaria dipende dalla precisione che si necessita ottenere.

  • L'intervallo di valori della parte intera rappresentabili è: [-2i-1, +2i-1].
  • L'intervallo della parte decimale è: [0, 2-d].

Per eseguire la codifica in virgola fissa si procede come di seguito:

  • Si considera la parte intera e la si converte in binario;
  • Si moltiplica per 2 la parte frazionaria;
  • Dal risultato si toglie la parte intera e si ripete il passo precedente fino a quando la parte frazionaria diventa nulla o è stato ottenuto un numero di cifre adeguato ad esprimere la precisione opportuna;
  • I valori interi ottenuti via via come risultati costituiscono, nell'ordine, le cifre del numero binario.

Rappresentazione in virgola mobile

La rappresentazione in virgola mobile è il corrispettivo binario della notazione scientifica. Nell'eseguire questa codifica è necessario trovare un compromesso tra range di numeri rappresentabili e precisione, in quanto l'aggiunta di un bit all'esponente o alla mantissa (parte frazionaria) comporta la rimozione di un bit dall'altra parte. Lo standard IEEE 754 divide la word di 32 bit in 24 bit per la parte frazionaria (1 bit per il segno e 23 per la mantissa) e 8 bit per l'esponente. Nel caso di doppia precisione, con 64 bit disponibili, diventano 52+1 per la parte frazionaria e 11 per l'esponente.

In generale i numeri in virgola mobile sono del tipo: (-1)s ⋅ m ⋅ 2e. Dati n bit, la divisione della word rimane.

Errore assoluto ed errore relativo

Rappresentando un numero reale n in virgola mobile si commette un errore di approssimazione, in quanto la rappresentazione risultante è quella di un numero razionale m con un numero limitato di cifre significative.

L'errore assoluto e si ricava con:

e = |n - m|

L'errore relativo corrisponde invece a:

er = |n - m| / |n|

Rappresentazione di caratteri

Per essere letti dall'elaboratore, i caratteri devono essere rappresentabili in binario. Ciò avviene in seguito all'applicazione di una delle seguenti codifiche:

  • ASCII standard: 7 bit, 128 caratteri rappresentabili. Contiene 26 lettere maiuscole, le corrispondenti minuscole, le cifre decimali, i segni di interpunzione ed i caratteri di controllo;
  • ASCII esteso: 8 bit, 256 caratteri. Contiene tutto ciò che è presente nell'ASCII standard e, dato che un bit in più risulta essere eccessivo, l'ultimo bit viene designato al controllo di parità*;
  • UNICODE: tra 8 e 32 bit per la rappresentazione di caratteri e simboli. Estende ulteriormente ASCII e codifica tutti i caratteri utilizzati nelle principali lingue del mondo.

*parity check: viene aggiunto un bit alla fine per rendere il numero di bit a 1 sempre pari o sempre dispari. Il ricevitore controlla il numero di bit a 1 ed il dato viene considerato accurato se il numero (pari o dispari) di bit corrisponde al numero trasmesso dalla sorgente. Non può rilevare un numero pari di errori.

Circuiti

Un circuito integrato (componente hardware contenente le porte logiche), è, in generale, un circuito elettronico complesso interamente realizzato su un'unica piastrina di materiale semiconduttore (solitamente silicio), il chip. Per garantire l'isolamento elettrico ed il corretto collegamento del circuito, il chip viene incapsulato in un contenitore solitamente di materiale plastico, il package, assieme alle porte logiche (gates). Da questo fuoriescono i pin, ovvero i terminali metallici di connessione del circuito. Le porte sono formate da uno specifico arrangiamento di transistor, dispositivi che permettono di controllare il passaggio di corrente in un circuito. Il numero di componenti presenti all'interno di un circuito integrato ne definisce la scala di integrazione:

  • SSI (Small Scale Integrator): 1-10 transistor;
  • MSI (Medium Scale Integrator): 10-100 transistor;
  • LSI (Large Scale Integrator): 100-100.000 transistor;
  • VLSI (Very Large Scale Integrator): più di 100.000 transistor.

I moderni microprocessori implementano la tecnologia VLSI. Gli ingressi e le uscite possono assumere unicamente i valori di segnale alto (1), con voltaggio maggiore di 1 e basso (0), con voltaggio uguale o inferiore a 1. In un circuito combinatorio i valori presenti in uscita dipendono esclusivamente dalle combinazioni binarie in ingresso, indipendentemente dal tempo. Nei circuiti sequenziali, invece, l'uscita non dipende solo dall'ingresso corrente, ma anche da uscite precedenti rimaste in memoria (possono quindi essere considerati come circuiti combinatori con elementi di accumulo).

Porte logiche

Nei circuiti, i blocchi logici sono costituiti da porte logiche, componenti elettronici che implementano funzioni logiche. Le porte logiche possono avere più input e hanno, generalmente, un solo output. Se si hanno a disposizione solo porte a due input e si necessitano più ingressi, si possono collegare a cascata più porte a due input.

Quelle fondamentali sono OR, AND e NOT; quelle derivate sono XOR, NOR, NAND.

Operatore Simbolo Input A Input B Risultato
OR 0 0 0
0 1 1
1 0 1
1 1 1
AND 0 0 0
0 1 0
1 0 0
1 1 1
NOT 0 / 1
1 / 0
XOR 0 0 0
0 1 1
1 0 1
1 1 0
NOR 0 0 1
0 1 0
1 0 0
1 1 0
NAND 0 0 1
0 1 1
1 0 1
1 1 0

Decoder

Un decoder è un componente elettronico con n ingressi e 2n uscite, che prevede un solo output per combinazione di input. Il decoder riceve in input un segnale binario a n bit e manda in output la traduzione in un unico segnale del valore ricevuto. Ha tante porte AND quanti sono gli output e tante porte NOT quanti gli input. La Fig. 4 mostra un decoder a 3 bit con corrispondente tabella di verità:

Multiplexor

Il multiplexor, o selettore, è un componente elettronico che riceve in input 2n valori numerici e n valori di controllo ed ha un solo output. Il multiplexor determina quale fra gli input diviene l'output. Quando in un multiplexor ci sono due input, il selettore è un singolo segnale che seleziona un input se vero e l'altro se è falso. La Fig. 5 mostra un multiplexor a due input (a sinistra) e la sua implementazione con le porte (a destra). S è il valore di controllo.

Logiche a due livelli e PLA

Utilizzando le porte logiche elementari AND, OR e NOT è possibile implementare qualsiasi operazione logica più complessa. Le logiche a due livelli si implementano mediante:

  • Somme di prodotti: somma logica (OR) di prodotti (AND);
  • Prodotti di somme: prodotto logico (AND) di somme (OR).

La somma di prodotti corrisponde ad una implementazione detta PLA (Programmable Logic Array), visibile in Fig. 6, che è un dispositivo logico programmabile composto da un array di porte AND programmabili seguito da un array di porte OR programmabile. Si usa per costruire circuiti logici riconfigurabili, e permette di ottenere una rappresentazione semplificata di diverse operazioni logiche.

ROM

La ROM è un circuito combinatorio in cui ad ogni indirizzo inserito come input corrisponde in output il contenuto della cella di memoria avente quell'indirizzo. Dato un indirizzo a n bit in input, l'output sarà quindi una tra le 2n celle, o locazioni di memoria (memory height). Il numero m di bit che ciascuna cella contiene è equivalente al numero di bit dell'output (memory width).

ALU (Arithmetic logic unit)

Un' ALU è un hardware costituito da circuiti combinatori che esegue operazioni logiche ed aritmetiche. Si costruisce partendo da porte logiche, sommatori, invertitori, decoder e multiplexor. L'architettura più comune è a 32 bit, il che vuol dire che si rende necessario collegare 32 ALU a 1 bit per ottenere quella desiderata. Un'ALU, come detto sopra, è un circuito logico combinato, ed ha come input i dati su cui deve operare e come output i risultati. Nella maggior parte dei casi ha input ed output di stato che passano informazioni relative a operazioni logiche o aritmetiche svolte in precedenza.

ALU a 1 bit

Le operazioni più semplici da implementare in un'ALU a 1 bit sono quelle logiche, tipicamente AND e OR. Va poi incluso il sommatore (full adder) (Fig. 7), che implementa l'addizione. Deve supportare due input per i dati da sommare, un output (un singolo bit) per il valore della somma ed un secondo output, il CarryOut (riporto), da passare al sommatore successivo. Per quest'ultimo tale valore è un input e si dice CarryIn.

Il valore dell'output del CarryOut si può esprimere attraverso un'equazione logica (Fig. 8):

CarryOut = (A ⋅ B) + (A ⋅ CarryIn) + (B ⋅ CarryIn)

La somma vale invece:

Sum = A ⊕ B ⊕ CarryIn

ALU a 32 bit

Ultimata l'ALU a 1 bit, connettendo 32 di esse si ottiene un'ALU a 32 bit (Fig. 11):

In operazioni come l'addizione, per addendi a n bit, saranno necessari n sommatori (full adders) in parallelo. Il carry si può propagare dal LSB fino al MSB. Un sommatore ripple carry è un circuito logico nel quale il CarryOut del sommatore precedente è il CarryIn del sommatore successivo.

Operazioni di confronto (SLT)

Una delle principali operazioni di confronto attuate dall'ALU è il SLT (set-on-less-than), che controlla l'uguaglianza fra due registri contenenti valori da elaborare. Se il primo è minore del secondo l'output sarà 1, altrimenti 0. Per effettuare tale confronto esegue la sottrazione tra le variabili e controlla se il risultato è positivo, negativo o nullo.

Anteprima
Vedrai una selezione di 13 pagine su 56
Architettura degli elaboratori Pag. 1 Architettura degli elaboratori Pag. 2
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 6
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 11
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 16
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 21
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 26
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 31
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 36
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 41
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 46
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 51
Anteprima di 13 pagg. su 56.
Scarica il documento per vederlo tutto.
Architettura degli elaboratori Pag. 56
1 su 56
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher silvia.cambiago di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Ferretti Claudio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community