Vous êtes sur la page 1sur 36

Architettura dei calcolatori

Dott. Ing. Leonardo Rigutini


Dipartimento Ingegneria dellInformazione
Universit di Siena
Via Roma 56 53100 SIENA
Uff. 0577233606
rigutini@dii.unisi.it
http://www.dii.unisi.it/~rigutini/

La macchina di Von Neuman

La macchina di Von Neumann


Larchitettura della maggior parte degli elaboratori elettronici
organizzata secondo il modello di Von Neuman, dal nome del
ricercatore Americano che durante la 2 Guerra Mondiale dedic i
suoi studi alla progettazione dei primi calcolatori elettronici
La macchina di Von Neuman costituita da quattro elementi
funzionali fondamentali:
CPU (Central Processin Unit)
Memoria centrale
Il Bus di sistema
Le periferiche

Larchitettura di Von Neuman


CPU

Memoria
centrale

BUS di sistema

tastiera

mouse

memoria di
massa

Periferiche

monitor

La memoria centrale

La memoria centrale
La memoria centrale destinata ad accogliere il materiale di
lavoro su cui lelaboratore opera:
Dati ed istruzioni

Tutte le operazioni che lelaboratore compie ed i dati su cui esse


sono effettuate sono lette e scritte nella memoria centrale:
Lettura dellistruzione ed eventualmente del dato
Esecuzione
Salvataggio risultato

Paragone con la mente umana:


Memoria centrale informazione a breve o medio termine
Memoria di massa
informazione a lungo termine

La memoria centrale
La memoria centrale in genere di dimensioni ridotte a causa
del maggiore costo rispetto alla memoria di massa:
Pi veloce

maggiore costo

E una memoria volatile, ovvero i dati memorizzati vanno persi in


caso di assenza di corrente:
necessario quindi caricare linformazione dalla memoria di massa
prima che possa essere utilizzata
necessario poi salvarla nella memoria di massa se essa dovr
essere disponibile in un secondo momento

Durante la lettura dei dati dalla memoria di massa a quella


centrale, necessario stabilire in che

La memoria centrale
Concettualmente una sequenza di celle di memoria:
ogni cella contiene una word

Le parole sono sequenze di bit che hanno significati diversi a


seconda dei casi:
dati, istruzioni, indirizzi ecc

Le celle di memoria di un calcolatore hanno tutte la stessa


capacit, viceversa calcolatori diversi possono avere dimensioni
differenti per le celle di memoria
Le celle hanno comunque lunghezza multipla della potenze del 2
di un byte:
8,16,32, 64 bit (1,2,4,8 bytes)

Indirizzamento della memoria


Ciascuna cella di memoria pu essere indirizzata:
con questo termine si intende la capacit dellelaboratore di accedere a tale
cella tramite un indirizzo in memoria

Lindirizzo di una cella semplicemente la sua posizione relativa


rispetto alla prima cella della memoria centrale, cui viene
attribuito indirizzo 0
Ogni indirizzo una parola binaria di k bit:
Quindi solamente 2k celle di memoria possono essere indirizzate

Si dice SPAZIO DEGLI INDIRIZZI, il range di indirizzi che


possono essere utilizzati dal calcolatore:
Con 10 bit
Con 20 bit
Ecc

210 (1024) celle di memoria


220 (1048576) celle di memoria

Lettura e scrittura
Lindirizzamento avviene tramite un opportuno registro detto
registro degli indirizzi che si trova nella CPU:
In generale un registro un chip capace di memorizzare una sequenza di bit

Una volta indirizzata la memoria pu essere letta e scritta:


Entrambe le operazioni utilizzano un altro registro nella CPU dove
memorizzare il dato presente nella cella di memoria (registro dati)

Lettura dalla memoria:


La CPU memorizza nel registro dati il contenuto della cella indirizzata dal
registro indirizzi (LOAD)

Scrittura in memoria:
La CPU memorizza nella cella indirizzata dal registro indirizzi il contenuto del
registro dati (STORE)

Lettura e scrittura
La cella di memoria ed il registro dati devono avere la stessa
dimensione
0
h=16 bit

STORE
Cella di memoria indirizzata

LOAD

k=10

Registro dati

Registro indirizzi
1023

h=16 bit

ROM e BIOS
Come gi accennato, normalmente la memoria centrale una
memoria volatile
Molte volte per necessario mantenere in memoria dati che non
possono essere letti dalle memorie di massa:
Il BIOS il primo software caricato allavvio del PC, quando ancora il S.O. non
stato caricato; in quel momento ancora impossibile leggere dati dalla
memoria di massa e quindi necessario che il programma che realizza il
BIOS risieda in una memoria centrale ma permanente
Solitamente accanto alla normale RAM (Random Acces Memory) vengono
utilizzate piccole memorie permanenti (ROM - Read Only Memory) che
memorizzano il BIOS

