Architettura dei calcolatori elettronici
La macchina di Von Neumann
Nella lezione 1 abbiamo fatto il disegno, della macchina di Von Neumann, che era costituito da una unità di ingresso, una memoria, una unità di uscita e dalla CPU che a sua volta e' costituita da una unità logico-aritmetica, da un'unità di controllo e da un certo numero di registri . Le frecce della fig. rappresentano il Bus di comunicazione tra le varie unità. L'unità di controllo ha la capacità di governare il funzionamento complessivo della macchina attraverso il controllo dell'esecuzione delle singole istruzioni di un programma. Le unità di input ed output sono note anche con il nome di periferiche.
Precisazioni
MC : è l'area di lavoro che contiene dati e istruzioni da usare.
CPU : usa quel che c'e' in memoria centrale per eseguire operazioni di trasferimento e di calcolo.
I : acquisizione di nuovi dati che vanno in memoria centrale.
O : dati da memoria centrale all'esterno
MS : memorizzazione permanente dei dati
La Memoria centrale del calcolatore e rappresentazione delle informazioni
L'informazione elementare prende il nome di bit (binary digit) e può assumere il valore zero od il valore uno. Dal punto di vista fisico tale informazione è realizzata in memoria con dispositivi a due stati (FLIP-FLOP) , es. stato spento 0, stato acceso 1.
Possiamo schematizzare ciò dicendo che :
il bit vale 0 se è NO, FALSO, SPENTO, NON PASSA CORRENTE.
Il bit vale 1 se è SI, VERO, ACCESO, PASSA CORRENTE.
La memoria è una struttura mono-dimensionale suddivisa in celle di dimensione fissa. Ogni cella può essere individuata univocamente mediante un' indirizzo (numerico) ed è costituita da una sequenza di k valori binari (valori 0 e 1).
Quindi abbiamo detto che un bit o meglio il circuito fisico che lo realizza è già sufficiente a rappresentare due informazioni numeriche 0 oppure 1 .
Tanti bit implicano tante informazioni distinte.
Esempio se abbiamo 2 bit possiamo rappresentare i numeri da 0 fino a 3 , non di più! ; con 2 bit rappresento 00, 01, 10, 11 rispettivamente: 0, 1, 2, 3. Il numero 4 con 2 bit non lo si può rappresentare.
Nel caso che la MC avesse una capacità di 3 bit potrei rappresentare 8 informazioni diverse ad esempio i numeri da 0 fino a 7.
000, 001, 010, 011,100, 101, 110, 111 .
Con 4 bit si rappresentano (2 ^ 4) informazioni diverse.
Ad esempio tutti i numeri decimali che vanno da 0 fino a 15. In generale con n bit si rappresentano (2 ^ n) informazioni diverse. Se le informazioni sono numeri, si riescono a rappresentare tutti i numeri compresi fra 0 e (2 ^ (n) -1) estremi inclusi.
Tabella 2.1 Codifica binaria dei numeri naturali tra 0 e 31con 5 bit
0 | 00000 | 8 | 01000 | 16 | 10000 | 24 | 11000 |
1 | 00001 | 9 | 01001 | 17 | 10001 | 25 | 11001 |
2 | 00010 | 10 | 01010 | 18 | 10010 | 26 | 11010 |
3 | 00011 | 11 | 01011 | 19 | 10011 | 27 | 11011 |
4 | 00100 | 12 | 01100 | 20 | 10100 | 28 | 11100 |
5 | 00101 | 13 | 01101 | 21 | 10101 | 29 | 11101 |
6 | 00110 | 14 | 01110 | 22 | 10110 | 30 | 11110 |
7 | 00111 | 15 | 01111 | 23 | 10111 | 31 | 11111 |
La codifica di ogni dato avviene con sequenze di bit.
In realtà la memoria centrale contiene centinaia di milioni di bit, questo implica che si possono rappresentare molte informazioni. Per comodità si indicano con il termine di byte gruppi di 8 bit e con word gruppi di 16/32 bit. Quindi abbiamo detto che la MC è immaginabile come un insieme di celle indirizzabili (ogni cella o locazione di memoria è distinta dalle altre da un numero detto indirizzo ) in cui l'indirizzo (ADDRESS) è un numero progressivo. Ad ogni cella corrisponde la coppia < indirizzo, valore >
Tabella 2.2
cella n. 125218 | < indirizzo , valore > | " |
cella n. 125219 | " | " |
cella n. 125220 | " | " |
cella n. 125221 | " | " |
Specificando un indirizzo la CPU può accedere alla cella corrispondente per vedere l'informazione contenuta e memorizzare una informazione (numerica) nella cella.
Accedere ad un dato ( informazione ) significa quindi selezionare mediante l'indirizzo la cella in cui esso è memorizzato e prelevarne il valore. Il valore della cella è sempre una stringa binaria (sequenza di bit). Per la memorizzazione di un dato, bisogna stabilire l'indirizzo della cella in cui si vuole introdurlo.
La MC è costituita da RAM (random access memory) memoria ad accesso diretto od uniforme, poichè il tempo per accedervi è costante, cioè non dipende dalla posizione della cella nella RAM. Il tempo di accesso, cioè il periodo di tempo che passa tra quando si chiede una informazione e quando tale informazione viene resa disponibile, nelle Ram dell'ultima generazione è inferiore ai 10 ns. Anche le ROM (read only memory) fanno parte della MC, ma non vi si possono memorizzare nuovi valori; la RAM quando si spegne il computer si smemorizza, mentre la ROM conserva le informazioni ivi contenute.
Schema dell ' Unità di Memoria Centrale
La comunicazione fra la memoria ed il BUS avviene attraverso i Registri , cioè aree di memorizzazione aventi tale compito. Precisamente attraverso il registro degli indirizzi AR ( ADDRESS REGISTER ) ed il registro dati DR ( DATA REGISTER ).
E' appunto attraverso questi due registri che avviene: il prelievo del contenuto di una cella di memoria ( la lettura, che non distrugge il contenuto della cella ) e la scrittura in una cella ( che cancella il contenuto precedente della cella ).
Il registro AR e la memoria hanno una correlazione, nel senso che se il registro è formato da 32 bit la memoria non può avere un numero di celle maggiore di ( 2 ^ 32), perchè il massimo numero di indirizzi che si possono rappresentare con 32 bit è appunto ( 2 ^ 32). Il blocco DECODIF. "Decodificatore di indirizzi", ha il compito di selezionare tra tutte le celle della memoria, quella cella che ha l'indirizzo contenuto nel registro AR.
Più è grande la MC, più grandi e complessi saranno i programmi e la quantità di dati che essa potrà contenere.
Le dimensioni delle moderne memorie Ram (da home computer) sono 32, 64, 128, 256 Mb (megabyte).
Dove 1 Kb = 2 ^ 10 byte ( 2 elevato 10) = 1024 byte. 1Mb = (2^10 Kb) = (2 ^ 20 ) byte = 1024x1024 byte. 1 Gb ( 1 gigabyte) = (2^ 10 Mb ) = (2 ^ 30 byte).