Sei sulla pagina 1di 36

Architettura dei calcolatori

Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell’Informazione Università di Siena Via Roma 56 – 53100 – SIENA Uff. 0577233606 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

La La macchina macchina di di Von Von Neuman Neuman

LaLa macchinamacchina didi VonVon NeumanNeuman

La macchina di Von Neumann

L’architettura 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

CPU (Central Processin Unit) Memoria centrale Il Bus di sistema Le periferiche
CPU (Central Processin Unit) Memoria centrale Il Bus di sistema Le periferiche
CPU (Central Processin Unit) Memoria centrale Il Bus di sistema Le periferiche

L’architettura di Von Neuman

CPUCPU MemoriaMemoria centralecentrale BUSBUS didi sistemasistema tastieratastiera mousemouse memoriamemoria didi
CPUCPU
MemoriaMemoria
centralecentrale
BUSBUS didi sistemasistema
tastieratastiera
mousemouse
memoriamemoria didi
massamassa
monitormonitor

Periferiche

La La memoria memoria centrale centrale

LaLa memoriamemoria centralecentrale

La memoria centrale

La memoria centrale è destinata ad accogliere il “materiale di lavoro” su cui l’elaboratore opera:

Dati ed istruzioni

Tutte le operazioni che l’elaboratore compie ed i dati su cui esse sono effettuate sono lette e scritte nella memoria centrale:

Lettura dell’istruzione 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

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 l’informazione 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à dell’elaboratore di accedere a tale cella tramite un “indirizzo” in memoria

L’indirizzo 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 2 k celle di memoria possono essere indirizzate

Si dice SPAZIO DEGLI INDIRIZZI, il range di indirizzi che possono essere utilizzati dal calcolatore:

Con 10 bit 2 10 (1024) celle di memoria

Con 20 bit 2 20 (1048576) celle di memoria

Ecc…

Lettura e scrittura

L’indirizzamento 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

k=10

0

il registro dati devono avere la stessa dimensione k=10 0 Registro indirizzi 1023 h=16 bit Cella
il registro dati devono avere la stessa dimensione k=10 0 Registro indirizzi 1023 h=16 bit Cella

Registro indirizzi

1023

h=16 bit

h=16 bit Cella di memoria indirizzata

Cella di memoria indirizzata

h=16 bit Cella di memoria indirizzata

STORE

LOAD
LOAD

h=16 bit

dimensione k=10 0 Registro indirizzi 1023 h=16 bit Cella di memoria indirizzata STORE LOAD h=16 bit

Registro dati

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 all’avvio 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

L’acronimo 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 Il BUS BUS

IlIl BUSBUS

Il bus

Il bus Il bus di sistema è costituito da un insieme di connessioni elementari, o linee,

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: ingresso/uscita:

topologicamente il BUS è un collegamento aperto, cio è non limitato ad un estremo è un collegamento aperto, cioè non limitato ad un estremo

ad esso si collegano le varie unità funzionali à funzionali

In ogni istante di tempo, però, il bus può collegare solamente due unit à . Se le altre hanno bisogno di 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 à collegate dal BUS è sempre la CPU

Il bus

Il bus è sempre sotto il controllo della CPU che seleziona l ’ interconnessione da attivare ed è 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 à entrano in azione solo se selezionate dalla CPU

Comunque ultimamente sono state introdotte periferiche intelligenti che riescono ad utilizzare il BUS senza richiedere l’ intervento della CPU (maggiore velocit à ) intervento della CPU (maggiore velocità)

In tale situazione si dice che la CPU funziona da “ master ” mentre le altre unit à assumono il che la CPU funziona da mastermentre le altre unità assumono il ruolo di slave:

architettura master-slavele altre unit à assumono il ruolo di “ slave ” : Le linee del BUS

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

bus dati, bus indirizzi, bus controlloslave ” : architettura master-slave Le linee del BUS vengono divise in tre categorie a seconda

Il bus

Il bus dati:Il bus Traferisce dati dall ’ unit à master all ’ unit à slave o viceversa

Traferisce dati dall’ unit à master all ’ unit à slave o viceversa unità master allunità slave o viceversa

Nell’ operazione STORE di memorizzazione da ti nella memoria centrale, per esempio, il dati transita operazione STORE di memorizzazione dati nella memoria centrale, per esempio, il dati transita nel bus dati in direzione CPU Memoria

Il bus indirizzi:il dati transita nel bus dati in direzione CPU Memoria Su questo bus le informazioni sono

