Cos'è un calcolatore? Architettura dei calcolatori Esecutore automatico di algoritmi Macchina universale Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura A.A. 2009/2010 Dati di ingresso (input) Algoritmo Calcolatore Dati di uscita (output) 2 Hardware e Software Organizzazione logica di un calcolatore Dati di ingresso Algoritmo Calcolatore Dati di uscita (soluzione) Quattro funzioni di base: elaborazione dati memorizzazione dati trasferimento dati controllo 3 4
Organizzazione logica di un calcolatore Architettura di Von Neumann (1945) La memoria principale bit indirizzi delle celle cella o parola di memoria 0 1 Ogni cella può contenere: un dato (un numero, ) una istruzione di un programma 2 3 5 6 L'unità di elaborazione (Central Processing Unit, CPU) L'unità di elaborazione (Central Processing Unit, CPU) Unità aritmetico-logica (ALU) Meccanismi in grado di eseguire un piccolo insieme di operazioni logicoaritmetiche Un piccolo insieme di celle di memoria: registri 7 8
L'unità di elaborazione (Central Processing Unit, CPU) L'unità di elaborazione (Central Processing Unit, CPU) Quali istruzioni deve saper eseguire un calcolatore universale? Prel. Decod. Esec. Meccanismi in grado di determinare la sequenza di passi necessari per l'esecuzione delle istruzioni Unità di controllo Un piccolo insieme di celle di memoria: registri elaborazione: semplici operazioni logico-aritmetiche (+, ", #,$, confronti, ) memorizzazione: lettura/scrittura di un dato in una cella della memoria principale trasferimento (I/O): lettura/scrittura verso i dispositivi periferici controllo: istruzioni di salto che consentono di modificare l ordine di esecuzione delle istruzioni di un programma 9 10 Il bus di sistema Dispositivi di ingresso/uscita (periferiche) Bus dati Bus indirizzi Bus controlli Input/Output (I/O): ingresso (dati e programmi) uscita (dati) 11 12
Memorizzazione di dati e programmi indirizzi delle celle Meccanismo di esecuzione dei programmi cella o parola di memoria Istruzioni e dati: codifica binaria (sequenze di bit: 0,1) istruzione 1 istruzione 2 0 1 2 3 istruzione n dato 1 dato 2 13 14 I principali registri dell'unità di controllo Scrittura in memoria La memoria principale contiene 2 n celle: l'indirizzo può essere scritto con n cifre in base due Program counter (PC): n bit Program counter (PC): n bit Instruction register (IR): m bit Address register (AR): n bit Data register (DR): m bit Ogni cella contiene m bit 0 = 000 1 = 001 2 = 010 3 = 011 4 = 100 5 = 101 6 = 110 7 = 111 Instruction register (IR): m bit Address register (AR): n bit 1 0 1 Data register (DR): m bit 0 0 1 0 1 1 1 0 Unità di controllo Bus controlli Bus indirizzi Bus dati 0 0 1 0 1 1 1 0 Memoria principale 0 = 000 1 = 001 2 = 010 3 = 011 4 = 100 5 = 101 6 = 110 7 = 111 Unità di controllo Memoria principale 15 16
Lettura dalla memoria I principali registri dell'unità aritmetico-logica Program counter (PC): n bit Instruction register (IR): m bit Address register (AR): n bit 1 0 1 Data register (DR): m bit 0 0 1 0 1 1 1 0 Bus indirizzi Bus dati 0 0 1 0 1 1 1 0 0 = 000 1 = 001 2 = 010 3 = 011 4 = 100 5 = 101 6 = 110 7 = 111 A B Registri di lavoro: m bit Registro di stato Unità di controllo Bus controlli Memoria principale 17 Unità aritmetico-logica 18 Il formato delle istruzioni Ciclo di esecuzione delle istruzioni diversi possibili formati caratterizzati da: un codice operativo (identifica l'operazione) nessuno, uno o più operandi m bit (ampiezza di una cella di memoria INIZIO Prelievo della successiva istruzione Decodifica Esecuzione FINE 19 20
Prelievo: lettura dalla memoria Esempio INIZIO Prelievo Decodifica Esecuzione FINE ADD 100 101 110 addiziona i numeri nelle celle di indirizzo 100 e 101, e memorizza il risultato nella cella di indirizzo 110 AR % PC DR % M[AR] IR % DR PC % PC+1 INIZIO Prelievo Decodifica Esecuzione FINE AR % PC DR % M[AR] IR % DR PC % PC+1 AR % 100 DR % M[AR] A % DR C % A+B (ALU) AR % 101 DR % M[AR] B % DR DR % C AR % 110 M[AR] % DR 21 22 Riassumendo: architettura di un calcolatore (organizzazione logica) CPU Memoria principale ALU Unità di controllo Registri A indirizzi B 0 C 1 2 SR PC IR AR DR 2 n 2 2 n 1 celle Dispositivo periferico 1 Dispositivo periferico 2 Realizzazione fisica dei calcolatori Bus dati Bus indirizzi Bus controlli 23 24
L'evoluzione della tecnologia L'evoluzione della tecnologia Generazione 1 (1945-1955): tecnologia elettronica Generazione 0 (fino agli anni '40 del XX sec.): tecnologia meccanica Valvole termoioniche 25 L'evoluzione della tecnologia 26 L'evoluzione della tecnologia Generazione 2 (1955-1965): transistor (ideati nel 1948) Generazione 3 (1965-1980): circuiti integrati ideati nel 1953 realizzati su materiali semiconduttori (silicio) 27 28
L'evoluzione della tecnologia Fabbricazione di circuiti integrati (chip) L'evoluzione della tecnologia Generazione 4 (1980-oggi): circuiti ad alta densità di integrazione (VLSI, ULSI) 29 30 La legge di Moore (1965) Dispositivi di memoria Gordon Moore, co-fondatore di Intel nastri magnetici floppy disk (dischi magnetici) hard disk (dischi magnetici) La densità di integrazione (numero di transistor realizzati in un chip, a parità di area) raddoppia ogni 18 mesi (1965) Vero (almeno fino a oggi) 31 circuiti integrati dischi ottici Perché tanti dispositivi diversi? 32
Caratteristiche dei dispositivi di memoria Unità di misura della capacità di memoria Capacità Costo per bit Tempo di accesso Dimensioni Consumo di energia Memorizzazione permanente dei dati Facilità di trasporto tra diversi calcolatori 1 byte = 8 bit 1 KByte (Kilo byte) = 2 10 = 1.024 byte (&10 3 ) 1 MByte (Mega byte) = 2 20 = 1.040.576 byte (&10 6 ) 1 GByte (Giga byte) = 2 30 = 109.951.162.368 byte (&10 9 ) 1 TByte (Tera byte) = 2 40 byte (&10 12 ) 33 34 Memoria principale INIZIO Prelievo della successiva istruzione Decodifica Esecuzione Obiettivo principale: tempo d'accesso paragonabile al tempo d'esecuzione delle istruzioni da parte della CPU CPU: circuiti integrati memoria principale: circuiti integrati FINE Memoria secondaria Requisiti principali: non volatile grande capacità (oggi: 10 11 byte) basso costo per bit tecnologia meccanica (dischi magnetici) elevato tempo d'accesso (oggi: 10 ms) Tempo d'accesso (oggi): 10-50 ns (1 ns = 10-9 sec.) Problemi: volatilità capacità ridotta (oggi: 10 9 byte) 35 36
Memoria secondaria Tempo di accesso alla memoria principale spazio tra settori settori tracce spazio tra le tracce traccia asse INIZIO Prelievo della successiva istruzione Decodifica Esecuzione FINE settore attuatore CPU 500-2000 tracce per facciata 10-100 settori per traccia 10 2 byte per settore (tipicamente 512 byte) tempi di lettura/scrittura: tempo di posizionamento: ~ 1 ms tempo di latenza: ~ 10 ms velocità di trasferimento: ~ 10-10 2 MB/sec. cilindro piatto testina di lettura/scrittura braccio 37 Troppo alto Rimedio: memorie cache Memoria 38 Memoria cache Requisito principale: tempo d'accesso molto basso (oggi: 1-5 ns) Tecnologia elettronica (volatile) Costo per bit: molto alto Capacità: bassa (oggi: 1-10 MB) Memoria terziaria Requisiti principali: non volatile grande capacità (oggi: > 10 11 byte) basso costo per bit facilità di trasporto tecnologia meccanica (dischi o nastri magnetici), ottica (dischi ottici), o elettronica con alto tempo d'accesso ( USB drive ) 39 40
Memoria terziaria: dischi ottici Gerarchia di memorie Compromesso tra: Tempo d'accesso Costo per bit Capacità 41 42 Memoria: RAM e ROM Unità di elaborazione Random Access Memory (RAM) il tempo d'accesso non dipende dalla posizione del dato memorie in tecnologia elettronica (memoria principale, cache) INIZIO Prelievo della successiva istruzione Decodifica Esecuzione FINE non sono RAM i dischi magnetici e ottici e i nastri magnetici Read-Only Memory (ROM) memorie in tecnologia elettronica (sono anche RAM) dischi ottici non riscrivibili (CD-ROM) Tutte le attività sono sincronizzate con l'orologio ( clock ) di sistema Frequenza di clock: oggi ~ 1 GHz (10 9 Hz) 43 44
Frequenza di clock: esempio Frequenza di clock Evoluzione dei processori Intel per Personal Computer CPU anno f c (MHz) transistor 8086 1978 4.77-12 29 000 80286 1982 8-16 134 000 80386 1986 16-33 275 000 80486 1989 33-50 1 200 000 Pentium 1993 60-200 3 100 000 Pentium II 1997 233-400 7 500 000 Pentium III 1999 450-1133 24 000 000 2000 1300-2000 42 000 000 Pentium 4 2000 2000-3400 55 000 000 2004 2800-3800 125 000 000 maggiore frequenza di clock = maggiore velocità nell'esecuzione dei programmi In realtà la velocità dipende anche da oppure no? insieme di istruzioni eseguibili dalla CPU capacità e tempo d'accesso della memoria principale e della cache ampiezza del bus dati e del bus indirizzi 45 46 Architettura dell'unità di elaborazione: parallelismo Pipelining INIZIO Prelievo della successiva istruzione Decodifica Esecuzione FINE Esempio: esecuzione di un'istruzione in cinque fasi ed esecuzione di nove istruzioni in pipelining Il tempo d'esecuzione di una istruzione resta invariato Il numero di istruzioni eseguite nell'unità di tempo aumenta 47 48
CPU RISC e CISC Bus di sistema e dispositivi periferici Reduced Instruction Set Computer (RISC) Complex Instruction Set Computer (CISC) 49 50 Bus di sistema e dispositivi periferici Bus di sistema e dispositivi periferici Interfacce fisiche standard Interfacce fisiche standard: esempi 51 52
Bus con architettura gerarchica Bus con architettura gerarchica 53 54 Mettendo tutto insieme Scheda madre di un calcolatore (motherboard) Tipologie di calcolatori Personal computer (PC) Workstation Minicalcolatore Mainframe Supercalcolatore 55 56