Il sistema di elaborazione Stefano Brocchi [email protected] Stefano Brocchi Il sistema di elaborazione 1 / 44 Informatica Il termine informatica deriva dalle parole informazione e automatica Stefano Brocchi Il sistema di elaborazione 2 / 44 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 / 44 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 / 44 Storia del calcolatore Un altro traguardo fu rappresentato dall’ENIAC nel 47, una grande macchina programmabile molto più potente di qualsiasi cosa esistesse all’epoca Stefano Brocchi Il sistema di elaborazione 5 / 44 Sviluppo del calcolatore Massicci sviluppi tecnologici hanno permesso l’aumento di potenza e la miniaturizzazione dei computer 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 / 44 Caratteristiche Flessibilità di uso: il macchina rimane programmabile per compiti generici Modularità della struttura: i diversi componenti si occupano di diverse funzionalità del computer Scalabilità dei componenti: i componenti sono standardizzati e sostituibili Semplicità ed economicità Stefano Brocchi Il sistema di elaborazione 7 / 44 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 mantenere informazioni in modo persistente 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 / 44 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 di ingresso ed in uscita (tastiere, mouse, schermi...) Stefano Brocchi Il sistema di elaborazione 9 / 44 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 / 44 Il bus: visione hardware Stefano Brocchi Il sistema di elaborazione 11 / 44 Una scheda madre vista da vicino Stefano Brocchi Il sistema di elaborazione 12 / 44 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 13 / 44 Bus La gestione del bus crea tuttavia anche diverse problematiche La velocità del bus è condivisa tra le varie risorse La CPU deve coordinare l’accesso al bus Una soluzione adottata: utilizzare dei bus ’dedicati’ per dispositivi che necessitano di particolare efficienza Stefano Brocchi Il sistema di elaborazione 14 / 44 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 15 / 44 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 16 / 44 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 17 / 44 Conversione fra basi Si possono facilmente convertire numeri dalle due basi, considerando che secondo la notazione posizionale, una cifra assume valore diverso a seconda della posizione: 7542 = 7 migliaia +5 centinaia +4 decine +2 = 7 ∗ 1000 + 5 ∗ 100 + 4 ∗ 10 + 2 = 7 ∗ 103 + 5 ∗ 102 + 4 ∗ 101 + 2 Stefano Brocchi Il sistema di elaborazione 18 / 44 Conversione fra basi, da base 2 Da base 2 a base 10: 1011010012 = 1 ∗ 28 + 0 ∗ 2 7 + 1 ∗ 2 6 + 1 ∗ 2 5 + 0 ∗ 2 4 + 1 ∗ 2 3 + 0 ∗ 2 2 + 0 ∗ 2 1 + 1 = 256 + 64 + 32 + 8 + 1 = 361 Stefano Brocchi Il sistema di elaborazione 19 / 44 Conversione fra basi, da base 10 Da base 10 a base 2: Stefano Brocchi 361 Resto 1 /2= 180 180 /2= 90 0 90 /2= 45 0 45 /2= 22 1 22 /2= 11 0 11 /2= 5 1 5 /2= 2 1 2 /2= 1 0 1 /2= 0 1 361 = 1011010012 Il sistema di elaborazione 20 / 44 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 21 / 44 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 22 / 44 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 23 / 44 Esecuzione e program counter Tornando alla fase di elaborazione svolta dalla CPU, il processore esegue istruzioni contenute nella memoria centrale rappresentate da sequenze di bit Il punto dove è arrivata l’esecuzione è un indirizzo di memoria 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 24 / 44 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 25 / 44 Tipi di istruzione Allo scopo di eseguire calcoli, all’interno del processore sono presenti una o più componenti dedicate dette Arithmetical Logical Unit (ALU) A controllare le operazioni svolte dalla ALU e per gestire il trasferimento dati da e ai registri, è l’unità di controllo Stefano Brocchi Il sistema di elaborazione 26 / 44 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 registri Velocità del bus Architettura Stefano Brocchi Il sistema di elaborazione 27 / 44 Multicore e prestazioni La frequenza ed il numero di registri all’attuale stato tecnologico sembrano difficilmente migliorabili. 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). Inolte, occorre considerare che la velocità complessiva di una macchina dipende in primo luogo dal suo componente più lento, occorre tipicamente pensare innanzitutto al cosidetto collo di bottiglia. Stefano Brocchi Il sistema di elaborazione 28 / 44 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 29 / 44 La memoria Dopo aver analizzato la realizzazioen 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 30 / 44 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 Per mantenere dati su un supporto slegato dal calcolatore, si utilizzano dischi basati su tecnologia ottica come CD e DVD Stefano Brocchi Il sistema di elaborazione 31 / 44 Memorie esterne Altre alternative per la memoria esterna: le memorie USB rappresentano una memoria elettronica permanente e riscrivibile Per copiare grandi quantità di dati a livello industriale si utilizzano a volte nastri magnetici Molto lenti ma con grande capacità Consentito solo l’accesso sequenziale Stefano Brocchi Il sistema di elaborazione 32 / 44 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 In contrapposizione, la memoria ad accesso sequenziale che richiede una lettura dei suoi dati ordinatamente Stefano Brocchi Il sistema di elaborazione 33 / 44 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 ... 34 / 44 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 35 / 44 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 36 / 44 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) Stefano Brocchi Il sistema di elaborazione 37 / 44 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 38 / 44 Utilizzo della cache Come decidere che dati mantenere nella cache in modo da ottimizare le prestazioni di sistema ? Due criteri danno solitamente una buona stima di 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 39 / 44 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 40 / 44 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 41 / 44 Prestazioni Molti indici per misurare le prestazioni di una memoria, tra cui: La volatilità La velocità, suddivisibile in tempo di accesso, il tempo di ciclo e la velocità di trasferimento La capacità, anche in proporzione al costo La modalità di accesso, che può essere casuale, sequenziale, mista, ... Stefano Brocchi Il sistema di elaborazione 42 / 44 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 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 43 / 44 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 ? Che vantaggi e svantaggi ha questa soluzione ? 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 44 / 44