Architettura di un computer
Modulo di Informatica
Dott.sa Sara Zuppiroli
A.A. 2012-2013
Modulo di Informatica ()
Architettura
A.A. 2012-2013
1 / 36
La tecnologia
Cerchiamo di capire alcuni concetti su cui si basa un
elaboratore:
l’architettura di Von Neumann come astrazione delle
architetture degli elaboratori
il modello teorico della macchina astratta
la struttura a livelli
Modulo di Informatica ()
Architettura
A.A. 2012-2013
2 / 36
L’architettura di Von Neumann
Il processore [CPU (Unità centrale di elaborazione)] si
divide a sua volta in:
I
I
Unità calcolo, nella quale uno dei sottosistemi più rilevanti è
l’unità aritmetica e logica (o ALU)
Unità di controllo
Unità di memoria, intesa sia come memoria di secondaria
che come memoria principale
Unità di input/output, tramite la quale i dati vengono
inseriti/restituiti all’utente
Bus che è il canale di comunicazioni tra tutti i componenti
Modulo di Informatica ()
Architettura
A.A. 2012-2013
3 / 36
Architettura di Von Neumann
Modulo di Informatica ()
Architettura
A.A. 2012-2013
4 / 36
Processore
La ALU esegue le operazioni aritmetiche e logiche.
L’unità di controllo permette di eseguire il ciclo
fetch-decode-execute.
I
I
Il controllo del ciclo di esecuzione è gestito attraverso il
registro Program Counter (PC), che contiene l’indirizzo di
memoria della prossima istruzione da eseguire. Le relative
operazioni di controllo sono quelle che agiscono su tale
registro, l’incremento sequenziale, o la modifica del suo
valore.
Il controllo dei dati in memoria principali avviene attraverso
registri e operazioni su tali registri.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
5 / 36
Ciclo fetch-decode-execute
Fetch: si recupera dalla memoria la prossima istruzione da
eseguire (ossia si recupera l’operazione il cui indirizzo è
memorizzato nel PC). L’istruzione viene memorizzata nel
registro istruzione.
Decode: L’istruzione presente nel registro istruzione è
decodificata attraverso circuiti logici e vengono recuperati
gli operandi dalla memoria
Execute: si esegue l’operazione (primitiva) della macchina.
Se si tratta di un’operazione logico-aritmetica si utilizzerà la
ALU e si salverà il risultato in memoria.
Il ciclo continua fino all’istruzione di STOP.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
6 / 36
Il processore
Modulo di Informatica ()
Architettura
A.A. 2012-2013
7 / 36
Qualità del processore
Il processore è il componente del calcolatore che esegue
tutte le operazioni di calcolo e la sua velocità influisce sulle
prestazioni del PC
Per stimare la velocità con cui un processore effettua i
calcoli occorre tenere conto di:
I
I
ogni quanti secondi il processore è in grado di produrre un
risultato elementare (è una frequenza e si calcola in Mhz)
quanto complesso è il calcolo di ciascun risultato e quanto
’intelligente’ è il processore nel produrlo (tipo di architettura)
Modulo di Informatica ()
Architettura
A.A. 2012-2013
8 / 36
Scheda madre
Modulo di Informatica ()
Architettura
A.A. 2012-2013
9 / 36
Gerarchia della memoria
Il computer opera utilizzando diversi tipi di memoria, che sono
organizzati in maniera gerarchica nel seguente modo:
Memoria principale: contiene dati ed istruzioni in attesa
che questi siano prelevati dal microprocessore per essere
elaborati, lavorando dunque in maniera strettamente
accoppiata con esso. Fornisce accesso ai dati molto
veloce, il costo è elevato ed è volatile. Una parte di questa
è la memoria cache.
Memoria secondaria: include tutti quei dispositivi che
consentono all’utente la memorizzazione in modo definitivo
dei dati (sia programmi, che dati). Le caratteristiche sono
quindi la permanenza dei dati (non è volatile), un tempo
maggiore per accedere ai dati, un costo inferiore.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
10 / 36
Gerarchia della memoria
Modulo di Informatica ()
Architettura
A.A. 2012-2013
11 / 36
La memoria principale
È suddivisa in:
RAM ( Random Access Memory) è la memoria in cui sono
caricati i dati che devono essere utilizzati dal calcolatore per
elaborare. La RAM è volatile, statica. Il processore
identifica le celle della RAM tramite indirizzi assegnati che
ne specificano la posizione (la memoria si rappresenta
come una stringa ordinata di elementi detti celle o parole). Il
tempo di accesso alle celle della memoria è costante.
Cache RAM, una memoria integrata nel processore, che ha
la caratteristica di essere molto veloce, ma ha un costo
elevato, vengono caricati i dati a cui il processore accede
più di frequente
ROM, (Read Only Memory) è una memoria permanente
presente sulla scheda madre, che contiene il BIOS (Basic
I/O System), cioè le istruzioni che la CPU deve caricare per
consentire l’avvio del sistema.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
12 / 36
RAM
Modulo di Informatica ()
Architettura
A.A. 2012-2013
13 / 36
La memoria secondaria(1/2)
È suddivisa in:
I dischi magnetici, composti da uno o più dischi, sono letti e
scritti mediante un braccio mobile dotato della testina di
lettura e scrittura. I dati vengono trasferiti ai dischi
magnetici tramite un buffer nella memoria centrale ed
occupano successive posizioni lungo le tracce. I settori dei
dischi vengono letti e scritti interamente utilizzando il
numero della superficie, della traccia e del settore. Il tempo
di accesso ai dischi magnetici è superiore rispetto a quello
della memoria centrale.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
14 / 36
La memoria secondaria (2/2)
È suddivisa in:
I dischi ottici, l’informazione viene registrata realizzando
modificazioni della superficie riflettente e viene letta
mediante un raggio laser che riscontra le irregolarità della
superficie riflettente. I dischi ottici sono ri-scrivibili e non.
Fanno parte di questa categoria i CD, i CD-ROM e i DVD.
I nastri magnetici consentono solo un accesso sequenziale
ai dati e di solito sono usati per operazioni di backup.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
15 / 36
HardDisck
Modulo di Informatica ()
Architettura
A.A. 2012-2013
16 / 36
Rappresentazione dei dati in memoria
Cosa sono i dati?
Nel linguaggio digitale, l’unità minima è il bit
Il bit assume solo due stati (spento 0, o acceso 1)
Il byte è costituito da 8 bit e gli stati rappresentabili sono
28 = 256
Ogni cella di memoria è denotata da un indirizzo anch’esso
individuato in maniera univoca con una serie di bit (detto
indirizzo di memoria)
Kb (kilobit) = 210 = 1024, circa l’ordine di 103
Mb (megabit) = 220 , dell’ordine di 106
Gb (gigabit) = 230 , dell’ordine di 109
Tb (terabit) = 240 , dell’ordine di 1012
Pb (petabit) = 250 dell’ordine di 1015
Modulo di Informatica ()
Architettura
A.A. 2012-2013
17 / 36
Cosa è il Bus
È un canale di comunicazione che permette a periferiche e
componenti di un sistema elettronico di trasmettere informazioni
o dati di sistema. È in grado collegare tra loro diversi dispositivi.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
18 / 36
Bus
Modulo di Informatica ()
Architettura
A.A. 2012-2013
19 / 36
La macchina astratta
È l’astrazione del concetto di calcolatore fisico quindi:
I
I
I
I
È un esecutore di istruzioni che identificano i passi di un
algoritmo
Ha una memoria associata e una sua gestione
Ha associato un proprio linguaggio con un numero finito di
istruzioni detto Linguaggio Macchina (L)
Ha un algoritmo di esecuzione e memorizzazione dei
programmi
Supponiamo di avere un linguaggio di programmazione L.
Definiamo Macchina Astratta per L un qualsiasi insieme
di strutture dati e di algoritmi che permettano di
memorizzare ed eseguire programmi scritti in L.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
20 / 36
L’interprete
È il componente che esegue le istruzioni contenute nei
programmi. Le operazioni comuni a tutti gli interpreti sono:
I
I
I
I
operazione per elaborazione dei dati primitivi
operazioni e strutture dati per il controllo della sequenza di
esecuzione
operazioni e strutture dati per il controllo del trasferimento
dei dati
operazioni e strutture dati la gestione della memoria
L’interprete esegue un ciclo per poter eseguire le istruzioni
di un algoritmo.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
21 / 36
Il ciclo di esecuzione dell’interprete
1
2
3
4
5
6
acquisisci la prossima istruzione
decodifica istruzione
acquisisci gli operandi
viene eseguita l’operazione,
memorizzato il risultato
torna a 1
Quando si da l’istruzione di STOP il ciclo termina.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
22 / 36
La macchina astratta e l’architettura di Von
Neumann
Modulo di Informatica ()
Architettura
A.A. 2012-2013
23 / 36
Un altro esempio di Macchina Astratta
La Macchina di Turing è un dispositivo che ha associati i
seguenti componenti:
Un nastro infinito su cui si possono scrivere e cancellare
caratteri appartenenti a un alfabeto finito
Una testina capace di spostarsi a destra sinistra, leggere e
scrivere sul nastro
Una serie di stati di cui alcuni sono definiti come iniziali e
alcuni come terminali (la Macchina termina quando si
incontra uno stato finale)
La funzione di transizione che dato il carattere letto dalla
testina e lo stato in cui si trova la macchina, associa un
nuovo stato, un’operazione elementare (scrivi sul nastro e/o
sposta la testina) e un nuovo carattere da scrivere sulla
testina prima di spostarsi
Modulo di Informatica ()
Architettura
A.A. 2012-2013
24 / 36
Definizione Formale MdT
La Macchina di Turing è un dispositivo definito da una quadrupla
< Q, Σb , O, δ > dove:
Q = {qs , q1 , · · · , qf } è un insieme finito di stati dove qs è lo
stato iniziale e Qf = {qf 1 , · · · , qfk } è l’insieme degli stati
finali tale che Qf ⊂ Q;
Σb = Σ ∪ {_}, dove Σ è un alfabeto finito e _ è il simbolo
bianco;
O = {→, ←} ∪ Σb è l’insieme delle operazioni possibili;
δ : (Σb × Q \ Qf ) → (O × Q) è la funzione di transizione
definita come:

