Sei sulla pagina 1di 23

Architettura di Von Neumann

CPU, Bus, Interfacce unità


periferiche

1
Architettura del calcolatore

RAM ROM

MEMORIA
CPU CENTRALE

BUS INDIRIZZI

BUS DATI

BUS DI CONTROLLO

INTERFACCE

UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT

2
Esempio di RAM
indirizzi delle celle 0

Registro Indirizzi 16 bit Registro Dati


(AR) (DR)

001000110010 1001011001010010

k = 12 bit 562 16 bit


1001011001010010

cella selezionata

4.096 parole
4.095
Architettura del calcolatore

RAM ROM

MEMORIA
CPU CENTRALE

BUS INDIRIZZI

BUS DATI

BUS DI CONTROLLO

INTERFACCE

UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT

4
Modello dell’unità di elaborazione

State Register (SR)


Program
Counter (PC)
A Arithmetic
Current Instruction Logic
Register (CIR) Unit (ALU)
B

……

Control
Clock
Unit (CU)

Address Data
Register (AR) Register (DR)
Architettura del calcolatore
RAM ROM

MEMORIA
CPU CENTRALE

BUS INDIRIZZI

BUS DATI

BUS DI CONTROLLO

INTERFACCE

UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT

12
Modello del bus
• Insieme di connettori (conduttori elettrici) che trasportano bit di
informazioni collegando fra di loro l’unità di elaborazione, la
memoria e le varie interfacce di ingresso/uscita
❑ Bus Dati: trasferisce dati da master
a slave e viceversa
❑ Bus Indirizzi: trasferisce indirizzi, bus controllo
es. l’indirizzo di un dato dal registro bus indirizzi
indirizzi alla memoria, per accedere
al dato stesso bus dati
❑ Bus di Controllo:
– master -> slave: codice
dell’istruzione da eseguire (per CU AR DR
es. lettura da disco) Memoria
– slave -> master: informazioni sul centrale
CPU
successo dell’operazione
Esempio di connessione tra CPU e
memoria centrale
Modello del bus

• I trasferimenti sono gestiti dalla CPU (master/slave) e si chiamano


cicli del bus

• Es.:
• Ciclo di lettura da memoria centrale (LOAD)
• Ciclo di scrittura in memoria centrale (STORE)

• La capacità del bus determina la velocità


Architettura del calcolatore
RAM ROM

MEMORIA
CPU CENTRALE

BUS INDIRIZZI

BUS DATI

BUS DI CONTROLLO

INTERFACCE

UNITA’
HD
MM INPUT STAMPANTE PERIFERICHE
OUTPUT

18
Interfacce di I/O
(verso le periferiche)

• Consentono il
collegamento tra
elaboratore e periferiche
❑ Possono essere dispositivi
elettromeccanici
Bus Bus
Dati Controlli
Peripheral Data Peripheral Command Stato
Register (PDR) Register (PCR)
Interfaccia di una periferica

19
Linguaggio macchina
❑ L’insieme di istruzioni accettate (cioè decodificate ed
eseguite) da una CPU + il sistema di codifica

❑ Repertorio limitato, istruzioni classificabili in tre gruppi:


❑ Trasferimento dati: movimenti di dati tra CPU e

memoria e tra CPU e dispositivi di I/O


– Lettura e scrittura su periferica
– Lettura e scrittura sulla memoria

❑ Istruzioni aritmetico-logiche: operazioni richieste


alla ALU
❑ Istruzioni di controllo: operazioni che regolano
l’esecuzione del programma
Formato delle istruzioni in
linguaggio macchina
• FORMATO ISTRUZIONE:
– campo codice operativo (obbligatorio) specifica
l’operazione da eseguire

– campo operandi (opzionale) indica i dati da


utilizzare (gli operandi possono essere nessuno,
uno o due)
• Può contenere direttamente il valore o l’indirizzo della
cella che contiene il valore (riferimento a una variabile)

Cod. operativo Operandi

23
Ciclo
«Fetch, Decode, Execute»
1
•PC contiene l’indirizzo della 2
prossima istruzione Interpretazione codice
•Acquisizione prossima operativo (sequenza di
istruzione da memoria bit nel CIR)
(che viene scritta nel
Registro Istr. Corrente, CIR)
•Incremento del registro PC