Lacronimo Read Only Memory ad oggi non pi tanto vero


dato che molte ROM sono riprogrammabili, ovvero il programma
memorizzato in esse pu essere cambiato:
Es. aggiornamento del BIOS

Il BUS

Il bus
Il bus di sistema costituito da un insieme di connessioni
elementari, o linee, lungo le quali viene trasferita informazione
Collega fra loro la CPU, la memoria e le varie periferiche di
ingresso/uscita:
topologicamente il BUS un collegamento aperto, cio non limitato
ad un estremo
ad esso si collegano le varie unit funzionali

In ogni istante di tempo, per, il bus pu collegare solamente


due unit. Se le altre hanno bisogno di utilizzare il BUS, devono
attendere che esso sia liberato dalla comunicazione corrente:
Una delle due unit collegate dal BUS sempre la CPU

Il bus
Il bus sempre sotto il controllo della CPU che seleziona
linterconnessione da attivare ed indica loperazione da compiere:
Le varie unit entrano in azione solo se selezionate dalla CPU
Comunque ultimamente sono state introdotte periferiche intelligenti che
riescono ad utilizzare il BUS senza richiedere lintervento della CPU (maggiore
velocit)

In tale situazione si dice che la CPU funziona da master mentre


le altre unit assumono il ruolo di slave:
architettura master-slave

Le linee del BUS vengono divise in tre categorie a seconda della


loro funzione:
bus dati, bus indirizzi, bus controllo

Il bus
Il bus dati:
Traferisce dati dallunit master allunit slave o viceversa
Nelloperazione STORE di memorizzazione dati nella memoria centrale, per
esempio,
il
dati
transita
nel
bus
dati
in
direzione
CPU
Memoria

Il bus indirizzi:
Su questo bus le informazioni sono gli indirizzi di memoria
Per esmepio, trasferisce lindirizzo contenuto nel registro indirizzi alla
memoria centrale in una operazione di STORE

Il bus controllo:
Trasferisce il codice delloperazione da eseguire alle unit slave
In una operazione di STORE, la memoria deve essere avvertita di
memorizzare il dato nella locazione corretta

Il bus
Esempio:
Esempio il bus utilizzato per trasferire dati fra le unit funzionali
Lunit che inizia il trasferimento (in genere la CPU) fornisce lindirizzo, che individua
univocamente il dato, sulle linee del bus indirizzi,
indirizzi e configura le linee del bus controllo,
controllo
inviando un comando al dispositivo che contiene il dato (es. READ)
Il dato da trasferire reso disponibile sul bus dati e viene ricopiato nel dispositivo
destinatario

Indirizzo a
32 bit (32 fili)

CPU
0008AB38

Memoria
principale
0008AB38

CPU
5F66B102

Memoria
principale
5F66B102

0008AB38

0008AB38
5F66B102

READ=1 MEM=1

READ=1 MEM=1
5F66B102
Dato a 32 bit (32 fili)
trasferito dalla memoria principale alla CPU

La CPU

La CPU
La CPU,
CPU Central Processing Unit,
Unit
lunit di elaborazione centrale
Le funzioni della CPU vengono
integrate in un componente
chiamato microprocessore

La CPU lavora a N GHz: segue un ritmo, definito dallorologio


del sistema, di N miliardi di impulsi al secondo; questi impulsi
determinano la velocit del computer (es., il microprocessore
Intel Pentium IV con un clock a 3 GHz temporizzato da tre
miliardi di impulsi al secondo)

La CPU
La funzione della CPU eseguire i programmi contenuti nella
memoria centrale:
Prelievo dellistruzione
Decodifica dellistruzione
Esecuzione dellistruzione

La CPU formata da varie unit funzionali:


Unit di controllo
Orologio di sistema
Unit Aritmetico-Logica

registri

La CPU contiene inoltre


vari registri su cui effettua
le operazioni richieste

PC

Program Counter

BUS

ALU

CU

IR

Instruction Register

Unit funzionali della CPU


Unit di controllo (CU):
responsabile del prelievo e della decodifica delle istruzioni
Si occupa inoltre di inviare i segnali di controllo sul bus per i trasferimenti o le
elaborazioni necessarie per lesecuzione dellistruzione decodificata

Orologio di sistema (clock):


Sincronizza le operazioni rispetto ad una data frequenza. E un parametro
molto famoso per le CPU (Pentium 3GHz)

ALU (Aritmetic and Logic Unit):


Realizza le operazioni aritmetico/logiche eventualmente richieste per
lesecuzione dellistruzione decodificata dalla CU
Lavora sui dati presenti nei registri interni

