Il sistema di elaborazione Stefano Brocchi [email protected] Stefano Brocchi Il sistema di elaborazione 1 / 37 Informatica Il termine informatica deriva dalle parole informazione e automatica Stefano Brocchi Il sistema di elaborazione 2 / 37 Hardware e software Combinazione dell’hardware, l’insieme dei componenti fisici del calcolatore... ... e del software, insieme dei programmi contenuti nelle memorie che consentono l’esecuzione del programma Stefano Brocchi Il sistema di elaborazione 3 / 37 Storia del calcolatore Primo ’calcolatore’ nel 1600: Blaise Pascal inventa un dispositivi in grado di eseguire automaticamente somme e sottrazioni Primo calcolatore programmabile realizzato da Konrad Zuse negli anni 30-40 Stefano Brocchi Il sistema di elaborazione 4 / 37 Storia del calcolatore Un altro traguardo fu rappresentato dall’ENIAC nel 47, una grande macchina programmabile molto più potente di qualsiasi altra esistente all’epoca Stefano Brocchi Il sistema di elaborazione 5 / 37 Sviluppo del calcolatore Massicci sviluppi tecnologici hanno permesso l’aumento di potenza e la miniaturizzazione dei computer Passo fondamentale: l’invenzione del microchip Nel microchip, circuiti elettronici sono miniaturizzati in una piccola piastra (chip) solitamente di silicio Applicazione della tecnologia ai computer da fine anni 60, grande sviluppo portato avanti negli anni 70 nella silicon valley (california) Nascita dei personal computer negli anni 70 Ulteriori sviluppi hanno permesso la creazione di portatili, palmari e telefoni programmabili Stefano Brocchi Il sistema di elaborazione 6 / 37 Caratteristiche Flessibilità di uso: un moderno computer è programmabile, può eseguire cioè compiti generici Modularità della struttura: i diversi componenti si occupano di diverse funzionalità del computer Scalabilità dei componenti: i componenti sono standardizzati e sostituibili Crescente semplicità di utilizzo ed economicità Stefano Brocchi Il sistema di elaborazione 7 / 37 Architettura Architettura di Von Neumann: un paradigma che descrive un modello concettuale rappresentante un computer programmabile formato da Elaborazione: capacità di eseguire calcoli ed istruzioni Memorizzazione: possibilità di ricordare informazioni Interfaccia: l’esistenza di canali per comunicare con l’utente Interconnessione: la connessione fra le componenti di elaborazione, memorizzazione e interfaccia Elaborazione Memorizzazione Interconnessione Interfaccia Stefano Brocchi Il sistema di elaborazione 8 / 37 Realizzazione Nei moderni calcolatori, l’elaborazione viene svolta dalla CPU (Central Processing Unit), che si occupa di eseguire le istruzioni ed i calcoli e di coordinare le altre risorse Le memorie sono adibite a immagazzinare i dati I dispositivi di Input ed Output (I/O) consentono la comunicazione con l’utente in ingresso ed in uscita (tastiere, mouse, schermi...) Stefano Brocchi Il sistema di elaborazione 9 / 37 Realizzazione: interconnessione Queste componenti comunicano tramite un canale che li collega detto bus, che ha un flusso di dati, uno per gli indirizzi ed uno di controllo CPU Memorie Tastiera Schermo ... Interfaccia I/O Bus Controllo Dati Indirizzi Stefano Brocchi Interfaccia I/O ... Il sistema di elaborazione 10 / 37 Bus Il collegamento a bus comprende diversi vantaggi, tra cui: La semplicità: un’unica linea di connessione collega i vari componenti L’estendibilità: l’aggiunta di nuovi dispositivi diventa molto semplice Standardizzazione: si possono definire regole per la comunicazione da parte di dispositivi diversi Stefano Brocchi Il sistema di elaborazione 11 / 37 Rappresentazione dell’informazione Prima di scendere nel dettaglio di come sono realizzate i quattro componenti concettuali, occorre aprire una parentesi su come venga rappresentata l’informazione sul calcolatore L’informazione di base è il bit, una variabile che può assumere due diversi valori 1 e 0 Stefano Brocchi Il sistema di elaborazione 12 / 37 Realizzazione di un bit A livello elettronico, un bit in una memoria viene considerato uguale ad uno per valori di voltaggio sopra una certa soglia, ed uguale a zero al di sotto di un’altra quantità Fra le due soglie, c’è un intervallo di tensione non ammessa per minimizzare il margine di errore Valore bit: 1 Tensione Non permesso Valore bit: 0 Stefano Brocchi Il sistema di elaborazione 13 / 37 Rappresentazione dati tramite bit E’ facile vedere che avendo a disposizione un numero sufficiente di bit, si può rappresentare qualsiasi numero utilizzando la base 2 In contrapposizione, il sistema decimale usato normalmente è la base 10 (10 simboli utilizzabili) Base 10 0 1 2 3 4 5 6 7 Stefano Brocchi Base 2 0 1 10 11 100 101 110 111 Base 10 8 9 10 11 12 13 14 15 Il sistema di elaborazione Base 2 1000 1001 1010 1011 1100 1101 1110 1111 14 / 37 Rappresentazione altre informazioni A seconda del contesto, dati in binario possono rappresentare qualunque informazione, come caratteri o istruzioni. Per esempio, la sequenza 01000001 può rappresentare Il numero 65 Il carattere ’A’ Un’istruzione da eseguire ... I bit verranno interpretati nel modo opportuno a seconda del contesto in cui si trovano Esempio: le sequenze di bit contenute in un file di testo verranno interpretate sempre come caratteri Stefano Brocchi Il sistema di elaborazione 15 / 37 Bit ed unità di misura 8 bit formano un byte, unità di misura di base delle memorie Per motivi architetturali, le capienze delle memorie sono tipicamente multipli di 2; per questo, le potenze del byte salgono con le potenze di 210 = 1024 Quindi, 1 KiloByte = 1024 byte, 1 MegaByte = 1024 KyloByte, 1 GigaByte = 1024 MegaByte ... Esempio: un CD da 650MB contiene più di 680 000 000 di byte Teoricamente, questo si dovrebbe esplicitare parlando, per esempio, di ’Kilo binario’, ed utilizzando il simbolo Kibi invece di KB. In pratica, raramente questo viene fatto Stefano Brocchi Il sistema di elaborazione 16 / 37 Bit ed unità di misura A volte si possono avere delle ambiguità: quando si parla di Input/Output, solitamente si utilizza la base 10 Es. un collegamento a 20 Megabit (quindi 20/8 = 2.5 Megabyte) può trasferire esattamente 2.5 milioni di byte al secondo A volte viene utilizzata la base 10 anche per i dischi fissi Questo può portare a sovrastimare la dimensione del disco Stefano Brocchi Il sistema di elaborazione 17 / 37 Esecuzione e program counter Tornando alla fase di elaborazione svolta dalla CPU, il processore esegue istruzioni contenute in memoria rappresentate da sequenze di bit Il punto dove è arrivata l’esecuzione è un indirizzo della memoria centrale detto program counter (PC) Un indirizzo di memoria è un numero ordinale relativo all’inizio della memoria. Esempio (semplificato): PC = 100 vuol dire che deve essere eseguita l’istruzione definita al centesimo byte della memoria Dopo ogni istruzione, il program counter viene incrementato di un indirizzo in modo che il processore esegua l’istruzione successiva Eccezione: in caso di istruzioni di salto Stefano Brocchi Il sistema di elaborazione 18 / 37 Tipi di istruzione Alcuni tipi di istruzioni possibili: Aritmetiche: per eseguire somme, sottrazioni, moltiplicazioni, ecc... Possono essere eseguite operazioni solo tra un numero limitato di variabili all’interno del processore dette registri Caricamento, salvataggio: per la manipolazione della memoria di variabili Salto condizionato: se si verifica una certa condizione, allora imposta il program counter ad un determinato indirizzo Il salto condizionato permette di programmare la logica di un programma Stefano Brocchi Il sistema di elaborazione 19 / 37 Parametri della CPU Molti parametri influenzano la velocità di esecuzione di una CPU: Frequenza di clock (uguale circa al numero di istruzioni al secondo) Numero di bit delle istruzioni supportate Semplificando, più bit permettono l’esecuzione di istruzioni più complesse, e prestazioni migliori Attualmente, i processori stanno passando da 32 a 64 bit Velocità del bus Stefano Brocchi Il sistema di elaborazione 20 / 37 Multicore e prestazioni La frequenza all’attuale stato tecnologico sembra difficilmente migliorabile. Per migliorare le prestazioni, si sta attualmente puntando sulla tecnologia multi-core: un chip contiene più CPU che lavorano contemporaneamente (es. un dual-core ha due CPU, un quad-core ne ha 4). Il numero di core è quindi un fattore determinante per la velocità di un processore Comunque, occorre considerare che la velocità complessiva di un computer dipende in primo luogo dal suo componente più lento Principio detto del collo di bottiglia. Stefano Brocchi Il sistema di elaborazione 21 / 37 Legge di Moore La legge di Moore sulle prestazioni delle CPU, è una predizione che sostiene che la velocità delle CPU raddoppia ogni due anni Dal 1971 ad oggi, la previsione si è rivelata in buona approssimazione veritiera Anche se con tempi diversi, tutte le componenti dei computer tendono a migliorare in modo esponenziale con l’avanzare della tecnologia A causa di questa crescita esponenziale, i computer tendono a diventare macchine obsolete molto rapidamente Stefano Brocchi Il sistema di elaborazione 22 / 37 La memoria Dopo aver analizzato la realizzazione della componente di esecuzione, vediamo come viene realizzata la memorizzazione In un calcolatore esiste una memoria di supporto alla CPU nell’esecuzione, dove sono contenuti sia dati che istruzioni In questo caso si utilizza una memoria elettronica, con le seguenti caratteristiche Velocità di accesso elevata Economicamente costosa Volatile: i dati contenuti vanno persi con lo spegnimento del computer Stefano Brocchi Il sistema di elaborazione 23 / 37 La memoria In un calcolatore è necessaria inoltre una memoria di archivio, capace di mantenere grandi quantità di dati anche a computer spento Solitamente, si utilizza all’interno del computer una memoria a dischi magnetici, più economica ma notevolmente più lenta della memoria elettronica Stefano Brocchi Il sistema di elaborazione 24 / 37 Memorie esterne Per mantenere dati su un supporto slegato dal calcolatore, si possono utilizzare memorie USB, memorie elettroniche permanenti e riscrivibili Altre alternative per la memoria esterna: dischi basati su tecnologia ottica come CD e DVD Stefano Brocchi Il sistema di elaborazione 25 / 37 La memoria centrale La memoria centrale è quella che contiene i programmi attualmente in esecuzione ed i loro dati I dati nella memoria centrale sono associati ad un loro indirizzo, rappresentante la loro posizione E’ ad accesso casuale: i tempi di esecuzione al suo contenuto sono indipendenti dalla posizione del dato cercato o dall’ordine di accesso I tempi di accesso sono inoltre indipendenti dal carico della memoria Chiamata per questo RAM (Random Access Memory, memoria ad accesso casuale) In contrapposizione, la memoria ad accesso sequenziale che richiede una lettura dei suoi dati ordinatamente Stefano Brocchi Il sistema di elaborazione 26 / 37 La memoria centrale Per modificare o leggere i dati dalla memoria, occorre utilizzare il bus per inviare l’indirizzo desiderato (bus indirizzi) e per il dato (bus dati) da scrivere o leggere (specificare nel bus di controllo) 0 1 Bus dati 11001010 2 3 4 Bus indirizzi 7 Bus controllo scrivi Stefano Brocchi 5 6 11001010 Il sistema di elaborazione 7 ... 27 / 37 Memoria e CPU All’attuale stato tecnologico, le CPU sono molto più veloci della memoria Le memorie sembrano crescere più in capacità che in velocità Se il processore dovesse attendere per troppo tempo la memoria, questo collo di bottiglia vanificherebbe la velocità del processore Analogamente, anche il bus per la comunicazione tra i due è a velocità limitata Stefano Brocchi Il sistema di elaborazione 28 / 37 Memoria interna alla CPU E’ possibile realizzare una memoria interna alla CPU per evitare i tempi di attesa per il trasferimento Tale memoria risulta però avere grandi limiti di capacità e risulta molto costosa Difficile mediare i requisiti di basso costo, alta velocità e capacità in un’unica memoria Stefano Brocchi Il sistema di elaborazione 29 / 37 Memoria interna alla CPU Soluzione: utilizzare più tipi di memoria in combinazione Utilizzare una memoria piccola e veloce per i dati che (crediamo) vengano utilizzati più frequentemente Questa piccola memoria prende il nome di cache Nei moderni processori, questa idea viene iterata per creare due diversi tipi di cache, una di primo livello (più veloce) ed una di secondo (più lenta ma più grande) Spesso, esistono anche altri livelli, ognuno più grande e lento del precedente Stefano Brocchi Il sistema di elaborazione 30 / 37 Memorie: gerarchia Le memorie formano cosı̀ una gerarchia: Velocita’ Registri: < 1KB Registri CPU Cache liv. 1: 128-256 KB Cache livello 1 Cache liv. 2: 1-2 MB Cache livello 2 Chip RAM: 2-8 GB Memoria centrale (RAM) Memorie esterne Scheda madre Disco fisso: 400-1000 GB Capacita’ Stefano Brocchi Disco fisso Computer Il sistema di elaborazione 31 / 37 Utilizzo della cache Come decidere che dati mantenere nella cache in modo da ottimizare le prestazioni di sistema ? Usati due criteri che danno solitamente una buona stima dei che dati saranno riutilizzati prossimamente Il primo è il principio di località spaziale ed il secondo è il principio di località temporale Stefano Brocchi Il sistema di elaborazione 32 / 37 Località spaziale Il principio di località spaziale dice che se si legge una cella di memoria, è probabile che le celle vicine saranno presto necessarie Durante l’esecuzione di un programma, a meno di istruzioni di salto dopo aver caricato un’istruzione sarà necessario caricare anche quella successiva Altro esempio: spesso alcuni file vengono caricati in memoria per intero; in questi casi, una volta letto il primo byte dovremo leggere anche tutti i byte successivi Come sfruttare questo principio: quando si carica una cella di memoria, viene caricato anche tutto il blocco di celle adiacenti In molti casi, per esempio nei dischi fissi, vedremo che questo non ha un costo molto superiore, in proporzione, al trasferimento di una singola cella Stefano Brocchi Il sistema di elaborazione 33 / 37 Località temporale Il principio di località temporale dice che una cella di memoria è stata letta o modificate recentemente, è probabile che sia utilizzata di nuovo in un futuro prossimo Quando si eseguono dei calcoli per esempio, è facile che la stessa variabile venga riutilizzata più volte Come sfruttare questo principio: quando la cache si riempie ed occorre rimuovere dei dati, viene eliminato il blocco di memoria utilizzato meno recentemente Politica chiamata LRU (Least Recently Used) Stefano Brocchi Il sistema di elaborazione 34 / 37 Prestazioni Molti indici per misurare le prestazioni di una memoria, tra cui: Volatilità o persistenza: la memoria si svuota se il computer viene spento ? La capacità, anche in proporzione al costo La velocità, suddivisibile in tempo di accesso, la velocità di trasferimento ed il tempo di ciclo La modalità di accesso, che può essere casuale, sequenziale, mista, ... Stefano Brocchi Il sistema di elaborazione 35 / 37 Memoria ROM All’interno di un calcolatore esiste un’ulteriore memoria molto importante: la memoria ROM (Read Only Memory, memoria a sola lettura) per il bootstrap, il processo di avvio del calcolatore Sigla ROM utilizzata anche per altre memorie in sola scrittura, come i CD-ROM Questa memoria ROM contiene le istruzioni di base che vengono eseguite quando viene acceso un computer, consentendo dei controlli di integrità e l’avvio del sistema operativo In sola lettura perché cosı̀ anche se tutto il resto della memoria viene persa, è possibile avere un piccolo programma di base che consente il ripristino del sistema Stefano Brocchi Il sistema di elaborazione 36 / 37 Domande da esame Da che parti è costituito un calcolatore nell’architettura di Von Neumann ? A che hardware corrispondono le varie componenti ? Come avviene la comunicazione tra i dispositivi hardware ? Come è rappresentata l’informazione su di un calcolatore ? Come viene misurata ? Cosa dice la legge di Moore ? Che tipi di memoria esistono nel calcolatore e per cosa differiscono ? A cosa serve e come funziona la cache ? Che criteri vengono impiegati nel suo utilizzo ? Stefano Brocchi Il sistema di elaborazione 37 / 37