Su questo bus le informazioni sono gli indirizzi di memoria sono gli indirizzi di memoria

Per esmepio, trasferisce l’ indirizzo contenuto nel registro indirizzi alla memoria centrale in una operazione di STORE indirizzo contenuto nel registro indirizzi alla memoria centrale in una operazione di STORE

Il bus controllo:indirizzi alla memoria centrale in una operazione di STORE Trasferisce il codice dell ’ operazione da

Trasferisce il codice dell’ operazione da eseguire alle unit à “ slave ” operazione da eseguire alle unità “slave

In una operazione di STORE, la memoria deve essere avvertita di memorizzare il dato nella locazione corretta moria deve essere avvertita di memorizzare il dato nella locazione corretta

Il bus Esempio Esempio : il bus è utilizzato per trasferire dati fra le unità

Il bus

EsempioEsempio: il bus è utilizzato per trasferire dati fra le unità funzionali

L’unità che inizia il trasferimento (in genere la CPU) fornisce l’indirizzo, che individua univocamente il dato, sulle linee del busbus indirizziindirizzi, e configura le linee del busbus controllocontrollo, inviando un comando al dispositivo che contiene il dato (es. READ)

Il dato da trasferire è reso disponibile sul busbus datidati e viene ricopiato nel dispositivo destinatario

Memoria CPU principale 0008AB38 0008AB38
Memoria
CPU
principale
0008AB38
0008AB38
destinatario Memoria CPU principale 0008AB38 0008AB38 READ=1 MEM=1 Memoria CPU principale 5F66B102 5F66B102

READ=1 MEM=1

Memoria CPU principale 5F66B102 5F66B102 0008AB38 5F66B102 READ=1 MEM=1 5F66B102
Memoria
CPU
principale
5F66B102
5F66B102
0008AB38
5F66B102
READ=1 MEM=1
5F66B102

Indirizzo a 32 bit (32 fili)

0008AB38

Dato a 32 bit (32 fili) trasferito dalla memoria principale alla CPU

La La CPU CPU

LaLa CPUCPU

La CPU La CPU CPU , Central Central Processing Processing Unit Unit , è l’unità

La CPU

La CPUCPU, CentralCentral ProcessingProcessing UnitUnit, è l’unità di elaborazione centrale

Le funzioni della CPU vengono integrate in un componente chiamato microprocessoremicroprocessore

in un componente chiamato microprocessore microprocessore La CPU lavora a N GHz: segue un ritmo, definito
in un componente chiamato microprocessore microprocessore La CPU lavora a N GHz: segue un ritmo, definito
in un componente chiamato microprocessore microprocessore La CPU lavora a N GHz: segue un ritmo, definito

