I componenti fondamentali di un calcolatore
Per quanto potente e complesso sia un calcolatore, vi sono alcuni componenti di partenza che non mancano in nessuna macchina.
Si è così avuta un'architettura di riferimento per la composizione di un calcolatore che prende il nome di Architettura di Von Neumann (leggesi fon Noiman). Eu, essa consta di 5 unità funzionali: Input, Memoria, ALU, Output.
Vediamo nel dettaglio cosa sono e perché sono così indispensabili.
Il computer è nato per risolvere e semplificare problemi di vario genere, quindi abbiamo bisogno di comunicare i dati al calcolatore, li processi e restituisca il risultato all'utente.
Detto questo possiamo sintetizzarlo in uno schema.
Per fornire i dati abbiamo bisogno di determinati dispositivi come la tastiera, il mouse o quanto si dice fornire un algoritmo.
Insieme ai dati dobbiamo fornire anche un modo per risolvere il problema. Esso è un insieme di regole ordinato che individua una soluzione per un certo problema.
Abbiamo bisogno di salvare i nostri dati, anche solo temporaneamente, e per questo si usa appunto la RAM (Random Access Memory).
Questa necessità è nata dalla mancanza di capacità di memorizzazione di dati da parte dell'ALU (Arithmetic and Logic Unit), l'unità che si occupa di eseguire le operazioni aritmetiche e logiche.
A sovraintendere e coordinare le operazioni c'è la CU (Unità di Controllo) che controlla i vari percorsi e gestisce le varie operazioni tra cui anche il percorso memoria-ALU-memoria per il calcolo dei dati.
L'ultima operazione è quella di restituire in Output i dati ottenuti. Un esempio: il monitor.
Abbiamo elencato le unità funzionali senza però addentrarci, cosa che facciamo ora.
- Mouse: Inizialmente era di tipo elettromeccanico e usava una sfera che con il suo rotolamento riusciva a cambiare le coordinate (x,y). Ora il mouse è di tipo ottico. Esso è un minuscolo processore che include anche un LED che illumina la superficie sottostante; le immagini vengono inviate al processore e confrontate per determinare l'avvenuto spostamento.
- Monitor: Sfrutta la stessa tecnologia della TV, un video a scansione basato su un tubo a raggi catodici (CRT), esso scandisce un'immagine alla volta, da 30 a 75 volte al secondo. Con questo refresh rate non si avverte nessuno sfarfallio. L'immagine è composta da una matrice di elementi, i pixel.
- La memoria contiene i dati e permette di salvarli mentre essi sono in esecuzione. Vi sono due tipi di RAM: la DRAM dove gli accessi a qualsiasi area di memoria richiedono lo stesso tempo. La SRAM (Static RAM), molto più veloce delle DRAM ma più costosa. Un esempio: la cache.
- Processore: Esegue le istruzioni di un programma. Comprende due componenti fondamentali: CU e unità di elaborazione di dati (datapath), la cui combinazione viene chiamata CPU (Central Processing Unit). Il datapath esegue operazioni aritmetiche mentre la CU indica al datapath, memoria e dispositivi cosa fare in dipendenza delle istruzioni del programma.
Comunicazione tra calcolatori
Quando due entità desiderano comunicare devono utilizzare un insieme di regole comuni dette linguaggio.
L'unico che la macchina comprende è il cosiddetto linguaggio macchina che consta di due soli simboli 0,1 ovvero acceso, spento oppure alto, basso.
L'utente deve necessariamente parlare lo stesso linguaggio del calcolatore per poter comunicare. Le parole del linguaggio del calcolatore sono dette istruzioni mentre il set viene detto insieme di istruzioni.
Da quanto detto possiamo evincere che inizialmente si programmava utilizzando solo 0 e 1 ma ciò comportava una lunga serie di istruzioni per ricavarne il minimo risultato, per tale motivo si preferì costruire un linguaggio che si avvicinasse all'uomo e si allontanasse dalla macchina, il linguaggio Assembly.
Tale linguaggio, però, risultava ancora troppo vicino alla macchina ed è per questo motivo che sono stati realizzati i linguaggi ad alto livello, che permettono l'utilizzo di parole umane (come if o else) e dell'algebra.
L'utente dopo aver elaborato l'algoritmo, sviluppa il programma in un linguaggio ad alto livello tradotto poi in Assembler (dal Compilatore) ed infine attraverso l'Assemblatore si ha il codice macchina (codifica).
Sistema posizionale, conversioni
Il calcolatore utilizza solo cifre (0 e 1) mentre noi 10 (0 ..9) utilizzando un sistema pesato.
Nel sistema posizionale pesato il valore di una cifra varia a seconda della sua posizione. La cifra più a destra è quella meno significativa mentre quella a sinistra è la più significativa. Per calcolare l'esatto valore di una cifra posta in una determinata posizione bisogna moltiplicare il numero per la base elevata alla posizione che occupa all'interno del numero.
Es. 5555 = 5 uk + 5 h + 5 da + 5 u. 1 2 3
Iniziando da destra moltiplichiamo 5 * 10° + 5*10 + 5 *10 + 5*10. E quindi otteniamo 5 +50+ 500 + 5000 = 5555; ho utilizzato la base 10 perché a noi umani risulta più facile in quanto possediamo 10 dita. Con un sistema base 10 abbiamo:
2 Ii,:-li n- ai iN = an-l 10n-l + an-2 lOn- ... a1lO +a Con a; V {0, 1 }. Compattando scriviamo * lODo E E10
Generalizzando possiamo scrivere (b indica la cardinalità ovvero la base).
Rappresentazione di numeri
Quanti numeri rappresentiamo con n bit?
Risposta 2n.
Dimostriamo per induzione. Tale procedimento consta di 2 fasi: base induttiva e passo dell'induzione.
a) Base n=1 (caso più semplice) [0,1]
b) Passo: Ipotizzo che con n bit rappresento 2n numeri distinti. 1 bit rappresento 2n. Tesi: con n+1 bit rappresento 2n+1.
con n n-1 n-2 ..... 1 0 -72n
1n n-l n-2 .... 1 0 -72n+2n = 2n+
Range di valori (0 .. 2n-1)
a) Base induttiva: ip. n=1 tesi min=0; max= (2n-1)
Infatti con n=1 otteniamo bit, appunto o 0 o 1. 2 1
b) Passo dell'induzione: ip n bit min=0; max= (2n-1) tesi con n+1 bit min=0; max= (2n+1)-1
Se con n-1 bit riesco a rappresentare 2n-1 allora con n bit rappresento 2n+-1 poiché viene aggiunto come MSB il che significa che ha peso 2n che aggiunto a 2n-1 dà come risultato quanto cercato ovvero 2n-1 +2n =2n+1-1.
Conversione decimale-binario
Si divide il numero per 2 e si calcola il resto. Si prendono tutti i resti partendo dall'ultimo.
25N10 == 20o + R = 2*12 +1N o1 0N = 25 = 11001 Bin
Conversione binario-decimale
S0 = a0 + 2S = 1701
Formalmente:
S0 = a0 + 2S1 = a0 + 2a1 + 4S2 = a0 + 2a1 + 4a2 + 8S3 = a0 + 2a1 + 4a2 + 8a3 + 16S4 = a0 + 2a1 + 4a2 + 8a3 + 16a4 + 32a5 = a0 + 2a1 + 4a2 + 8a3 + 16a4 + 32a5 + 64a6 + 128a7.
Conversione binario-ottale
Per convertire un numero da binario ad ottale basta raggruppare le cifre a 3 a 3 partendo da destra (se mancano bit a sinistra se ne aggiungono quanti ne servono per avere un gruppo da 3).
Es. 001 101 111
Primo gruppo S0 = 1 *2° =1
Parto dal 1 2
Continuo con il secondo gruppo S1 = 0*2° +0*21 +1*22 =4
Terzo gruppo S2 = 0*2° + 1*21 + 1*22 =6
Quarto gruppo S3 = 1 *2° + 0*21 + 1*22 =5.
Conversione ottale-binario
Converto cifra per cifra e la scrivo su 3 bit.
Conversione hex-decimale
Per convertire da esadecimale a binario invece bisogna convertire ogni singola cifra in binario scrivendola su 4 bit.
C0A4F1C = 1100; 0=0000; A=1010; 4=0100; F=1111; 1=0001
C0A4F1 = 1100 0000 1010 0100 1111 0001
Conversione binario-hex
Raggruppo a 4 bit alla volta e converto.
Dire quanti bit sono necessari per la rappresentazione di 78, dandone opportuna motivazione.
Per rappresentare 78 sono necessari 7 bit, numero ricavato dalla formula [log2 (N +1)].
La formula è ottenuta dai seguenti passaggi:
n: max = 2n-1
n = [log2 (N +1)]. Quindi [log2 (79)]=6, ... quindi 7 bit.
Segno modulo
La rappresentazione in modulo e segno ci permette di rappresentare sia numeri positivi sia i numeri negativi. Il MSB viene posto a 0 o a 1 per indicare rispettivamente se x >0 o x<0.
La rappresentazione in mods è stata soppressa perché avrebbe portato a creare un ALU troppo complessa per via della possibilità di scrivere ±0 ed inoltre le operazioni di addizioni e sottrazioni sarebbero risultate troppo difficili ed inoltre occorrono 2 moduli differenti (addizionatore e sottrattore). Inoltre per svolgere un'operazione bisogna prima verificare i segni, salvare quello con valore assoluto maggiore, ed inoltre se sono concordi addizionare altrimenti sottrarre. Il mods dimezza il max. e è
- Dire quanti distinti numeri rappresentiamo in modulo segno con 10 bit e qual è il massimo rappresentabile, dandone opportuna motivazione.
Con 10 bit possiamo rappresentare 1024 combinazioni, numero ricavato dal calcolo 2n come visto in domanda precedente. Ciò che cambia è il massimo rappresentabile poiché con Mods abbiamo necessità di rappresentare anche il segno quindi se precedentemente abbiamo potuto affermare per induzione che con n+1 bit max= (2n-1) allora con un bit in meno ottengo (2n-1-1) quindi con 10 bit rappresento 29-1=511.
Dire qual è l'intervallo di rappresentabilità in modulo e segno su 12 bit, dandone opportuna motivazione.
Il range di valori -2047 .. +2047, numero ricavato dalla formula ±(2n-1-1). Dimostriamo per induzione quanto affermato.
a) Base induttiva: ip. n=1 tesi min=-1; max=1
Infatti con n=1 otteniamo o -1 (dato da 11) o 1 (dato da 01). 1 1
b) Passo dell'induzione: ip n bit min=-(2n-1-1); max=-(2n-1-1)
Tesi con n-1 bit min=-(2n-1-1); max=-(2n-1-1)
Se con n bit riesco a rappresentare 2n-1-1 allora con n-1 bit rappresento 2n-1-1 poiché il MSB che ha peso 2n viene perso: 2n-1 - 2n =2n-1.
Modulo e segno (il primo bit indica il segno-)
Convertire numero in 10101010 = -42
S0 = a0 + 2S1 = 42
Complemento a 2
Per evitare i problemi legati alla rappresentazione in modulo e segno è nato il complemento a 2.
Definizione
Considero una stringa: an-l an-2... .. a1 a0. È in complemento a 2 se il valore ad esso associato è:
n-l_ N"n-2 i_2 2+an-l an-2..... al ao-- an-l L...i=0 ai -
In questo caso an-l non è più un'etichetta che indica il segno come per il mods, bensì è un valore definito avendo un peso.
Intervallo di rappresentabilità
Vogliamo dimostrare che l'intervallo di rappresentabilità è 0 ... 2n-1-1 per i positivi.
Ipotizzo che an-l =0 quindi posso affermare che il numero è maggiore di 0.
Distinguiamo 2 casi: se sono tutti i bit a 0 allora è 0; se abbiamo tutti i bit a 1 allora è 2n-1-1.
Dimostriamo così quanto affermato in precedenza.
1) L'intervallo di rappresentabilità è -(2n-1-1) per i negativi.
Vogliamo dimostrare che ... Ipotizzo che an-l = 1 quindi posso affermare che il numero è negativo.
Se a; = 0 allora 2n-1 V {0, 2}E -7-n-i +
Se a; = 1 allora 2n-1 2n-1-1= -1 V {0, 2}E
Abbiamo così visto che il range di valori varia da -2n-1 a 2n-1-1. Ciò perché lo 0 è considerato solo positivo. Il complemento a 2 quindi è asimmetrico.
Quanti distinti bit rappresentiamo?
La risposta è sempre 2n.
Conversione binario-decimale
1101111=-17. Si esclude il primo bit perché vale -2n-1.
S = a5 = 5
S0 = a0 + 2S1 = 47
Calcolo la parte puramente numerica (ovvero escludo il primo bit). Il risultato è +47 a cui addiziono -26 = -64. Il risultato è quindi -64 + 47 = -17 D.
Binario
5 lN=+27 log2 28= + per il segno= 6 bit.
= =20o + R 2*13 +1N1o 0N = 27 = 01101110
Algoritmo per ricavare l'opposto di un numero
- Convertire +N in base 10.
- Eseguire il complemento bit a bit della stringa ottenuta dalla conversione.
- Sommare 1.
Es. -27N=+27=011011. Ne faccio il complemento 100100 + 1 = 100101 = -27.
Tavola pitagorica addizione
0 1
+ 0 0 1
1 0 1
ADDIZIONE
1 1 1
0 1 1
0 1 +10000
Esercizio decimale-binario
Scrivere -38 in mods e in complemento a 2.
MODS= 20o + R = 2*19 +0N10 0~ =2Q + R = 2*0+15 5N= 100110 in mods= 1100110
COMP2 +1= 1011010 ovvero -64 + 26 = -38N=0100110 Complemento 1011001
Esercizio binario-decimale
N=1010101= -21
MODS= a5 =0S5 5
S0 = a0 + 2S1 = 2110 6 + 21 = -43
COMP2 = -2 di 1010101. 0 101010 + 0000001 = 0101011 = +43
Trovare l'opposto.
Tavola della funzione addizione
Vi~: {0,n-1}
La stringa C ovvero del Carry (riporto) viene costruita passo dopo passo. Inizialmente il riporto è sempre 0, poi va calcolato.
b; S;a; C; ci+1
0 0 0 0 0
0 0 1 1 0
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 1
1 1 1 1 1
Il risultato di S; è funzione di 3 variabili: S; S; (a;,b;,C;)=S.
Schema fisico addizionatore a n bit a propagazione di riporto
O bO an-l bn-1 an-2 bn-2 al bl a l l l c0 Cn-2 Cln-nC C - s0 Sl Sn-2 Sn-1
Il problema però è la lentezza. All'istante t(0) lavora solo la cella 0, in quanto la cella attende la cella 0 che fornisca C. L'attesa in generale quindi su bit è ~t ~128. Consideriamo i vari casi: A e B maggiori, minori o uguali a 0. Lavoriamo sempre su bit.
Caso 1: A, B ≥ 0
000100 0000111 +7
000100 +4
001011 +11
Qui constatiamo che non c'è il overflow, ovvero possiamo rappresentare numero su 6 bit. In generale per verificare se c'è l'overflow basta confrontare C6,C5. Se sono uguali non c'è overflow, altrimenti sì.
Es. con OF 011111 001111 1011111 -7 il riporto finisce nel segno [overflow] 111110
Caso 2: A, B < 0
111000 011111 -1
111000 -8
110111 -9
Caso 3: A ≥ 0, B < 0
001110 0001110 +14
101111 -17
111101 -3
Caso 4: A < 0, B ≥ 0
0000010 -3
110000
101100
111010 -6
Regola dell'estensione in segno
Se abbiamo necessità di scrivere un numero su 32 bit, ma effettivamente ne occorrono di meno per rappresentare il nostro numero allora utilizziamo la regola dell'estensione in segno.
Tale regola prevede di duplicare il bit di segno m volte, dove m è il numero che occorre per completare i z bit.
Riassumendo: n bit per rappresentare il numero, m bit da aggiungere, z bit da occupare. (Z=N+M)
±7 (111)
Esempio: scrivere su 8 bit il 005: 00000111=+7; 10000111=-7. Osserviamo quindi che per Mods non abbiamo necessità di duplicare il bit bensì basta porlo come MSB per il segno.
COMP2: 00000111=+7; ne faccio il complemento: 11111000. Aggiungo 1 =11111001. Ottengo il -7.
Rappresentazione frazioni proprie
Si consideri una frazione propria, F<1.
Dobbiamo rappresentare una parte intera e una decimale.
2 1 2lon-l lOn- 10-m10 10- 10- 10-(m+l)an-l + an-2 ... al + ao, a_l + a_2 ... am-1 + a_mn-2 -mn-l -1 -2 (-m-1)
Con base 2: 2 2 2 2 2 2 2 2: an-l + an-2 ... al + ao, a_l + a_2 ... am-1 + a_m
Quante distinte frazioni rappresento?
Con m bit ottengo come al solito 2m distinte combinazioni.
Range di rappresentabilità
Il minimo rappresentabile è 1/m cioè 00000 ...... m.
Mentre il max: zim-t m-2 o m2 considero m bit tutti con valore 1: 1x~ + 1x~ +1x~ +1x ~= 2 2 2 2 1 1++ zm + .... =Ir;;(/ m= =1-zm:;::2 2
Algoritmo decimale-binario
Si cicla fin quando il risultato delle moltiplicazioni è 1.000 oppure fino ad esaurimento bit.
F=.125=F 0
2 F = 0 + .250 = a_1 + F_1
2 F_1 = 0 + .500 = a-2 + F-2
2 F_2 = 1 + .000 = a_3 + F_3
Si acquisisce da a_ ad a_m = .001
F=.217=F 0
2 F = 0 + .434 = a_l + F_l
2 F-1 = 0 + .868 = a-2 + F-2
Potremmo ancora continuare ma forse sarebbe inutile.
F=.00100. Supponiamo di avere solo 3 bit a disposizione, il risultato sarebbe .001, lo stesso di .125, questo è un problema di rappresentazione della virgola fissa.
Rappresentazione in virgola fissa
Si sceglie a priori il numero di bit da dedicare alla parte intera e a quella decimale.
Es. Lunghezza parola l=12 Kinteri=6; Kdec=6
F=101.0101. Si esegue il PADDING, ovvero si aggiungono m bit per completare la lunghezza ma il conto non cambia. I bit vanno aggiunti a sinistra per la parte intera e a destra per la frazionaria.
f ·.~\o~~ ~ &.;~~{F=000101.010100 V~k ~~.~w~ t-c'lr. . .~t~ ~cee b.-.t(~<:>e~~ ~~ ~ ~ud..-&r."\ (..).jv-Qj (À, L.. __F-(m- = F_ = a_m /2= (a.2+F.2)/2 = (1+.25)/2 = .625 -1- -/.n. <r> t?ùDY) 13 ,~- ~ -v."'t\l_V~ ..Q_~ f~-'L Q"'u...v.à;'~~..Xc....j):cL.(S._,~ ~'>~~L:F-(m-4) = F.o = a_m /2= (a _+F_ )/2 =(O+ .625)/2 = .31251 1 i][Q't.U.. .o\ff\-ti; -')- 9..!24-h-.
Virgola mobile
l · ]r"' :'(e..~~\)~-~co , "~-J-g1175*10.21 1
Consideriamo +11,75. Lo possiamo scrivere come +11,75*10° = +117,5*1
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
architettura
-
architettura degli elaboratori
-
Architettura degli elaboratori
-
Architettura degli elaboratori