Registri
La CPU necessita di oggetti in cui immagazzinare
temporaneamente i dati/istruzioni su cui sta lavorando: i registri
I registri possono essere immaginati come celle di memoria
separate a lettura e scrittura molto rapida
Ogni registro ha una sua funzione propria
Registro dati (DR, h bit) e registro indirizzi (AR, k bit), contengono il dato e
lindirizzo di memoria su cui effettuare loperazione corrente
Registro istruzione corrente (CIR, h bit), contiene istante per istante
lOPCODE dellistruzione in esecuzione in quel momento
Contatore di programma (PC, k bit), contiene lindirizzo in memoria della
prossima istruzione del programma in esecuzione
Registro interruzioni (INTR), contiene informazioni relative allo stato di
funzionamento delle periferiche. Se una periferica deve contattare la CPU,
segnala questo fatto nel registro INTR. Es. fine di una stampa

Registri
Registri per la ALU (normalmente indicati con A e B), contengono gli operandi
ed il risultato delle elaborazioni svolte dalla ALU
Un numero elevato di registri di lavoro, molto simili ad una memoria in
miniatura in cui la CPU memorizza le istruzioni ed i dati utilizzati pi di recente
per un accesso pi rapido in futuro (CACHE)
Registro di stato (SR), un particolare registro in cui ogni bit assume un
significato diverso, relativo al risultato delle operazione svolte dalla ALU:
Bit di carry,
carry indica il riporto in una operazione aritmetica
Bit zero,
zero indica la presenza di un valore nullo nel registro A
Bit di segno,
segno riporta il segno del risultato di unoperazione aritmetica
Bit di overflow,
overflow rileva la condizione di overflow che si verifica quando il
risultato dellultima operazione della ALU supera il valore rappresentabile
nel registro A (2h)

Registri

Registro di stato (SR)


Program Counter (PC)

A
ALU

INTR
Registro istruzione corrente (CIR)

B
Other 1
.
Other N

Registro dati (DR)

Registro indirizzi (AR)

CU
Clock

Instruction Set
Il calcolatore utilizza la rappresentazione binaria per le istruzioni
ed i dati
La CPU ha un set di istruzioni predefinito in fase di progetto:
Ogni istruzione individuata da un codice operazione OP_CODE
Alcune operazioni richiedono dati su cui operare e quindi hanno bisogno di
operandi

Le istruzioni macchina ed i dati sono quindi rappresentati da


bytes:
Architetture a 8,16,32 o 64 bit

NB:
con 8 bits (1 byte) si hanno al massimo 28 (255) istruzioni diverse
con 16 bits (2 byte) si hanno al massimo 216 (65536) istruzioni diverse
Ecc

Le periferiche

Le periferiche
Quando utilizziamo un PC necessario poter interagire con esso:
Digitare testo, visualizzare loutput, stampare, ascoltare suoni.

Tutte queste operazioni sono svolte da parti separate del


calcolatore ed esterne alla CPU:
Le periferiche di I/O (input/output)

Un periferica pu essere di due tipi:


un device stupido che si limita ad eseguire un operazione una volta
comandato (es. il monitor)
un device intelligente, in grado di elaborare a sua volta i dati inviati.
Es. le schede video accelerate rielaborano la grafica vettoriale inviata dalla CPU e
costruiscono le immagini da inviare al video

Delegando molte operazioni a periferiche intelligenti, la CPU pu


guadagnare tempo per effettuare altre operazioni:
Aumento delle prestazioni globali dellelaboratore

Le interfacce I/O
Per poter colloquiare con una periferica, la CPU deve conoscere
le specifiche della periferica:
In questo modo, per, ogni tipo di periferica ed eventualmente ogni modello
potrebbero avere modi di comunicazione differenti, e la CPU dovrebbe
conoscerli tutti

Per evitare questa complicazione si usano le interfacce di I/O,


ovvero
componenti
che
gestiscono
le
periferiche
indipendentemente dal modello di questultime
Le interfacce possono esSere molto diverse tra loro:
Terminali, stampanti, hard disk, lettori ottici ecc.

Le interfacce mostrano alla CPU una interfaccia standard (o


quasi), in modo che la CPU non si debba preoccupare del
modello di periferica ma solo del tipo di interfaccia a cui essa
attaccata

Interfaccia standard
Una interfaccia I/O standard composta in genere dai seguenti
elementi:
Un registro dati della periferica (PDR), utilizzato per scambiare dati con la
periferica. Se la comunicazione con la periferica full-duplex, molte volte
vengono impiegati due registri dati, uno per la ricezione ed uno per linvio
Un esempio di comunicazione half-duplex il video, in cui i dati vengono inviati alla
periferica per essere visualizzati, mentre un esempio di periferica
full- duplex il modem