La CPU lavora a N GHz: segue un ritmo, definito dall’orologio del sistema, di N miliardi di impulsi al secondo; questi impulsi determinano la velocità del computer (es., il microprocessore IntelIntel PentiumPentium IVIV 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 dell’istruzione Decodifica dell’istruzione Esecuzione dell’istruzione

La CPU è formata da varie unità funzionali:

Unità di controllo Orologio di sistema Unità Aritmetico-Logica

La CPU contiene inoltre vari registri su cui effettua le operazioni richieste

registriregistri ALUALU CUCU BUSBUS
registriregistri
ALUALU
CUCU
BUSBUS

PCPC

Program Counter

IRIR

Instruction Register

Unità funzionali della CPU

Unità di controllo (CU):

È responsabile del prelievo e della decodifica delle istruzioniUnità di controllo (CU): Si occupa inoltre di inviare i segnali di controllo sul bus per

Si occupa inoltre di inviare i segnali di controllo sul bus per i trasferimenti o le elaborazioni necessarie per l’esecuzione dell’istruzione decodificatadel prelievo e della decodifica delle istruzioni Orologio di sistema (clock): Sincronizza le operazioni

Orologio di sistema (clock):

Sincronizza le operazioni rispetto ad una data frequenza. E’ un parametro molto famoso per le

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 l’esecuzione dell’istruzione decodificata dalla CU /logiche eventualmente richieste per l’esecuzione dell’istruzione decodificata dalla CU

Lavora sui dati presenti nei registri internile operazioni aritmetico /logiche eventualmente richieste per l’esecuzione dell’istruzione decodificata dalla CU

Registri La CPU necessita di “oggetti” in cui immagazzinare temporaneamente i dati/istruzioni su cui sta

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 l’indirizzo di (DR, h bit) e registro indirizzi (AR, k bit), contengono il dato e l’indirizzo di memoria su cui effettuare l’operazione corrente

Registro istruzione corrente (CIR, h bit), contiene istante per istante l’OPCODE dell’istruzione in esecuzione in quel momento (CIR, h bit), contiene istante per istante l’OPCODE dell’istruzione in esecuzione in quel momento

Contatore di programma (PC, k bit), contiene l’indirizzo in memoria della prossima istruzione del programma in esecuzione (PC, k bit), contiene l’indirizzo 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 (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

Registri

Registri per la ALU (normalmente indicati con A e B), contengono gli operandi ed il risultato delle elaborazioni svolte (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 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 (SR), è un particolare registro in cui ogni bit assume un significato diverso, relativo al risultato delle operazione svolte dalla ALU:

BitBit didi carrycarry, indica il riporto in una operazione aritmetica

BitBit zerozero, indica la presenza di un valore nullo nel registro A

BitBit didi segnosegno, riporta il segno del risultato di un’operazione aritmetica

BitBit didi overflowoverflow, rileva la condizione di overflow che si verifica quando il risultato dell’ultima operazione della ALU supera il valore rappresentabile nel registro A (2 h )

Registri

Registro di stato (SR) A Program Counter (PC) ALU INTR B Registro istruzione corrente (CIR)
Registro di stato (SR)
A
Program Counter (PC)
ALU
INTR
B
Registro istruzione corrente (CIR)
Other 1
CU
……….
Clock
Other N

Registro dati (DR)

Registro indirizzi (AR)

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 2 8 (255) istruzioni diverse

con 16 bits (2 byte) si hanno al massimo 2 16 (65536) istruzioni diverse

Ecc…

Le Le periferiche periferiche

LeLe perifericheperiferiche

Le periferiche

Quando utilizziamo un PC è necessario poter interagire con esso:

Digitare testo, visualizzare l’output, 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 dell’elaboratore

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 quest’ultime

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 l’invio

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

tramite gli interrupt ed il registro INTR nella CPU stessa Registro dati Rx Registro dati Tx

Registro dati Rx

Registro dati Tx

Registro Comandi

I/O Interface

il registro INTR nella CPU stessa Registro dati Rx Registro dati Tx Registro Comandi I/O Interface
il registro INTR nella CPU stessa Registro dati Rx Registro dati Tx Registro Comandi I/O Interface

Periferica

Esecuzioni Esecuzioni di di programmi programmi

EsecuzioniEsecuzioni didi programmiprogrammi

Esecuzioni di programmi

Per iniziare l’esecuzione di un programma, l’elaboratore 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, l’elaboratore acquisisce le istruzioni di programma dalla memoria e le esegue ripetendo una sequenza di operazioni 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:le esegue ripetendo una sequenza di operazioni nella CPU: Una parte contiene la sequenza di is

Una parte contiene la sequenza di istruzioni che formano il programma Una parte contiene i dati su cui le istruzioni eseguono le operazioni

la sequenza di is truzioni che formano il programma Una parte contiene i dati su cui

Esecuzioni di programmi

Esecuzioni di programmi L’esecuzione di una istruzione si compone di tre fasi distinte: L’acquisizione dalla memoria

L’esecuzione di una istruzione si compone di tre fasi distinte:

L’acquisizione dalla memoria centrale della istruzione (FETCH)

L’interpretazione (DECODIFICA)

L’esecuzione

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

a) Il contenuto del registro contatore viene trasferito nel registro indirizzi

b) Lettura del contenuto della cella puntata da AR nel registro dati (DR)

c) Il contenuto di DR viene trasferito nel registro di istruzione corrente (CIR)

Esecuzioni di programmi

1. FETCH (continua):

d) Il valore del registro PC viene incrementato di 1, in modo da puntare alla cella di memoria contenente l’istruzione seguente. Esistono tuttavia istruzioni particolari che fanno “saltare” l’esecuzione 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 “branchbranch

2. L’interpretazione (o decodifica):

Questa fase comporta l’analisi 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 dall’operazione stessa che deve essere effettuata

Le operazioni possibili sono molteplici e con il passare del tempo llinstructioninstruction setset è stato molto ampliato inserendo anche operazioni complesse (Es. radici quadrate, istruzioni grafiche).

complesse (Es. radici quadrate, istruzioni grafiche). La possibilità di avere istruzioni complesse decodificate

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 l’esecuzione (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)