Architettura dei calcolatori Architettura dei calcolatori
Moreno Marzolla
Dipartimento di Informatica—Scienza e Ingegneria (DISI) Università di Bologna https://www.moreno.marzolla.name/
Cap. 2 dispensa
Cos'è un computer?
● È un dispositivo in grado di
– Elaborare dati
– Memorizzare dati
– Trasferire dati da e verso l'esterno
– Eseguire operazioni di controllo e coordinamento tra le parti di cui è composto
I/O
Controllo
Elaborazione Memoria Ambiente
Esterno
Architettura di von Neumann
● Dati e programmi sono rappresentati allo stesso modo (da sequenze di bit) e contenuti nella stessa memoria
János Lajos Margittai Neumann, 1903—
Architettura dei calcolatori 5
Struttura di un calcolatore:
Architettura di von Neumann
Processore
(CPU) Memoria Sottosistema
di interfaccia (I/O)
Bus di sistema
Esegue le istruzioni elementari richieste dai programmi
Mantiene Dati e
Programmi Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, scheda audio, stampante, schermo, mouse...)
Elaborazione + Controllo
Memorizzazione
Trasferimento dati
Architettura a Bus
● Semplicità
– Una sola linea di connessione cui è possibile collegare più dispositivi, anziché un nuovo collegamento per ogni coppia di dispositivi che devono interagire tra loro
● Estensibilità
– Nuovi dispositivi possono essere aggiunti in modo semplice
● Standardizzazione
– È possibile definire normative che consentono a dispositivi di produttori diversi di interagire correttamente
● Limitata capacità
– Al crescere del numero dei dispositivi, il bus diventa un fattore limitante (collo di bottiglia) delle prestazioni del sistema
Memoria e CPU
ALU
R0 R1
RN-1
PC
PSW IR
Memoria (RAM) Memoria
(RAM)
Bus ControlloIndirizziDati
Controllo
Memoria
Processore
(CPU) Memoria Sottosistema
di interfaccia
Bus di sistema
RAM (Random Access Memory)
● La RAM è una sequenza di byte
● Ogni byte è identificato dalla sua posizione
(indirizzo di memoria)
– byte 0, byte 1, byte 2, ...
● Alcune CPU sono in grado di accedere ai singoli byte;
altre accedono a parole (es., gruppi di 4 Byte)
Indirizzo
0 12 3 4 56 7 8 910 11 12 1314 15 16 1718
Parola 8 bit = 1 byte
Unità di misura
Per spazio disco e banda di rete si è soliti usare la base 10
● 1 kilobyte (1 kB)
– 1000 B
● 1 megabyte (1 MB)
– 10002 = 1.000.000 B
● 1 gigabyte (1 GB)
– 10003 B
● 1 terabyte (1 TB)
– 10004 B
Per quantità di RAM si è soliti usare la base 2
● 1 kibibyte (1 KiB)
– 1024 B
● 1 mebibyte (1 MiB)
– 10242 = 1.048.576 B
● 1 gibibyte (1 GiB)
– 10243 = 1.073.741.824 B
● 1 tebibyte (1 TiB)
– 10244 =
1.099.511.627.776 B
Esempio: lettura byte all'indirizzo 01102
Memoria Memoria
Bus Controllo = Read
Dati
Indirizzi = 0110
Indirizzo Contenuto
0 00001010
1 10101000
2 00000000
3 00000000
4 01010010
5 11110000
6 01011010
… ...
ALU
R0 R1
RN-1
PC
PSW
IR Controllo
Esempio: lettura byte all'indirizzo 01102
Memoria Memoria
Bus Controllo = Read
Dati = 01011010 Indirizzi = 0110
Indirizzo Contenuto
0 00001010
1 10101000
2 00000000
3 00000000
4 01010010
5 11110000
6 01011010
… ...
ALU
R0 R1
RN-1
PC
IR Controllo
Esempio: scrittura di 000001012 all'indirizzo 01102
Memoria Memoria
Bus Controllo = Write
Dati = 00000101 Indirizzi = 0110
Indirizzo Contenuto
0 00001010
1 10101000
2 00000000
3 00000000
4 01010010
5 11110000
6 00000101
… ...
ALU
R0 R1
RN-1
PC
PSW
IR Controllo
Architettura di von Neumann
Processore
(CPU) Memoria Sottosistema
di interfaccia (I/O)
Bus di sistema
Hard Disk meccanici
● Negli hard disk meccanici i dati vengono memorizzati in tracce concentriche sulle superfici di dischi
magnetici rotanti
● Un blocco composto da testine di lettura/scrittura
"sorvola" tutte le superfici per accedere ai dati richiesti
By Eric Gaba, Wikimedia Commons user Sting, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=11278668
Asse di rotazione
Movimento delle testine
Hard disk meccanico vs hard disk a stato solido (SSD)
● Gli hard disk a stato solido sono generalmente più veloci di quelli meccanici
– non hanno parti in movimento
...ma sono anche più costosi, quindi meno capienti a parità di prezzo
L'utente che ha caricato in origine il file è stato Rochellesinger di Wikipedia in inglese - Trasferito da en.wikipedia su Commons da ivob., CC BY-SA 2.5, https://commons.wikimedia.org/w/index.php?curid=5832378
Architettura di von Neumann
Processore
(CPU) Memoria Sottosistema
di interfaccia (I/O)
Bus di sistema
CPU
ALU
R0 R1
RN-1
PC IR
Memoria Memoria
Bus ControlloIndirizziDati
Controllo
Componenti della CPU
● Un certo numero N di registri di uso generale R0...RN-1
– Di solito, ma non necessariamente, un registro contiene 32 bit = 1 parola
● PC (Program Counter)
– Indica l'indirizzo di memoria che contiene la prossima istruzione da eseguire
● IR (Instruction Register)
– Contiene il codice numerico che rappresenta l'istruzione che deve essere eseguita
● PSW (Program Status Word)
– Informazioni sullo stato del programma (es: se l'ultima operazione aritmetica ha causato overflow, se l'ultima operazione aritmetica ha dato zero come risultato, ...)
Ciclo Fetch-Decode-Execute
Fetch
Decode
Execute
Preleva dalla memoria l'istruzione da eseguire;
l'istruzione viene letta dall'indirizzo di memoria che si trova in PC; il contenuto viene posto in IR
Esamina l'istruzione memorizzata in IR per decidere quali operazioni richiede
Esegue l'istruzione memorizzata in IR, incluso il recupero dalla memoria degli eventuali parametri necessari ad eseguirla, e deposito del risultato.
Aggiorna il PC per la prossima istruzione.
Tipi di istruzioni
● Istruzioni Aritmetico-Logiche
– Esempio: Somma il contenuto di Ri al contenuto di Rj;
memorizza il risultato nel registro Rk
● Istruzioni di controllo del flusso di esecuzione
– Esempio: Salta ad eseguire l'istruzione il cui codice è contenuto nella cella di memoria all'indirizzo M
● Istruzioni di letture/scrittura di memoria
– Esempio: Copia il valore del byte/della parola in memoria all'indirizzo M nel registro Ri
● Istruzioni di Input/Output
– Esempio: Invia il contenuto del registro Ri al dispositivo di I/
O numero z
Formato di una istruzione
● Le istruzioni sono rappresentate da sequenze di bit
– In alcuni processori ogni istruzione è codificata con 4 Byte = 32 bit = 1 parola
– Altri (es., Intel x86) rappresentano istruzioni diverse con un diverso numero di byte
● Se le istruzioni sono codificate con 32 bit, l'IR deve essere ampio esattamente 32 bit
● All'interno dei 32 bit, occorre indicare:
– Il tipo di istruzione da eseguire (somma, prodotto, salto, confronto, copia da memoria...)
– Gli eventuali parametri dell'istruzione (quali registri sono coinvolti, quali locazioni di memoria sono coinvolte, ecc.)
Esempio
● Una ipotetica istruzione di somma
“Somma i valori contenuti nei registri Ri e Rj; poni il risultato nel registro Rk”
● Supponiamo di avere 256 possibili registri
● Una possibile codifica dell'istruzione è la seguente:
ADD Ri, Rj, Rk
00000001 8 bit 8 bit 8 bit
Codice istruzione i j k
Esempio
00000001 00011100 00000010 10000000
1 Byte 1 Byte 1 Byte 1 Byte 1 parola = 4 Byte
Istruzione=
ADD
Primo Addendo:
Registro 28
Secondo Addendo:
Registro 2
Risultato va nel
ALU
3710 2110
100010
Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto 32 bit = 1 parola Esempio
ALU
3710 2110
100010
Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto 32 bit = 1 parola Fetch
ALU
3710 2110
100010
00000001000111000000001010000000 Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto 32 bit = 1 parola Fetch
ALU
3710 2110
100010
00000001000111000000001010000000 Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto
32 bit = 1 parola Decode
ADD
ALU
3710 2110
5810
100010
00000001000111000000001010000000 Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto 32 bit = 1 parola Execute
ADD
ALU
3710 2110
5810
100410
00000001000111000000001010000000 Controllo
Memoria Memoria R2
R28
R128
PC IR PSW
000000012
100010
000111002
100110
000000102
100210
100000002
100310
000001102
100410
001001102
100510
010001102
100610
101101102
100710
Indirizzo Contenuto 32 bit = 1 parola Fetch
Esempio
● Ipotetica istruzione di trasferimento registro → memoria
“Copia il contenuto del registro Ri a partire dalla cella di memoria di indirizzo m”
● Una possibile codifica
STORE Ri, m
00000010 8 bit 16 bit
Codice istruzione i m
Domanda
● Considerando l'istruzione STORE Ri,m rappresentata come sopra, quanto grande può essere la memoria
accessibile all'istruzione?
● Risposta
– L'indirizzo m della destinazione è espresso con 16 bit
– L'intero più grande rappresentabile con 16 bit è 216-1 = 65535
– Quindi la memoria massima indirizzabile con l'istruzione
00000010 8 bit 16 bit
Codice istruzione i m
Domanda
● La CPU di un computer ha il registro PC di 20 bit e una memoria RAM di 220 B (1 MiB). È possibile
aumentare la memoria RAM destinata all'esecuzione dei programmi senza cambiare la CPU?