Un registro di comando per la periferica (PCR), in cui memorizzato il


comando che la periferica stessa dover eseguire
Un registro di stato della periferica (PSR), che contiene le informazione sullo
stato della periferica (es. stampante pronta a ricevere, occupata o errore)

Interfaccia standard
Il registro dati collegato al BUS dati, mentre il registro di
comando collegato al BUS di controllo
Il registro PSR, non sempre viene utilizzato, poich molte volte lo
stato segnalato dalla interfaccia stessa alla CPU tramite gli
interrupt ed il registro INTR nella CPU stessa

Registro dati Rx
Registro dati Tx
Registro Comandi
I/O Interface

Periferica

Esecuzioni di programmi

Esecuzioni di programmi
Per iniziare lesecuzione di un programma, lelaboratore deve
dapprima caricare in memoria la forma binaria del programma:
Una sequenza di parole binarie corrispondenti agli OP_CODE delle
istruzioni macchina da effettuare e ai dati su cui operare

Supponendo di iniziare dalla cella numero zero, lelaboratore


acquisisce le istruzioni di programma dalla memoria e le esegue
ripetendo una sequenza di operazioni nella CPU:
Il programma organizzato in due modi in memoria:
Una parte contiene la sequenza di istruzioni che formano il programma
Una parte contiene i dati su cui le istruzioni eseguono le operazioni

Esecuzioni di programmi
Lesecuzione di una istruzione si compone di tre fasi distinte:
Lacquisizione dalla memoria centrale della istruzione (FETCH)
Linterpretazione (DECODIFICA)
Lesecuzione

1. FETCH dell istruzione si svolge a sua volta in quattro fasi:


a)
b)
c)

Il contenuto del registro contatore viene trasferito nel registro indirizzi


Lettura del contenuto della cella puntata da AR nel registro dati (DR)
Il contenuto di DR viene trasferito nel registro di istruzione corrente (CIR)

Esecuzioni di programmi
1.

FETCH (continua):
d)

2.

Il valore del registro PC viene incrementato di 1, in modo da puntare alla


cella di memoria contenente listruzione seguente. Esistono tuttavia
istruzioni particolari che fanno saltare lesecuzione del programma in
modo non sequenziale (JUMP, JUMPE o JUMPNE): in tale situazione in PC
pu essere memorizzato un indirizzo differente da quello successivo a CIR.
Questo genere di istruzioni sono dette branch

Linterpretazione (o decodifica):
Questa fase comporta lanalisi della istruzione corrente (CIR) per scoprire
quale operazione deve essere eseguita
Viene analizzato solamente il contenuto del registro CIR

Esecuzioni di programmi
3.

Fase di esecuzione:
Questa fase ovviamente differente per ogni operazione e dipende
dalloperazione stessa che deve essere effettuata
Le operazioni possibili sono molteplici e con il passare del tempo
linstruction set stato molto ampliato inserendo anche operazioni
complesse (Es. radici quadrate, istruzioni grafiche).

La possibilit di avere istruzioni complesse decodificate nell


Instruction Set, ha generato due tipologie di processori:
RISC (Reduced Instruction Set Controller)
MAC
CISC (Completed Instruction Set Controller)
Intel

Esecuzioni di programmi
0100000000010000
0100000000010001
0100000000010010
0100000000010011
0000000000010000
0001000000010001
0110000000000000
0010000000010100
0000000000010010
0001000000010011
0110000000000000
0001000000010100
1000000000000000
0010000000010100
0101000000010100
1101000000000000

leggi un valore in ingresso e ponilo nella cella numero 16 (variabile x)


leggi un valore e ponilo nella cella numero 17 (variabile y)
leggi un valore e ponilo nella cella numero 18 (variabile z)
leggi un valore e ponilo nella cella numero 19 (variabile r)
carica il registro A con il contenuto della cella 16
carica il registro B con il contenuto della cella 17
somma i contenuti dei dei registri A e B
copia il contenuto del registro A nella cella 20 (risultato, variabile s)
carica il registro A con il contenuto della cella 18
carica il registro B con il contenuto della cella 19
somma i contenuti dei registi A e B
carica il registro B con il contenuto della cella 20
moltiplica i contenuti dei registri A e B
copia il contenuto del registro A nella cella numero 20
scrivi in output il contenuto della cella numero 20
arresta lesecuzione (HALT)
spazio per la variabile x (cella 16)
spazio per la variabile y (cella 17)
spazio per la variabile z (cella 18)
spazio per la variabile r (cella 19)
spazio per la variabile s (cella 20)

Vous aimerez peut-être aussi