Architettura dei calcolatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/
Architettura dei calcolatori 2
Cos'è un computer? Architettura dei calcolatori 3
Cos'è un computer? E' 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 Ambiente Esterno I/O Elaborazione Controllo Memoria Architettura dei calcolatori 4
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 1957, nato in Ungheria e naturalizzato americano col nome di John Von Neumann 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 Elaborazione + Controllo Mantiene Dati e Programmi Memorizzazione Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, scheda audio, stampante, schermo, mouse...) Trasferimento dati da/verso l'esterno Architettura dei calcolatori 6
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 E' 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 Architettura dei calcolatori 7
Architettura di Von Neumann Processore (CPU) Memoria Sottosistema di interfaccia (I/O) Bus di sistema Architettura dei calcolatori 8
CPU Bus Dati Indirizzi Controllo R1 R2 ALU Memoria Rn PC IR PSW Controllo Architettura dei calcolatori 9
Componenti della CPU Un certo numero N di registri di uso generale R 1...R N 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 eseguita ha causato overflow) Architettura dei calcolatori 10
Ciclo Fetch-Decode-Execute Fetch 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 Decode Esamina l'istruzione memorizzata in IR per decidere quali operazioni richiede Execute 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. Architettura dei calcolatori 11
Tipi di istruzioni Istruzioni Aritmetico-Logiche Esempio: Somma due valori contenuti in due registri; salva il risultato in un terzo registro Istruzioni di controllo del flusso di esecuzione Esempio: Salta ad eseguire l'istruzione il cui codice è contenuto nella cella di memoria all'indirizzo X Istruzioni di letture/scrittura di memoria Esempio: Copia il valore contenuto nella cella di memoria all'indirizzo X all'interno del registro Ry Istruzioni di Input/Output Esempio: Invia il contenuto del registro Rx al dispositivo di I/O numero y Architettura dei calcolatori 12
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 In altri (es., Intel x86) si usano codifiche con un numero variabile di byte Se le istruzioni sono codificate con 32 bit, ovviamente 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.) Architettura dei calcolatori 13
Esempio Una ipotetica istruzione di somma ADD Ri, Rj, Rk 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: 00000001 8 bit 8 bit 8 bit Codice istruzione i j k Architettura dei calcolatori 14
Esempio Esempio: 1 parola = 4 byte 1 byte 1 byte 1 byte 1 byte 00000001 00011100 00000010 10000000 Istruzione= ADD Primo Addendo: Registro numero 28 Secondo Addendo: Registro numero 2 Risultato va in Registro numero 128 Architettura dei calcolatori 15
Esempio 32 bit = 1 parola Indirizzo Contenuto R2 37 10 Memoria R28 21 10 ALU 1000 00000001 10 2 00011100 2 R128 1001 10 00000010 2 1002 10 10000000 2 PC 1000 10 1003 10 00000110 2 1004 10 00100110 2 IR Controllo 1005 10 01000110 2 1006 10 10110110 2 PSW 1007 10 Architettura dei calcolatori 16
Fetch 32 bit = 1 parola Indirizzo Contenuto R2 37 10 Memoria R28 21 10 ALU 1000 00000001 10 2 00011100 2 R128 1001 10 00000010 2 1002 10 10000000 2 PC 1000 10 1003 10 00000110 2 1004 10 00100110 2 IR Controllo 1005 10 01000110 2 1006 10 10110110 2 PSW 1007 10 Architettura dei calcolatori 17
32 bit = 1 parola Fetch Indirizzo Contenuto R2 37 10 Memoria R28 R128 PC IR PSW 21 10 1000 10 ALU 00000001000111000000001010000000 Controllo 1000 00000001 10 2 00011100 2 1001 10 00000010 2 1002 10 10000000 2 1003 10 00000110 2 1004 10 00100110 2 1005 10 01000110 2 1006 10 10110110 2 1007 10 Architettura dei calcolatori 18
32 bit = 1 parola Decode Indirizzo Contenuto R2 37 10 Memoria R28 R128 PC IR PSW 21 10 ALU 1000 10 ADD 00000001000111000000001010000000 Controllo 1000 00000001 10 2 00011100 2 1001 10 00000010 2 1002 10 10000000 2 1003 10 00000110 2 1004 10 00100110 2 1005 10 01000110 2 1006 10 10110110 2 1007 10 Architettura dei calcolatori 19
32 bit = 1 parola Execute Indirizzo Contenuto R2 37 10 Memoria R28 R128 PC IR PSW 21 10 58 10 ALU 1000 10 ADD 00000001000111000000001010000000 Controllo 1000 00000001 10 2 00011100 2 1001 10 00000010 2 1002 10 10000000 2 1003 10 00000110 2 1004 10 00100110 2 1005 10 01000110 2 1006 10 10110110 2 1007 10 Architettura dei calcolatori 20
32 bit = 1 parola Fetch Indirizzo Contenuto R2 37 10 Memoria R28 R128 PC IR PSW 21 10 1004 10 ALU 00000001000111000000001010000000 Controllo 1000 00000001 10 2 00011100 2 1001 10 00000010 2 1002 10 10000000 2 1003 10 00000110 2 1004 10 00100110 2 1005 10 01000110 2 1006 10 10110110 2 1007 10 Architettura dei calcolatori 21
Esempio Ipotetica istruzione di trasferimento registro memoria STORE Ri, m Copia il contenuto del registro Ri nella cella di memoria di indirizzo m Una possibile codifica 00000010 8 bit 16 bit Codice istruzione i m Architettura dei calcolatori 22
Domanda 00000010 8 bit 16 bit Codice istruzione i m Considerando l'istruzione STORE Ri,m rappresentata come sopra, quanto grande può essere la memoria accedibile dall'istruzione? Risposta L'indirizzo m della destinazione è espresso con 16 bit L'intero più grande rappresentabile con 16 bit è 2 16-1 = 65535 Quindi la memoria massima indirizzabile con l'istruzione STORE è di 65536 bytes (numerati da 0 a 65535) Architettura dei calcolatori 23
Memoria Processore (CPU) Memoria Sottosistema di interfaccia Bus di sistema Architettura dei calcolatori 24
RAM La RAM è una sequenza di byte Ogni byte è identificato dalla sua posizione nella sequenza (indirizzo di memoria) byte 0, byte 1, byte 2,... Alcune CPU sono in grado di accedere ai singoli byte; altre accedono a parole (= gruppi di 4 byte) Indirizzo 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8 bit Parola 16 17 18 19 Architettura dei calcolatori 25
Unità di misura 1 Kilo Byte (1KB) 2 10 = 1024 1000 byte 1 Mega Byte (1MB) 2 20 = 1.048.576 1000000 byte 1 Giga Byte (1GB) 2 30 = 1.073.741.824 10 9 byte 1 Tera Byte (1TB) 2 40 = 1.099.511.627.776 10 12 byte Architettura dei calcolatori 26
Funzionamento della RAM Linee di selezione 16 celle di memoria da 8 bit ciascuna 0110 2 Bus indirizzi Decodificatore linea 0 0 linea 1 0 linea 2 0 linea 3 0 linea 4 0 linea 5 0 linea 6 1 linea 7 0 linea 8 0 linea 9 0 linea 10 0 linea 11 0 linea 12 0 linea 13 0 linea 14 0 linea 15 0 0 1 1 0 1 1 0 0 Byte selezionato Bus di controllo Leggi/Scrivi 0 1 1 0 1 1 0 0 Bus Dati Architettura dei calcolatori 27
Vari tipi di memoria Accesso molto veloce Costo elevato Limitata capacità Accesso veloce Costo contenuto Ampia capacità Accesso lento/molto lento Costo basso Vastissima capacità Hard Disk CD/ DVD CPU Cache RAM I/O I/O Bus di sistema Architettura dei calcolatori 28
Domanda La CPU di un computer ha il registro PC di 20 bit e una memoria RAM di un Mbyte (=2 20 Byte). E' possibile aumentare la sua memoria RAM destinata all'esecuzione dei programmi senza cambiare la CPU? Architettura dei calcolatori 29
Nei calcolatori moderni... CPU L1 cache L2 cache Memoria Sottosistema di interfaccia (I/O) Bus di sistema Vengono utilizzati diversi livelli di memoria cache (molto veloce) per mantenere i dati più frequentemente usati vicini alla CPU Riduce gli accessi alla memoria tramite il bus di sistema Architettura dei calcolatori 30
Nei calcolatori moderni... L1 cache L2 cache Memoria Sottosistema di interfaccia (I/O) Bus di sistema CPU multi-core: all'interno del processore sono presenti più unità di calcolo indipendenti (di fatto, più CPU) che possono operare contemporaneamente, in modo indipendente l'una dall'altra Architettura dei calcolatori 31
CPU reali Intel core i7 AMD Istanbul Architettura dei calcolatori 32
I tempi in gioco 1 CPU cycle 0.3 ns 1 s Level 1 cache access 0.9 ns 3 s Main memory access 120 ns 6 min Solid-state disk I/O 50-150 μs 2-6 days Rotational disk I/O 1-10 ms 1-12 months Internet: SF to NYC 40 ms 4 years Internet: SF to UK 81 ms 8 years Internet: SF to Australia 183 ms 19 years Physical system reboot 5 m 32 millenia Source: https://blog.codinghorror.com/the-infinite-space-between-words/ Architettura dei calcolatori 33