Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
001000110010 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
……
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
• Es.:
• Ciclo di lettura da memoria centrale (LOAD)
• Ciclo di scrittura in memoria centrale (STORE)
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
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)
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
Linguaggio Macchina
Microarchitettura HardWare/FirmWare
Dispositivi fisici