(o1 , qn ) se a = a1 , q = q1




..
...
.
δ(a, q) =

(o2 , qn ) se a = a2 , q = q2



..
..
.
.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
25 / 36
La macchina astratta e la MDT
Modulo di Informatica ()
Architettura
A.A. 2012-2013
26 / 36
Un sistema a livelli
Per capire questo meccanismo useremo:
il concetto di Macchina Astratta che come abbiamo visto è
in grado di cogliere i concetti fondamentali di tecnologia
capace di eseguire un programma
Perchè si crea una pila di macchine astratte
Come sia possibile costruire una pila di macchine astratte?
Modulo di Informatica ()
Architettura
A.A. 2012-2013
27 / 36
Un sistema a livelli
Cerchiamo di capire il meccanismo dei livelli
Modulo di Informatica ()
Architettura
A.A. 2012-2013
28 / 36
Perchè abbiamo n Macchine Astratte?
Gli utenti che scrivono un programma devono utilizzare le
istruzioni di un Linguaggio che sarà poi eseguito dalla relativa
Macchina Astratta ML Se avessimo solo la Macchina Astratta
del livello Hardware (ML0 ), i programmi dovrebbero essere scritti
come una sequenza di (0,1), dove una parte di questa
sequenza sarebbe l’istruzione, un’altra i dati La struttura
gerarchica delle Macchine Astratte permette di avere istruzioni
più vicini al linguaggio naturale (quello che utilizziamo). Questo
meccanismo è reso possibile dalle successive traduzioni da un
linguaggio ad un altro fino alla traduzione del linguaggio L0 della
Macchina Astratta Hardware ML0 che esegue il programma.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
29 / 36
Come funziona la gerarchia di Macchine
Astratte?
Abbiamo a disposizione una Macchina Astratta di un generico
livello n ( MLn ) il cui linguaggio associato è Ln ed inoltre
abbiamo definito un nuovo linguaggio che chiamiamo Ln+1 . Per
definire un linguaggio abbiamo bisogno della sua sintassi e
della sua semantica. Dobbiamo pensare a come costituire una
nuova macchina astratta MLn+1 che esegua il linguaggio Ln+1 .
Avendo a disposizione MLn con le relative istruzioni che può
eseguire tale macchina astratta abbiamo due possibilità:
interpretare il linguaggio Ln+1 in Ln
compilare il linguaggio Ln+1 in Ln
In entrambi i casi avrò implementato una nuova macchina
astratta per Ln+1
Modulo di Informatica ()
Architettura
A.A. 2012-2013
30 / 36
Gerarchia Macchine Astratte
Modulo di Informatica ()
Architettura
A.A. 2012-2013
31 / 36
L’interpretare del linguaggio Ln+1
In questo caso viene scritto un programma con le istruzioni del
linguaggio Ln tale che per ogni istruzione del linguaggio Ln+1 si
abbia una sequenza di istruzioni del linguaggio Ln .
In questo modo quando si esegue un programma scritto con il
linguaggio Ln+1 si interpreta (run time/ a tempo di esecuzione)
ogni singola istruzione come una o più istruzioni del linguaggio
Ln sull’input di Ln+1 .
Quindi ogni volta che si eseguono istruzioni nel linguaggio Ln+1
queste sono re-interpretate.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
32 / 36
Il compilatore del linguaggio Ln+1
In questo caso viene riscritto un programma con le istruzioni del
linguaggio Ln partendo dalle istruzioni scritte nel linguaggio Ln+1 .
L’output del compilatore è un programma scritto in Ln . Questa
operazione viene effettuata una volta sola.
In questo modo quando si esegue un programma scritto con il
linguaggio Ln+1 si interpreta ogni singola istruzione come una o
più istruzioni del linguaggio Ln .
In questo modo l’input del nostro programma interprete è il
programma scritto in Ln+1 .
In questo caso la compilazione è separata dall’esecuzione del
programma.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
33 / 36
Compilare o Interpretare?
Interpretare
Flessibilità nella modifica del linguaggio scritto in Ln+1
È facile il debugging
Minor memoria usata
Compilare
Maggiore efficienza (il numero di operazioni a tempo di
esecuzioni è minore)
Modulo di Informatica ()
Architettura
A.A. 2012-2013
34 / 36
Nella realtà
Solitamente si ha un linguaggio che è prima compilato in un
linguaggio intermedio Li e poi interpretato dal linguaggio Li in un
linguaggio più a basso livello.
È il caso di Java, che viene prima compilato e poi interpretato.
Perchè?
Per rendere più ’portabile’ il codice.
Modulo di Informatica ()
Architettura
A.A. 2012-2013
35 / 36
Conclusione
Come è strutturato un elaboratore?
Cosa è una macchina astratta?
La struttura a livelli perchè e come?
Modulo di Informatica ()
Architettura
A.A. 2012-2013
36 / 36