Memorizzazione dei dati (Data Storage) Corso di Didactics of Computer Science a.a. 2011/2012 Silvia Chiapponi I contenuti e le immagini sono tratti da "Computer Science: an overview", di Glenn Brookshear I bit e la loro memorizzazione • Le informazioni nei computer vengono codificate come sequenze di 0 e 1. Queste cifre vengono dette bit (binary digits). • Le sequenze di simboli possono rappresentare: – – – – – Numeri Caratteri dell’alfabeto Segni di punteggiatura Immagini Suoni . I bit e la loro memorizzazione Aritmetica Booleana • Assegniamo al bit 0 il valore “falso” e al bit 1 il valore “vero”. • Le operazioni booleane riguardano la combinazione di questi valori di verità. AND OR XOR NOT 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 I bit e la loro memorizzazione Gate e Flip-Flop • Per realizzare un’operazione booleana utilizziamo un dispositivo chiamato gate. • I gate vengono costruiti attraverso ingranaggi, relè e dispositivi ottici. I bit e la loro memorizzazione Gate e Flip-Flop Per memorizzare un bit si può utilizzare un circuito flip-flop. Un flip-flop produce un valore di output 0 o 1, che rimane costante finché un impulso esterno non ne determina il passaggio all’altro valore. Finché entrambi gli input sono 0, l’output (qualunque esso sia) non cambia. Se cambio il valore del primo input in 1, l’output diventa 1, e rimane costante anche quando riporto il primo input a 0. Se metto temporaneamente 1 nell’input in basso, l’output diventa 0, e rimane 0 anche quando riporto il valore del secondo input a 0. I bit e la loro memorizzazione Gate e Flip-Flop I bit e la loro memorizzazione Gate e Flip-Flop Perché sono importanti i flip-flop? 1. Illustrano il design di circuiti digitali, a partire dai gate. 2. Sono un esempio di strumento astratto. Flip-flop dalla struttura interna differente possono avere le stesse funzionalità esterne, che sono in sostanza quelle che servono a un ingegnere informatico. Flip-flop in serie permettono di memorizzare informazioni, codificate come sequenze di 0 e 1. I bit e la loro memorizzazione Notazione esadecimale • Lunghe stringhe di bit vengono chiamate stream. • Per semplificare la rappresentazione di stream, si usa la notazione esadecimale, che sfrutta il fatto che all’interno di un computer le sequenze tendono ad avere lunghezza uguale a un multiplo di 4. La tabella riporta tutti i possibili blocchi di 4 bit e associa ad ognuno di essi una cifra da 0 a 9 o una delle prime 6 lettere dell’alfabeto. Dividiamo la sequenza in blocchi di lunghezza 4, e sostituiamo ad ogni sottosequenza la sua rappresentazione esadecimale. Es: 1010-0100-1100-1000 = A4C8 Memoria principale • Per memorizzare informazioni, un computer contiene un grande numero di circuiti, ognuno dei quali in grado di memorizzare un singolo bit. Questa “riserva” di bit prende il nome di memoria principale. • La memoria principale di un sistema è suddivisa in celle, ognuna di dimensione 8 bit (8 bit = 1 byte). • Ad ogni cella è associato un indirizzo numerico, che serve ad identificare ogni cella all’interno della memoria principale. Memoria principale Viene assegnato un ordine: - ai bit all’interno di una cella; - alle celle nella memoria. In questo modo, tutti i bit in memoria possono essere visti come ordinati secondo un’unica lunga stringa. Oltre alla serie di circuiti che memorizzano i bit, ci sono altri circuiti che permettono di utilizzare i dati memorizzati nelle celle. Così, ulteriori circuiti possono effettuare operazioni di read e write. Le celle sono accessibili individualmente, senza doverle leggere necessariamente in sequenza: per questo la memoria principale di un computer viene chiamata RAM (random access memory). Memoria principale • Non ci sono solo i circuiti flip-flop per immagazzinare i bit: alcuni tipi di RAM immagazzinano ogni bit in un diverso condensatore: il numero di elettroni all’interno determina il valore 0 o 1. La carica viene persa rapidamente, quindi periodicamente deve avvenire una fase di ricarica del condensatore. E’ un tipo di memoria volatile, se il condensatore perde la carica l’informazione è perduta: per questo viene detta DRAM (dynamic RAM). • Il numero di celle nella memoria è una potenza di 2. Inizialmente, la memoria veniva misurata in 1024 celle (kylobyte, KB), ora si usano anche megabyte (MB), gigabyte (GB) e terabyte (TB). Memoria di massa • Oltre alla memoria principale, i computer hanno a disposizione anche altri dispositivi di memoria, chiamati memoria di massa, che comprendono hard disk, CD, DVD, nastri magnetici e memorie flash. • La memoria di massa permette di memorizzare un maggior numero di dati e archiviare le informazioni; è non volatile e ha un minor costo. • Lo svantaggio della memoria di massa è il fatto che richiede operazioni meccaniche, e quindi è necessario maggior tempo per memorizzare e accedere alle informazioni. Memoria di massa Sistemi magnetici • L’esempio più noto di dispositivo magnetico di memoria di massa è l’hard disk, in cui i dati sono contenuti su un sottile disco rotante, coperto di materiale ferromagnetico. La testina, posta sopra e/o sotto al disco in rotazione, effettua dei percorsi circolari, ognuno chiamato track; riposizionando la testina, essa può avere accesso a diverse track concentriche. Spesso, negli hard disk si trovano più dischi sovrapposti, montati su un unico fuso, e le testine dei vari dischi si muovono all’unisono. Memoria di massa Sistemi magnetici • Ogni traccia circolare è divisa in settori, ciascuno dei quali contiene lo stesso numero di bit. Nelle tracce più esterne c’è un maggior numero di settori (zoned bit recording). Ogni settore ha un indirizzo, come stringa indipendente di bit. • L’allocazione delle tracce e dei settori non è intrinseca della struttura fisica del disco: sono determinate dal processo di formattazione. • La capacità di un hard disk dipende dal numero di dischi utilizzato (fino a 6) e dalla densità delle tracce e dei settori. • Per valutare le performance di un hard disk ci si basa sui seguenti parametri: – – – – Tempo di ricerca, per muovere le testine da una traccia all’altra Latenza rotazionale Tempo di accesso Tasso di trasferimento. Memoria di massa Sistemi magnetici • • • • I nastri magnetici sono dispositivi di memoria di massa che si basano sul magnetismo: le informazioni sono memorizzate sul rivestimento ferromagnetico di un sottile nastro di plastica, avvolto in una bobina. Per accedere ai dati, il nastro è inserito in un tape drive, controllato dal computer, che legge, scrive e fa tornare indietro il nastro. Svantaggi: – Lungo tempo necessario per muovere il nastro e passare da un’informazione all’altra. Vantaggi: – Basso costo; – Affidabilità; – Alta capacità di memorizzazione. Memoria di massa Sistemi ottici • Un esempio di dispositivo che sfrutta tecnologia ottica per memorizzare dati è il CD (compact disk). • I CD sono dischi di 12 cm di diametro fatti di policarbonato, coperti da un sottile foglio metallico. Le informazioni sono memorizzate come successione di “buchi” e “terre”, e lette tramite un laser, che riconosce le irregolarità sulla superficie mentre il disco ruota. • I dati sono ordinati lunga un’unica traccia a forma di spirale, che va dal centro verso l’esterno. La traccia è divisa in settori, ognuno della capacità di 2 KB. Il laser legge i dati a velocità costante, perciò la velocità di rotazione del disco varia: è più elevata quando il laser legge i dati al centro, e diminuisce all’esterno. • Le prestazioni per l’accesso ai dati in un CD sono massime per l’accesso sequenziale (ad es. la riproduzione musicale), non per l’accesso diretto a un singolo dato. Memoria di massa Sistemi ottici • I tradizionali CD hanno una capacità di 700 MB. • Hanno invece capacità maggiore, fino a diversi GB, i DVD, che si basano sulla stessa tecnologia, ma sono formati da diversi strati, ognuno dei quali contiene informazioni. • Infine ci sono i Blu-ray Disks, che hanno capacità 5 volte maggiore dei DVD. La tecnologia Blu-ray sfrutta laser a maggior frequenza (blu/viola, invece che rosso), che lavorano con grandissima precisione. Memoria di massa Memorie flash • Nelle memorie flash, le informazioni sono memorizzate mandando segnali elettronici ad una serie di transistor, ciascuno dei quali è in grado di mantenere una carica per diversi anni, e quindi conserva il valore di un bit. • Il vantaggio delle memorie flash è la possibilità di salvare e cancellare dati nello stesso passaggio; lo svantaggio è che i transistor vengono danneggiati nelle ripetute cancellature. • Dispositivi di memoria flash sono: – Le chiavi USB, o flash drives, che hanno capacità fino ad alcuni GB, e sono ideali per il salvataggio di dati offline; – Le memory card SD (secure digital), che arrivano a contenere fino a 2 GB di dati, e possono essere inserite in molti dispositivi elettronici, come fotocamere digitali, smartphone, lettori di musica ecc. Memoria di massa • Le informazioni in un sistema di memoria di massa sono raggruppate in file: un file può contenere un testo, una fotografia, un programma, una canzone. • Un blocco di dati conforme con le caratteristiche del dispositivo di memoria è detto physical record (ad es. i settori della traccia di un disco magnetico); è detto invece logical record un blocco di dati “coerente” all’interno di un file (ad es. un paragrafo in un documento di testo). Physical e logical record raramente coincidono. • Un buffer è un’area di memoria usata per contenere dati in modo temporaneo, di solito durante il processo di trasferimento da un dispositivo a un altro. Le informazioni come bit Rappresentazione di testi • I testi vengono memorizzati attraverso un codice nel quale ad ogni simbolo alfanumerico viene assegnata un’unica sequenza di bit. • In generale un testo è dunque rappresentato da una lunga stringa di bit, costituita dai vari blocchi che rappresentano ognuno un carattere o un simbolo nel testo, in successione. • E’ detto file di testo un file costituito da una lunga sequenza di simboli codificato secondo l’ASCII o Unicode. – Text editor: manipola semplici file di testo – Word processor: produce file più elaborati, con cambiamenti di font, allineamenti modificati, ecc.. Le informazioni come bit Rappresentazione di testi • • • • • • L’ANSI (American National Standards Institute) negli anni ‘60 adottò l’ASCII (American Standard Code for Information Interchange) , un codice che usa sequenze di 7 bit per rappresentare le lettere maiuscole e minuscole dell’alfabeto inglese, i segni di punteggiatura, le cifre dall’1 al 9 e altre informazioni sul testo. L’ASCII venne poi esteso a 8 bit per ogni simbolo, in modo che ogni sequenza stia esattamente in un byte, e per avere ulteriori 128 sequenze possibili per indicare altri simboli. L’ISO (International Organization for Standardization) ha sviluppato diverse estensioni dell’ASCII, per venire incontro alle esigenze delle altre lingue. Nonostante le estensioni dell’ASCII, con questo codice non si possono rappresentare tutte le lettere di tutti gli alfabeti, ad esempio quello cinese, giapponese o cirillico. Inoltre, è scomodo per rappresentare testi nei quali compaiono parole di lingue diverse. Per questi motivi è stato sviluppato Unicode, che usa 16 bit per rappresentare ogni simbolo, quindi può rappresentare 65536 simboli differenti. Le informazioni come bit Rappresentazione di testi Tabella ASCII a 8 bit: Le informazioni come bit Rappresentazione di numeri • Per memorizzare valori numerici non è conveniente usare il codice ASCII: con 16 bit si possono rappresentare solo i numeri fino al 99. • Si usa la notazione binaria: invece delle cifre dallo 0 al 9 usiamo solo 0 e 1, e invece della base 10 usiamo la base 2. In questo modo, con 16 bit riusciamo a codificare i numeri dallo 0 al 65535. • Per rappresentare i numeri interi negativi si usa il sistema del complemento a due, mentre per i numeri razionali la tecnica floating-point. Le informazioni come bit Rappresentazione di immagini • Interpretiamo l’immagine come un insieme di punti, ognuno dei quali è detto pixel (picture element), e viene codificato singolarmente. • La collezione di tutti i pixel codificati viene detta bit map. • Come si codificano i pixel? IMMAGINI IN BIANCO E NERO: Ogni pixel è rappresentato da un bit, il cui valore dipende dal colore bianco o nero del pixel ad esso associato. Le informazioni come bit Rappresentazione di immagini IMMAGINI A COLORI 1. 2. Codifica RGB: ad ogni pixel sono associati 3 byte di informazioni, uno per l’intensità di ognuno dei colori rosso, verde e blu. Luminance & Chrominance: una componente di luminosità del pixel, somma dei colori rosso, blu e verde, più due byte che rappresentano la predominanza del blu e del rosso nel colore del pixel. Svantaggi nella rappresentazione bit map: un’immagine non può essere ridimensionata, se non allargando o riducendo le dimensioni dei pixel, a scapito della sua qualità. Le informazioni come bit Rappresentazione di immagini • Ogni immagine viene vista come insieme di strutture geometriche, linee e curve, codificate attraverso la geometria analitica. • E’ il metodo utilizzato nei sistemi di computer-aided design (CAD), e nella utility Paint di Windows: durante il disegno, il software mantiene la struttura geometrica della forma che stiamo disegnando: un rettangolo, un cerchio ecc. • In questo modo riscalare e modellare l’immagine è molto semplice. Le informazioni come bit Rappresentazione di suoni 1. Il metodo più generale per codificare dei suoni consiste nel campionare l’ampiezza dell’onda sonora ad intervalli di tempo regolari, e registrare la serie di valori ottenuta. I dati provenienti da ogni campionamento vengono rappresentati in 16 bit (32 bit per le registrazioni stereo). Es: 8000 campionamenti/secondo era il tasso di campionamenti per le comunicazioni telefoniche a lunga distanza; i CD musicali si basano su 44100 campionamenti/secondo. 2. MIDI (Musical Instrument Digital Recording): codifica quale strumento suona una certa nota, e per quanto tempo. Non codifica un suono, ma le “istruzioni” per ottenere quel suono. Una registrazione MIDI può suonare in modo differente su diversi sintetizzatori. Il sistema binario • La notazione binaria utilizzata nei computer per rappresentare numeri si basa sul sistema di numerazione binario. • Così come nel sistema di notazione decimale, anche nel sistema binario ogni cifra (che in questo caso può essere solo 0 o 1) è associata a una quantità. Il sistema binario • Per trovare la rappresentazione binaria di un numero intero positivo: – Si divide il numero per 2 e si riporta il resto ottenuto – Finché il quoziente ottenuto è diverso da 0, si continua a dividere il nuovo quoziente per 2 e si riporta il resto ottenuto. – La rappresentazione binaria del numero di partenza si ottiene scrivendo da destra a sinistra la sequenza dei resti ottenuti. Il sistema binario • Per sommare due interi rappresentati nel sistema binario si seguono le medesime procedure dell’usuale addizione in base 10, tenendo conto che: 0+0=0 1+0=1 0+1=1 1+1=0 • Per rappresentare numeri frazionari nel sistema binario introduciamo un radix point, a sinistra del quale si trovano le cifre che rappresentano la parte intera, mentre a destra la parte frazionaria. Ad ogni posizione è associata una quantità doppia rispetto a quella della posizione alla sua destra. Memorizzare numeri interi • Per rappresentare numeri interi all’interno dei computer si usa il metodo del complemento a due, basato sul sistema binario, con l’aggiunta di alcune proprietà per rappresentare anche numeri interi negativi. Il complemento a due si basa sul fatto che ad ogni valore numerico è associata una sequenza di bit della stessa lunghezza n. Si parte da una stringa di n zeri, e si conta in sistema binario fino a raggiungere una stringa del tipo 011…1: queste stringhe rappresentano i numeri interi positivi. Le stringhe che rappresentano numeri negativi si ottengono cominciando da una stringa di n uno, e contando all’indietro in sistema binario fino a una stringa del tipo 100…0. Memorizzare numeri interi • Nel complemento a due il bit all’estrema sinistra nella sequenza è detto bit di segno, in quanto indica il segno del numero rappresentato. Se il bit di segno è = 1 il numero è negativo, se è = 0 è positivo. • Per passare da un numero al suo opposto nel complemento a due: si copiano i primi bit a partire da destra, fino a copiare un 1; da lì in poi si prosegue verso sinistra sostituendo ogni bit con il suo complementare. Memorizzare numeri interi • Per sommare numeri rappresentati in complemento a due applichiamo la stessa tecnica dell’addizione nel sistema binario, tenendo conto però del fatto che tutte le sequenze di bit hanno la stessa lunghezza; quindi, se eventualmente la somma avesse un bit in più a sinistra, questo deve essere troncato. Es: 01010 + 11001 = 100011 00011 • Con questo algoritmo possiamo fare la somma di numeri concordi o discordi, senza problemi. Memorizzare numeri interi VANTAGGI DEL COMPLEMENTO A DUE: • Un unico circuito per sommare due numeri, unito a uno per fare l’opposto di un numero positivo, permette di risolvere problemi di addizione e sottrazione. PROBLEMI: • Nel complemento a due c’è un limite per i valori numerici che possono essere rappresentati. Per stringhe di bit di lunghezza n, possiamo rappresentare solo i numeri compresi fra . Si ha il problema dell’overflow quando un calcolo dà come risultato un valore che è fuori da quest’intervallo. Ci si accorge di un overflow perché la somma di 2 numeri positivi potrebbe dare un numero negativo, o viceversa. Nei computer odierni si usa il complemento a due a 32 bit, quindi si possono rappresentare numeri di valore assoluto fino a 2147483647. Memorizzare numeri interi • Un altro metodo per rappresentare numeri interi è detto eccesso N. Anche qui, ogni numero è rappresentato da una sequenza di bit della stessa lunghezza. • Per prima cosa scegliamo la lunghezza n delle stringhe di bit da usare, quindi ordiniamo tutte le possibili combinazioni di n bit come apparirebbero contando nel sistema binario. Prendiamo la prima stringa con primo bit = 1 e con essa rappresentiamo il valore 0; le stringhe successive rappresentano in ordine i numeri 1, 2, 3, .., quelle precedenti i numeri negativi -1, -2, -3, .. I bit di segno sono opposti rispetto alla notazione in complemento a due.