3
Azioni per l’esecuzione dell’istruzione nel CIR
• operazioni ALU su operandi (indirizzi)
• operazione di salto (modifica PC)
Funzionamento scandito dall’orologio di sistema (“clock”)
Esempio di istruzioni in linguaggio
assemblatore
(o “assembly” o “assembler”)
Cod. binario Cod. simbolico Significato
0000 LOADA <op> poni in A il valore della cella <op> della RAM
0001 LOADB <op> poni in B il valore della cella <op> della RAM
0010 STOREA <op> poni nella cella <op> della RAM il
valore in A
0011 STOREB <op> poni nella cella <op> della RAM il
valore in B
0110 ADD poni in A il valore di A+B restituito dalla ALU
0111 DIF poni in A il valore di A-B restituito dalla ALU
1010 JMP <op> la prossima istr. da eseguire è nella cella <op>
1011 JMPZ <op> se A=0, la prossima istr. da eseguire è in <op>
1101 HALT fine del programma
0100 READ <op> leggi (I/O) un valore e ponilo nella cella <op>
0101 WRITE <op> scrivi (I/O) il valore contenuto nella cella <op>
0110 ... 26
Piccolo esempio di programma
assembly
Cella di mem. Cod. Oper. Operando
0 READ 8
1 READ 9
2 LOADA 8
3 LOADB 9
4 ADD
5 STOREA 8
6 WRITE 8
7 HALT
8 (INT)
9 (INT) Che cosa fa ?

27
Un altro esempio

Calcolare l’espressione (x + y) - (z + w)

Proviamo a specificarlo col nostro set di istruzioni

28
0 READ X
Il programma in 1 READ Y
2 READ Z
assembly 3 READ W
0-3: acquisizione dei dati 4 LOADA Z
16-20: spazio per rappresentare i dati 5 LOADB W
6 ADD
– le cinque variabili simboliche X, Y, Z, W, RIS
7 STOREA RIS
menzionate nel programma. Ognuna
8 LOADA X
identifica una cella di memoria
9 LOADB Y
• I nomi simbolici sono più comodi degli 10 ADD
indirizzi, ma bisogna supporre che qualcuno (il
compilatore!) gestisca la corrispondenza con
11 LOADB RIS
un numero opportuno di celle allocate per 12 DIF
rappresentare i dati 13 STOREA RIS
14 WRITE RIS
4-6 e 8-10: Somme (Z+W e X+Y) 15 HALT
7: salvataggio del risultato intermedio 16 ...int....(X)....
11: recupero del risultato intermedio 17 ...int....(Y)....
18 ...int....(Z)....
14: Visualizzazione del risultato 19 ...int....(W)....
20 ...int...(RIS)...
32
0. 0100000000010000
In linguaggio 1. 0100000000010001
2. 0100000000010010
macchina 3. 0100000000010011
4. 0000000000010010
5. 0001000000010011
6. 0110000000000000
indirizzi delle celle 7. 0010000000010100
istruzioni
8. 0000000000010000
9. 0001000000010001
codici operativi 10. 0110000000000000
11. 0001000000010100
operando significativo 12. 0111000000000000
(indirizzo della cella RIS) 13. 0010000000010100
14. 0101000000010100
15. 1101000000000000
operando non significativo 16. ................
(operazione DIF) 17. ................
18. ................ dati
19. ................
20. ................
33
Il programma in C
int main() {
int x, y, z, w, ris;
scanf("%d%d%d%d", &x, &y, &z,
&w);
ris = (x+y)-(z+w);
printf(“\n\n Il risultato e’ :
%d“, ris);
return 0;
}
34
Esecuzione della prima istruzione
(read X): fetch e decodifica
PC 00000 -> 00001

Arithmetic
Logic
CIR 0100000000010000 Unit (ALU)

Clock CU

AR 00000 0100000000010000 DR

00000 0100000000010000

10000
Esecuzione della prima istruzione
(read X)
PC 00001

Arithmetic
Logic
CIR 0100000000010000 Unit (ALU)

Clock CU

AR 10000 0000000000000111 DR

00000 0100000000010000

0000000000000111 PDR
10000 0000000000000111
Dato letto da periferica
Livelli Hardware e Software

Sistema Prenotazioni Browser Web


bancario aeree
Software applicativo
Software di utilità
Software di sistema
Sistema Operativo

Linguaggio Macchina

Microarchitettura HardWare/FirmWare
Dispositivi fisici

software applicativo: programmi e servizi che risolvono


problemi per gli utenti
software di sistema: programmi e servizi che gestiscono
il funzionamento del calcolatore (del sistema di calcolo)
Architettura del sistema operativo
• Programma di grandi dimensioni e
notevole complessità, che permette
all’utente di interagire con il Programmi utente
calcolatore
Interprete comandi

• Un insieme di programmi (moduli


File system
software) che svolgono funzioni di
Servizio Gestione delle periferiche

• Kernel: funzionalità indispensabili per Gestione della memoria


il funzionamento del sistema, che
pertanto costituiscono il nucleo del
Gestione dei processi
SO
Macchina fisica
Kernel

Potrebbero piacerti anche