Organizzazione di un computer - Il modello di von Neumann
Il modello (o architettura) di von Neumann rappresenta in modo molto schematico le principali componenti hardware di un computer e le loro interconnessioni. I computer moderni sono ormai molto più complessi del modello ma questo mantiene il suo interesse come punto di partenza prima di affrontare architetture più complesse e in ogni caso come modello "virtuale" e riferimento per il programmatore.
Il suo schema di massima è rappresentato in fig. 1.
Fig. 1: Rappresentazione a blocchi dell' architettura di von Neumann. A strettto rigore l' indicazione della memoria ROM non è essenziale
per la descrizione dell' architettura ma ne chiarisce il ruolo nei computer moderni. I controller "I/O n" realizzano un' interfaccia uniforme tra CPU e periferiche di input-output.
-
unità (periferica) di input : la sorgente dell' informazione da
elaborare. P. es. la tastiera, un microfono, una webcam, una chiavetta usb, il disco rigido, un CD, uno scanner, ...
-
unità (periferica) di output: dove va l' informazione elaborata. P.es.
lo schermo, un altoparlante, un proiettore, una chiavetta usb, il disco rigido, un CD, una stampante, ....
-
unità logico-aritmetica (Arithmetic Logic Unit: ALU) : la
parte dei circuiti del processore cui sono demandate le funzioni necessarie
a svolgere operazioni logiche (AND, OR, XOR,...) ed aritmetiche (operazioni, confronti,...) sui dati.
-
unità di controllo : la parte del processore cui sono demandate
le operazioni connesse alla lettura, decodifica ed inizio dell '
esecuzione delle istruzioni.
-
memoria : circuiti in grado di immagazzinare le istruzioni
ed i dati relativi ai programmi in esecuzione. Normalmente, nella
configurazione
più semplice, è costituita da una parte non modificabile ed una
modificabile. Quella non modificabile (ROM, Read Only Memory, in senso
stretto) o modificabile solo tramite processi particolari (ROM in senso
lato che
comprende memorie scrivibili una sola volta, come le PROM e OTPROM, e
memorie riscrivibili più volte, come le EPROM, EEPROM, EAROM e flash
ROM)
contiene istruzioni necessarie all' avvio del computer
quando questo viene "acceso" o al suo funzionamento di base (firmware).
La parte modificabile della memoria (RAM) è dove risiedono
tutti i programmi in esecuzione (dal sistema operativo alle
applicazioni
utente) ed i dati relativi.
-
memoria secondaria : dispositivo per immagazzinare grandi
quantità
di dati che dovranno essere letti in memoria per poter essere elaborati.
Es. dischi, floppy disk, nastri. In realtà la memoria secondaria così
definita risulta far parte delle periferiche di input/output
-
bus di sistema: dispositivo di interconnessione tra le componenti del computer.
Nella versione più semplice è costituito da elementi conduttori.
Unità di controllo, ALU e registri ( circuiti in grado di
comportarsi come area di lavoro per gli stadi intermedi dell'
elaborazione ad accesso estremamente veloce) sono tra i principali
componenti del
processore (CPU: central processing unit). La CPU è connessa alla
memoria (RAM) mediante il canale di comunicazione interna del processore
(BUS).
Fig.2: Schema di massima della CPU con indicazione delle principali componenti (registri, unità di controllo,
ALU, clock)
I computer reali possono differire alquanto dal modello di von
Neumann. Per esempio, nei computer attuali tra la RAM e il processore
possono esser presenti memorie ausiliarie ad accesso via via piu' rapido
avvicinandosi al processore ( memorie cache ) ideate per ottimizzare la
velocità di accesso ai dati durante l' elaborazione.
Si possono avere organizzazioni molto diverse tra loro e con aggiunti svariati
livelli di complessità. Per una grandissima classe di elaboratori
reali però, il modello costituisce una schematizzazione utilissima
per la comprensione dei meccanismi di base.
Il modello cioè definisce una macchina "virtuale" nel senso che
hardware e software diversi possono concorrere per dare l' illusione di
un' organizzazione secondo il modello di von Neumann anche in presenza
di organizzazioni dell' HW realmente differenti.
Schema logico di una RAM
Dal punto di vista logico un RAM può essere pensata come un sequenza unidimensionale di locazioni di memoria, ciascuna individuata da un indice intero (indirizzo della locazione di memoria) e da un numero prefissato di byte.
Fig. 3: Rappresentazione schematica della memoria come sequenza di locazioni.
Evoluzione dei computers dal punto di vista della modalità
di interazione
-
primo periodo: un' applicazione alla volta che controllava integralmente
le risorse della macchina.
-
avvento dei sistemi operativi (S.O.)
-
I sitemi operativi sono programmi speciali che facilitano l' utilizzo del
computer gestendo le risorse in modo da permettere: l' illusione di un'
esecuzione simultanea, il caricamento in memoria di più programmi
simultaneamente, la protezione degli spazi di memoria riservati ad un'
applicazione rispetto alle operazioni di scrittura di altre applicazioni
e molte altre funzioni necessarie per l' utilizzo del sistema.
-
Caratteristihe dei S.O. moderni sono:
-
multiprogrammazione : condivisione delle risorse di un computer
permettendo la coesistenza di più processi (programmi diversi
in esecuzione).
-
timesharing (condivisione di tempo): il processore dedica
una parte del proprio tempo ad ogni applicazione, in sequenza. Quindi,
se l' applicazione non è terminata prima, dopo un certo tempo
prefissato, il controllo passa ad eseguire le istruzioni relative ad un
altro processo.
-
multiutenza il S.O. gestisce risorse appartenenti a utenti
diversi, implementando tutte le necessarie politiche di identificazione
degli utenti, protezione dati, restrizioni di accessi etc.
-
interfacce grafiche
-
la crescente potenza dell' hardware viene parzialmente dedicata a gestire
tutto quanto permette un' interazione con l' elaboratore basata su
simboli grafici (sperabilmente) intuitivi piuttosto che dover
ricordare sintassi di comandi più o meno complessi.
Esecuzione di programmi
Un particolare hardware sarà caratterizzato da un ben preciso
insieme di istruzioni macchina ovvero di sequenze di numeri binari che
codificano le istruzioni elementari possibili per un dato processore o
famiglia di processori. L' insieme delle configurazioni hardware compatibili
con un determinato insieme di istruzioni macchina viene definito un' architettura
di elaborazione.
Sequenze di istruzioni macchina concatenate in modo da permettere particolari
elaborazioni costituiscomo le applicazioni (o programmi).
Perché un' applicazione possa essere eseguita, è necessario
che essa o parte di essa sia copiata nella memoria (RAM) del processore
e che le istruzioni siano eseguibili dal processore.
L' insieme delle istruzioni e dati corrispondenti ad un programma caricato
in memoria per l' esecuzione è detto processo.
L' esecuzione delle istruzioni di un processo è sequenziale
a meno di istruzioni che esplicitamente rompano tale sequenza.
La memoria di un elaboratore può essere pensata come uno spazio
di indirizzi uni-dimensionale. Ogni indirizzo corrisponde ad una certo
spazio in cui si possono leggere o scrivere dati in quantità di
lunghezza predeterminata.
I programmi accedono e modificano i dati in memoria mediante l' indirizzo
dell' area di memoria che li contiene.