Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di:...

31
Com’è fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Un’unità di Elaborazione (CPU) Memoria Centrale (RAM) per istruzioni e dati memorizzati come sequenze di dati Periferiche Bus di Sistema

Transcript of Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di:...

Page 1: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Com’è fatto un elaboratore? Elaboratori basati sulla

Architettura di Von Neumannche consiste di: Un’unità di Elaborazione (CPU) Memoria Centrale (RAM) per istruzioni e

dati memorizzati come sequenze di dati Periferiche Bus di Sistema

Page 2: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Programmi e dati I programmi (seq. istruzioni) e i dati

sono memorizzati in memoria di massa (lenta)

Per essere eseguito, un programma deve essere caricato in memoria centrale (veloce)

Occorre anche allocare spazio per i dati utilizzati dal programma (es. Variabili N,Ris) in memoria centrale

Page 3: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Come funziona l’elaboratore? Un programma viene caricato in memoria

centrale Si alloca lo spazio per i dati necessari al

programma La CPU estrae le istruzioni e dati dalla memoria

centrale, le decodifica e le esegue utilizzando registri interni (accesso veloce)

L’esecuzione può comportare il trasferimento di dati in input e output tra memoria centrale e periferiche attraverso il bus di sistema

L’esecuzione viene scandita dal clock

Page 4: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Memoria Centrale (RAM) Organizzata come una tabella di

celle Cella = parola di memoria Parola = sequenza di byte Es. memoria da

16 bit (2 byte) 32 bit 64 bit

Page 5: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Indirizzo di memoria Indirizzo di memoria = posizione

relativa alla prima cella della memoria La CPU utilizza due registri di controllo:

Registro di indirizzamento (RI) serve per recuperare le parole di

memoria Registro dati (RD)

mantiene dati input e output

Page 6: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Funzionamento RAM

RI RD

MEMORIA: parole da 16 bit

REG.INDIRIZZIK bit:

REG. DATI. 16 bit

012

:

K2

m12...0 K

Page 7: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Tipi di Memoria Memoria RAM (Random Access):

Volatile, veloce, utilizzata per dalla CPU Memoria ROM (Read only):

Si può solo leggere, per operazioni critiche

Memoria EROM, EPROM: Cancellabili, cancellabili e

programmabili

Page 8: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

CPU: Central Processing Unit Rappresenta il cuore

dell’elaboratore Unità Aritmetico-Logica (ALU)

Circuiti per calcolo vero e proprio Registri

Accumulatore, Program Counter, ... Decodificatore di istruzioni

Tabella che estrae istruzioni

Page 9: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Registri Registro istruzione corrente (RIC)

contiene l’istruzione correntemente eseguita Contatore di Programma (PC)

indirizzo della prossima istruzione da eseguire Registro interruzioni (RINT)

contiene informazioni riguardo lo status delle periferiche

Accumulatore (ACC) Contiene valori utilizzati durante operazioni

Page 10: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Modello Semplificato

2:1:0:

:

RAM

decoder

RIC

PC

ACC

ALU

Page 11: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Istruzioni della Macchina Le istruzioni della macchina sono

codificate in forma numerica ed inserite insieme agli altri dati nella memoria centrale

Istruzione = operazione di base sui registri e sulla RAM

Codifica delle istruzioni = Elenco ordinato Identificatore di un istruzione ~ Numero

d’ordine

Page 12: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Rappresentazione RAM Utilizzeremo la notazione

RAM[0] RAM[1] ...

Per rappresentare le celle della RAM(RAM[i]=contenuto della cella con indirizzo i)

Page 13: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Operatori e parametri Alcune istruzioni richiedono un parametro che

viene passato al momento della esecuzione Per rappresentare codice + operandi possiamo

utilizzare una codifica del tipo: In rapp. decimale: CODICE*N+OPERANDO dove

N dipende dalla grandezza delle celle di memoria

Ad es. 2*1000+5=205 identifica l’istruzione2 con parametro N=5

In binario: sequenza di bit composta da CODICE OPERANDO (es. 0010 0101)

Page 14: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Esempio di Set Istruzioni Istruzione 1 con parametro N

Nuovo valore del reg. ACC = ACC + RAM[N] Istruzione 2 con parametro N

Nuovo valore di RAM[N] = ACC Istruzione 3 con parametro N

Se ACC=0 allora nuovo PC = RAM[N] Istruzione 4 con parametro N

Nuovo valore di ACC = RAM[N] Istruzione 5: termina l’esecuzione

Page 15: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Programma in Linguaggio Macchina

Sequenza di istruzioni codificate Un programma viene interpretato infatti

sequenzialmenteattraverso il registro PC che identifica la prossima istruzione da eseguire

L’istruzione 3 (…PC = RAM[N]) permette di saltare in un qualsiasi punto del programma

Per capire meglio occore introdurre il ciclo di interpretazione dei programmi

Page 16: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Stato iniziale della macchina Supponiamo di aver caricato le

istruzioni nella RAM a partire dalla cella con indirizzo 0

Inoltre supponiamo di avere a disposizione una tabella che ci permette di recuperare l’istruzione e i relativi parameteri a partire dal suo encoding (Codice*N+Parametro)

Page 17: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Esecuzione tramite ciclo di fetch

Inizializzazione: memorizza 0 nel registro PC Ciclo di Fetch:

1. Recupera il valore nella cella con indirizzo PC nella RAM e lo memorizza nel registro RIC (registro istruzione corrente)

