MEMORIE Uno dei principali vantaggi dei sistemi digitali rispetto a quelli analogici è la possibilità di memorizzare facilmente grandi quantità di informazioni digitali o di dati per periodi brevi o lunghi. Questo li rende molto versatili e facilmente adattabili a varie situazioni. Un computer digitale deve per poter funzionare essere in grado di immagazzinare numerose informazioni, relative a numeri da utilizzare per eseguire dei calcoli oppure dei dati da utilizzare per effettuare un tipo di operazione piuttosto che un'altra; la possibilità di memorizzare dei dati temporanei che sono il risultato di una certa operazione e che possono servire a breve distanza di tempo per poter effettuare una successiva operazione. Nel caso dei computer occorre anche conservare anche le istruzioni che il computer dovrà in tempi sequenziali eseguire. La parte del computer che provvede a questa operazione di conservazione dei dati è la "MEMORIA". Affronteremo lo studio, ma soprattutto la conoscenza, dei tipi più comuni di dispositivi e sistemi che vengono utilizzati per la realizzazione di una memoria. Il flip-flop è il più immediato dispositivo di memoria elettronica. Più dispositivi FF collegati in modo da formare un registro possono venire usati come elementi per la memorizzazione di informazioni e il successivo trasferimento ad altri dispositivi. I dispositivi che si ottengono sono elementi ad alta velocità che prendono il nome di "REGISTRI" e che vengono utilizzati molto all'interno di un computer digitale. L'avanzata tecnologica ha consentito di realizzare un gran numero di FF in un piccolo spazio consentendo così la realizzazione di memorie sempre più capaci e sempre meno costose. I dati digitali possono anche venire memorizzate anche come cariche su condensatori e vi è un tipo importante di memorie elettroniche che utilizza questo principio per ottenere grandi densità di memorizzazione con un basso consumo di potenza. Un altro metodo di memorizzazione è quello che utilizza dei dispositivi magnetici (nuclei magnetici, nastri dischi, memorie a bolla). Le memorie elettroniche vengono utilizzate all'interno del computer perchè sono in continuo scambio con l'unità centrale di elaborazione durante l'esecuzione di un programma; il programma ed i dati vengono di solito memorizzati nella memoria interna. Occorre anche tenere presente che queste memorie elettroniche, anche se in grado di immagazzinare un notevole quantitativo di dati, sono relativamente costose per poterli utilizzare come dispositivi di memoria di massa, cioè di memoria esterna al computer in grado di poter conservare milioni di dati senza necessitare di una potenza elettrica. Di norma la memoria di massa può anche essere relativamente lenta e quindi può essere usata per memorizza programmi e dati 1 non utilizzati normalmente dal computer; vengono invece trasferite nella memoria interna solo quando il computer lo richiede. Vi sono alcune caratteristiche e definizioni che possono risultare utili: Una parola contenuta in una memoria è detta "word" e se questa viene definita "byte" sarà di 8 bit. Si definisce capacità di una memoria la quantità di "bit" che questa può immagazzinare; questa normalmente è una potenza di 2 anche se nell'uso comune si arrotonda al numero intero. Ad esempio dire che una memoria ha una capacità di "2 K" non vuol dire che può immagazzinare duemila bit ma invece "2048" bit. La memoria può essere organizzata a parola anche se la capacità si riferisce sempre al numero di celle elementari. Potremo avere quindi una memoria da "4 K" cioè 4096 bit organizzata ad esempio 1024 x 4 512 x 8 Un altro elemento è l’indirizzo cioè il numero che identifica la locazione di una parola nella memoria. Ogni parola memorizzata in un dispositivo o sistema di memoria ha un indirizzo unico. Gli indirizzi vengono espressi come numeri binari, anche se spesso vengono indicati espressioni in numeri "ottali" "esadecimali" "decimali". Ovviamente la memoria deve potersi scrivere e leggere, per cui avremo delle operazione di scrittura e di lettura. L'operazione di scrittura si riferisce al caso in cui una parola proveniente dal mondo esterno viene posta in una locazione di memoria. E' evidente che ogni operazione di scrittura in una data locazione cancellerà la precedente parola contenuta in quella locazione. L'operazione di lettura consente di rivelare il contenuto di una locazione di memoria e quindi di poterla trasferire in un altro dispositivo. L'operazione di lettura non cancella il contenuto della cella di memoria. Un elemento importante che caratterizza una memoria è il tempo di accesso, che fornisce una misura della velocità operativa di un dispositivo di memoria. In pratica è il tempo necessario per effettuare una operazione di lettura. Questo tempo va calcolato dall'istante in cui la memoria riceve un nuovo indirizzo e l'istante in cui il dato contenuto nella casella di memoria indirizzata risulta disponibile all'uscita della memoria. Un altro elemento caratteristico di una memoria è il suo legame con l'alimentazione. Vi sono pertanto memorie volatili e non volatili. Per poter funzionare il dispositivo richiede l'applicazione di una potenza elettrica. Se la memoria è del tipo volatile al momento in cui viene a mancare la potenza elettrica tutti i dati memorizzati vengono perduti. Nel caso di memoria non volatile la mancanza di alimentazione non è motivo di perdita dei dati memorizzati. Per quanto riguarda le modalità di accesso al contenuto di una memoria possiamo avere "memorie ad accesso casuale " e 2 "memorie ad accesso sequenziale". Le prime dette comunemente "RAM" sono caratterizzate dal fatto che la locazione della parola non ha effetto sul tempo richiesto per la lettura o la scrittura in tale locazione. In pratica il tempo di accesso è lo stesso per tutti gli indirizzi della memoria. Nel tipo di memoria sequenziale il tempo di accesso non è costante, ma varia a seconda della locazione indirizzata. Una particolare parola memorizzata viene localizzata procedendo in sequenza attraverso tutte le parole che la precedono finchè non viene raggiunto l'indirizzo relativo alla parola desiderata. Vi sono delle memorie che possono essere lette e scritte mentre ve ne sono altre che possono essere solo lette. Queste ultime dette "ROM" (read only memory) rappresentano una notevole classe di memorie a semiconduttori. Questo tipo di memoria viene normalmente scritta in fabbrica. Altro elemento che caratterizza una memoria è la possibilità di conservare il dato per un tempo indefinito anche se non alimentate; avremo perciò "memoria statica" "memoria dinamica" Nella memoria statica i dati scritti in essa restano permanentemente memorizzati finchè il dispositivo viene alimentato. Nel caso dinamico i dati anche con l'alimentazione inserita i dati non rimangono memorizzati in modo permanente, per conservare i dati occorre riscriverli periodicamente, quest'operazione viene detta di "refresh". A parte le differenze viste che caratterizzano le varie memorie vi sono dei principi operativi di base che sono comuni a tutti i tipi di memorie. Consideriamo un blocco corrispondente ad una memoria e consideriamo questi elementi che consentono l'utilizzazione del dispositivo. Avremo dei fili che servono a selezionare l'indirizzo di memoria per una operazione di lettura o di scrittura (normalmente indicati come Ao,A1,A2,......An). Avremo un filo che consente la selezione di una operazione di lettura o di scrittura ( normalmente indicato come R/W). Avremo dei fili che servono a fornire i dati in ingresso o in uscita (normalmente lo stesso filo viene utilizzato per il dato in ingresso e in uscita), vengono indicati come I/O. Avremo un filo che consente di abilitare la memoria in modo che possa rispondere agli ingressi di indirizzo ed al comando di lettura/scrittura (normalmente indicato come CS) chip select. 3 Ingressi dati Comando Lettura/scrittura Ingressi indirizzo Memoria 16x4 Abilitazione memoria Uscite dati Per quel che riguarda la tecnologia di produzione delle memorie a semiconduttore vi sono due tipologie possibili -memorie bipolari (realizzate con transistor bipolari) -memorie Mos (realizzate con Mosfet) Le varie tecnologie di realizzazione delle memorie determinano prestazioni e caratteristiche diverse, per un confronto si utilizza il seguente criterio: a) DENSITA' (capacità di bit memorizzabili) b) VELOCITA' (tempo di accesso) c) POTENZA ( watt necessari per ogni bit memorizzato) d) Costo per bit e) IMMUNITA' al rumore Le memorie bipolari impiegano resistori, diodi, transistori bipolari per la loro realizzazione. La notevole complessità della circuiteria bipolare limita notevolmente la capacità di questo tipo di memoria. Sono caratterizzate da un'alta velocità, una limitata capacità, un notevole consumo di potenza ed una relativamente bassa immunità al rumore oltre che un notevole costo. Le memorie Mos utilizzano la tecnologia Mos a canale N che consente una notevole capacità ad un costo notevolmente basso ed a bassi consumi di potenza. I dispositivi di memoria CMOS sono caratterizzati da un basso consumo di potenza fra tutte le tecnologie. Hanno anche una notevole immunità al rumore. Grazie ai continui progressi della tecnologia che ha consentito di eliminare molti degli inconvenienti e quindi tende a coprire il mercato delle memorie. 4 MEMORIE A SOLA LETTURA Questo tipo di memoria a transistor viene utilizzato per contenere dei dati che non vengono variati. Normalmente i dati vengono scritti durante il processo di fabbricazione, in qualche caso i dati possono venire inseriti in modo elettrico. Questo processo di inserimento dei dati viene chiamato programmazione o bruciatura della ROM. Alcune ROM non possono essere modificate una volta che sono state scritte altre invece possono venire cancellate e riprogrammate tutte le volte che si desidera. Il principale impiego di una ROM è la memorizzazione di programmi per microcomputer. Poichè tutte le ROM sono di fatto delle memorie non volatili questi programmi non vanno perduti quando il computer viene spento. Lo schema di una ROM è illustrata in figura In esso vediamo i fili corrispondenti agli ingressi di controllo, a quelli di indirizzo e le uscite dei dati. Le uscite sono normalmente del tipo TRISTATE per consentire la connessione di più chip al medesimo bus di dati per espansioni di memorie. Normalmente sono memorie con parole di 4 o 8 bit. L'ingresso di controllo "CS" è quello che consente la selezione del chip che in pratica consente la connessione della memoria mediante il sistema di TRISTATE. Parecchi produttori utilizzano altri modi per indicare la stessa funzione; ad esempio CE (chip enable) oppure OE (output enable). 5 Per leggere la parola sono necessarie due cose: applicare il numero binario corrispondente all'indirizzo della parola che si desidera leggere e poi attivare gli ingressi di controllo. L'architettura interna di una ROM è notevolmente complessa ma d'altronde non è necessario conoscerne a fondo i dettagli. In essa si distinguono quattro parti fondamentali -il decodificatore di riga -il decodificatore di colonna -la matrice dei registri - i buffer di uscita I decodificatori di indirizzo che essendo la ROM organizzata a matrice risulterà costituito da una parte che serve ad indirizzare le righe ed una parte che consente l'indirizzamento delle colonne. A ciascuno di questi due componenti l'indirizzo corrisponderà un decodificatore (quindi di riga e di colonna). I registri che costituiranno la cella di memoria la cui dimensione corrisponderà alla lunghezza della parola, si troveranno in corrispondenza all'incrocio dell'indirizzo decodificato di riga e di colonna. I buffer di uscita che vengono attivati dagli ingressi di controllo consentono di collegare i dati contenuti nei registri interni con i fili di uscita. Per un suo funzionamento la ROM, ha bisogno di tre elementi: a) l'indirizzo b) la selezione c)l'abilitazione successivamente a questi tre elementi si potrà disporre dei dati in uscita; vi sarà quindi na temporizzazione di questi elementi. E' ovvio che ci sarà un ritardo di propagazione fra l'istante in cui viene applicato l'indirizzo e l'istante in cui i dati possono essere presenti in uscita, allorchè si attiva il ciclo di lettura. Questo ritardo di tempo costituisce quello che è il "tempo di accesso"; l'andamento grafico dei tempi citati può essere del tipo indicato in figura 6 Dal momento in cui cominciano ad essere applicati i segnali corrispondenti all'indirizzo passerà un certo tempo perchè tutti i fili relativi contengono il livello nuovo; quando tutti i fili hanno raggiunto questa posizione avremo la condizione di "indirizzo valido", da questo momento la circuiteria interna inizia la decodifica fino al raggiungimento della registro corrispondente alla casella desiderata e quindi inviare i dati al buffer di uscita. A questo punto possiamo inviare il comando di controllo che seleziona la memoria (ad esempio il CS) o OE che determina il passaggio dei fili di uscita dalla condizione di HiZ (alta impedenza del tipo TRISTATE) a quella di dato valido. Questo tempo che viene chiamato "TEMPO DI ACCESSO" è attualmente, a seconda del tipo e della tecnologia della memoria, dell'ordine delle decine di nanosecondi. Nel campo delle memorie a sola lettura, quindi ROM si devono anche considerare altri tipi di memoria che pur non essendo scritte in fabbrica sono cancellabili con notevole difficoltà. Si tratta delle "PROM" che può scrivere l'utente ma non può più cancellare, si tratta delle "EPROM" che può scrivere l'utente con una certa difficoltà e può cancellare sempre l'utente con difficoltà, si tratta delle "EEPROM" che può scrivere e cancellare l'utente sempre con qualche difficoltà. Cominciamo con le ROM che vengono programmate in fabbrica su richiesta specifica dell'utente. Per la scrittura si utilizza il metodo delle maschere esattamente come se si trattasse della realizzazione del circuito integrato. Questo tipo di realizzazione a maschere è un procedimento produttivo notevolmente costoso e quindi si giustifica solo se si tratta di produrre una quantità considerevole di memorie ROM con lo stesso contenuto. Tuttavia si trovano in commercio delle ROM già prodotte ma solo per tipi di applicazioni generiche che rivestono una grande applicazione sul mercato (es. Dispositivi generatori di caratteri per visualizzatori). L'utente che richiede la realizzazione di 7 una ROM deve essere certo che l'applicazione che richiede quella data memoria non necessiti di alcun cambiamento altrimenti occorrerà ricostruire una nuova ROM con tutte le spese relative ad una nuova realizzazione. Vi sono varie tipologie di memorie ROM con varie capacità e con alcune possibilità di circuiteria di controllo. Avremo ad esempio la memoria 74187 che è una ROM 256x4 con un tempo di accesso di soli 40 nsec, questa dispone anche di uscite a collettore aperto, lo schema è indicato in figura In alternativa a queste memorie vi sono quelle a Mos dove il transistor bipolare è sostituito da un transistor MOSFET. La TMS47256 è una versione NMOS con una capacità di 32Kx8, lo schema è indicato in figura la memoria dispone di uscite del tipo TRISTATE per consentire l'interfacciamento con un bus di dati. Uno degli ingressi di controllo consente anche di passare dallo stato di funzionamento normale a quello di "attesa" detto "STANDBY" in cui si ha un consumo di potenza notevolmente ridotto. Vi è anche la versione CMOS con un consumo di potenza in attesa notevolmente inferiore ( da 82 mW della versione NMOS a soli 2,8 mW della versione CMOS). 8 Per superare questo inconveniente ed anche nei casi di messa a punto di una determinata apparecchiatura o nel caso di una piccola produzione che non riesca ad ammortizzare l'investimento relativo alla produzione di una ROM programmata, può essere utile ricorrere ad una "PROM" Questo tipo di memoria viene realizzato con delle connessioni fusibili che possono essere programmate dall'utente e non dal costruttore in fase di produzione. una volta programmata la PROM diviene a tutti gli effetti come una ROM che nel senso che non può più essere programmata. La struttura di una PROM è molto simile a quella di una ROM con una connessione della base da poter interrompere al fine di programmare un "1" o uno "0". Queste connessioni di base vengono realizzate con dei filamenti sottili che sono tutti intatti nella memoria realizzata dal costruttore. L'utente non deve fare altro che "bruciare" quei filamenti in modo selettivo. Una volta interrotta la connessione è ovvio che non può più venire ripristinata. Normalmente questa scrittura non viene effettuata in modo manuale a causa del notevole tempo necessario; si utilizzano degli strumenti programmatori che consentono di scrivere una prom in poco tempo. Un esempio di PROM la 74186 una 64x8 con tempo di accesso di soli 50 nsec, altro esempio TMS27P64 una NMOS da 8Kx8 con tempo di accesso di 250 nsec. Passiamo ad un altro tipo di memoria, che una volta programmata risulta del tipo non volatile; si tratta delle memorie "EPROM", infatti dopo la programmazione può conservare i dati per un tempo indefinito anche se viene tolta l'alimentazione per un tempo anch'esso indefinito. La memoria può essere programmata dall'utente utilizzando delle apparecchiature non particolarmente costose. Per la scrittura verranno utilizzate delle tensioni di livello superiore a quello di alimentazione normale (es. 25 Volt) inviate ad un ingresso apposito per un tempo indicato dal costruttore. C'è da precisare che il processo di programmazione non può essere effettuato sul circuito di impiego della memoria da va effettuato fuori dal circuito, appunto utilizzando l'apparecchiatura prima citata. L'operazione di scrittura, anche utilizzando queste apparecchiature citate, richiede alcuni minuti, mentre una eventuale programmazione manuale richiederebbe alcune ore. Una volta che la EPROM è stata programmata, può essere cancellata soltanto esponendo la memoria, che è dotata di una finestrella di quarzo nella parte superiore, ad una luce ultravioletta per un dato tempo. La memoria viene cancellata completamente, cioè non è possibile cancellare in modo selettivo una sola cella di memoria. Le EPROM sono disponibili in una ampia varietà di capacità, si va dai 16 K al Megabit con varie velocità di accesso. Consideriamo una EPROM classica la 2716 che è una 2Kx8 costruita dalla Intel, lo schema logico è quello di figura 9 come si vede vi sono 11 fili necessari per l'indirizzo, otto fili di uscita per i dati; vi sono anche due fili di alimentazione che nell'uso normale vengono collegate all'alimentazione 5 Volt, nel caso di programmazione uno di questi fili va collegata ad una alimentazione molto più alta dell'ordine di 25 Volt. I due fili di ingresso hanno due funzioni, una è quella che permette di selezionare il chip di memoria, l'altro consente di porre in STANDBY la memoria portando il consumo ad un valore di 132 mW anzichè 525 mW corrispondenti all'uso normale. A differenza della cancellazione la scrittura invece è selettiva cioè noi possiamo scrivere soltanto una locazione, la sequenza da seguire è la seguente (consideriamo il circuito di figura 11.53 tocci: in esso vediamo un contatore o degli interruttori in grado di fornire un numero binario corrispondente all'indirizzo della casella di memoria che si desidera scrivere, una serie di otto interruttori in grado di fornire la parola che si vuole scrivere 10 all'indirizzo selezionato ed un circuito monostabile in grado di fornire un impulso la cui larghezza corrisponda a quanto indicato dal costruttore come impulso di programmazione. I passi richiesti sono a) applicare l'indirizzo agli ingressi desiderati b) applicare la parola che si vuole scrivere c) porre ad un livello logico "1" il filo di controllo "OE" d) avviare il monostabile tramite il pulsante che invierà l'impulso all'entrata "CE". Un ulteriore progresso nel campo delle memorie "non volatili" è rappresentato dalle "EEPROM". Queste memorie vanno programmate con le stesse modalità delle EPROM ma sono cancellabili elettricamente. Questo consente due vantaggi a) è possibile cancellare la memoria senza uno spostamento del chip dal circuito b) è possibile cancellare e riprogrammare una singola cella di memoria, sempre senza rimuovere il chip dal circuito. Queste memorie, come detto, richiedono per la loro programmazione delle tensioni particolari, quindi se vogliamo programmarli senza una loro rimozione dal circuito occorre predisporre una circuiteria appropriata. MEMORIE LETTURA/SCRITTURA In questo settore consideriamo delle memorie che si possono scrivere e leggere con la stessa rapidità consentendo quindi una facile gestione da parte di un calcolatore; ad esempio porre in esse dei dati temporanei, parti di programma ed altri usi di tipo temporaneo. Normalmente in queste memorie il tempo di lettura quasi coincide con quello di scrittura ed entrambi sono molto brevi (dell'ordine della decina di nanosecondi). Vengono genericamente chiamate "RAM" (random access memory). Vengono impiegate nei computer per la memorizzazione temporanea di programmi e di dati. Il contenuto delle varie locazioni di memoria viene modificato continuamente dal computer durante l'esecuzione di un programma. Le RAM sono delle memorie dette volatili, quindi lo spegnimento dell'apparecchiatura ne cancella il contenuto a meno che non si preveda una alimentazione a batteria che continui ad alimentare la memoria al cessare di quella generale. Per tale tipo di impiego occorre disporre di memorie che prevedano il funzionamento in "standby" e che inoltre in questa condizione consumino poca potenza. Gli aspetti che caratterizzano le RAM sono del tutto simili a quelli delle ROM. Le capacità delle RAM sono molto varie, vanno da pochi Kilobit ad centinaia di megabit. Un esempio di circuito logico di RAM è illustrato in figura, dove sono evidenziati due situazioni; vediamo infatti un primo che risulta del tutto simile ad una ROM, il secondo caso 11 presenta invece una memoria che presenta i fili relativi ai dati con l'indicazione I/O. In questo secondo esempio abbiamo cioè un dispositivo che presenta lo stesso filo per far entrare ed uscire i dati in memoria. Per quel che riguarda le RAM c'è da evidenziare due tipologie caratteristiche, la distinzione fra "RAM STATICA" e "RAM DINAMICA". La ram statica può memorizzare i dati finchè il chip viene alimentato, ciascuna cella di memoria si deve intendere come un flip-flop che conserva indefinitivamente il suo stato a meno che non venga tolta l'alimentazione. Le ram dinamiche memorizzano i dati come cariche elettriche in un condensatore; di conseguenza il dato tende a scomparire a causa della scarica lenta ma inevitabile del condensatore; quindi è necessario ripristinare il dato periodicamente (in pratica occorre ricaricare il condensatore). Il mercato produce memorie ram del tipo statico sia con tecnologia bipolare che MOS (NMOS e CMOS). La tecnologia bipolare presenta il vantaggio della velocità, anche se gli ultimi progressi nel campo dei Mos ha consentito una elevazione notevole della velocità dei tipi CMOS. Un aspetto importante delle RAM è la temporizzazione che la riguarda; infatti i chip di memoria si interfacciano alla CPU e devono essere molto veloci per consentire alla CPU di poter leggere e scrivere ogni volta che lo richiede l'esecuzione del programma; è importante quindi conoscerne le prestazioni temporali. Le varie memorie non hanno le stesse caratteristiche di temporizzazione, ma sono abbastanza simili. Analizziamo le varie forma d'onda relative ad un ciclo di lettura,riportate nella parte a) della figura 12 vediamo le forme d'onda relative agli indirizzi al comando R/W, al comando CS ed a quello relativo ai dati. La sequenza dei dati inizia con l'invio dell'indirizzo relativo alla casella di memoria da leggere, in questo istante il comando CS è inattivo e quindi la memoria non risponde a questo indirizzo. Il filo corrispondente a R/W è alto e quindi in comando "READ", Le uscite dati si troveranno nello stato "ALTA IMPEDENZA" finchè CS è nello stato alto. Trascorso un certo intervallo di tempo sufficiente perchè si abbia la stabilizzazione dei dati relativi agli indirizzi, la linea CS viene attivata portando il livello ad un valore logico "BASSO". Trascorso un certo tempo il dato valido compare in uscita. 13 Il passaggio del livello di CS ad un valore alto riporta dopo un certo tempo i livelli ad un valore "ALTA IMPEDENZA" dei fili dei dati. Analizziamo le varie forma d'onda relative ad un ciclo di scrittura,riportate nella figura precedente b). Vediamo le forme d'onda relative agli indirizzi al comando R/W, al comando CS ed a quello relativo ai dati. La sequenza dei dati inizia con l'invio dell'indirizzo relativo alla casella di memoria da scrivere, in questo istante il comando CS è inattivo e quindi la memoria non risponde a questo indirizzo. Il filo corrispondente a R/W è alto e quindi in comando "READ", Le uscite dati si troveranno nello stato "ALTA IMPEDENZA" finchè CS è nello stato alto. Trascorso un certo intervallo di tempo sufficiente perchè si abbia la stabilizzazione dei dati relativi agli indirizzi, la linea CS viene attivata portando il livello ad un valore logico "BASSO", contemporaneamente viene portato ad un livello basso anche il comando R/W, attivando quindi il comando di scrittura (WRITE). Trascorso un certo tempo il dato valido compare in uscita. Il passaggio del livello di CS e di R/W ad un valore alto riporta dopo un certo tempo i livelli ad un valore "ALTA IMPEDENZA" dei fili dei dati. Passiamo ad analizzare l'altro tipo di memoria volatile, forse anche più volatile delle RAM statiche, le "RAM DINAMICHE"; queste vengono fabbricate con la tecnologia cmos e sono preferite per le alte capacità di memoria e per i bassi consumi di potenza. Queste, a differenza di quelle statiche che memorizzano il dato in una cella formata essenzialmente da un flip-flop, utilizzano per la conservazione del dato delle piccole il cui valore e dell'ordine di qualche picofarad. Queste capacità tendono inevitabilmente a scaricarsi dopo un certo tempo, per cui queste memorie richiedono una ricarica periodica delle celle di memoria, il cosiddetto "REFRESH". Questo rinfresco deve avvenire all'incirca ogni 2 millisecondi, un tempo superiore mette a rischio l'esattezza del dato. Questa operazione di rinfresco è uno svantaggio relativo a questo tipo di memoria rispetto a quelle statiche. Questo richiede una circuiteria addizionale per effettuare questa operazione, naturalmente è una operazione da effettuare durante gli intervalli di tempo in cui non viene usata la memoria sia per la lettura che per la scrittura. Nelle ultime realizzazioni, per memorie di piccola capacità, la circuiteria di rinfresco viene integrata all'interno della stessa memoria. Per memorie di capacità grandi che vengono utilizzate per la realizzazione di computer si utilizzano dei chip realizzati esclusivamente per questa operazione che sono dei controllori di memoria dinamica, che disponendo di tutta la logica necessaria, liberano il progettista da tutti questi problemi connessi con questa operazione di rinfresco. 14 Per sistemi piccoli dove non si giustifica la complessità di queste operazioni è preferibile l'uso di una memoria statica, ma per sistemi complessi e non la necessità di grandi capacità di memoria è inevitabile l'uso di memorie dinamiche che in ogni tempo rappresentano il massimo della capacità relativa ad una memoria realizzabile in quel dato tempo. Le memorie dinamiche, come detto, hanno una struttura molto semplice e quindi consentono una densità molto più alta, che può essere anche quattro volte quella di una statica; questo porta quindi ad una quantità di dati memorizzabili molto più alta e quindi di conseguenza un costo notevolmente più basso. Anche la minore potenza richiesta è un ulteriore vantaggio realizzativo e di costo per la possibilità di realizzare degli alimentatori più piccoli. Molte delle ram dinamiche sono organizzate come celle ad un solo bit; risulta quindi pratica una organizzazione della memoria a matrice, quindi avremo metà degli indirizzi come righe e l'altra metà come colonne. Avremo un decodificatore relativo alle righe ed uno relativo alle colonne. vi sarà un solo filo attivo all'uscita del decodificatore di riga ed uno in quello di colonna, la cella all'incrocio di questi due fili sarà quella attivata. Per ottenere delle parole di più bit occorrerà collegare più memorie nel modo espansione come vedremo più avanti. Quanto detto è evidenziato in figura Una figura cella simbolica di memoria 15 dinamica è indicata in l'esempio è prima di dettagli circuitali, quì si possono solo evidenziare le modalità più importanti del funzionamento, relativo alla lettura ed alla scrittura di una memoria dinamica. Utilizzando gli interruttori è possibile gestire la carica del condensatore e quindi la scrittura della cella e la lettura utilizzando l'amplificatore che limita la quantità di carica persa dal condensatore durante la lettura. Il circuito della figura precedente evidenzia anche il fatto che al momento della lettura del dato il condensatore viene collegato all'uscita dell'amplificatore e quindi si ottiene la rigenerazione della tensione ai capi del condensatore; avremo infatti, se il dato contenuto nel condensatore risulta superiore alla tensione di riferimento presente al morsetto negativo dell'amplificatore, che l'uscita dello stesso amplificatore si porta ad una tensione elevata che corrisponde al livello "1", quest'uscita si trova collegata anche al condensatore e quindi si avrà una ricarica del condensatore al valore di tensione piena anche se il condensatore si era scaricato parzialmente, purchè il livello raggiunto non risulta inferiore a quello di riferimento. Se il valore di tensione ai capi del condensatore risulta basso, in particolare inferiore al valore della tensione di riferimento, la tensione presente all'uscita dell'amplificatore risulterà bassa, praticamente zero volt, questa tensione, come nel caso precedente, si presenta ai capi della capacità portandolo ad una tensione nulla. In pratica la lettura ha determinato una operazione di rinfresco. Con l'aumento della capacità di memoria aumenta anche il numero dei piedini necessari al chip integrato per potere indirizzare tutte le caselle di memoria; ad esempio una memoria con capacità di 64K necessita di 16 fili di indirizzo mentre una memoria di 512 K ne richiederebbe di fili di indirizzo ben 19, un numero notevole. Al fine di ridurre il numero di piedini del chip i produttori hanno adottato la soluzione del "multiplexing dell'indirizzo", grazie a questo sistema ogni filo di indirizzo può servire per due fili, ad esempio uno di riga ed uno di colonna. Il circuito, oltre agli altri fili di controllo, contiene due fili detti RAS (row address strobe) e CAS ( column address strobe) che con il loro livello attivo avviano il segnale presente sui 7 fili di indirizzo verso il registro in grado di immagazzinare l'informazione relativa all'indirizzo da inviare ad 16 decodificatore di riga , mentre l'altro farà la stessa cosa ma per il decodificatore di colonna Un tipico computer con una memoria dinamica del tipo indirizzabile con sistema multiplexer è quello indicato in figura in questo schema vediamo che occorre interfacciare fra i fili degli indirizzi che provengono dal computer con un dispositivo in grado di presentare in uscita prima metà degli indirizzi e successivamente l'altra metà; questo dispositivo ha bisogno di un comando che nello schema in oggetto è indicato come segnale "MUX". Analizziamo ora la temporizzazione di lettura e scrittura nel caso di una memoria dinamica con indirizzamento multiplexer. Ciclo di lettura a) viene inviato il comando di "MUX" che abilita il registro di riga. b) viene quindi inviato il segnale RAS per memorizzare la prima metà degli indirizzi corrispondenti alla riga. c) quindi viene inviato il segnale CAS per memorizzare gli indirizzi corrispondenti alla colonna. 17 d) a questo punto avremo sui fili di uscita i dati immagazzinati nella cella indirizzata. e) i comandi "MUX", "RAS" , "CAS" vengono riportati ai loro valori iniziali. Ciclo di scrittura a) viene inviato il comando di "MUX" che abilita il registro di riga. b) viene quindi inviato il segnale RAS per memorizzare la prima metà degli indirizzi corrispondenti alla riga. c) quindi viene inviato il segnale CAS per memorizzare gli indirizzi corrispondenti alla colonna. d) vengono inviati i dati che devono essere scritti. e) dopo un breve intervallo viene commutato il segnale R/W per commutarlo a scrittura. f) a questo punto viene tolto il dato. g) i comandi "MUX", "RAS" , "CAS" vengono riportati ai loro valori iniziali. Per le operazioni di rinfresco, che non devono in nessun modo interferire con le operazioni di lettura e scrittura vengono prodotti dei chip dedicati per ridurre le complessità circuitali. In genere queste operazioni vengono effettuati per riga in maniera che l'operazione di rinfresco viene effettuata in metà tempo. Nel caso di una memoria da 16 K ad esempio l'operazione di rinfresco potrebbe essere completata in soli 50msec. Spesso, nelle applicazioni, le dimensioni sia della capacità che della parola necessaria non sono ottenibile con un solo chip di memoria, bensì devono essere combinati più chip per raggiungere la dimensione desiderata. Caso dell'espansione della dimensione della parola. Si supponga di aver bisogno di una memoria da 16 x 8 bit, ed invece si dispone di memorie da 16 x 4 con I/O comuni. Il circuito che consente di ottenere quanto desiderato è indicato in figura 18 Il circuito si spiega da solo. un altro esempio è il caso di memorie del tipo n K x 1 da utilizzare per ottenere una parola n K x m. un esempio è indicato in figura dove si utilizzano delle memorie da 1 K x 1 per ottenere una memoria da 1 K x 8. Altro caso è la possibilità di disporre delle memorie con parola uguale a quella desiderata e con capacità inferiore. Un esempio è indicato in figura 19 in questo caso abbiamo una memoria da 16 x 4 ed utilizzandone due possiamo ottenere una memoria da 32 x 4; per effettuare la selezione dei due chip si utilizza un solo filo che con la sua condizione di "0" o "1" consente di selezionare i due chip. Un altro esempio è quello di figura in questo caso i chip da selezionare sono quattro perchè si vuole ottenere una memoria da 8 K x 8 utilizzando delle memorie da 2 K x 8. In questo caso non basta un solo filo ma occorre utilizzare un decodificatore come si può dedurre con chiarezza dal circuito. Tutte le memorie elettroniche a semiconduttore fino a questo momento esaminate sono del tipo ad accesso casuale, cioè è indifferente la locazione di memoria che si desidera raggiungere, senza la necessità di esaminare il contenuto di altre celle di 20 memoria. Questa modalità di funzionamento consente di avere una notevole velocità di accesso e quindi si prestano bene ad essere utilizzate dal computer come memoria di programma o di dati, in altre parole come memoria interna di un computer. In alternativa a queste memorie ad accesso casuale vi sono quelle ad accesso sequenziale, anche di tipo elettronico, che utilizzano dei registri a scorrimento. Queste memorie anche se di tipo sequenziale sono caratterizzate da una notevole velocità, per cui anche se non possono venire utilizzate come memorie interne possono venire utilizzate come zone dove vanno immagazzinati dei dati che vanno utilizzati in modo ripetitivo. Per esempio dei dati da presentare in un display che vanno evidenziati per un certo tempo, almeno fino al momento in cui occorre sostituiti con degli altri. In genere il registro a scorrimento viene realizzato utilizzando dei FF il cui numero può essere qualunque, e quindi in teoria può essere qualunque anche la dimensione di un registro a scorrimento. Il circuito presenta una entrata di dati, un clock che consente lo scorrimento dei dati, un filo di uscita corrispondente all'ultimo bit e tanti altri fili che corrispondono alle uscite di ciascun flip-flop (naturalmente se questo numero non è eccessivo), un filo che consente di selezionare fra lettura ciclica del registro e registrazione dei dati per il caricamento del registro stesso. Una combinazione di più registri consente di ottenere una parola a più bit. Sempre nel campo delle memorie sequenziali abbiamo le memorie "FIFO" che come impostazione sono del tutto simili a quelle a registri a scorrimento, cioè con la prima parola che entra è la prima parola che esce (First in, First out). Pur tuttavia esistono delle differenze fra i due tipi di memorie; ad esempio in una FIFO il dato non viene fatto riciclare, cioè una volta uscito è perso. Altro elemento è che in una FIFO l'operazione di far scorrere i dati nella memoria è completamente indipendente dallo scorrimento dei dati fuori della memoria; in poche parole i dati scorrono con velocità diverse, questa modalità di funzionamento le rende molto utili per il trasferimento di dati fra sistemi che lavorano a velocità differenti. Per effettuare questa modalità vi sono due ingressi di clock, uno per l'entrata dei dati ed uno per l'uscita. Un diagramma a blocchi è quello di figura 21 Un tipico esempio di applicazione è il trasferimento di dati fra un computer ed una stampante che notoriamente lavorano a velocità molto diverse. La memoria FIFO in questo caso può funzionare da buffer (memoria tampone) convertitore di velocità tra i due elementi. La stessa operazione può venire effettuata in modo inverso, cioè fra un sistema lento ed uno veloce, una tastiera ed un computer. Sempre nel campo delle memorie sequenziali occorre ricordare anche l'esistenza delle memorie a BOLLE MAGNETICHE, che sono delle memorie a stato solido (cioè privi di organi meccanici in movimento) che memorizzano i dati binari in forma di piccoli domini cilindrici (appunto delle bolle) in una pellicola di materiale magnetico. La presenza di una bolla viene letta con un "1" mentre l'assenza come uno "0". Dei campi magnetici determinano lo scorrimento di queste bolle all'interno del materiale magnetico. Questi dati sono obbligati a passare dinanzi ad un punto di rilevamento dal quale possono passare all'esterno. La velocità di trasferimento dei dati è relativamente notevole, circa 50 Kbit/sec. Sono chiaramente delle memorie non volatili, al cessare dell'alimentazione le bolle si fermano per riprendere lo scorrimento allorchè viene ripristinata l'alimentazione. Vengono lette e scritte con la stessa facilità e rispetto ad altre forme di memorie sequenziali, come i nastri e i dischi, hanno il vantaggio di non avere parti mobili e quindi maggiore affidabilità e silenziosità. Altro elemento di pregio è la bassissima potenza dissipata. Come memoria elettronica , al momento della loro immissione sul mercato, disponevano di una capacità enorme rispetto a tutte le altre memorie elettroniche. Questo tipo di memoria non ha avuto molto successo poichè non può essere utilizzato come memoria interna ma sempre come memoria di massa, ma con un costo molto più elevato di altre memorie di massa. Prima di chiudere questo argomento relativo alle memorie ricordiamo, come memorie di massa, i sistemi a disco magnetico del tipo rigido o flessibile. Questo tipo di supporto consente una notevole capacità di memoria con velocità operative relativamente buone. I sistemi a disco rigido (HARD DISK) sono formati da una serie di dischi rigidi del tipo fonografico posti in pila fra di loro in un certo numero e separati da uno spazio fra i singoli dischi. I dati vengono memorizzati su uno strato magnetico disposto sopra questi dischi rigidi. Una configurazione tipica è indicata in figura 22 I dati vengono registrati e letti in modo seriale in bande concentriche, dette tracce, su entrambe le facce di ciascun disco mediante testine mobili di lettura/scrittura. Queste testine si muovono in modo radiale verso l'interno o l'esterno nello spazio fra i dischi. Il tempo di acceso è legato alla velocità di rotazione del disco, dal diametro e dalla velocità di spostamento della testina. Le testine non toccano la superficie del disco per evitarne la rapida usura, mentre invece la testina fluttua sul disco volando su un cuscino d'aria che aderisce al disco. I tempi di accesso sono dell'ordine della decina di millisecondi, che è praticamente il tempo necessario alla testina per raggiungere la posizione della traccia da leggere o scrivere, una volta raggiunta i dati vengono trasferiti ad una velocità notevole, legata alla velocità di rotazione che può essere di circa 6000 giri al minuto. La distanza che separa la testina dalla superficie del disco è di qualche milionesimo di pollice, cioè una dimensione simile alle particelle presenti nell'aria, queste potrebbero alterare la lettura e la scrittura dei dati, è necessario allora che l'unità a disco venga protetta dall'aria ambientale mediante una chiusura ermetica del complesso contenente i vari dischi e le relative testine. Attualmente riveste una importanza notevole nel campo della memorizzazione di dati su supporti magnetici il cosiddetto disco flessibile (floppy disk). 23