Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Cos'è un computer? 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 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, 193 1957, nato in Ungheria e naturalizzato americano col nome di John Von Neumann 5 Struttura di un calcolatore: Architettura di Von Neumann Processore (CPU) Sottosistema di interfaccia (I/O) Esegue le istruzioni elementari richieste dai programmi Mantiene Dati e Programmi Memorizzazione Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, scheda audio, stampante, Elaborazione + schermo, mouse...) Trasferimento dati da/verso l'esterno 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 7 Architettura di Von Neumann Processore (CPU) Sottosistema di interfaccia (I/O) 8 CPU Dati Indirizzi Bus R1 Rn 9
Componenti della CPU Un certo numero N di registri di uso generale R1...RN (Program Counter) Indica l'indirizzo di memoria che contiene la prossima istruzione da eseguire (Instruction Register) Di solito, ma non necessariamente, un registro contiene 32 bit = 1 parola Contiene il codice numerico che rappresenta l'istruzione che deve essere eseguita (Program Status Word) Informazioni sullo stato del programma (es: se l'ultima operazione aritmetica eseguita ha causato overflow) 1 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 ; il contenuto viene posto in Esamina l'istruzione memorizzata in per decidere quali operazioni richiede Esegue l'istruzione memorizzata in, incluso il recupero dalla memoria degli eventuali parametri necessari ad eseguirla, e deposito del risultato. Aggiorna il per la prossima istruzione. 11 Tipi di istruzioni Istruzioni Aritmetico-Logiche 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: Somma due valori contenuti in due registri; salva il risultato in un terzo registro 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 12
Formato di una istruzione Le istruzioni sono rappresentate da sequenze di bit In alcuni processori ogni istruzione è codificata con 4 byte = In altri (es., Intel x86) si usano codifiche con un numero variabile di byte Se le istruzioni sono codificate con 32 bit, ovviamente l' 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.) 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: 1 Codice istruzione i j k 14 Esempio Esempio: 1 byte 1 parola = 4 byte 1 byte 1 byte 1 byte 1 111 1 1 Istruzione= ADD Primo Addendo: Registro numero 28 Secondo Addendo: Registro numero 2 Risultato va in Registro numero 128 15
371 8 211 Esempio 11 12 111 1112 121 12 131 12 11 141 151 161 171 112 1112 1112 111112 371 8 211 Fetch 11 16 11 111 121 131 12 141 151 161 171 112 1112 12 12 1112 1112 111112 371 8 211 Fetch 11 111111 17 11 111 121 131 141 151 161 171 12 1112 12 12 112 1112 1112 111112 18
371 8 211 Decode 11 12 111 1112 121 12 131 12 11 111111 ADD 141 151 161 171 112 1112 1112 111112 371 8 211 581 11 111111 Execute 19 ADD 11 111 121 131 12 141 151 161 171 112 1112 12 12 1112 1112 111112 371 8 211 Fetch 141 111111 2 11 111 121 131 141 151 161 171 12 1112 12 12 112 1112 1112 111112 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 1 Codice istruzione i 16 bit m 22 Domanda 1 Codice istruzione i 16 bit 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 è 216-1 = 65535 Quindi la memoria massima indirizzabile con l'istruzione STORE è di 65536 bytes (numerati da a 65535) 23 Processore (CPU) Sottosistema di interfaccia 24
RAM La RAM è una sequenza di byte Ogni byte è identificato dalla sua posizione nella sequenza (indirizzo di memoria) byte, byte 1, byte 2,... Alcune CPU sono in grado di accedere ai singoli byte; altre accedono a parole (= gruppi di 4 byte) Parola 1 2 3 4 5 6 7 8 9 1 11 12 13 14 15 16 17 18 19 25 Unità di misura 1 Kilo Byte (1KB) 1 Mega Byte (1MB) 22 = 1.48.576 1 byte 1 Giga Byte (1GB) 21 = 124 1 byte 23 = 1.73.741.824 19 byte 1 Tera Byte (1TB) 24 = 1.99.511.627.776 112 byte 26 Funzionamento della RAM 112 Bus indirizzi Decodificatore Linee di selezione linea linea 1 linea 2 linea 3 linea 4 linea 5 linea 6 linea 7 linea 8 linea 9 linea 1 linea 11 linea 12 linea 13 linea 14 linea 15 1 16 celle di memoria da ciascuna Byte selezionato 1 1 1 1 Bus di controllo Leggi/Scrivi 1 1 1 1 Bus Dati 27
Vari tipi di memoria Accesso lento/molto lento Costo basso Vastissima capacità Accesso molto veloce Costo elevato Limitata capacità Accesso veloce Costo contenuto Ampia capacità Hard Disk CD/ DVD I/O I/O CPU RAM Cache 28 Domanda La CPU di un computer ha il registro di 2 bit e una memoria RAM di un Mbyte (=22 Byte). E' possibile aumentare la sua memoria RAM destinata all'esecuzione dei programmi senza cambiare la CPU? 29 Nei calcolatori moderni... CPU L1 cache L2 cache Sottosistema di interfaccia (I/O) 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 3
Nei calcolatori moderni... L1 cache L2 cache Sottosistema di interfaccia (I/O) 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 31 CPU reali Intel core i7 AMD Istanbul 32 I tempi in gioco 1 CPU cycle Level 1 cache access Main memory access Solid-state disk I/O Rotational disk I/O Internet: SF to NYC Internet: SF to UK Internet: SF to Australia Physical system reboot.3 ns.9 ns 12 ns 5-15 μs 1-1 ms 4 ms 81 ms 183 ms 5m 1s 3s 6 min 2-6 days 1-12 months 4 years 8 years 19 years 32 millenia Source: https://blog.codinghorror.com/the-infinite-space-between-words/ 33