2. Somma 1 al valore contenuto in PC e lo memorizza in PC

3. Decodifica il valore contenuto in RIC (estrae il codice operazione e il parametro)

4. Esegui l’istruzione 5. Torna al punto 1 a meno che l’istruzione non sia

quella di `fine programma’

Page 18: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Osservazioni Il ciclo di fetch permette di eseguire

programmi in modo sequenziale: Prima istruzione RIC = RAM[0] Incremento PC Istruzione seguent RIC = RAM[1], ecc.

Posso ottenere dei cicli ottengono cambiando il valore del registro PC tramite l’istruzione 3 …PC = RAM[4] Incremento PC

Page 19: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Esempio di programma Considerate la seguente conf. iniziale della RAM:

RAM[0]= 4004 RAM[1]= 1005 RAM[2]= 2004 RAM[3]= 5 RAM[4]= 21 RAM[5]= 9

dove Istr. 1: ACC ’ = ACC + RAM[N] Istr. 2: RAM[N] ’ = ACC Istr. 4: ACC ’ = RAM[N] Istr. 5: termina esecuzione (N=parametro)

Cosa fa il programma?

Page 20: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Soluzione Il programma precedente esegue i seguenti

passi: Copia il valore della cella 4 (=21) nel reg. ACC Somma il val. della cella 5 (=9) al valore in ACC e lo

memorizza di nuovo in ACC (=30) Copia il valore del reg. ACC nella cella 4 (=30)

Alla fine abbiamo che: ACC e RAM[4] contengono 30 RAM[5] contiene ancora 9

Page 21: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Ciclo Per simulare un ciclo dobbiamo usare

Istr. 3: se ACC=0 allora PC ’=RAM[N] Istr. 6: PC ’ = RAM[N]

Esempio ciclo che va da 5 a 0: RAM[0] = 4004 (ACC=5 nota: programma come dato!) RAM[1] = 3006 (se ACC=0 go to 4) RAM[2] = 1007 (ACC’=ACC-1) RAM[3] = 6005 (go to 1) RAM[4] = 5 (halt) RAM[5] = 1 RAM[6] = 4 RAM[7] = -1

Page 22: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Moltiplicazione? Supponiamo che i valori di A ed N

siano contenuti in due celle fissate della RAM

Vogliamo scrivere un programma che calcola A*N

Provate a casa cercando di capire quali altri istruzioni vi possono servire!

Page 23: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Istruzioni e dati La CPU applica il ciclo di fetch e decodifica in modo

indiscriminato istruzioni o dati Si possono definire programmi automodificanti che

utilizzano dati come istruzioni (ad es. memorizzano dei dati in una cella e poi la interpretano come un’istruzione)

Nella macchina di Von Neumann alcuni problemi si possono risolvere solo con programmi automodificanti

Ad esempio provate a fare un programma che legge dall’esterno e scrive in una sequenza di celle(occorre modificare l’istruzione di scrittura)

Page 24: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Inizializzazione della RAM Finora abbiamo assunto che tutti i

programmi risiedono gia in memoria Un set di programmi predefiniti (Sistema

Operativo) fornito insieme all’elaboratore si occupa di caricare ed eseguire i nostri programmi

Un programma speciale chiamato Bootstrap si incarica a sua volta di caricare il sistema operativo al momento dell’accensione della macchina

Page 25: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Elaboratore Moderno

BUS

CPURAM

I/O Controller Disk Controller

DiskINPUT

OUTPUT

Page 26: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Elaboratore Moderno L’attivita della CPU e’ svincolata dagli

altri dispositivi La comunicazione avviene tramite il bus di

sistema I controllori dei dispositivi quali disco fisso

hanno la possibilità di accedere direttamente alla RAM

Altre estensioni: Co-processori dedicati a compiti specifici Cache memory (memoria veloce) Multi-processori

Page 27: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Bus di sistema Collegamento tra le varie componenti

sempre sotto il controllo della CPU Il bus viene assegnato alle

componenti per un certo intervallo di tempo in modo che possano scambiare dati Bus dati Bus indirizzi Bus comandi

Page 28: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Interfacce di ingresso/uscita Circuiti che gestiscono le

periferiche Registro dati (da e per la CPU)

collegato al bus dati Registro comandi per la periferica

collegato al bus comandi Informazioni sullo stato della

periferiche (ad es collegato al reg. RINT)

Page 29: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Periferiche: Terminali Terminali consistono di

Tastiera per acquisire dati in ingresso (input)

Video per mostrare dati immessi ed elaborati; il cursore seleziona una posizione nel video dove vengono immessi i dati

Mouse per controllare il cursore Caratteristiche: numero di colori,

dimensioni, risoluzione, capacità grafica

Page 30: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Periferiche: Stampanti Producono su carta i risultati

dell’elaboraz. Vari tipi:

A margherita Ad aghi A getto d’inchiostro Laser

Caratteristiche: velocità, risoluzione, set di caratteri, capacità grafica (colori ecc)

Page 31: Comè fatto un elaboratore? Elaboratori basati sulla Architettura di Von Neumann che consiste di: Ununità di Elaborazione (CPU) Memoria Centrale (RAM) per.

Elaboratori PC IBM-compatibile

CPU 386, 486 a 32 bit Sistema Operativi:

MS DOS (Microsotf) OS 2 (Sun)

McIntosh (Apple) Workstations Sun, HP, Apollo Sistema Operativo:

Unix