L’elaboratore elettronico PARTE A input output (dati) (risultati) (elaborazione) Evoluzione storica Le generazioni informatiche 1942-’57, 1958-’63, 1964-’80, 1980-oggi, (futuro) 1a gen. 2a gen. 3a gen. 4a gen. 5a gen. = tubi a vuoto = transistori = circuiti integrati = circuiti VLSI =? ENIAC (1943): Electronic Numerical Integrator And Calculator • Primo eleboratore general-purpose • 18000 Valvole, 1500 relay • Uso per calcoli balistici •Lunghezza 25m, altezza 3m, superficie 180m2, peso 30ton, potenza assorbita 140KW • Programmazione con interruttori manuali • Aritmetica decimale, 5000 operazioni/sec • MTBF = 8 ore La potenza della sabbia (silicio) ...ovvero: l’evoluzione dei microprocessori n transistori per chip Pentium III 8086 1980 2000 anni La potenza della sabbia (silicio) ...ovvero: l’evoluzione dei microprocessori n transistori per chip • 1 milione di addizioni al secondo • 30.000 transistor 8086 1980 2000 anni La potenza della sabbia (silicio) ...ovvero: l’evoluzione dei microprocessori n transistori per chip PENTIUM III • 2 miliardi di addizioni al secondo • 9.000.000 transistor. • 1 milione di addizioni al secondo Pentium III • 30.000 transistor 8086 1980 1998 anni Microprocessori 1993 INTEL 80x86 Pentium MIPS: 100+ (66 MHz) Transistors: 3.000.000+ 1989 80486 MIPS: 41 (50 MHz) Transistors: 1.200.000 1985 1979 80386 MIPS: 11 (33 MHz) Transistors: 275.000 1982 80286 MIPS: 3 (12 MHz) Transistors: 134.000 8088/8086 MIPS: 0.33 (5 MHz) Transistors: 29.000 Microprocessori INTEL 80x86 1999 Pentium III 64 bit – 1.13 GHz Transistors: 9.000.000+ 1998 Pentium II 64 bit - 450 MHz Transistors: 7.000.000+ 1995 Pentium PRO 64 bit - 200 MHz Transistors: 7.000.000+ 1993 Pentium 32 bit - (166 MHz) Transistors: 3.000.000+ Nozioni fondamentali Hardware Definizione: l’insieme delle apparecchiature (elettroniche, meccaniche, ecc.) che costituiscono fisicamente il sistema di elaborazione. Software Definizione: l’insieme dei programmi e dei dati che permettono lo svolgimento delle funzioni di elaborazione Programmi e Istruzioni Un programma è un insieme ordinato di istruzioni Un’istruzione è la specifica di una operazione che può essere svolta da un elaboratore. I dati 1234567890 V 4 3 r3 • I dati numerici sono quelli più usati • Tutti gli altri tipi di dato sono trasformati in dati numerici Il sistema decimale 252 = 2 100 + 5 10 + 2 1 = 2 102 + 5 101 + 2 100 Sistema di numerazione del mondo occidentale (sistema arabo): • decimale (base 10, cifre { 0, 9 }) • posizionale Il sistema binario • base: 2 • cifre: { 0, 1 } Esempio: 1012 = 1 22 + 0 21 + 1 20 =14+11 = 510 Alcuni numeri binari 0 1 10 11 100 101 110 111 ... ... ... ... ... ... ... ... 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 ... ... ... ... ... ... ... ... 8 9 10 11 12 13 14 15 Terminologia BIT (BInary digIT) 0 1 BYTE = otto bit 00110110 WORD = n byte 00001111 10101010 Terminologia 10110110 MSB LSB Most Significant Bit Least Significant Bit Multipli binari Si usano le potenze di due invece di quelle di dieci: chilo mega giga tera K M G T 210 220 230 240 ~ un migliaio ~ un milione ~ un miliardo ~ mille miliardi La logica degli elaboratori elettronici Logica Booleana: • 1847 George Boole • logica formale • enunciati di cui fosse possibile verificare in modo inequivocabile la verità o la falsità • le variabili sono in grado di assumere solo due valori: VERO, FALSO . Logica Booleana: un esempio Se domani ci sarà il sole, allora andrò a fare una gita. ? Architettura degli elaboratori Il transistore È l’elemento base degli attuali elaboratori elettronici digitali: • piccole dimensioni ( mm ) • basso consumo di energia ( mW ) • alta velocità di funzionamento (milioni di operazioni al secondo) Chip Da migliaia a milioni di TRANSISTOR Chip: circuito integrato, microcircuito, componente elettronico contenente al suo interno moltissimi transistor Calcolatore Il chip sta al calcolatore come il mattone sta alla casa Blocchi funzionali (architettura di Von Neumann 1951) MEM OUT UO UC INP Problematiche • codifica dei dati (in un formato comprensibile all’elaboratore) • codifica degli ordini (sequenza di operazioni che compongono l’elaborazione) • decodifica dei risultati (in un formato comprensibile agli umani) Flusso dei dati MEM OUT UO UC INP Informazioni di stato MEM OUT UO UC INP Ordini MEM OUT UO UC INP Struttura a blocchi MEM OUT UO UC INP Unità di input: schema funzionale dato ready get B ADC control logic T Unità di output: schema funzionale dato ready put B DAC control logic T Unità operativa: schema funzionale dati operandi registri operazione destinazione flag ALU F risultato Unità di controllo: schema funzionale PC M IR logica di controllo stato comandi Il ciclo base di un elaboratore Reset Preleva una istruzione dalla memoria RAM Fetch Interpreta l’istruzione Decode Esegue l’istruzione Execute Esecuzione di un’istruzione Tre fasi distinte: • fetch IR M [ PC ] PC PC + 1 • decode ordini decode(IR) • execute ready? go! CPU Central Processing Unit L’imperatore SONO IO ! CPU La CPU controlla tutte le operazioni di un elaboratore Le operazioni possono essere: • interne alla CPU (ad es. somma) • esterne: trasferimenti da/per memoria o I/O Il clock Ogni elaboratore contiene un elemento di temporizzazione (detto clock ) che genera un riferimento temporale comune per tutti gli elementi costituenti il sistema di elaborazione. Il clock t T • T = periodo di clock • f = frequenza di clock ( = 1 / T ) Velocità di elaborazione MIPS ( Million Instructions Per Second ) f = frequenza di clock [ Hz = cicli/s ] T = periodo di clock = 1 / f [ s ] C = cicli macchina / istruzione IPS = f / C = 1 / ( T C ) MIPS = IPS / 106 Memoria centrale Memoria: schema funzionale indirizzo MEM read/write dato ready Memoria Memorizza i dati e le istruzioni necessarie all’elaboratore per operare. Caratteristiche: • indirizzamento • parallelismo • accesso (sequenziale o casuale) • tipo (volatile-non volatile, letturalettura/scrittura, etc.) Indirizzamento Ad ogni cella di memoria è associato un indirizzo (numerico) per identificarla univocamente. 1 7 2 5 8 3 6 9 Parallelismo Ogni cella di memoria contiene una quantità fissa di bit: • identica per tutte le celle • accessibile con un’unica istruzione • è un multiplo del byte • minimo un byte Memoria ad accesso casuale • il tempo di accesso è costante (indipendente dalla cella scelta) Ta = costante • anche detta RAM (Random Access Memory) Memoria ad accesso sequenziale • il tempo di accesso dipende dalla cella a cui si accede • spesso la dipendenza è lineare Ta = K indirizzo Memoria interna • • • • • • • all’interno dell’elaboratore è allo stato solido (chip) solitamente è volatile veloce (nanosecondi, 10-9s) quantità limitata (decina MB) non rimovibile costosa (5000 Lit / MB) Memoria esterna • • • • • • • all’esterno dell’elaboratore talvolta rimovibile non elettronica (es. magnetica) permanente lenta (millisecondi, 10-3 s) grande quantità (qualche GB) economica (500 Lit / MB) La memoria centrale Sistema Operativo RAM Programmi RAM Memoria Video Programma d’avvio (boot program) RAM Video ROM Memoria Tecnologia: • RAM: memorie a lettura e scrittura (Random Access Memory) • ROM: memorie a sola lettura (Read Only Memory) Memorie RAM Le memorie RAM possono essere di due tipi: • SRAM: RAM statiche • veloci (10 ns) • minor impaccamento • elevato costo per bit • DRAM: RAM dinamiche • meno veloci (60 ns) • maggior impaccamento (16 Mbit/chip) • minor costo per bit Tipologie di memorie ROM PROM (Programmable ROM) • programmabili una sola volta, dall’utente EPROM (Erasable PROM) • cancellabili e riprogrammabili più volte, dall’utente FLASH • cancellabili e riprogrammabili elettricamente più volte dalla cpu Memoria CACHE ….. ovvero la lentezza delle RAM microprocessore DRAM Memoria CACHE Memoria intermedia VELOCE CPU CACHE Trasferisco nella cache dati/istruzioni usati più frequentemente MEMORIA (DRAM) Prestazioni della cache Tempo medio di accesso in memoria: TM = H · Tcache + ( 1 - H ) · TRAM Ove H = hit ratio (percentuale di celle trovate nella cache rispetto al totale degli accessi in memoria) H 90% TM @ Tcache Prestazioni della cache Tcache = 20 ns TRAM = 80 ns H = 60% TM = 0.6 · 20 + 0.4 · 80 = 44 ns H = 95% TM = 0.95 · 20 + 0.05 · 80 = 23 ns Connessioni (Bus) I Bus (ovvero il sistema circolatorio del PC) connettori Struttura a bus Problema: collegamento completo tra N unità richiede N(N-1)/2 collegamenti Esempi: 4U:6C, 10U:45C, 20U:190C A B C D Struttura a bus Soluzione: segnali omologhi raggruppati in un bus, usato a turno dalle varie unità A B C D Tipi fondamentali di bus • bus dati ( DBus ) • bus degli indirizzi ( ABus ) • bus di controllo ( CBus ) M1 M2 I O DBus ABus CBus Architettura di un Calcolatore ROM RAM I I I O DBus ABus CBus CPU Software Il linguaggio del calcolatore ABCDE FGHILM NOPQR STUVZ lettere dell’alfabeto Nel mezzo del cammin di nostra vita... 0 bit 1 01101011 01001101 10010110 10100101 10100101 Che cos’è un programma? Sequenza di istruzioni 1. metti l’acqua 2. accendi il fuoco 3. aspetta 4. se l’acqua non bolle torna a 3 5. butta la pasta 6. aspetta un po’ 7. assaggia 8. se è cruda torna a 6 9. scola la pasta Esecuzione dei programmi Programmi pronti per essere eseguiti Memoria di massa (i dischi) Esecuzione dei programmi Programma ora in esecuzione Memoria di massa (i dischi) CPU RAM Classificazione del software software applicativo middleware software di base hardware Linguaggi di programmazione Servono a tradurre gli algoritmi in istruzioni per l’elaboratore. Ne esistono varie categorie: • linguaggi macchina • linguaggi assembler • linguaggi ad alto livello Linguaggio macchina • codifica binaria delle istruzioni • dipende dalla CPU (registri, operazioni, ...) • dipende dall’architettura del calcolatore (quantità di memoria, modalità di I/O, ...) Linguaggio assembler • codifica simbolica delle istruzioni ADD R1, R2, M[R4] ; R1= R2+ M [ R4 ] • meta-istruzioni TOT: DB 0 ; crea ed azzera TOT • linguaggio unico per architettura di CPU (es. Dec AXP, Intel 80x86) Linguaggi ad alto livello (HLL - High Level Language) • elaboratore virtuale • istruzioni orientate alla soluzione di problemi A = SINH (5.57*C) • linguaggio indipendente dalla piattaforma HW (richiedono programmi di traduzione) Traduzione dei linguaggi algoritmo editor file sorgente compilatore file oggetto libreria linker file eseguibile 10 for I=1 to 5 20 print I, I*I 30 next I RUN file sorgente interprete RAM Interprete o compilatore? Compilatore (+ linker): • controlla e traduce le istruzioni una sola volta + caricamento ed esecuzione veloce + codice non leggibile – correzione degli errori e debug lenti Interprete o compilatore? Interprete: • controlla e traduce le istruzioni ad ogni esecuzione del programma + correzione degli errori e debug veloce – caricamento ed esecuzione lenta – codice sorgente leggibile Alcuni interpreti • interprete di un linguaggio di programmazione • interprete dei comandi di un sistema operativo (command.com in MSDOS, le shell UNIX, ...) • i fogli elettronici (Lotus 1-2-3, Excel, QuattroPro, ...)