Che materia stai cercando?

Teoria Arichitettura dei Calcolatori Appunti scolastici Premium

Appunti di Architettura dei calcolatori basati su appunti personali del publisher presi alle lezioni del prof. Scafuri dell' università degli Studi Parthenope - Uniparthenope, Facoltà di Scienze e tecnologie, Corso di laurea in informatica. Scarica il file in formato PDF!

I seguenti Appunti sono stati scritti usando la seguente scaletta di papabili domane all' esame
Orale... Vedi di più

Esame di Arichitettura dei Calcolatori docente Prof. U. Scafuri

Anteprima

ESTRATTO DOCUMENTO

I due output posso essere espressi come:

SOMMA: ( !A!BC ) + ( !AB!C ) + ( ABC ) + ( A!B!C )

RIPORTO: AB + AC + BC

Nel caso della realizzazione di un sommatore a 32 bit o oltre, si accumula un ritardo nel passaggio di bit in

maniera crescente. Se i valori di riporto potessero essere determinati senza dover passare per tutti gli stadi

precedenti, allora ciascun sommatore a bit singolo potrebbe funzionare in modo indipendente evitando

l' accumulo del ritardo di propagazione. Il seguente risultato può essere ottenuto con un approccio noto come

previsione di riporto ( carry look ahead ). Per comprendere questa tecnica, consideriamo per esempio un

sommatore di a 4 bit:

Abbiamo: C = A B ;

0 0 0

C = A B + A A B + B A B ;

1 1 1 1 0 0 1 0 0

Seguendo la stessa procedura si ottiene:

C = A B + A A B + A A A B + A B A B + B A B + B A A A + B B A B ;

2 2 2 2 1 1 2 1 0 0 2 1 0 0 2 1 1 2 1 0 0 2 1 0 0

Ogni termine di riporto può essere espresso nella forma SOP in funzione degli input originari,

indipendentemente dai riporti. Si verificano, pertanto, solo due livelli di ritardo di porta, senza alcuna

influenza da parte della lunghezza del sommatore.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 9

Letch e Flip – Flop

I latch e i flip flop sono circuiti digitali sequenziali che hanno il compito di memorizzare un bit.

Un circuito digitale si dice sequenziale se l'uscita dipende dagli ingressi applicati e dallo stato precedente

della stessa uscita. Un circuito sequenziale, pertanto, deve ricordare il suo stato precedente e quindi deve

possedere uno o più elementi di memoria. I circuiti digitali si dividono in due fondamentali categorie:

1. combinatori ( il valore dell'uscita dipende solo dal valore dei bit applicati in ingresso );

2. sequenziali ( il valore dell'uscita dipende anche dal suo stato precedente ).

I latch e i flip-flop sono noti, anche, come multivibratori bistabili perché ciascuno degli stati logici 0 e 1 può

essere reso stabile nel tempo.I multivibratori si dividono in:

astabili ( nessuno stato stabile - ad esempio i generatori di onde quadre );

• monostabili ( un solo stato stabile - ad esempio i temporizzatori );

• bistabili ( due possibili stati stabili - ad esempio una cella di memoria ).

LATCH SR ( Set-Reset )

Il più semplice dispositivo di memoria è il latch Set-Reset. Esso possiede due ingressi denominati Set

e Reset ed una uscita indicata con Q. Occorre precisare, che in un dispositivo di memoria, l’uscita dipende

non solo dalla particolare combinazione assunta dalle variabili di ingresso ma anche dallo stato precedente

assunto dall’uscita Q. Tale stato precedente verrà indicato con Q .

n+1

LATCH SR con porte NOR

Alla luce di quanto detto si mostra in figura 1 il simbolo logico, la tabella della verità e la soluzione circuitale

a porte logiche NOR di un latch S – R.

Combinazione SR=00.

Essa è nota come combinazione di riposo poiché l’uscita conserva lo stato precedente ( Qn + 1 = Qn ).

Combinazione SR=01.

Ponendo R=1, l’uscita Q si porta a 0 indipendentemente dallo stato precedente, l’ azione effettuata sarà quella

di reset.

Combinazione SR=10.

Ponendo S=1, l’uscita Q si porta a 1 indipendentemente dallo stato precedente, l’ azione effettuata sarà

quella di set.

Combinazione SR=11.

Tale combinazione va evitata poiché da un punto di vista logico è una incongruenza: infatti non ha senso

comandare il latch per memorizzare lo 0 ( R=1 ) oppure l’1 ( S=1 ).

Conseguenze: le due uscite, in questo caso, non sono più l’una il complemento dell’altra, ed inoltre portando

contemporaneamente S ed R a 0 entrambe le uscite si porteranno ad 1 e poi a 0 e così via.

In realtà, a causa dei diversi tempi di ritardo di propagazione del segnale elettrico in ciascuna porta, uno dei

due NOR propagherà l’1 in uscita prima dell’altra porta. In conclusione diventa aleatorio il valore dell’uscita

Q che, pertanto, potrà trovarsi o a 0 o a 1. Anche per questo motivo è bene evitare l’applicazione dell’ultima

combinazione della tabella della verità: S=1 e R=1.

LATCH S-R con ENABLE

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 10

In fig.2 si mostra lo schema logico del LATCH SET RESET con ENABLE. Esso è costituito da due porte

logiche NAND, dette porte pilota, e da altre due porte NAND che realizzano il latch S R vero e proprio.

Se l’ enable ( EN ) è al livello logico 1 le porte pilota si comportano da NOT e quindi gli ingressi S ed R

sono effettivamente coincidenti con gli omonimi ingressi del generico flip - flop Set Reset.

Se, invece, l’ EN è al livello logico basso, le uscite delle due porte pilota sono al livello logico 1

indipendentemente dai valori applicati agli ingressi S e R. Per tale combinazione il "latch" a porte NAND

conserva lo stato precedente e quindi il flip - flop è insensibile ai comandi esterni applicati.

Nella tabella della verità si riporta l'uscita futura Qn+1 in funzione del clock, degli ingressi S ed R

e dallo stato presente Qn.

X rappresenta indifferentemente sia lo stato logico 0 che lo stato logico 1 .

Fig.2. - LATCH SR con ENABLE con porte NAND.

FLIP FLOP ( latch sincronizzati)

Spesso l’eventuale cambiamento di stato di un latch non si fa coincidere con l’istante in cui si modificano

i valori dei bit di ingresso, ma con l’istante in cui un ulteriore ingresso, detto ingresso di sincronismo

o ingresso di clock ( denominato con la sigla CK ), va da 1 a 0, oppure viceversa.

Un latch che funziona col clock prende il nome di flip - flop .

Il flip-flop e’ attivo su fronti ( edge triggered ) e l'eventuale modifica dello stato di uscita dipende

dal fronte positivo o di salita ( PET = Positive Edge Triggered ) o dal fronte negativo o di discesa

( NET = Negative Edge Triggered ) del segnale di clock CK. Si dice, anche, che l'uscita si aggiorna nel:

1. PET quando il clock passa da 0 a 1;

2. NET quando il clock passa da 1 a 0.

Fig.3 – Il flip-flop "a" è di tipo PET e funziona solo nell'istante t 1.

Il flip-flop "b", infine, è di tipo NET e funziona solo nell'istante t .

1

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 11

FLIP FLOP JK

Il flip-flop JK e simile al SR, ma presenta il vantaggio di non avere condizioni di corsa critica.

Infatti, l'ingresso j corrisponde all'ingresso s del SR, e l' ingresso k al reset r, e quando si ha in ingresso una

coppia di uno ( cioè j = k = 1) l'uscita commuta. Lo schema elettrico di un JK e rappresentato

in figura, e come si vede e ottenuto da un latch SR con l'aggiunta di un paio di porte AND a tre ingressi.

Il flip-flop JK e attivo solo in presenza di un segnale di clock a livello alto, come per il flip-flop SR.

Notiamo subito che con j = k = 0, le uscite s ed r delle porte P1 e P2 sono a livello basso, e pertanto il latch

SR tratteggiato non commuta. Di conseguenza, applicare j = k = 0 non fa commutare il flip-flop.

Figura: il flip – flop J

Supponiamo ora di avere le uscite y1 = 0, y2 = 1. Se poniamo j = 1 e k = 0, in presenza di un impulso di

clock otteniamo s = jy2ck = 1, r = ky1ck = 0, e cio fa commutare le uscite del SR ( e quindi anche del JK ),

ottenendo cosi nuovi valori y1 = 1, y2 = 0. Notiamo che se applichiamo gli ingressi j = 1 e k = 0 quando le

uscite sono y1 = 1, y2 = 0, otteniamo s = jy2ck = 0, r = ky1ck = 0, e le uscite non cambiano. Possiamo

pertanto dire, che con ingressi j = 1, k = 0 le uscite si portanto al valore y1 = 1, y2 = 0, oppure se hanno già

questo valore, rimangono invariate. Per ragioni di simmetria, possiamo dire che se applichiamo gli ingressi

j = 0, k = 1 le uscite si portano al valore y1 = 0, y2 = 1 oppure se hanno già questo valore, non variano.

Infine, supponiamo di avere y1 = 1, y2 = 0, e di applicare l'ingresso j = k = 1.

Si ha allora s = jy2ck = 0, r = ky1ck = 1 e cio porta le uscite al nuovo valore y1 = 0, y2 = 1.

Per simmetria, se si ha y1 = 0, y2 = 1, e si applica in corrispondenza dell' impulso di clock la combinazione di

ingresso j = k = 1, si ottiene s = 1, r = 0 e le uscite commutano, assumendo il nuovo valore y1 = 1, y2 = 0.

Notiamo che l'uscita y2 e sempre la negata di y1.

Figura: Tabella input – output del letch JK

Occorre tuttavia notare che se gli ingressi permangono ancora al valore j = k = 1, e l'impulso di clock non e

sufficientemente breve, si ha dopo pochi istanti una nuova commutazione delle uscite. Per questo motivo,

l'utilizzo di questo flip-flop e limitato ad impulsi di clock assai brevi; il segnale di clock non deve permanere

a livello alto dopo la commutazione.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 12

Il JK master-slave

Questo flip-flop e ottenuto collegando in cascata due flip-flop Jk di cui il primo e attivo quando il clock è a

livello alto, ed il secondo quando il clock e a livello basso ( infatti nel secondo flip-flop è applicato in

ingresso alle porte P5 e P6 il segnale ck ).

Figura: Il flip-flop JK master-slave

Per capire il funzionamento del flip-flop, osserviamo che quando il clock si porta dal livello basso a quello

alto, lo slave e disabilitato, in quanto le porte P5 e P6 hanno uscita nulla, e pertanto le uscite del SR slave non

cambiano, mentre il clock è a livello alto, avviene la commutazione delle uscite ya ed yb del SR master, che

coincidono con gli ingressi j2 e k2 delle porte P5 e P6. Quando il clock si riporta a livello basso, risulta

abilitata la cella slave, le cui uscite commutano in base ai valori di j2 e k2, mentre risulta disabilitata la cella

master, che non commuta più, ciò elimina il fenomeno del rischio di commutazione multipla in presenza

degli ingressi j = k = 1. Per analizzarne meglio il funzionamento, siano inizialmente y1 = 1, y2 = 0.

Applichiamo agli ingressi la combinazione j = k = 1. Portiamo il clock a livello alto. In questo modo la cella

master è abilitata, quella slave no. L'uscita di P1 è r1 = y1kck = 1, mentre quella di P2 è s1 = y2jck = 0.

La cella SR master commuta, e le sue uscite ( coincidenti con gli ingressi di P5 e P6 ) saranno j2 = ya = 0,

k2 = yb = 1. Ricordando che il clock è a livello alto, e quindi ck = 0, le uscite di P5 e P6 sono a livello basso,

da cui si vede che lo slave non commuta e rimane per il momento disabilitato.

Se ora il clock si riporta a livello basso, viene disabilitata la cella master, mentre le uscite di P5 e P6

saranno: s2 = ckj2 = 0, r2 = ckk2 = 1. La cella slave commutera, e le sue uscite varranno y1 = 0, y2 = 1,

commutando come desiderato. La tabella del flip-flop master-slave rimane sempre la stessa, che vale per

tutti i flip-flop JK, con la sola differenza, che mentre il JK semplice commuta quando il clock e a livello

alto, i JK master-slave commutano sul fronte di discesa del clock.

FLIP FLOP D

Presenta un solo ingresso denominato D e funziona nel seguente modo: quando è attivo l’ingresso di clock

l’uscita assume lo stesso valore applicato all’ ingresso D. In assenza di comando di clock l’uscita conserva lo

stato precedente indipendentemente dal valore applicato all’ ingresso D.

In fig.6 si mostra il simbolo logico e la tabella della verità del flip –flop D.

Fig.6 – Flip-flop D e relativa tabella della verità.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 13

Il flip flop D si puo’ realizzare a partire da flip flop JK utilizzando lo schema della Fig. 7

Fig. 7

In questa combinazione si tiene conto dei valori degli ingressi J e K e di quelli dello stato presente Qn e

futuro Qn+1. Per la prima combinazione, ad esempio, si ha: J = K = 0 e Qn = Qn + 1 = 0.

Si deve disegnare, pertanto, un arco orientato che parte dallo stato 0 ( stato presente Qn ) e termina nello

stesso stato 0 ( stato futuro Qn + 1 ). Si procede con lo stesso ragionamento per le altre combinazioni.

Per l'ultima combinazione si ha: J = K = 1, Qn = 1 e Qn + 1 = 0.

L'arco orientato parte dallo stato 1 e termina nello stato 0. Sull'arco orientato si scrivono i due valori degli

ingressi J e K: 11. Fig.8. - Diagramma degli stati del flip-flop JK

ABELLA DELLE TRANSIZIONI

T

Si indica col nome di tabella delle transizioni la mappa di Karnaugh in cui si inseriscono i valori che

assume lo stato futuro Qn + 1 dell'uscita in funzione degli ingressi e dello stato presente Qn.

Nel caso del flip - flop JK gli ingressi da considerare sono J e K.

Si mostra, in fig.9, la tabella delle transizioni del flip - flop JK. Essa si ricava dalla tabella della verità di

fig.4 o, indifferentemente, dal diagramma degli stati della precedente fig.8.

ig.9. - Tabella delle transizioni per un flip-flop JK.

F

Le celle in cui compare un bit coincidente col valore di

Qn ( celle con sfondo colorato ) rappresentano uno stato

stabile poiché un impulso di clock non modifica

lo stato di uscita Q. Sono stabili i due stati della prima

colonna ( JK = 00 ), lo stato superiore della seconda

colonna e lo stato inferiore della quarta colonna. Gli altri

sono stati instabili La funzione minimizzata che si

.

ricava dalla precedente tabella delle transizioni prende il

nome di equazione caratteristica e vale: Qn+1 = J·!Qn + !K·Qn. Essa si ricava raggruppando le due celle

adiacenti della prima riga in cui compare 1 e le due celle della seconda riga poste in prima e quarta colonna.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 14

Registri

I flip-flop trovano applicazione in tutti i circuiti digitali sequenziali, cioè in quei circuiti in cui le uscite,

oltre a dipendere dagli ingressi esterni, dipendono anche dallo stato interno assunto in precedenza.

In altre parole trova applicazione in tutti i dispositivi di memoria, come ad esempio i registri di memoria:

Un registro parallelo è costituito da un insieme di memorie da 1 bit che possono essere lette o scritte

• simultaneamente e vengono utilizzate per memorizzare i dati. In questo tipo di registro vengono

utilizzati generalmente i latch SR, dove un segnale di controllo regola la scrittura nel registro a partire

da linee specifiche di segnale.

Un registro a scorriemento, accetta e/o trasferisce le informazioni in modo seriale, cioè i dati sono

• in ingresso solo al flip – flop più a sinistra. Ad ogni impulso di clock, i dati vengono trasferiti verso

destra di una posizione, e il bit più a destra trasferito all' esterno.

Contatori

Un contatore è un registro in cui il valore viene incrementato di 1 modulo, la capacità stessa del registro.

n

Quindi un registro di n flip – flop può contare fino a 2 – 1. Quando si incrementa un contatore oltre il suo

valore massimo, il contatore assume il valore 0. Un esempio e dato dal program counter della CPU.

I contatori possono essere classificati in asincroni e sincroni, a seconda del loro modo di operare,

in quanto nei contatori asincroni, l' uscita di un flip – flop fa scattare un cambiamento di stato in quello

successivo, in un contatore sincrono, tutti i flip – flop cambiano il proprio stato contemporaneamente.

Ripple Counter

Un contatore asincrono detto anche ripple counter ( ovvero contatore di fonti d' onda )

In figura abbiamo l' implementazione di un contatore

da 4 bit realizzato con flip – flop J K, e un diagramma

temporale che ne illustra il comportamento.

Il diagramma è ideale, in quanto non indica i ritardi di

propagazione che si verificano nel trasferimento dei

segnali lungo i flip – flop.

L' uscita Qo fornisce il bit meno significativo.

Tale schema può essere esteso a n bit ponendo in

cascata altri flip – flop.

Il contatore è incrementato a ogni impulso di clock, gli

ingressi J e K di ogni flip – flop sono costantemente

mantenuti a 1, cio significa che, quando giunge un

impulso di clock l' uscita Q sarà invertita.

Dall' immagine possiamo notare che il cambiamento di

stato viene mostrato in concomitanza del fronte di

discesa dell' impulso di clock; questi componenti sono

noti come edge – triggered flip – flop, che consentono

un miglior controllo della temporizzazione nei circuiti

complessi.

Contatori sincroni

Lo svantaggio del ripple counter si manifesta nel ritardo di propagazione del segnale, legato al cambiamento

del valore che è proporzionato alla lunghezza del contatore asincrono. Per superare questo ritardo, le CPU,

fanno uso dei contatori sincroni, nei quali come abbimo già detto precedentemente, i flip – flop cambiano il

proprio stato contemporaneamente alla propagazione del segnale di clock.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 15

Sistemi di numereazione

Sistema Decimale

Facciamo finta di non conoscere la rappresentazione decimale posizionale dei numeri esso è basato sulle

cifre 0,1,2,3,4,5,6,7,8,9. Consideriamo ad esempio il significato del nuemro 83, con esso si intende 8 decine

più 3 unità, ossia 83 = ( 8 * 10 ) + 3 . Si dice che il sistema decimale ha una base ( o radice ) pari a 10.

Ciò significa che ogni cifra di un numero viene moltiplicata per 10 ( base ) elevato a una potenza

1 0

corrispondente alla posizione della cifra quindi alla luce di ciò diremo che 83 = ( 8 * 10 ) + ( 3 * 10 ).

Lo stesso principio vale per le frazioni, utilizzando però le potenze negative di 10, dunque il numero 0,256

-1 -2 -3

significa 2 decimi più 5 centesimi più 6 millesimi, ovvero 0,256 = ( 2 * 10 ) + ( 5 * 10 ) + ( 6 * 10 ).

In generale, il valore del numero X la cui rappresentazione decimale è ... d d d , d d d ...

2 1 0 -1 -2 -3

i

è data da X = .

Σ=d (i)∗10

Sistema Binario

Nel sistema binario, la rappresentazione dei numeri utilizza le cifre 1 e 0, dunque vengono rappresentati in

base 2 ( o detta base bianaria ). Le cifre 0 e 1 della notazione binaria assumono lo stesso significato delle

cifre espresse in notazione decimale, ovvero: 0 = 0

2 10

1 = 1

2 10

Per rappresentare numeri più grandi, così come nella notazione decimale, ogni cifra vine moltiplicato

per la base elevata alla posizione assunta dalla cifra, ad esmpio:

1 0

10 = ( 1 * 2 ) + ( 0 * 2 ) = 2

2 10

1 0

11 = ( 1 * 2 ) + ( 1 * 2 ) = 3

2 10

2 1 0

100 = ( 1 * 2 ) + ( 0 * 2 ) + ( 0 * 2 ) = 4

2 10

e la stessa proprietà che vale per i valori frazionari del sistema decimale vale anche con la base binaria,

3 0 -1 -3

consideriamo il seguente esempio: 1001,101 = 2 + 2 + 2 + 2 = 9,625

In generale, il valore del numero Y la cui rappresentazione decimale è ... b b b , b b b ...

2 1 0 -1 -2 -3

i

è data da Y = Σ=b (i)∗2

Notazione Esadecimale

Per una notazione più compatta, si può adottare la notazione esadecimale, in quanto le cifre binarie sono

raggruppate in insiemi di quattro, attribuendo un simbolo, per ogni insieme:

0000 = 0 1000 = 8

0001 = 1 1001 = 9

0010 = 2 1010 = A

0011 = 3 1011 = B

0100 = 4 1100 = C

0101 = 5 1101 = D

0110 = 6 1110 = F

0111 = 7 1111 = E

Una sequenza di cifre esadecimali è come la rappresentazione di un numero intero in base 16, ad esempio:

1 0 1 0

2C = ( 2 * 16 ) + ( C * 16 ) = ( 2 * 16 ) + ( 12 * 16 ) = 44

16 16 16 10 10

La notazione esadecimale costituisce una codifica coincisa per la rappresentazione di una qualsiasi stringa

binaria in quanto: è più compatta rispetto alla notazione binaria; nella maggiore parte dei calcolatori, i dati

occupano un multiplo di 4 bit, e dunque un multiplo di una cifra esadecimale; è semplice convertire i numeri

binari in esadecimale. Come esempio di quanto detto, si consideri la stringa binaria : 110111100001,

essa equivale a: 1101 1110 0001 = D E 1

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 16

Conversione tra notazione binaria e notazione decimale

Per convertire un numero dalla notazione binaria a quella decimale, basta moltiplicare ogni cifra binaria

la base 2 elevata all' opportuna potenza e sommare i risultati. Convertire in decimale il numero binario in

3 1 -1 -3

virgola fissa 1010,101. Parte Intera: 2 + 2 = 10 Parte Frazionaria: 2 + 2 = 0,5 + 0,125 = 625.

Quindi 1010,101 = 10,625. Per convertire inversamente, cioè da decimale a binario, la parte intera e

la parte frazionaria del numero vanno trattate diversamente l' una dall' altra.

Ad esempio proviamo a convertire il numero 12.125 in binario.

Parte intera .

12 0 12:2=6 (resto 0)

6 0 6:2=3 (resto 0)

3 1 3:2=1 (resto 1)

1 1 1:2=0 (resto 1)

0 1 2 (base 10) - - > 1100 ( base 2 )

Parte decimale : Si procede con moltiplicazioni successive.

0.125 * 2 = 0.250 (riporto 0)

0.250 * 2 = 0.500 (riporto 0)

0.500 * 2 = 1.000 (riporto 1) --> si considera solo più la parte decimale 0.000 * 2 = FINE

Ordinando i riporti al contrario, si ottiene il risultato.

0.125 (base 10) --> 0.001 (base 2)

Il risultato sarà: 12.125 (base 10) --> 1100. 001 (base 2)

Parte intera

Per la parte intera, la rappresentazione binaria è: b b b b b b ( con b = 1 o 0 ) ha valore:

m-1 m-2 0 . . . 2 1 0 i

m-1 m-2 i

( b * 2 ) + ( b * 2 ) + ... + ( b * 2 ) + b

m-1 m-2 i o

Supponendo di convertire un numero N in forma binaria, se si divide N per 2, si otterrà un quoziente N 1

e un resto R possiamo scrivere: N = 2 * N + R ( con R = 0 o 1 ).

0 1 0 0

Dividiamo il quoziente N per 2, assumendo che il nuovo quoziente sia N e il nuovo resto R , allora:

1 2 1

2 1

N = 2 * N + R ( con R = 0 o 1 ), in modo che: N = 2( 2N + R ) + R = ( N * 2 ) + ( R * 2 ) + R

1 2 1 1 2 1 0 2 1 0

Dato che N > N > N ... alla fine si produrrà un quoziente N = 1 e un resto R che vale 0 o 1.

1 2 m-1 m-1

m-1 m-1 2 1

Allora: N = ( 1 * 2 ) + ( R * 2 ) + ( R * 2 ) + ( R * 2 ) + R , chè è la rappresentazione binaria di N.

m-1 2 1 0

Parte frazionaria

Come la parte intera anche la parte frazionaria in notazione binaria è un numero con un valore compreso

tra 0 e 1 ed è rappresentato da 0 , b , b , b , ... ( con b = 1 o 0 ) assumendo il valore:

i

-1 -2 -3

-1 -2 -3

0 + ( b * 2 ) + ( b * 2 ) + ( b * 2 ) ...

-1 -2 -3

Supponendo di voler convertire il numero F ( 0 < F < 1 ) dalla notazione decimale a quella binaria, sapendo

-1 -1 -2 -3 )

che F può essere nella forma F = 2 * + ( b + 2 ) * ( b + 2 ) * ( b + 2 ...

-1 -2 -3

-1 -2 -3

Se moltiplichiamo F per 2, otteniamo: 2 * F = ( b + 2 )* ( b + 2 ) * ( b + 2 ) ...

-1 -2 -3

Dove la parte intera di 2 * FC che deve essere 0 o 1 dato che 0 < F < 1 è semplicemente b , allora si può

-1

-1 -1 -1 -1

affermare che 2 * F = b + F ( con 0 < F < 1 ) e dove F = 2 * + ( b + 2 ) * ( b + 2 ) * ( b + 2 ) ...

1

-1 1 -2 -3 -4

Per determinare b si ripete il processo precedente. L ' algoritmo di conversione implica la moltiplicazione

-2

ripetuta per la base 2. Ad ogni passo, la parte frazionaria del numero proveniente dal passo precedente

viene raddoppiata. La cifra a sinistra della virgola nel prodotto sarà 0 o 1 e contribuisce alla rappresentazione

binaria, partendo dalla cifra più significativa. La parte frazionaria del prodotto viene utilizzata come

moltiplicando al passo successivo. Questo processo potrebbe non è esatto per numeri che richiedono una

frazione binaria molto estesa.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 17

Overflow

Siccome la dimensione e il numero di registri della memoria di un calcolatore è finito ed essendo

la cardinalità degli insiemi numerici infinita, solo un sottoinsieme finito di elementi potrà essere

rappresentato. Poichè ad esmpio con 7 bit si può decodificare il sottoinsieme [ 0, 127 ],

e presi due addendi quali 100 e 38, che sono entrambi rappresentabili, ma non ad esempio la loro somma:

100 + 38 = 138, in generale possiamo dire che tentando di rappresentare un numero nel contenuto nel

sottoinsieme di memoria si generà l' overflow del registro.

Rappresentazione Segno e Modulo

Per rappresentare le informazioni con la codifica in segno e modulo su n informazioni si ha bisogno

log2 log2(n−1)

di bit ( cioè quelli più significativi ) per il segno ed per il modulo.

(n+1) n-1

La legge di codifica è: X = | x | + ( 2 * sign ( x )), occorre lavorare separatamente sul segno e sul modulo

per effettuare la somma tra due numeri di segno discorde, occorre determinare quello con il modulo magiore

e sottrarre ad esso il modulo dell' altro. Il risultato deve assumere il segno dell' addendo maggiore in modulo.

Esempio: Si rappresenti il numero -27 in Modulo e Segno utilizzando 8 bit.

4 3 1 0

Prima di tutto occorre convertire 27 in binario: 27 = 16 + 8 + 2 + 1 = 2 +2 +2 +2 =11011

Poichè si richiede che la codifica deve essere a 8 bit, allora si procede ad aggiungere tanti zeri in testa alla

codifica binaria di 27 in modo da portare la sua lunghezza a 7 bit. 27 = 0011011, infine si aggiunge il bit

di segno che nel nostro caso è 1 perchè -27 è un numero negativo. Quindi -27 = 10011011.

Osservazione ( doppia rappresentazione dello 0 ): Nella rappressentazione in Modulo e Segno si ha una

doppia rappresentazione dello 0. Infatti, per esempio, i seguenti numeri 1000 e 0000 rappresentano 0.

Rappresentazione Eccesso K

La rappresentazione in eccesso K, fa in modo che tutti i numeri siano traslati verso l' alto di una costante K,

quindi: X = r ( x ) = x + K, essa è utile a livello hardware, in quanto ci aiuta a capire quale quantità numerica

sia la più grande, in quanto viene conservata la relazione d' ordine nelle rappresentazioni:

n –1

x' > x =>( se ) X' > X, il valore lo si rappresenta alla 2 < 1.

♣ Si tratta di una traslazione dell' intervallo di rappresentabilità verso destra.

n-1 n-1

♣ Range di valori [ -2 ... 2 -1 ]

Esempio di codifica eccesso 4 dei valori [-4,3]

0 1 2 3 4 5 6 7 ( eccesso 4 )

-4 -3 -2 -1 0 1 2 3 ( valore )

Rappresentazione numeri reali

Per rappresentare un numero x reale, con la rappresentazione in virgola mobile, lo si rappresenta come una

mantissa m e lo si moltiplica con una certa base b elevata ad un esponente e, quindi:

e

x = m * b => ( m, e ).

Rappresentazione Bit nascosto

Si parla di rappresentazione a bit nascosto, quando si ha bisogno di una rappresentazione in cui il primo

valore sia diverso da 0, poi si possono fare le operazioni desiderate, in quanto nella rappresentazione a bit di

un numero si sa per certo che il primo bit è 1, venedo per questo nascoto al registro.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 18

Codici a lunghezza fissa

Un codice viene detto a lunghezza fissa, quando viene sempre usato lo stesso numero di cifre per

la rappresentazione di qualunque valore. Ovviamente il numero di cifre da usare é in questo caso il numero

minimo di cifre per la rappresentazione del massimo valore predeterminato. Per esempio, se decidessimo

di trattare numeri non superiori a 9999, potremmo usare una rappresentazione decimale posizionale fissa

.

a 4 cifre. In tal caso il numero cinquantasette verrebbe rappresentato ( in modo unico ) come "0057"

Codici a lunghezza variabile

In informatica si parla di codici a lunghezza variabile, nei casi in cui si prevede l' uso di un numero di cifre

variabile in funzione del valore da rappresentare, ma tali per cui nell' alfabeto esistono dei simboli espliciti

usati per individuare la terminazione della rappresentazione. Un esempio concreto può essere quello della

codifica di una testo su un supporto informatico. Ciascun carattere ( lettera alfabetica maiuscola o minuscola,

cifre araba, segno di punteggiatura, spazio vuoto, ecc. ) viene rappresentato come un simbolo di un alfabeto

predefinito. Per esempio si può ricorrere al codice ASCII per definire un alfabeto di 128 simboli di base adatti

allo scopo. In termini astratti, possiamo quindi trattare una qualunque sequenza di questi caratteri come una

rappresentazione in base 128. Per poter riconoscere la fine di un testo dovremo però riservare uno dei 128

simboli alla rappresentazione della informazione "fine del testo". Solo 127 caratteri ASCII resteranno quindi

disponibili per la codifica del testo stesso.

Complemento a 1 o Complementi Diminuiti

• n-1

In quasto tipo di rappresentazione, nel caso di numeri positivi x, 0 <= x <= 2 , ossia il numero stesso,

n-1 n

cioè X = x, mentre ai numeri negativi -x, -2 <= x <= 0, il numero x = 2 – 1 - | x |, cioè devo

semplicemente cambiare gli 1 con 0 e gli 0 con 1, creando una doppia rappresentazione per 0 in quanto

( +0 corrisponde a "000...0", -0 corrisponde a "111...1").

Per esempio, se consideriamo rappresentazioni in complemento a 1 su 5 cifre binarie, "00110" rappresenta

il numero positivo 6, mentre "10101" rappresenta un numero negativo il cui valore assoluto é dato dalla

rappresentazione binaria "01010" ( ottenuta negando tutte le cifre della rappresentazione del numero ),

quindi rappresenta il numero -10.

Complemento a 2 o Complemento alla base

In questo tipo di rappresentazione, nel caso di segno positivo il numero é rappresentato in forma binaria

come nel caso dei numeri naturali senza segno. Nel caso di segno negativo allora occorre negare tutte le cifre

( ossia sostituire 0 con 1 e viceversa 1 con 0 ) e sommare la costante 1 per ottenere la rappresentazione

binaria del modulo del numero.

Per esempio, se consideriamo rappresentazioni in complemento a 2 su 5 cifre binarie, "00110" rappresenta

il numero positivo 6, mentre "10110" rappresenta un numero negativo il cui valore assoluto é dato dalla

rappresentazione binaria "01001" (ottenuta negando tutte le cifre della rappresentazione del numero),

sommata alla costante "00001" (ottenendo "01010"), quindi rappresenta il numero -10.

Si può dimostrare matematicamente che la definizione data sopra di operazione di complemento a 2

( complemento a 1 seguito da somma della costante 1) é sempre equivalente ad un'altra sequenza di due

operazioni: prima sottrarre la costante 1 e poi effettuare l'operazione di complemento a 1.

matematicamente possiamo dire che la rappresentazione in complemento alla base su n bit di x,

+ n-1 -

associa ai numeri positivi N , con 0 <= x <= 2 , il numero stesso, ai numeri negativi N ,

n-1

con -2 <= x <= 0, lo si rappresenta cambiando tutti i bit dopo il primo 1, partendo da destra,

n

cioè X = 2 - | x |.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 19

Sottoinsiemi ed Archittere della Memoria Centrale

E' possibile vedere la memoria centrale come un insieme di array di parole ( stringhe di m bit ), ogni

n

parola è individuata da un indirizzo intero compreso tra 0 e N – 1, rappresentato da n bit con n : N = 2 .

Esistono due tipi di disposizione dei byte di una word e sono detti Big Endian e Little Endian.

Nella rappresentazione Little Endian, i numeri sono ordinati dal bit meno significativo, partendo dallo

indirizzo di memoria più basso, fino ad arrivare al byte piu significativo nel più alto indirizzo di memoria,

come è ben chiaro nella immagine d'' esempio:

Nella rappresentazione Big Endian, invece avviene il processo inverso, ossia i numeri sono ordinati dal byte

più significativo, partendo dall' indirizzo di memoria più basso, fino ad arrivare al bit beno significativo nel

più alto indirizzo di memoria, come è ben chiaro nell' immagine d' esempio:

Ad alto livello, un calcolatore consiste della CPU, della memoria e dei componenti di I/O, derivanti

dall' architettura di Von neumann, che è basata su tre concetti chiave:

I dati e le istruzioni risiedono in un' unica memoria di ettura e scrittura;

• I contenuti di questa memoria sono accessibili per indirizzo, indipendentemente dal tipo di

• informazione rappresentata.

L' esecuzione avviene in modo sequenziale.

Prelievo ed esecuzione elle istruzioni

All' inizio di ogni ciclo esecutivo il processore legge un' istruzione dalla memoria, usualmente in un

processore tipico, un unico registro detto program counter, contiene l' indirizzo della prossima istruzione da

prelevare, salvo diversa indicazione, il processore dopo il prelievo incrementa il program counter.

Questa sequenza può anche essere alterata, dal momento che l' istruzione una volta prelevata viene caricata

nel instruction register. L' istruzione contiene i bit che specificano l' operazione che il processore deve

compiere, il processore interpreta l' esecuzione ed esegue l' azione richiesta cioè:

Processore – Memoria: i dati possono essere trasferiti dal processore alla memoria o viceversa;

• Processore – I/O: i dati possono essere trasferiti verso una periferica o viceversa;

• Elaborazione dati: il processore può eseguire operazioni aritmetiche o logiche sui dati;

• Controllo: un' istruzione può specificare che la sequanza esecutiva venga alterata, cioè un' istruzione

• può specificare che la prossima istruzione da eseguire è quella che si trova ad un altro indirizo e non a

quello successivo all' esecuzione dell' istruzione stessa.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 20

Interrupt

Tutti i calcolatori forniscono un meccanismo che consente ad altri componenti di interrompere la normale

elaborazione del processore, fra le più comuni classi di interrupt si ha:

Programma: generato da una condizione derivante dall' esecuzione di un istruzione,

• quale un overflow o un underflow, ad esempio una divisione per zero, cioè un riferimento al di fuori

dello spazio di memoria dell' utente.

Timer: generato da un timer del processore che permette al sistema operativo di eseguire determinate

• funzioni a tempi fissati.

I/O: generato da un controllore di I/O, per segnalare l' irregolare comportamento di un operazione o

• di una condizione di errore.

Guasto Hardwere: generato da un guasto di natura hardware, quale la mancanza di accesso al disco

• rigido, perchè danneggiato.

Se in un determinato istante un interrupt prende possesso del processore esso:

sospende l' esecuzione del programma attualmente in esecuzione e salvado il suo contesto, questo

• determina la memorizzazione dell' indirizzo della prossima istruzione da eseguire ( l' attuale

contenuto del program counter) e ogni altro dato rilevante per l' attività corrente del processore.

Imposta il program counter all' indirizzo di partenza di una routine per la gestione dell' interrupt.

Il processore procede poi al ciclo di fetch e legge la prima istruzione del programma di gestione dello

interrupt, poi determina la natura dell' interrupt ed esegue le azioni necessarie. Quando la routine di gestione

termina , il processore riprende l' esecuzione del programma utente dal punto dell' avvenuta interruzione.

Se nel caso si manifestano interrupt multipli, come ad esempio: un programma potrebbe ricevere dei dati

da una linea di comunicazione e stampare i risultati. La stampante genererà un interrupt ogni volta che

completa un' operazione di stampa. Il controllore della linea di comunicazione genererà un interrupt ogni

volta che arriva un' unità di dati. Per trattare gli interrupt multipli si possono usare due approcci.

Un primo approccio e detto interrupt disabilitato, implica che il processore deve ignorare il segnale di

richiesta di interrupt, se durante questo tempo avviene un interrupt, esso rimane pendente e sarà controllato

dal processore dopo la riabilitazione degli interrupt, quindi con questo approccio gli interrupt sono gestiti in

ordine strettamente sequenziale. Lo svantaggio di quest' approccio sequenziale è che esso non tiene conto di

fattori di priorità o di tempistica.

Un secondo approccio consiste nel definire la priorità degli interrupt e consentire a un interrupt di priorità più

alta di interrompere il trattamento di un interrupt a priorità inferiore.

Appunti di Giacomo Gargiulo, per info:

giacomo.gargiulo.made4Core@gmail.com Pag 21


ACQUISTATO

6 volte

PAGINE

30

PESO

798.91 KB

AUTORE

GG4core

PUBBLICATO

+1 anno fa


DESCRIZIONE APPUNTO

Appunti di Architettura dei calcolatori basati su appunti personali del publisher presi alle lezioni del prof. Scafuri dell' università degli Studi Parthenope - Uniparthenope, Facoltà di Scienze e tecnologie, Corso di laurea in informatica. Scarica il file in formato PDF!

I seguenti Appunti sono stati scritti usando la seguente scaletta di papabili domane all' esame
Orale di Architettura Dei Calcolatori:

-Decodificatore
-Memoria cache
-Qualcosina sul Latch
-Registro D (Instruction Register) e funzione del memory buffer
-Differenza tra complemento a 1 e complemento a 2
-DS (Define Storage) con direttiva ORG
-Altre cose semplici su rappresentazione in binario che non ricordo
-Bit nascosto
-Codifica a lunghezza variabile e fissa
-Esercizi su floating point e su complemento a 2
-Eccesso K (o 2^n-1)
-Differenza tra fixed point e floating point
-Stack Pointer e registro A7
-Varie domande sulla memoria
-Indirizzamenti immediati, diretti e indiretti
-Differenza tra latch e flip flop
-Poche cose sull' Interrupt
-Differenza tra macchina sequenziale e combinatoria
-Registri di stato

Per chi avesse dei dubbi o altre informazioni per il miglioramento dei seguenti appunti è pregato di scrivermi, risponderò nel lasso di tempo a me più breve possibile


DETTAGLI
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2016-2017

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GG4core di informazioni apprese con la frequenza delle lezioni di Arichitettura dei Calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Parthenope - Uniparthenope o del prof Scafuri Umberto.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in informatica

Esame Svolti Laboratorio Architettura dei Calcolatori
Esercitazione
Appunti Economia E Organizzazione Aziendale
Appunto